diff --git a/README.md b/README.md
index ae70f02..38c73aa 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
# GenomeForge
-In this virtual temple, we have gathered sacred texts and tools developed by our Magos to explore and manipulate the code of life.
-To successfully carry out various manipulations, it is necessary to perform certain canticles.
+In this virtual temple, we have gathered sacred texts and tools to explore and manipulate the code of life developed by our Magos during the Python course (2023 - 2024) at the Bioinformatics Institute. To successfully carry out various manipulations, it is necessary to perform certain canticles.
## Installation
@@ -9,278 +8,69 @@ Follow the steps below to install GenomeForge:
1. Download the GenomeForge folder to your local computer.
2. Make sure the path to the GenomeForge folder is specified in the system PATH variable.
-3. Import the GenomeForge main script magos_biologis.py as a module
-
-```python
-import magos_biologis as mb
-```
## Datascrolls
-### DNA RNA Canticles
-
-The `dna_rna_canticles` offers rites for the sacred manipulations of DNA and RNA sequences. It grants the ability to perform rites on single or on multiple sequences, accepting a variable number of sequences (*str*) as input and the designation of the desired rite to be executed (always the final designation, *str*, as seen in the usage example). The designated rite is then executed on all the sequences provided.
-
-**Catalogue of Rites:**
-
-1. `transcribe` — transcribes a DNA sequence into an RNA sequence, and also performs reverse transcription.
-
-2. `reverse` — returns the reversed sequence
-
-3. `complement` — returns the complementary sequence
-
-4. `reverse_complement` — returns the reverse complementary sequence
-5. `lenght` — returns the length of the sequence
-6. `gc_content` — calculates the proportion of G and C nucleotides in the sequence and returns the result as a fraction of one
-
-**Usage example:**
-
-```python
-mb.run_dna_rna_canticles('ATG', 'transcribe') # 'AUG'
-mb.run_dna_rna_canticles('ATG', 'reverse') # 'GTA'
-mb.run_dna_rna_canticles('AtG', 'complement') # 'TaC'
-mb.run_dna_rna_canticles('ATg', 'reverse_complement') # 'cAT'
-mb.run_dna_rna_canticles('ATG', 'aT', 'reverse') # ['GTA', 'Ta']
-mb.run_dna_rna_canticles('AActG', 'ATCT', 'lenght') # [5, 4]
-mb.run_dna_rna_canticles('AgCT', 'gc_content') # 0.5
-```
-
-**Note:**
-
-- This canticle saves the character case
-
-- This canticle **only** for nucleic acid sequences. Should the data be offered in a manner inconsistent with the holy protocol, an apt error shall manifest as divine retribution.
-
-### Protein Canticles
-
-This Omnissiah-approved endeavor encompasses the sacred program known as `protein_canticles`. Within its sanctified code resides the mighty `run_protein_canticles` function, a conduit for channeling protein sequences and the divine actions to be invoked upon them. Enter the name of the action (*str*), the protein sequence or path to the protein sequence file (*str*), and additional arguments if necessary.
-
-**Catalogue of Rites:**
-
-1. `find_sites` - finds positions of given sites.
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to be checked
-- *args (*str*): sites to be found
-- is_one_based (*bool*): whether result should be 0- (False) or 1-indexed (True). Default False
-
-*Returns*:
-
-- *dict*: dictionary of sites as keys and lists of positions for the site where it's been found. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the dictionary of sites as keys and lists of positions.
-
-2. `get_protein_rnas_number` - get number of all possible RNA's for a given protein.
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to be checked
-
-*Returns*:
-
-- *int* or *dict*: number of possible RNA's for sequence. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and number of possible RNA's.
-
-3. `get_protein_rnas` - returns list of all possible RNA's from which can serve as matrix for protein synthesis.
-
-**WARNING**: can be computationally intensive on longer sequences, will NOT start unless check_if_user_conscious is True!
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to be checked
-- check_if_user_conscious (*bool*): checks user's consciousness. Default False
-
-*Returns*:
-
-- *list*: list of possible RNA's as string. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and list of possible RNA's
-
-4. `get_frameshift_proteins` - returns list of all possible proteins from all possible frames in peptide.
-
-**WARNING**: can be computationally intensive on longer sequences, will NOT start unless check_if_user_conscious is True!
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to be checked
-- check_if_user_conscious (*bool*): checks user's consciousness. Default False
-- is_stop_codon_termination_enabled (*bool*): terminate translation when reached stop-codon. Default False.
-
-*Returns*:
-
-- *dict*: dictionary of lists of all possible frames proteins. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the dictionary of lists of all possible frames proteins.
-
-5. `get_length_of_protein` - calculates the length of a protein.
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to be checked
-
-*Returns*:
-
-- *int*: sequence length. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and sequences lengths.
-
-6. `count_aa` - counts the number of given or all amino acids in a protein sequence.
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences to count amino acids
-- aminoacids (*str*): which amino acids to count in sequence. If you want to count all amino acids in the whole sequence, you can provide empty string to this argument or just don't provide this keyword
-
-*Returns*:
-
-- *dict*: dictionary with amino acids and its count. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the dictionary with amino acids and its count.
-
-7. `get_fracture_of_aa` - calculates the fracture or percentage of amino acids in a protein sequence.
-
-*Args*:
-
-- seq (*str*): sequence or path to file in fasta format with sequences in which you need to calculate the fracture of amino acids
-- show_as_percentage (*bool*): change it to True, if you want to get results with percentages
-- aminoacids (*str*): the fracture of which amino acids to count in the sequence
-
-*Returns*:
-
-- *dict*: dictionary with amino acids and its fracture or percentage. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the dictionary with amino acids and its fracture.
-
-8. `calculate_protein_mass` - calculates the molecular mass of a protein based on its amino acid sequence and a dictionary of amino acid masses.
-
-*Args*:
-
-- sequence (*str*): sequence or path to file in fasta format with sequences to be processed
-
-*Returns*:
-
-- *float* or *dict*: The molecular mass of a protein in atomic mass units, rounded to the third decimal place. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the molecular mass of a protein in atomic mass units.
-
-9. `get_atomic_mass` - calculates the molecular mass of a biological molecule, primarily an amino acid, based on a simple chemical formula.
-
-*Args*:
-
-- chem (*str*): String representing a simple chemical formula, e.g. C2H5OH
-
-*Returns*:
-
-- *float*: Molecular mass of a biological molecule in atomic mass units, rounded to the third decimal place..
-
-10. `convert_aa_name` - converts a sequence of one-letter amino acid codes to three-letter designations.
-
-*Args*:
-
-- sequence (*str*): sequence or path to file in fasta format with sequences with one-letter amino acid codes
-- sep (*str*, optional): Separator between three-letter amino acid designations. There is no delimiter by default.
-- use_default_register( *bool*, optional): Determines whether to preserve letter case in three-letter designations. If True, the letters will be converted to upper or lower case depending on the case of the depending on the case of the one-letter code. The default is False.
-
-*Returns*:
-
-- *str*: string of three-letter amino acid designations separated by the specified delimiter. In case you entered the path to a fasta file with multiple sequences, you will get back a dictionary containing the names of sequences as keys and the string of three-letter amino acid designations .
-
-**Usage example**
-
-```python
-mb.run_protein_canticles('find_sites', '../ins.fasta', 'LLALL', is_one_based=True) -> {'LLALL': [10]}
-mb.run_protein_canticles('get_protein_rnas_number', 'MALWMR') -> 144
-mb.run_protein_canticles('get_length_of_protein', '../ins.fasta') -> 110
-mb.run_protein_canticles('count_aa', '../ins.fasta', 'DRG') -> {'D': 2, 'R': 5, 'G': 12}
-mb.run_protein_canticles('get_fracture_of_aa', '../ins.fasta', aminoacids='DRG', show_as_percentage=True) -> {'D': 1.82, 'R': 4.55, 'G': 10.91}
-mb.run_protein_canticles('calculate_protein_mass', '../ins.fasta') -> 11980.804
-mb.run_protein_canticles('get_atomic_mass', 'C5H5N5') -> 135.128
-mb.run_protein_canticles('convert_aa_name', 'MALWMR', sep='~') -> 'Met~Ala~Leu~Trp~Met~Arg'
-```
-
-**Note:**
-
-- The program devoutly scrutinizes protein sequences comprised of the **20 canonical amino acids**.
-
-- Should the data be offered in a manner inconsistent with the holy protocol, an apt error shall manifest as divine retribution.
-
-## FASTQ Canticles
-
-The `fastq_canticles` is a sacred tool endowed with the ability to perform complex Fastq sequence filtering rituals. At its core, this divine utility takes four sacred offerings: **seqs**, **gc_bounds**, **length_bounds**, and **quality_threshold**.
-
-**Catalogue of Rites:**
-
-1. `filter_fastq` - filters FASTQ sequences based on the GC-content, length and quality parameters.
-
-*Args*:
-
-- path_to_seqs (*str*): the path to the FASTQ file to be filtered.
-- output_file_name (*str*): the name of the file where the filtered FASTQ sequences will be saved. If not provided, a default name will be generated.
-- gc_bounds (*tuple* or *int*): GC content range (in percentages) for filtering. The default value is (0, 100), meaning all reads are retained. If you pass a single number to the argument, it is assumed to be an upper bound.
-- length_bounds (*tuple* or *int*): length range for filtering. The default value is (0, 2^32), meaning all reads are retained. If you pass a single number to the argument, it is assumed to be an upper bound.
-- quality_threshold (*int*): Threshold value for average read quality filtering. The default value is 0 (Phred33 scale). Reads with an average quality score below this threshold are filtered out.
-
-*Returns*:
-
-- None: the function doesn't return a value but writes the filtered FASTQ to the output file.
-
-**Usage example**
-```python
-mb.filter_fastq(path_to_seqs='example_fastq.fastq', gc_bounds=(30, 50), length_bounds=50, quality_threshold=25)
-```
-## Bio Files Processor
-
-We have integrated a new script into our bioinformatics arsenal, the `bio_files_processor.py`, to further expand our quest for knowledge and understanding of the sacred biological data. This util contains a set functions for working with FASTA and GenBank files.
-
-You can also import this script as a module.
+### magos_biologis.py
-```python
-import bio_files_processor as bproc
-```
+**Classes of Power**:
-**Catalogue of Rites:**
+* *DNASequence*
+* *RNASequence*
+* *AminoAcidSequence*
-1. `convert_multiline_fasta_to_oneline` - converts a multi-line FASTA file into a one-line FASTA file.
+**Functions of Invocation**
-*Args*:
+* *filter_fastq*: Filters FASTQ sequences based on GC-content, length, and quality parameters.
+* *telegram_logger*: Decorator function for logging and sending messages to Telegram.
-- input_fasta (*str*): path to the input FASTA file.
-- output_fasta (*str*): path to the output one-line FASTA file. If not provided, a default name will be generated.
+**Rituals of Revelation**
-*Returns*:
+- *run_genscan*: Runs Genscan prediction, returning predicted coding sequences, introns, and exons.
-The function writes the oneline FASTA to the output file.
+Invoke these scripts and rituals with reverence and caution.
-2. `select_genes_from_gbk_to_fasta` - extracts gene names and protein sequences from a GenBank file and creates a FASTA file containing gene names and protein sequences flanking specified genes.
+### bio_files_processor.py
-*Args*:
+Within the hallowed halls of our digital sanctum, we wield the sacred scripts bestowed upon us by the Omnissiah. These incantations allow us to unravel the mysteries of the genetic code and shape the very essence of life itself.
-- input_gbk (*str*): path to the GenBank file.
-- genes_to_find (*list* of *str*): list of gene names (as strings) to extract from the GenBank file.
-- n_before (*int*): number of genes before the target gene to include in the output. Default value is 1.
-- n_after (*int*): number of genes after the target gene to include in the output. Default value is 1.
-- output_fasta (*str*): path to the output FASTA file. If not provided, a default name will be generated.
+**Scripts of Transformation**
-*Returns*:
+* *convert_multiline_fasta_to_oneline*
+* *select_genes_from_gbk_to_fasta*
+* *change_fasta_start_pos*
+* *parse_blast_output*
-The function writes the selected gene and protein sequences to the output FASTA file.
+**Sacred Rituals**
-3. `change_fasta_start_pos` - shifts the starting position of sequences in a FASTA file by the specified shift value.
+- *OpenFasta*: A context manager for reading FASTA files, allowing seamless iteration over records.
-*Args*:
+Invoke these scripts and rituals with reverence and caution.
-- input_fasta (*str*): path to the input FASTA file.
-- shift (*int*): number of positions to shift the start of each sequence.
-- output_fasta (*str*): path to the output FASTA file. If not provided, a default name will be generated.
+## custom_random_forest.py
-*Returns*:
+**Arcane Scrolls of Forest Conjuration**
-The function writes the shifted FASTA to the output file.
+Deep within the forest of algorithms, where the trees whisper secrets of classification, lies the esoteric knowledge of the RandomForestClassifierCustom. This mystical construct, a creation of human and machine collaboration, holds the power to unveil patterns hidden within data.
-4. `parse_blast_output` - extracts protein names from the QUERY file and creates a file containing information about sequences producing significant alignments. Protein names taken from Description column.
+**Invocation Parameters**
-*Args*:
+- **n_estimators** (int, default=10): The number of trees in the forest.
+- **max_depth** (int or None, default=None): The maximum depth of each tree.
+- **max_features** (int or None, default=None): The maximum number of features to consider when looking for the best split.
+- **random_state** (int or None, default=None): Controls the randomness of the forest.
-- input_file (*str*): path to the QUERY file.
-- output_file (*str*, optional): path to the output file. If not provided, a default name is generated.
+**Manifestations**
-*Returns*:
+1. **fit(X, y, n_jobs)**
+ - Fit the RandomForestClassifierCustom to the training data.
+2. **predict(X)**
+ - Predict class labels for the input samples.
+3. **predict_proba(X, n_jobs)**
+ - Predict class probabilities for the input samples.
-The function writes the selected gene to the output file.
+Invoke these incantations with care, for they possess the ability to unveil the hidden truths encoded within the data.
-**Usage example**
-```python
-convert_multiline_fasta_to_oneline(input_fasta='multiline_fasta.fasta', output_fasta='oneline_fasta.fasta')
-select_genes_from_gbk_to_fasta(input_gbk='file.gbk', genes_to_find=['geneA', 'geneB'], n_before=2, n_after=3, output_fasta='file.fasta')
-change_fasta_start_pos(input_fasta='file.fasta', shift=3, output_fasta='shifted_file.fasta')
-parse_blast_output(input_file='blast_query.txt', output_file='genes.txt')
-```

In the sacred repository of GenomForge, you have discovered a set of invaluable tools bestowed upon you by the Omnissiah. As an adept of the digital arts, you can now invoke the `dna_rna_canticles` for handling genetic scripts, chant the verses of `protein_canticles` to fathom the mysteries of proteins, and, with the `fastq_canticles` utility, undertake intricate purification rituals on Fastq sequences.
diff --git a/Showcases.ipynb b/Showcases.ipynb
new file mode 100644
index 0000000..dc4c9d4
--- /dev/null
+++ b/Showcases.ipynb
@@ -0,0 +1,1269 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "6900054d-37b5-44fa-a4d2-a7730808d1eb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.datasets import make_classification\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from custom_random_forest import RandomForestClassifierCustom\n",
+ "from bio_files_processor import OpenFasta\n",
+ "from magos_biologis import run_genscan\n",
+ "from magos_biologis import DNASequence, RNASequence, AminoAcidSequence"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d8d5b280-4d9f-42ab-8064-f63ca72d7f3e",
+ "metadata": {},
+ "source": [
+ "## RandomForestClassifierCustom"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "fcc12c3f-d77d-4897-8a5f-9335ec91b433",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "SEED = 36\n",
+ "\n",
+ "classification = make_classification(n_samples=1000000, n_features=40)\n",
+ "X, y = classification\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=SEED)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "1e08e6b8-b84a-4e52-a390-c13c9ce4ff6f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rf = RandomForestClassifierCustom(n_estimators=20, max_depth=5, max_features=10, random_state=SEED)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "bc1978ea-467d-451f-981a-7a2cc5198b79",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 434 ms, sys: 788 ms, total: 1.22 s\n",
+ "Wall time: 2min 11s\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
RandomForestClassifierCustom(max_depth=5, max_features=10, n_estimators=20,\n",
+ " random_state=36)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestClassifierCustom(max_depth=5, max_features=10, n_estimators=20,\n",
+ " random_state=36)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "%%time\n",
+ "rf.fit(X_train, y_train, n_jobs=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "0533698d-8828-4ea9-a631-1f4b61574d17",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 790 ms, sys: 2.38 s, total: 3.17 s\n",
+ "Wall time: 1min 7s\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "RandomForestClassifierCustom(max_depth=5, max_features=10, n_estimators=20,\n",
+ " random_state=36)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestClassifierCustom(max_depth=5, max_features=10, n_estimators=20,\n",
+ " random_state=36)"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "%%time\n",
+ "rf.fit(X_train, y_train, n_jobs=3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "d9ae264e-a24a-41dc-b34d-0e49e68ee793",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 304 ms, sys: 444 ms, total: 748 ms\n",
+ "Wall time: 1.7 s\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%time\n",
+ "probas = rf.predict_proba(X_test, n_jobs=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "00fd53f9-6f11-4e0d-aa9f-db24ee41fefa",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 512 ms, sys: 1.03 s, total: 1.54 s\n",
+ "Wall time: 2.28 s\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%time\n",
+ "probas = rf.predict_proba(X_test, n_jobs=3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1f096438-7397-4806-9a7d-9fe7b3587e61",
+ "metadata": {},
+ "source": [
+ "## Open fasta"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "f0d033d5-6f88-442e-87ba-b549720b0719",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "FastaRecord('ACGGCCATAG...')\n",
+ "FastaRecord('GAGCCCTTGG...')\n",
+ "FastaRecord('GAAGTAGGTA...')\n"
+ ]
+ }
+ ],
+ "source": [
+ "with OpenFasta('data/example_fasta.fasta') as file:\n",
+ " print(file.read_record())\n",
+ " print(file.read_record())\n",
+ " print(file.read_record())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "99e6c7e4-36ac-4460-af73-78f8b920bf96",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[FastaRecord('ACGGCCATAG...'), FastaRecord('GAGCCCTTGG...'), FastaRecord('GAAGTAGGTA...'), FastaRecord('GAAGTAGGTA...'), FastaRecord('GAAGTAGGTA...')]\n"
+ ]
+ }
+ ],
+ "source": [
+ "with OpenFasta('data/example_fasta.fasta') as file:\n",
+ " print(file.read_records())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "449c6747-4a95-4937-ad91-4ba1bee0a86d",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "GTD323452\n",
+ "5S_rRNA NODE_272_length_223_cov_0.720238:18-129(+)\n",
+ "ACGGCCATAGGACTTTGAAAGCACCGCATCCCGTCCGATCTGCGAAGTTAACCAAGATGCCGCCTGGTTAGTACCATGGTGGGGGACCACATGGGAATCCCTGGTGCTGTG\n"
+ ]
+ }
+ ],
+ "source": [
+ "with OpenFasta('data/example_fasta.fasta') as file:\n",
+ " record = file.read_record()\n",
+ " print(record.id, record.description, record.sequence, sep=\"\\n\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cae0fe44-947a-4e20-978a-3e97f4660f83",
+ "metadata": {},
+ "source": [
+ "## Run genscan"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "7ec5466e-04c7-49a6-965d-5562bd6f00e4",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "GenscanOutput(status='Success',\n",
+ " cds_list=['DYEVTFTEDKINALIKAASVNIETFWPGLFAKVLANVNIGSHICSVEGGKKTGLQPARATRILRALLVRHLPHWDASPEHCMAGPHGGSTQWLNTGKERALGVWTSKTWIGLGNLPTPFEWKCGLITHGGLADNCADLLLGSSMAAPSVELTFFLGILAAGKACGSARGLRSFWTEAEATAAPEKAFWLKVEVHGVRRTA', 'MRGDNVLAALARSRRLLGLGVHSGRAGGALQPATALWGPLSGLAEARAGSLCLRGSVEGEAGVGTGAARSARQPARVPASLLKPARPRIHQKEVTLNTSEHQKEQTLDTSSLRTVPLTVRVRNFILEVSETKNPPISDTRTSGFY', 'MNVEKAEFCNKSKQPGLARSQHNRWAGSKETCNDRRTPSTEKKVDLNADPLCERKEWNKQKLPCSENPRDTEDVPWITLNSSIQKVNEWFSRSDELLGSDDSHDGESESNAKVADVLDVLNEVDEYSGSSEKIDLLASDPHEALICKSERVHSKSVESNIEDKIFGKTYRKKASLPNLSHVTENLIIGAFVTEPQIIQERPLTNKLKRKRRPTSGLHPEDFIKKADLAVQKTPEMINQGTNQTEQNGQVMNITNSGHENKTKGDSIQNEKNPNPIESLEKESAFKTKAEPISSSISNMELELNIHNSKAPKKNRLRRKSSTRHIHALELVVSRNLSPPNCTELQIDSCSSSEEIKKKKYNQMPVRHSRNLQLMEGKEPATGAKKSNKPNEQTSKRHDSDTFPELKLTNAPGSFTKCSNTSELKEFVNPSLPREEKEEKLETVKVSNNAEDPKDLMLSGERVLQTERSVESSSISLVPGTDYGTQESISLLEVSTLGKAKTEPNKCVSQCAAFENPKGLIHGCSKDNRNDTEGFKYPLGHEVNHSRETSIEMEESELDAQYLQNTFKVSKRQSFAPFSNPGNAEEECATFSAHSGSLKKQSPKVTFECEQKEENQGKNESNIKPVQTVNITAGFPVVGQKDKPVDNAKCSIKGGSRFCLSSQFRGNETGLITPNKHGLLQNPYRIPPLFPIKSFVKTKCKKNLLEENFEEHSMSPEREMGNENIPSTVSTISRNNIRENVFKEASSSNINEVGSSTNEVGSSINEIGSSDENIQAELGRNRGPKLNAMLRLGVLQPEVYKQSLPGSNCKHPEIKKQEYEEVVQTVNTDFSPYLISDNLEQPMGSSHASQVCSETPDDLLDDGEIKEDTSFAENDIKESSAVFSKSVQKGELSRSPSPFTHTHLAQGYRRGAKKLESSEENLSSEDEELPCFQHLLFGKVNNIPSQSTRHSTVATECLSKNTEENLLSLKNSLNDCSNQCSELEDLTANTNTQDPFLIGSSKQMRHQSESQGVGLSDKELVSDDEERGTGLEENNQEEQSMDSNLGEAASGCESETSVSEDCSGLSSQSDILTTQRDTMQHNLIKLQQEMAELEAVLEQHGSQPSNSYPSIISDSSALEDLRNPEQSTSEKAVLTSQKSSEYPISQNPEGLSADKFEVSADSSTSKNKEPGVERSSPSKCPSLDDRWYMHSCSGSLQNRNYPSQEELIKVVDVEEQQLEESGPHDLTETSYLPRQDLEGTPYLESGISLFSDDPESDPSEDRAPESARVGNIPSSTSALKVPQLKVAESAQSPAAAHTTDTAGYNAMEESVSREKPELTASTERVNKRMSMVVSGLTPEEFMLVYKFARKHHITLTNLITEETTHVVMKTGVTQSIKERKMLNEHDFEVRGDVVNGRNHQGPKRARESQDRKIFRGLEICCYGPFTNMPTDQLEWMVQLCGASVVKELSSFTLGTGVHPIVVVQPDAWTEDNGFHAIGQMCEAPVVTREWVLDSVALYQCQELDTYLIPQIPHSHY'],\n",
+ " intron_list=[Intron(gene='1', number=0, start=1, end=846), Intron(gene='1', number=1, start=1002, end=3722), Intron(gene='1', number=2, start=3894, end=4002), Intron(gene='1', number=3, start=4062, end=25832), Intron(gene='1', number=4, start=25934, end=35600), Intron(gene='2', number=1, start=43972, end=42537), Intron(gene='3', number=1, start=79162, end=79239), Intron(gene='3', number=2, start=79439, end=79840), Intron(gene='3', number=3, start=79930, end=88300), Intron(gene='3', number=4, start=88470, end=94258), Intron(gene='3', number=5, start=94386, end=96351), Intron(gene='3', number=6, start=96543, end=99634), Intron(gene='3', number=7, start=99946, end=103177), Intron(gene='3', number=8, start=103266, end=107499), Intron(gene='3', number=9, start=107541, end=113737), Intron(gene='3', number=10, start=113822, end=119755), Intron(gene='3', number=11, start=119811, end=121678), Intron(gene='3', number=12, start=121753, end=123169), Intron(gene='3', number=13, start=123231, end=125070)],\n",
+ " exon_list=[Exon(gene='1', number=1, start=847, end=1001), Exon(gene='1', number=2, start=3723, end=3893), Exon(gene='1', number=3, start=4003, end=4061), Exon(gene='1', number=4, start=25833, end=25933), Exon(gene='1', number=5, start=35601, end=35717), Exon(gene='2', number=2, start=42538, end=42336), Exon(gene='2', number=1, start=44207, end=43973), Exon(gene='3', number=1, start=76231, end=79161), Exon(gene='3', number=2, start=79240, end=79438), Exon(gene='3', number=3, start=79841, end=79929), Exon(gene='3', number=4, start=88301, end=88469), Exon(gene='3', number=5, start=94259, end=94385), Exon(gene='3', number=6, start=96352, end=96542), Exon(gene='3', number=7, start=99635, end=99945), Exon(gene='3', number=8, start=103178, end=103265), Exon(gene='3', number=9, start=107500, end=107540), Exon(gene='3', number=10, start=113738, end=113821), Exon(gene='3', number=11, start=119756, end=119810), Exon(gene='3', number=12, start=121679, end=121752), Exon(gene='3', number=13, start=123170, end=123230), Exon(gene='3', number=14, start=125071, end=125195)])"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "run_genscan(sequence_file=\"data/Homo_sapiens_BRCA1_sequence.fa\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "25bebcb7-b1d8-4d22-9d13-99a2067b65dc",
+ "metadata": {},
+ "source": [
+ "## Biological Sequence"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "be5b07a0-6a62-4b38-940c-99c0c36aaa72",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.59375"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dna_seq = DNASequence(\"CACCGCATCCCGTCCGATCTGCGAAGTTAACC\")\n",
+ "dna_seq.gc_content(percentage=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "2396c534-7cfa-4d07-b8dc-113ac03f6731",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dna_seq.is_valid_alphabet()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "d14c51a1-2589-44f7-a588-5fd90b5815a7",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CACCGCAUCCCGUCCGAUCUGCGAAGUUAACC\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rna_seq = dna_seq.transcribe()\n",
+ "print(rna_seq, type(rna_seq), sep=\"\\n\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "9048943e-f84e-4f0e-9678-e7c041434673",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "GUGGCGUAGGGCAGGCUAGACGCUUCAAUUGG\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(rna_seq.complement())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "7ed7d63a-c5a5-4c8a-a877-16a5d4e3fbe7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "True"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "aa = AminoAcidSequence(\"DYEVTFTEDKINALIKAASVNIETFWPGLFAKVLANVNIGSH\")\n",
+ "aa.is_valid_alphabet()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "90bc9b4a-6b10-459d-b71e-dd24168e6a24",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'H': 1,\n",
+ " 'K': 3,\n",
+ " 'A': 5,\n",
+ " 'L': 3,\n",
+ " 'W': 1,\n",
+ " 'E': 3,\n",
+ " 'V': 4,\n",
+ " 'T': 3,\n",
+ " 'F': 3,\n",
+ " 'N': 4,\n",
+ " 'Y': 1,\n",
+ " 'P': 1,\n",
+ " 'S': 2,\n",
+ " 'I': 4,\n",
+ " 'D': 2,\n",
+ " 'G': 2}"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "aa.count_aa()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "05aa41d0-d586-4e84-a412-d33385d1e766",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m============================= test session starts ==============================\u001b[0m\n",
+ "platform linux -- Python 3.11.7, pytest-8.2.0, pluggy-1.5.0\n",
+ "rootdir: /home/fuechsin/Documents/bioinformatics_institute/python/hw18/GenomeForge\n",
+ "plugins: anyio-4.2.0\n",
+ "collected 8 items\n",
+ "\n",
+ "test_genome_forge_modules.py \u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m.\u001b[0m\u001b[32m [100%]\u001b[0m\n",
+ "\n",
+ "\u001b[32m============================== \u001b[32m\u001b[1m8 passed\u001b[0m\u001b[32m in 0.02s\u001b[0m\u001b[32m ===============================\u001b[0m\n"
+ ]
+ }
+ ],
+ "source": [
+ "%run -m pytest"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/bio_files_processor.py b/bio_files_processor.py
index f6a4f10..3865f74 100644
--- a/bio_files_processor.py
+++ b/bio_files_processor.py
@@ -1,28 +1,28 @@
+from __future__ import annotations
import os
+from dataclasses import dataclass
def convert_multiline_fasta_to_oneline(input_fasta: str, output_fasta: str = None) -> None:
"""
- Converts a multiline FASTA file to a oneline FASTA file.
-
+ Converts a multiline FASTA file to an oneline FASTA file.
Args:
- input_fasta (str): path to the input FASTA file.
- output_fasta (str): path to the output oneline FASTA file. If not provided, it will be generated
using the input file name.
-
Returns:
- None: The function doesn't return a value but writes the oneline FASTA to the output file.
"""
if output_fasta is None:
output_fasta = 'oneline_' + os.path.basename(input_fasta)
-
+
with open(input_fasta, mode='r') as infile:
multiline = infile.readlines()
-
+
output_str = []
name = ''
record = []
-
+
for line in multiline:
line = line.strip()
if line.startswith('>') and not name:
@@ -35,12 +35,12 @@ def convert_multiline_fasta_to_oneline(input_fasta: str, output_fasta: str = Non
output_str.append(sequence)
name = line
record = []
-
+
if name and record:
sequence = ''.join(record)
output_str.append(name)
output_str.append(sequence)
-
+
with open(output_fasta, mode='w') as outfile:
outfile.write('\n'.join(output_str))
return None
@@ -65,7 +65,7 @@ def select_genes_from_gbk_to_fasta(input_gbk: str, genes_to_find: list, n_before
if output_fasta is None:
name = os.path.basename(input_gbk).split('.')[0]
output_fasta = name + '.fasta'
-
+
with open(input_gbk, mode='r') as file:
gbk = file.readlines()
gene_protein_list = []
@@ -101,7 +101,7 @@ def select_genes_from_gbk_to_fasta(input_gbk: str, genes_to_find: list, n_before
flanks.append(idx - i)
for i in range(1, n_after + 1):
flanks.append(idx + i)
-
+
selected_records = [gene_protein_list[i] for i in flanks]
with open(output_fasta, mode='w') as outfile:
for gene, protein in selected_records:
@@ -130,6 +130,7 @@ def change_fasta_start_pos(input_fasta: str, shift: int, output_fasta: str = Non
output_str = []
name = ''
+ shifted_sequence = ''
sequence = []
for line in input_data:
@@ -195,3 +196,92 @@ def parse_blast_output(input_file: str, output_file: str = None) -> None:
outfile.write('\n'.join(significant_alignments))
return None
+
+
+@dataclass
+class FastaRecord:
+ """
+ Represents a FASTA record.
+
+ Attributes:
+ id (str): The identifier of the record.
+ description (str): The description or additional information about the record.
+ sequence (str): The sequence data of the record.
+ """
+ id: str
+ description: str
+ sequence: str
+
+ def __repr__(self) -> str:
+ if len(self.sequence) < 10:
+ repr_seq = self.sequence
+ else:
+ repr_seq = f"{self.sequence[:10]}..."
+ return f"FastaRecord('{repr_seq}')"
+
+
+class OpenFasta:
+ """
+ Provides a context manager for reading FASTA files.
+
+ Attributes:
+ file (str): The path to the FASTA file.
+ mode (str): The mode in which the file should be opened (default is "r").
+ """
+
+ def __init__(self, file, mode="r"):
+ self.file = file
+ self.mode = mode
+ self.handler = None
+ self.current_line = None
+
+ def __enter__(self) -> OpenFasta:
+ self.handler = open(self.file, mode=self.mode)
+ return self
+
+ def __exit__(self, exc_type, exc_val, exc_tb) -> None:
+ if self.handler:
+ self.handler.close()
+
+ def __iter__(self) -> OpenFasta:
+ return self
+
+ def __next__(self) -> FastaRecord:
+ line = self.handler.readline().strip()
+ if line == "":
+ raise StopIteration
+
+ lines = []
+
+ if self.current_line is not None:
+ lines.append(self.current_line)
+ self.current_line = None
+
+ while line:
+ if line.startswith(">") and lines:
+ header = lines[0][1:].split(" ", 1)
+ record_id = header[0]
+ record_description = header[1] if len(header) > 1 else ""
+ sequence = "".join(lines[1:])
+ return FastaRecord(id=record_id, description=record_description, sequence=sequence)
+ else:
+ lines.append(line)
+ line = self.handler.readline().strip()
+
+ if lines:
+ header = lines[0][1:].split(" ", 1)
+ record_id = header[0]
+ record_description = header[1] if len(header) > 1 else ""
+ sequence = "".join(lines[1:])
+ return FastaRecord(id=record_id, description=record_description, sequence=sequence)
+
+ raise StopIteration
+
+ def read_record(self) -> FastaRecord:
+ return self.__next__()
+
+ def read_records(self) -> list:
+ records = []
+ for record in self.__iter__():
+ records.append(record)
+ return records
diff --git a/custom_random_forest.py b/custom_random_forest.py
new file mode 100644
index 0000000..7a89fb5
--- /dev/null
+++ b/custom_random_forest.py
@@ -0,0 +1,143 @@
+from __future__ import annotations
+from typing import Optional
+import numpy as np
+from sklearn.base import BaseEstimator
+from sklearn.tree import DecisionTreeClassifier
+from multiprocessing import Pool
+
+
+class RandomForestClassifierCustom(BaseEstimator):
+ """
+ A custom implementation of Random Forest classifier.
+ Parameters:
+ n_estimators (int, default=10): The number of trees in the forest.
+ max_depth (int or None, default=None): The maximum depth of the tree. If None, then nodes are expanded
+ until all leaves are pure or until all leaves contain less than min_samples_split samples.
+ max_features (int or None, default=None): The number of features to consider when looking for the best split.
+ random_state (int or None, default=None): Controls the randomness of the bootstrapping and the individual trees.
+ Attributes:
+ classes_ (list): The classes labels.
+ trees (list): The list of DecisionTreeClassifier models.
+ feat_ids_by_tree (list): The list of feature indices used by each tree.
+ """
+
+ def __init__(
+ self, n_estimators: int = 10, max_depth: Optional[int] = None,
+ max_features: Optional[int] = None, random_state: Optional[int] = None
+ ) -> None:
+ self.n_estimators = n_estimators
+ self.max_depth = max_depth
+ self.max_features = max_features
+ self.random_state = random_state
+
+ self.trees = []
+ self.feat_ids_by_tree = []
+
+ def _fit_single_tree(self, args) -> tuple:
+ """
+ Fit a single decision tree.
+ Args:
+ args (tuple): A tuple containing the following elements:
+ X (numpy.ndarray): The input features.
+ y (numpy.ndarray): The target labels.
+ max_depth (int): The maximum depth of the tree.
+ max_features (int): The maximum number of features to consider when splitting.
+ random_state (int): The random seed for reproducibility.
+ i (int): The index of the tree.
+ Returns:
+ tuple: A tuple containing the trained decision tree and the indices of the selected features.
+ """
+ X, y, max_depth, max_features, random_state, i = args
+ np.random.seed(random_state + i)
+ n_samples, n_features = X.shape
+
+ np.random.seed(self.random_state + i)
+
+ feature_idx = np.random.choice(range(n_features),
+ size=n_features if self.max_features is None else self.max_features,
+ replace=False)
+ bootstrap_idx = np.random.choice(range(n_samples), size=n_samples, replace=True)
+ X_bootstrap = X[bootstrap_idx][:, feature_idx]
+ y_bootstrap = y[bootstrap_idx]
+
+ tree = DecisionTreeClassifier(
+ max_depth=self.max_depth,
+ max_features=self.max_features,
+ random_state=self.random_state + i
+ )
+ tree.fit(X_bootstrap, y_bootstrap)
+ self.trees.append(tree)
+
+ return tree, feature_idx
+
+
+ def fit(self, X: np.ndarray, y: np.ndarray, n_jobs: int = 1) -> RandomForestClassifierCustom:
+ """
+ Fit the Random Forest classifier to the training data.
+ Parameters:
+ X (array-like of shape (n_samples, n_features)): The input samples.
+ y (array-like of shape (n_samples,)): The target values.
+ n_jobs (int, default=1): The number of processes to use for parallel training.
+ If n_jobs=-1, all available processes will be used.
+ Returns:
+ self (RandomForestClassifierCustom): The fitted estimator.
+ """
+ self.trees = []
+ self.feat_ids_by_tree = []
+ self.classes_ = sorted(np.unique(y))
+
+ with Pool(n_jobs) as pool:
+ results = pool.map(self._fit_single_tree,
+ [(X, y, self.max_depth, self.max_features, self.random_state, i) for i in
+ range(self.n_estimators)])
+
+ self.trees, self.feat_ids_by_tree = zip(*results)
+
+ return self
+
+ def _predict_proba_single_tree(self, args) -> np.ndarray:
+ """
+ Predict class probabilities for X using a single decision tree.
+ Parameters:
+ args (tuple): A tuple containing the following elements:
+ tree (DecisionTreeClassifier): The decision tree model.
+ feature_idx (numpy.ndarray): The feature indices used by the tree.
+ X (numpy.ndarray): The input samples.
+ Returns:
+ probas (numpy.ndarray): The class probabilities of the input samples predicted by the tree.
+ """
+ tree, feature_idx, X = args
+ X_subset = X[:, feature_idx]
+ single_tree_probas = tree.predict_proba(X_subset)
+ return single_tree_probas
+
+ def predict_proba(self, X: np.ndarray, n_jobs: int = 1) -> np.ndarray:
+ """
+ Predict class probabilities for X.
+ Parameters:
+ X (array-like of shape (n_samples, n_features)): The input samples.
+ n_jobs (int, default=1): The number of processes to use for parallel prediction.
+ If n_jobs=-1, all available processes will be used.
+ Returns:
+ probas (array-like of shape (n_samples, n_classes)): The class probabilities of the input samples.
+ """
+ with Pool(n_jobs) as pool:
+ probas = pool.map(self._predict_proba_single_tree,
+ [(tree, feature_idx, X) for tree, feature_idx in zip(self.trees, self.feat_ids_by_tree)]
+ )
+
+ avg_probas = np.sum(probas, axis=0) / self.n_estimators
+ return avg_probas
+
+ def predict(self, X: np.ndarray) -> np.ndarray:
+ """
+ Predict class labels for X.
+ Parameters:
+ X (array-like of shape (n_samples, n_features)): The input samples.
+ Returns:
+ predictions (array-like of shape (n_samples,)): The predicted class labels.
+ """
+ probas = self.predict_proba(X)
+ predictions = np.argmax(probas, axis=1)
+
+ return predictions
diff --git a/data/Homo_sapiens_BRCA1_sequence.fa b/data/Homo_sapiens_BRCA1_sequence.fa
new file mode 100644
index 0000000..8a65528
--- /dev/null
+++ b/data/Homo_sapiens_BRCA1_sequence.fa
@@ -0,0 +1,2121 @@
+>17 dna:chromosome chromosome:GRCh38:17:43043695:43170845:-1
+AGATAGGAGAACATAACAACACTCCAATCCATTACTGTTGACATGTATAAGCCCGCGGAG
+GTCTCCAATCTATCCACTGGATTTCCGTGAGAATTGTGCCCGCTTTGGTATTGGATGTTC
+CTCTCCATAAGACTACAGTTTCCAAGGAACAGTGTGGCCAAGGCCTTTCGTTCCGCAATG
+CATGTTGGAAATAGTAGTTCTTTCCCTCCACCTCCCAACAATCCTTTTATTTACCTAAAC
+TGGAGACCTCCATTAGGGCGGAAAGAGTGGGGTAATGGGACCTCTTCTTAAGACTGCTTT
+GGACACTATCTTACGCTGATATTCAGGCCTCAGGTGGCGATTCTGACCTTGGTACAGCAA
+TTACTGTGACGTAATAAGCCGCAACTGGAAGCGTAGAGGCGAGAGGGCGGGCGCTTTACG
+GCGAACTCAGGTAGAATTCTTCCTTTTCCGTCTCTTTCTTTTTATGTCACCAGGGGAGGA
+CTGGGTGGCCAACCCAGAGCCCCGAGAGATGCTAGGCTCTTTCTGTCCCGCCCTTCCTCT
+GACTGTGTCTTGATTTCCTATTCTGAGAGGCTATTGCTCAGCGGTTTCCGTGGCAACAGT
+AAAGCGTGGGAATTACAGATAAATTAAAACTGTGGAACCCCTTTCCTCGGCTGCCGCCAA
+GGTGTTCGGTCCTTCCGAGGAAGCTAAGGCCGCGTTGGGGTGAGACCCTCACTTCATCCG
+GTGAGTAGCACCGCGTCCGGCAGCCCCAGCCCCACACTCGCCCGCGCTATGGCCTCCGTC
+TCCCAGCTTGCCTGCATCTACTCTGCCCTCATTCTGCAGGACTATGAGGTGACCTTTACG
+GAGGATAAGATCAATGCCCTTATTAAAGCAGCCAGTGTAAATATTGAAACTTTTTGGCCT
+GGCTTGTTTGCAAAGGTCCTGGCCAACGTCAACATTGGGAGCCACATCTGCAGTGTAGAG
+GGGGGGAAAAAAACGTGACTGCGCGTCGTGAGCTCGCTGAGACGTTCTGGACGGGGGACA
+GGCCGTGGGGTTTCTCAGATAACTGGGCCCCTGGGCTCAGGAGGCCTGCACCCTCTGCTC
+TGGGTTAAGGTAGAAGAGCCCCGGGAAAGGGACAGGGGCCCAAGGGATGCTCCGGGGGAC
+GGGCGGGGGAAAGTGAATTTCCGAAGCTAGGCAGATGGGTATTCTTATGCGAGGGGCGGG
+GGCGGAACCTGAGAGGCATAAGGCGTTGTGAACCCCCCGGGGAAGGGGGCAGTTTGTAGG
+TCTCGAGGGAAGCACTAAGGATCAGGTTGGGGGCACAGTGTGTCCGAGGAGGAATCCTCC
+TGATAGGAACTGGAATGTGCCTTGAAGGGGACACCATGTGTATAAGAACATCAGCTGGTC
+GCCGGGGATGGTGGCTTACGCCTGTATTCCTAGCACTTTGGGAGGCCAAGGCGGATGGAT
+CACGAGGTCAGGAGTTCGAGACCAGCCTGACCATCGTGGTGAAACCCCGTCTCTACTAAA
+AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCAGCTACTCAGGAGCTGAGGCAGGAG
+AATCGCTTGAACCCAGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCATTGCACTCCA
+GCCTGGGTGGCAGAACGACACTCCGTCTCAAAAACAAACAAAGAAATAAACACCGGCTGG
+TATATATGAGAAGATGGGCCCTTGCGGAAGAAGAAGTGCCAGGAATATGTCTGGGAAGGG
+GAGGAGACAGGATTTTGTGGGAGGGAGAACTTAAGAACTGGATCCATTTGTGCTATTGAG
+AAAGCGCAAGAGGGAAGTAGAGGAGCGTCAGTAGTAACAGATGCTGCCGGCAGGGATGTG
+CTTGAGGGGGATCCTGAGATGAGAGTGGGTCGCTGGGAAAGGCTAGGGGCAGGGAGGCCT
+TGATTGGTGTTGGTTTGGTCGTTGTTGATTTTGGTTTTATGCAAGAAAAAGAAAACAGCC
+AGAAGCATTGGAGAAAGCTCACCACTTACCCGGTCAGTCACTCCCCTGTAGCTTTCTCTT
+TCTTGGAGAAAGGAAAAGACCCAAAGGGTTGGAAGCAATATGTGAAAAAATACAGAATTT
+ATATTGTCTAATTACAAAAAGCAACTTCTAGAACCTTTAAAGGATTTTGTATTATTCTAA
+AACCTTCCAAATCTTAAATTTACCTTATTTTATTTTATTTATTTTTGAGACGGAGCTTCG
+CTCTTGTTGCCCAGGCTGGAGTGTAATGGCGTGATTTGGGCTCACCGCAACCTCTGACTC
+GTGGGTTCAAGCGATTCTCCTGCCTCAGCTCCCGAGTAGCTGGGATTACACGCATGCACC
+ACCATGCCTGGCTCATTTTTTTGTATTTTTAGTAGAAACGAGGTTTCTCCGTATTGGTCA
+GGCTGGTCTTGAACTCCCGACCTCAGGTCATCCGCCCGCCTCGGCCTCCCTAAGTGCTGT
+GATTACAGGCGTGAGCCACCACGCCCAGCCCAATTTACCTTATTTTAAAATGATAAAATG
+AAGTTGTCATTTTTCTAAACCTTTTTAAAAGATACATGTTTTTCTAATGTGTTAAAGTTC
+ATTGGAACAGAAAGAGATAGATTTATCTGCTGTTTGCGTTGAAGAAGTACAAAATGTCCT
+TAATGCTATGCAGAAAATCTTACAGTGTCCAATCTGGTAAGTCACCAGAAGAGGGTATTA
+ATTTGGGATTCCTATATGATTATCTCCTATGCAAATGAACAGAATTGACCTTACATAGAA
+GGGAGGAAAAGACATGTCTAATAAGATTAGGCTATTGTAATTGCTGATTTTCTTAACTGA
+AGAACTTTAAAAGTATAGAAAATGAATCCTTGTTCTCCATCCACTCTGCCTCTCCCACTC
+CTCTCCTCTTCAACACAAATCCTGTGGTCCCTGAAAGACAGGGACCCTGTCTTGATTGGT
+TCTGCACTGGGGCAGGAATCTAGTTTAGATTAACTGGCATTTTGGTTTTCTTCTAGCTCT
+AAAACCAGCTCCATCACTTGAAATGGCAAAATAAATCATGAATGAGGCCGGGGGCTGTGG
+CTCACACCTGTAATCCCAGCACTCTGGGGGGCCGAGGCAGGCAGATCACGAGGTCAGGAG
+ATCGAGACCATCCTGGCTAACATGGTGTAAGGGAGGAGACCACCCCTCATATTGTCTTAT
+GCCCAATTTCTGCCTCCAAAGAAAGAAAAAGTAAAAACTAAAGGGCAGAAATGACATCCA
+CAAGCAGACACCCCAGGTGCCACACCCTGGGCCTGGTAGTTAAAAATCAACCCCTGACCT
+GATTGGTATGTTATCTATAGATTACAGACATTGTATAGAAAAGCACTGTGACAATGCCTT
+TCCTGTTTTGTTCCGATCTAGTTACTGGTGCATGCAGCCCCCAGTCACGTACCCCCTGCT
+TGCTCAATTGATCACGACCCTCTCACGTGCACCCCCTTAGAGTTGTGAGCCCTTAAAAGG
+GACAGGAATTGCTCACTCGGGGAGCTTGGCTCTTGAGACCGGAGTCTTGCCGATGCCCCT
+GGCCTAATAAACCCCTTCCTTCTTTAACTCGGTGTCTGATAAGTTTTGTCTGCAGCTCGA
+TTTCTTGGTTCCCTGACTGGGAAGCGAGGTGAATGGCGGATGGTCAAGGCAGCTCCTTAG
+GCGGCTTAAACCTGCCCTGTGGAACATCCCTGCAGGGGACTCCAACCAGCCCGAGCAACA
+CGGATCCTGAGGGCGCTCCTGGTTAGGCATTTGCCCCACTGGGACGCCTCGCCAGAGCAC
+TGTATGGCAGGCCCCCATGGAGGATCAACGCAGTGGCTGAACACCGGGAAGGAACGGGCA
+CTTGGAGTCTGGACATCTAAAACTTGGTAAGAGTAGTCTTTGAAACTTGCCCACTCCATT
+TGAGTGGAAGCATGGCCTGATCACCCATGGCGTGCCTTTATTGGCACTTTGGTTTTGGTT
+TGAATTGCTTGACAGGATTGGTCTTGGGAACTTGCCTACTCCATTTGAGTGGAAGTGTGG
+CCTGATCACCCATGGTGTGCCTCTCCTGGCACTTTGGTTTTTATTTTTGACTTGACTTGG
+ATTGCTTGATACTTTGGTTTTGGTTTTGACCTGGCTTGGATTTCTGGATACTCTGATTTT
+GGTTTGGTGCAAACTGCAAAACTGTGTGTGCGCCCTTTTTACCGGTTCTTTGTTTTGTGG
+TGTGTTTGTGGTGTGAGCGTGGTGTTTTGTCTTGAAGAAGCATAGGTCAGGCACGAATAA
+GCCCACCCCACTAGGAACTATGTTGACAAATTTCAAAAAAGAATCTGAGGGAGACTATGG
+AGTGCTATGACACCAGGAAAACTTAAAACTTTGTGTAAGATAGACTGGCCAGCATTAGAG
+GTAGGTTGGCCATTAGAAGGAAGCCTGGACAGGTCCCTTGTTTCAAAGGTATGGCACAAG
+GTAACCTATAAGCCAAGGAACCCAGACCAGTTCCCTTACAGAGACACTTGATTAGAGCTG
+GTTTTAGACCCCCCACCCCCAACACATAGTGGTTGAGAGAACAGCAGCATAAGTGGCTGG
+CAGAGGCAAGGAAAGACCAGCAGAGAGAGAGAAAGGAAAGAGACAGAGAGGAAAAGAGGA
+AAAGAGAGAGAGGAAGAGACAGGAAGAGACAGACAGAGAGTCAAGGATAGAGAGAGAGAG
+AGAGAGAGAGACACACACACACACACACACAGAGAGAGAGGAAGAGGCAGAGGCAAAAGG
+AAAGTCAAAGAGAGAGACAAAGTCAAAGAGAGAAAGAAAGAGAGAAAGAGAGAGAGATAC
+AAAGTTAAGAAAAAAAAGCCATCTATACCAATTCTAATTTAGACAAAACAAGGTCTTATT
+AATAGCAAAGGATAATTAAAATCCCAAACTTAGAAGGTTTTCTTTTTATTATTATTATTA
+TTATACTTTAAGTTTTAGGGTACATGTGCACAACATGCATTTTTTTAAAATTTTTTTTAA
+AGGTTTTCAACTAAAGTTTGCTAAAAGTTAACAGTGTAACATGTATATAGTAACTTATAT
+TCTTGTGGCCTAGTCCACAAGACACAAAAAAGGTTCGCTTTGGAAAAGAATGGTTATCAT
+CTTCGAAAAAAAAAAGGAAAAAAAGGGGGGGCGGAATTTATATAAAAAGAGTATTATATG
+GTAAATTCTTGTCCTGAAACAAATTAACTGGTTGTTTAAAGAAATAAATATTTGTAATAA
+GTCAGAAAGTTGAGGCATATCGAAGAATTGTCTGCGAAAGTCACGAAAGAGAAAAATGTT
+ATAAAAAAATTTATGCAAAAAATGTTGTATAATTTAAAAGTAACTAGGCCTCCTGAATGT
+AAAACTGTTGAAAAAAAAAACAGTTTATATGCAAGGTGTATAAGAAAAGTAAAATATATC
+TTTGGTAAAAGAATTGTAAGGAGGCATAAGGATGTACATTTTCACCTACATTAAAAGGTT
+AAAAATAATTATTGTTTTGAAGATTTAAGCAAGTTTCAAAATGTTAATTGTAAAGAAAAT
+TCTGTGTGTAAACATATTAGCTAAAGTTAAAGAAGTATCATCCAGTTTTTCTGTGAACTG
+GACATTAAAGTAAAAGCATAACAGGTTTTTTCTTAAAGCACCAACCTGCTCTTTTGCAAA
+AATTATAAAGGGTTAAAAAGAATCTATAAAATCTTACCTTATGGTCAAACATTAACAATT
+AGATACATATGTCTACAAGGTTTTATTAAAATTAAGTTTAATATTAATAACACACTAATA
+TAAAGATAAAATTTAGCTTATCTGGTATAAAAATCATACGAGAAGCACTGTTAAATGTAA
+AATGGTATTTGGCTTTCTTTGGTTTAAAAACTAATAAAAATAGGTGCTAAAGGAAATTTC
+TCAGGAAAAAGGCACTAAGGACTATAAAGTCCACTGCCAAGGTCCCCACATTTAAAACAA
+AAGGTCAGTTCCTTAGAATTATATGCTTGGTTTATTTTCCACTTTCCTTTCTCTCAAAAA
+CTAAAAGTCTTTTAGCACATGTACCACCCCTAGAATTTCTAGTAAACCAGCACCAGCCTG
+AAGATCACATTCTCATCGAAAGGTGGAAAGAAGAAAAACTCGAGCCAGCCTGGAAGGACC
+CTACCTTGTGTTGCTAACCACCAAGACTGCTGTTCGTACAGCAAAAAAGGATGGACTCGT
+CACACCAGAATCAAGAAAGTGCCACCCCCTCCAGAGTCATGGGCCACAGTCCCAGAGGAA
+AACCCTGCCAAACTAAAGCTACGAAAAATCTCTTTTCATCTATTCTATTACTCTTCTTTC
+TTTCCTCGTGCTATTGCTGACCATCTAGTTATTAACATAACCAAGTCAATTTCACCTCAA
+ACTATTGCATTTAATGCTTGCCTTGTTATACCCTGTGGGGACTTGCCAAGTCAAAGACAG
+CTCTCTACTTCAGAAAAGTACTTCTGTCCCTCCTGACTCTCCTCAGACTGGACATTAGTA
+AACTAGGACCATTTAATCCAGGGAGATTTCGATAAAGACCCCAGTGCCAACCAGGAGTCT
+TGTCCCCTGATGTAGAGTTTTTATGCCGTAGTTGGTCCAACGTTCTGTGGACCACTAAAG
+AGCAAGAATGGACTGCCCCAACCAGTTTTTGTAATTTCCTAAAACCATACATTCGTTTTA
+CTAGAGGATCATAGAAGTTAAAGAGTTAAAACAAACTTTACCAATGAAGACAGGATACCA
+AGATGCAAATGCCTGGTTAAAATGCATCAAATATTCCATCTGCACGTTAAACAAAAGCAA
+TTGTTATGCTTGTGCACATGGCAGGCCAGAGGCCCAGATTGTCCCCTTTCCACTAAGGTG
+GTCCTCCAGTCGACCAGATGTGGGCTGCCTGGTAGCTCTTTTCCAGGATTCTACAGCCTG
+TATTAATAAGTCATGCCAAGCTCTCTCTGCTATATCCCAAAGTCCAGCACCCTGCGGGTC
+AGCCCCCGAGGGCCATCCATCCTCCATCTCCCAACACTAAGTTCACTTCATGTCTCTCAC
+AACAGGGAGGAAACTTAGCGTTCCTTGGAGACCTGAAAGGATGCAGTTAGCTTAAGAATT
+TTCAAGAGCTTATCAATCAGTCAGCCCTTGTTCATCCCCGAGCAGATGTGTGGTGGTATT
+GTGGTGGACCTTTACTGGGCACTCTGCCAAATAACTGGAGTGGCACTTGTACTTTAGTCC
+AATTGGCTATCCCTTTCACCCTGGCATTTCATCAACCAGAAGGAAAAAAAGAAAGACATT
+GTAAAGCGAGAGAAGCCCCTTATGGGTCTTTCGACTCTCATGTCTATTTAGATGCAATTG
+GAGTCCCACGAAGAATACCAGATCAATTTAAAGCTTGAAATCAAATAGCTGCAGGATTTA
+AGTCAATATTTTAGTGGGTGACAGTTAATAAAAATGTAGATTAGATAAACTACATCTATT
+ACAACCAACAACAACGAGGTTTTCATGAGTTAAAAGAAAACCTCATGTTGGTCCCAGCCC
+TGAGGCTACCTGACCTGACAAAACTCTTTACACTCTATGTGTCAGAAAGAGAAAAAATGG
+CAGTTGGAGTTTTAACCCATACTGTGAGGCCCTGGCCAAGGCCAGTGGCCTATCTCTCAA
+AACAACTAGACAGGATTTCCAAAGGCTGGCCCCCAGGTCTAAGGGCCCTAGCAGCAACAG
+CCCTGTTAGCACAAGAAGCAGATAAACTAACCCTTAGGAAAACCTGAATATAAAGGCCCC
+CCATGCTGTGGTAACTTTAATGACTACCAAAGGACCTCATTGGTTACAAATGCTAGATTA
+ACCAAGTACCAAAGCTTGCTATGTGAAAATCCCCACATAACCACTGAAGTTTGCAACACC
+CTAAACCCCACCACCTTGCTCCTGGTATCAGAGAGCCTAGTTGAACATACTGTGTAGAGG
+TGTTGGACTCAGTTTATTCTAGCAGGCCCAACCTCCGAGACTATCCTTAAACATCAGTAG
+ACTGTGAGGGGTACGTGGACGGGAGTAGCTTCGCCAACCCCTGCAAAGTGACTCTGAAGA
+AGACGACAAGCTCTGCTCCAGTCACACCCAGAAGCTGACTGGTCCACGCACGGCCGAAGC
+ATGAGAAAACTCATTGCGGAACTCATTTTCCTTAAAATTTGGACTTTTACAGTAAGGACT
+TCAACTGACCTTCCTCAGACTGAGGACTGTTCCAGTGTATACATCAAGTCACTGAGGTAG
+GACAAAAGGTTGCTACAGTCCTATTATTTTATGGTTATTATAAGTGTACTGGAACTCTAA
+AAATAACTTGTTTGTATAATGTTATTCTGTACAAGGTATGTAGCCCAGGAAGTGACCAAC
+CTGATGTGTGTTATGACCCATCTGAGCCTCCCATGACCACGGTTTTTAAAATAAGATTAA
+GGACTGAGGACTGGTGGGGGCTCATAAATGATATGAGTAAAGTGTTAGCCAAAACAGAAG
+AAAAAGGGGTGCCCAAACAAGTCACCTTAAAATTTGATGCCTGTGCTGTCATTAATAGTA
+ATAAGTTAGGAATAAAGTGTGGTTCTCTTAATTAGAAAAGAGGCTATATGGCAGAAAATA
+AGTACATCTGTCATAAATTAGGACTGTGTGGAAATAAATGTAAATACTGGTCTTGTGTCA
+TTTAGGCCACTTGGATTTAAAAAAAATGAAAAGGATCCAGTCCACCTTCAGAAAGGAAAA
+AAATGGCCCTTCCTGTGCTAAGGGACAATGTAACCCCTTAGAGCTAGTAATAACCAATCC
+CCTTGATCCTCGCTGGAAAAAAGAGTAGCGTGTGACCTTAGGAATCAATGGGGCTGGACT
+GAATCCCCGAGTAAATATCTTGGTTCGAGGAGAAGTTTACAAATGCTCTCTTGAGCCAGT
+GTTTCAAACTTTCTATGATGAACTAAATGTGCCAATAACAGAATTTCCAGGAAAAACAAG
+AAATTTGTTTTTGCAATTAGCCGAGCATGTAGCCCAGTCTCTCACTGTCACTTCATGTTA
+TGTATGTGGAGGAACTGTAATAGCAGATCAATGGCCATGGGAAGCCCGAGAATTAGTACC
+TACAGACCCAGTTCCTGATGAATTCCCAGCTCAAAAGAATCACCCTGATAATTTCTGGGT
+CCTAAAAGCCTCAATCATTAGACAATACTATATAGCAAGAGTGGAGAAGGACTTCACCCT
+TCCTGTAGGAAGACTACATGGTGGAGTTCAAACCACACAGAGAAAAATCCATTCAGTAAA
+TTTCCAAAGTTGCAGACCGTTTAGGCCCACCCAGAATCCCACCGGGACTGGACAGCCCCC
+ACTGGGCTATACTGGATATGTGGACATAGAGCCTACACTAAGCTGCCTGACAAGTAGTTG
+TGTTATTGGCACTATTAAACCATCTTTCTTCCTACTGTCCATAAAAACAGGAGAACTCCT
+GGGCTTCCCTGTCTATGCTTCCCGTGAAAAGCATAGCTATAAGAAATTGAAACAATGATA
+AATGGCCCCCTGAGAGAATCATACAGTATTATGGGCCTGCTACTTAGGCACAAGATGGCT
+CGTGGGGATACCGGATCCCCATTTATATGATCAACTGAATCATACGGTTACAAGCTGTCT
+TAAAAATAATCACTGCAACCGGCAGAGCCTTGACTATTCTGGCCCAGCAAGAAACTCAGA
+TGAGAAATGCTATCTATCAAAATAGATTAGCTCTCGACTACTTGCTAGCAGCTGAAGGAG
+AGGTCTGTAGGAAATTTAACCTTACTAATTGCTGCCTACACATAGATAACCAAGGGCAAG
+TAGTTGAAGACATAGTTAGAGATATGACAAAAGTGGCACATGTGCCCGTGCAAGTGTGGC
+ATGGATTTGATCCTGGGGCCATGTTTAGAAAATGGTTCCCAGCGCTAGGAGGATTTAAAA
+CTCTTATAATAAGAGTTATAATAGTAATAGGAACCTACTTACTGCTCCCTCGTTTGCTAC
+CTGTACTTCTTCAAATGATAAAAAGCTTCATCGCTACCTTAGTATACCAAAATGCATCAG
+CACAAGTGTACTATATAAATCACTATTGATCTGTCTAGCAAGAAGACATGGGTAGTAAAC
+ATGAAACAACTCCTGCTATTGAGTGAGAGTCTCAAAGTGGGGGAATAAGGGAGGAGACCA
+CCCCTCATATTGTCTTATGCCCAATTTCTGCCTCCAAAGAAAGAAAAAGTAAAAACTAAA
+AGGCAGAAATGAAATCCACAAGCAGACAGCCCGGGCGCCACACCCTGGGACTGGTAGTTG
+AAAATCAATCCCGGACCTAATCGGTTATGTTATCTATAGATTACAGACATTGTATAGAAA
+AGCATTGTGAAAATCTCATTCCTGTTTTGTTCCAATCTAATTACTGGTGCGTGCAGCCCC
+CAGTCACGTACCCACGTACCTCCTGCTTGCTCAATCGATCACGACCCTCTCACGCACACC
+CCCTTAGACTTGTGAGTCCTTAAAAGGGACAGGAATTGCTCACTCGGGGCGGGGGCTCGG
+CTCTTGAGACAGGAGTCTTGCTGATGCCTCCGGCCTAATAAACCCCTTCCTTCTTTAACT
+CGGTGTCTGAGGAGTTTTGTCTGCAGCTCGTCCTGCTACAGGTGAAACCCCATCTCTACT
+AAAAAAATACAAAAAAATTAGCCAGGTGTGGTGGCGGGTGCCTGTAGTCCCAGCTGCTTG
+GGAGGCTGAGGCAGGAGAATGGTGTGAGCCTGGGAGGCAGAGCTTGCAGTGAGCCGAGAT
+CATGCCACTGCACTCCAGCCTGGGCAACAGAGTAAGACTCCGTCTCAAAAAAAAAAAAAA
+AAATCATGGATGGTTGGTGTCATGGAGGGGATAGGTCTTTGGAAGAACCTTCCTCTGAAG
+CTGGCTCTGTACATTTAAATAAGAATACTGCAAATCATCAAAGCCTTTAGCAAGTCTGAC
+TCTTGGAGTGAGCCTTTGTTTTTCTTCATTTATAAAAGGAAAAGGGGACTGTACTGTTCA
+CATTTATTTATTTTTTTATTTTTTTAATTGATCATTCTTGGGTGTTTCTCCCAGAGGGGG
+ATTTGGCAGGGTCATAGGACAATAGTGGAGGGAAGGTCAGCAGATAAACAAGTGAACAAA
+GGTCTCTGGTTTTCCTAGGCAGAGGACCCTGCGGCCTTCCGCAGTGTTTGTGTCCCTGGG
+TACTTGAGATTAGGGAGTGGTGATGACTCTTAACGAGCATGCTGCCTTCAAGTATCTGTG
+ATGTGAGGAGCGCCTCTGCCCGGCCGCGACCCCGTCTGGGAGGTGAGGAGCATCTCTGCC
+CGGCCGCCCCGTCTGAGAAGTGAGGAGACCCTCTACCTGGCAACCGCCCCGTCTGAGAAG
+TGAGGAGCCCCTCCGCCTGGCAGCCACCCCGTCTGGGAAGTGAGGAGCGTCTCAGCCCGG
+CAGCCACCCCGTCCGGGAGGGAGGTGGGGGTCAGCCCCCGCCAGGCCAGCCGCCCCGTCC
+GGGAGGGAGGTGGGGGTCAGCCCCTGCCAGGCCAGCCGCCCCGTCCCGGAGGGAGGTGGG
+GGGGTCAGCCCCCTGCCCGGCCACATTTTGTTTTTGAATCGAGGTATAATTTACATACAG
+TGAAATGCAGAGGTTTTTTTATACAGGATCTCTGTCGAGAGGCTGGAGTGCAGTGGTGCT
+ATCACAGCTCACTGCAGCCTCAACCTCGCCAGGCTCAAGCGATCCTCCCACCTCAGCCTC
+CAGAGTAGCAGGGACTACAGGTGTGCATCACCATGCCCAGCTAATTTGTGTGTGTGTGTT
+TGTGTGTGTGTTTGTAGATATAGGGTTTTGCCATGTTGGCCACGCTGGTCTCAAACTCCT
+GACCTCAAGTGATCTACCCACCTTGGCCTCTCAAAGTGCTGGGATTACAGGTATGAGCCT
+CTGCACCCAGCCATGGTCTGAAAATCTTGATTGAAATACCACCTTTTCATTTCCAGACAC
+CGCTATTTAAAGTTACAACACCCTCAAGACACACTTTATCCTCCATTCCTGCTGCTTCTC
+CATAACACTTATTACTAGCTGACCTTCTATGTAATGTATCTATCCTTTATCTCTAGTCCC
+ACAGAATGTAAACTCCAGGGCAGCAGAGATTTTTGTTTCGTTTATGTACATCTGTATATT
+CAGTAGTTAAAACAGTACTTGGGACCTAGTTGCCACTCAATAAACATTTGTTGAATAAAT
+TAAATAATAAACTACATTAGTTCTTCAATTAATTTTTTAAAATATGGTGGTTAATAGTGA
+GTAACATTCAAAAAATAAGTTGAAAATTTATACCTATTGCCTCTTACCCACAATAAAAAA
+GGGTAAATTCAAGGAAATTTTCTTTTGTGCTTTATGAAAGTTGTTTTTCATATTTGGAGT
+CATGTCAATCAGATTAAGGAAAATGCAAGTTGTGTTTTCAGAGAGATACAAGATTTATAA
+ATAACCATCCTCTCCCTTGCCCTTCAACATTTTAGCTAAACAAAAACAAGAGGAAAACAA
+GATTTACAATTTATCAATTCATTGAAAATCAGAGCCAGAGAAGCAGGAAATGACATTGTA
+GGAAAAAACTGCTTTTGAAAAAGCACAACTTACTCATGACAATCAGAGTGATCAAAAAAA
+TCCTCAATAGTGTGGCATTTGGATCCATTTATCATTACATTTCCATGGGACAGAGTCATA
+AAAATAGGATGTTCTTTCTCATTATGGCAAATTAAACCATCAATTAAAAACTCAGATACA
+TAAAAATTAAAGATGTAAGAATGAAAGTTAATGCTAAATTTTTATTTTCAGTCAACTATT
+GTATGTTTTCTAGCTTTTCATTGCTTTTTTCCTATTTTCTGTTAGATTAATATTTTTTTT
+TTTTTTTTTTGAGACAGAGTTTCGCTCTTGTTGCCCAGGCTGGAGTGCAATGGCACATCT
+CGGCTCACCACAACCTCCACCTCTTGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCGGAG
+TAGCTGGGATTACAGGCATGCGCCACCAAGCCAGCTAATTTTGTATTTCTTAGTAGAGAC
+GGGGTGTCTCCATGTTGATCAGGCTGGTCTCAAACTCCCAGCCTCAGGTGATCTGCCTGC
+CTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACTGCGCCCAGATTTTTTTAAT
+TTTTATTTTTGAGATGGATTCTTGCTCTGTTGCCCAGGCTGGAGTACAGTGGTGCCGTCT
+TGGTTCACTGCAACTTCTACCTCCCAGGTTCAAGTGCTTCTCCTGCCTGAGCCTCCTGAG
+TAGCTAGGATTACAGGCGTGTGCCACCATGCCCAGCTAATTTTGTATTCTTAGTAGAGAC
+GGGGTTTCACCATGTTGTCAGGATGTTCTTGATCTCCTGACCTCGTGATCTGCCCACCTC
+GGCCTCCTAAAGTGCTGGGATTACAGGCGTGAGCCTCCGCGCCAGGCCTTAAGATTAATT
+TTTAATGGTTTTTTAGACTCATATGTATGGAAACTTCTAGGATGGGGACCATATTTCACT
+TCCTTTTAATACAGTACCCAGTATAGCACAATTTGCAGTTATGTCTTAATATGTGATTCC
+TGATCATGACTGGAAACAGTGTTATTTGTGGTAGCTATAGGGTAGGTAAGTTTTTCAGCC
+TGTTTTAGGTTTCTTGACCTAAAATTCCTTCTGCTGGACTCTAAGTCACTATTGGCAGCT
+ATTTCTGACGATTGGTAGTTCTTTGTAACTTTTTACCTATGACTGTAACATTTTTGACTT
+TCAGAAGAATTTGCTAAAATGTGTTCCCCGGTGGGTTGTTGTTTTTCAACCTAAACCTAG
+CTGCTTTTTCCAGTCACTTATCCGTATTGGAAGCTCAAAATGCAAATATACAGTAGGCCT
+AAAATATTGCCTGGTTTGAAAAGTGTTTAAAATATTTGAATCATTTTTATAGTAAACATT
+TACTCTCATCAGGACCTAGAAGGGGAACATTTTAATTTTTTTCCTTTTCCCTTTTCACAG
+TCTTCCTTCAACATTCATTACCTTTTTACATATTGGAGTTTTCATCTGTTCACAGTTTAT
+GTTTACAGTGTGTTTATATAGTGTAGATTATAATTACCATACTGAAATATAATTATTTCA
+GAATTGAGTCAGTGGTGAGAATGAAAGCCATCTGGTATGATAACTGAATCCAATTTTTCT
+TTTACGGAGAATTTCTTTGAAATGTAGCTTATCTCAGAAATAGGGATTTAGTAACCAATC
+AGAGTTTTCTTTGTCAAGGTTGTTTTTCTTTTTAAAGTCACATTTGGTCCCAGTAATAAT
+ACCCACATTGGTACAAGTCATCTCAGGTTGTGAAGTATTTTCCCAAGTAGCATTTAATTT
+TATTCTTGCAATAGCCCAAGGAGACTGGCAGGGTGAATGACAGAGAAGGAAACTGAGGTT
+CAGGTAAAGTGGTTAGCCCAAGGTGGCTCTGCTTATATACACAACTGGTAGTAGAAACCC
+AGCCTTCTGACTTAGTTCAGTGTTTCTCTTTTCACTGCCCTGTGCTACGTCAGAAACACC
+ATGATTACAAGAGTAGTATTACTAAATCCTTCACAATAAGGTTACTGTCCCCGAGCTTTT
+CTTATGATTCTTTTTTTTTTTCTTTTTTTGAGATGGAGTCTCACTCTGTCGCCCAGGCTG
+GAGTACAGTGGCACAATCTCATCTGACTGCAACTTCCGCCTCCCGGGTTCAAGCAATTCT
+CCTGCCTCAGCCTCCCGAGTAGCCAGGACTACAGGTGCGTGCCACCATGCCTGGTTAATT
+TTTGTAGTTTTAGCAGAGGCGGGGTTTCCCCATATTGGCTAGGCTGGTCTCAAACTCCTG
+ACCTCAGGTGATCCACCTGCCTCAGACTCCCAAAGTGCTGGGATTACAGTGTGAGCCACC
+GCACCTGGCCCTTGTGATCCTTTTCTAAAAAGTTAAATATTTAATGAAAAGAACCACATT
+CTTGTCGCACTACCAGGATACTTGTTCTTTGATGTCCTGCCTGGACTTTACCCAAAAAAT
+CCATTTCAAAAGTTCACATTTAGGGCTAAGTGTAGTGGCTCATACCTGTAATCCCAGCTG
+AGGCAGGTGGATCATTTGAGGTCAGGACTTCAAGAACAGCCTGGGCAACATGGTGCAACC
+CCTTCCCTACCAAAAATACAAAAAAATTAGCCAGGCATGGCAGCATGCGCCTGTAGTCCC
+AGCTACTTGGAAGGCTGAGGCACAAGAATCACTTCAATCCGAGAGGCAGAGGTTGCAGTG
+AGCCAAGACCACACCACTGCACTCCAGCCTGAGCAGCAGAGTGAGTGAGACTCCATCTCC
+CCCCAAAAAAAGTTTCACTGGACATAGTAGCTCACACTTGTAATCCCAGCACTTTGGGAA
+GCCAAAGCAGGAAGACTGCTTGAGGCCAGTCATTCAAGACCAGCATGGGCAACATAGTGA
+GATCCTGTCTCTATAAAAATTAATTAACATTAAAAATTAAAAAGATGGCCGGGCATGGTG
+GCTCACTCCTGTAATCCCAGTACTTTGGGAGGCCAAGGCATGGTGGTGCATGCCTTTAGT
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAACCCAGGAGGCAGAGGTTACA
+GAGAGCTGAGATTGTGCCACTGCACTCCAGCCTGGGTGACAGAGTGAGACTCTGTCTCAA
+AAAAAGAAAATTAAAAAGACCAGAATAAAGCTAAAGATTTAAAATAGCTGGCAGGTTCCT
+ACCAAAAGTTACCAGCTACCTCTCTGATGCTCTTTCCCTACAATATCCTCCTGGATTATT
+ACATTTTAGCACCTTGACCTATCTGATGTCCTGCATACACAGGCATGGTCCTGCTCAGGG
+TTTGCCTTCTCTGCTCCCTCTTTCCTGGAATGCTCTTCCCCTAATTGTTGCATAGCGTGT
+TTCTTTACATTATTAAGCTGTCCTCTAGTCTCACCTCAGTGAAACCTTTCCTGACTCCCC
+CCATGTACACCTACCCCCTATACATATTACACTACCTGTTTCCCCTTACCCTGCTTATTT
+TTTCTCTTTAATACACTTATTCCCATATATTCTTTAATTCTGCATCAACTGTCTACCACA
+CTAGAATGTGAGAGCAGGTTTTATTTTGTAAACTGCTGTATTTCTATCTCCTAGAATAGT
+ACTTGAATATAGTAGTAGATACTTAATAAACACTTGTTATATTAGTATAATAAATGAATT
+ACTCTCAGGAATGCCTTGGTTTTGTGGATAGACAGGTAGGGATGGGAACTGGGGTGATGT
+ATTTTCTAAAGTTTTTATTTTTTAAGCTTATTATTATTATTATTTTGAGACAGAGTCTAG
+CTCTGTCACCCAGGCTGGAGTGCAGCTTATTATTATTATTTTGAGATGGAGTCTAGCTCT
+GTCACCCAAGCTGGAGTGCAGTGGGGCAATCTTGGCTCACTGCAACCTGCGCCTCCCAGG
+TTCAAGCGATTCTCCTGCCTCAGCCTCCTGAGTACCTGGGATTACAGGCGCCTGCCACCA
+TGCCCAGTTAGTTTTTGTATTTTTAGTAGAGATGGGGTTTCACCATGTTGGCCAGGCTGG
+TCTCGAAATCCTGACCTCGTGATCTGCCGGCCTTGGCCTCCCGAAGTGCTGGGATTACAA
+GCGTGAGCCCCCGTGCCTGGCCTTATTTTCTTTTTATTGAGACAGAGTCTTCCTCTGTCA
+CCTAGGCTGGAGTGCAGTGGTGTGATCTTGGCTCACTCTGCAACCTCCACCTCCAGGGTT
+CAAGTGATCCTTCTGCCTTAGCCTCCAAGTAGCTGGCACCACAGGCATGGGACACCACGC
+CTGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGTCCAGGATGATCT
+AGAACTCCTGAGCTCAGGTGATCCACCCACCTCAGCCTCCCAAAGTGCTAGGATTACAAG
+CATGAGGCACCACGCCCAGCCTTAAGCTTATTATTTTCTAAATTTCCTTTAGTGAGTACC
+TACTACACTGTTTTTACAAAGTAATCACAAACCAAACATGCGTCTTCTGAAGTGATCTAA
+TAAGAGTACACAGTACCATCTGTAAAGTGTTCTTGCCAAAAGGTTAAACCTGAATTTGAT
+TAGGCCTATAAGTCTAATTTACAGGAAATAAGGTTAGAGGGTTAGCAGGATTGATAAGGA
+ATCAGAGAGACTGATGGGATTGAGGAGGATCTTTATTATTTAGGTGCACCAGCCCAGGTG
+GATTAACATCCAAAGGACTGAGCCCTGAACAAAGAGTTAAGTTACCTTTTAAGCATTTGG
+TGGGGTGGGGGAGATCTGTGCAGGGGGAAGCATATTACAGAAGTGAGAAACAAAGACGGT
+TATTCAATTAATTGAGACATATATTACATCATTTTTTACTTTTCAAGGAAAAACATTTTT
+TACAACTTGAGTTTATCTGTCTAGTGACCTTGCAGCTGCACAGCTAGGGAAACAGGATCT
+TCACAGTGCCTGGGAAAGGAGGAGAGATAAGGCTCACTAGCCACAGAAAAACAGGCAGTT
+AATTTTTAAAGGACTTCAGCTCCTTCTTTTTCTCAGGGGAAATTGGGTTTTCTTACATAC
+AACTGAGTTTCTGCTTACACGTTCTTTAATTTCTTTTAATTCCTGTTCCAGAGGAACATG
+TTAAACCTCACCATGGGGTTATACAATCAGCAAAATCCAAAATGCACAAAACTCTACAGG
+TCGAGTGACCTGTCCAGCAGTTCGTCTCCTAAATCCAGAAGTAATCCTTCCCTTCGCTCT
+TAACCAGTGGAGTTCTCCATTTATTTATTTATTTTTATTATTATTATTTTTGAGACAGAA
+TCTCACTCTATTGCCCGGGCTGGAGGGCAGTGGCAAGATCTCGGCTCACTGCAACCTCCG
+CCTCCTGGGTTCAAGGGATTCTCCTGCCTCAGCCTCTCGAGTAGCTGGGATTACAGGCAC
+CCACTGCTATGCCCAGCTTATTTTTTTTTATTTTTTTATTTTTGAGACGGAGTCTTGCTC
+TGTCACCCAGGCTGGAGTGCTGGAGTACAGTGGCGCAATCTCAGCTCACTGCAAGCTCCA
+CCTCCCAGGTTCACGCCATTGTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTTCAGGTGT
+CCGCCACTATGCCCAGTTAATTTTTTGTATTTTTTAGTAGAGATGGGGTTTCACTGTGTT
+AGCCAGGATGGTCTCGATCTCCTAACCTTGTGATCCGCCCACCTCAGCCTCCCAGAGTGC
+TGGGATTACAGGTGTGAGCCACCACGCCCAGCCAATTTTTTGTATTTTTAATAGAGACAG
+GGTTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTGACCTCGTGATCCACCCACCTCA
+GCCTCCCAAAGTGCTGAGATGACAGGTGTGAGCCACTGCACCCGGCCTGGAGTTCTCCTT
+TTATACATTAACAAATTTCTCTTGCGTCTCTACTACGTCTTGCTAGATGTGTTGGAAAAG
+GATGAATAAATGCAGTTCTACCCTCCACTTGTAGGTGGAGTGGAAGTGTAAACAAGCAAT
+TTCAACACAGTGGGAGAGGTGCTAAAGAGAGAACTGTGTGGTCACTGGGGCAGTGCACAT
+AACCAAAAATAAAGAGAGACATATACAAGGCTCAGTGGTGGCTCAGTAGAGCAAAGCCAG
+GCAACAGATGACACAGCTGTAAACAAACCAAAATTCACCATCAACATATTTTGAAAGTAT
+GTGGTGGTGCTGATTTCAAATCTTGGCTCCATCACACACTATGTGGCCTTGGGAAAGTTA
+CATAACCTCTAAGCACCAGTTTCTACCTGGGGAGAATATTACCTATTCCAGGGTGTTATT
+TATGATGATATTTAAAGGAAATAATGCATGTAAAGTGCTTAGCACAGTCTCTGGCACTTA
+ATGGTACTTCCAAATTACTACAGAAAAAAATGTATATTTTTATTTTTTAAGAGACAGGGT
+ATTGCTCTGTCACCCAGGCTGAGGTACAGTGGTGCAACCATAGCTCATTGCAACCTTGAA
+CAGTTGTGCTGAAGTGATCTTCCCTCCTCAGCCTCCCAAGTAGCTGGAAGGACAGGGGCG
+TGCCACCATGTGCGGCTAAGTTTTTTTAAACATTTTTTTGTAGAGATGGGGTCTCCCTAT
+GTTGACCAGACTAGTTTCAAACTATTGGCCTCAAGCAATCCTTCTACCTTGGCCTCCCAA
+AATGTTGGGATTACAGGCATGAGCCACTGCATCTAGCCTGAAACAAATCTTACATATAGG
+GAAAAAAAACTTTTAGCACAAAGATGTATTTATAATAGGAACATTTCTGGAACACACTGA
+AAATCCTCTTTTGGTTTTTTTGTTTTTGTTTTTGTTTTTTTTGAGACAGAGTCCCAGAGC
+TAGGAATATAGGCATGCGCCACCACATGTGGCTCATTTTTGTATTTTTAGTAGAGATGTG
+GTCTTGTTATGTTGGCCAGGCTGGTCTCAAACACCTAACCTCAAGTGATTCATCTGCCTT
+GGCCTCCCAAAAATGTGGGGATTACAGGTGTGAGCCACCACACTTCATATAATATCCTTT
+TGATGGAGTATTATGTAGCTGTTAAACTGTGACAATGTTTGACAGTCATAGATACAAAAA
+GCACTAAATAAAATTTGAATCTGATGTTATCTTGGCTATGTAAATAGATACCCAAAGTCC
+CTGGGCCTCTCCAGCCTGTGATTTTAAATGAGGTCACATTAGCCTTATACCCGAATTTCA
+CTGTCCCATTGCCCCCACCAGCTCTTACAGACCTCTGCAAAGGCCCTGAGGGCCCTAGGG
+AATAAAGCATATGCCCCACCCACCCAACTATTCATAAACTGTCTGTGTTTGATGGGCACA
+GCCACCCTTTGCCAAGCCTTCACTCTTGCCATACCTCATAAAGGACACCTCCCTGTCAGG
+TTGACCAAACCACTTGGTTTGCCTGGAACCGAGAGGTTTCCTGGGATTTAGGACTTTTAG
+TACTAAAACTGAGAGACTCTTTGGCAAACTAGGAGAACTTGGTCACCCTGACTCACTGTG
+CAAAGCTGCACATTTTTTTTGCACTTCCAAGCTGCAAAATTTTTAGATCCCCAAATGGAG
+TTGTTTTTTTTTAGCTAGAGCTCAGCTTCATTCTTCCCAAAACAGGGACTTATGGACCTC
+CCAGAGGACTGGGTGAGGTGAATATTCATGTTTGAATTCAGGGGACTTTTATCCCTGGTA
+CCAGGGAAGTAAAAAGAAACAACAGTCAAAAGGTTGCTTGAGAAACAGCTAATTAGAGGA
+TGGGTCTAGAGAAGAGATGCTGGTTTGGGAAACATGAGCACATTGGGTGGCAAATATCAT
+GAGACTGGACTGGATGGCCCAGGACACCTGTAAACAGGAGAGAAGCCTGAGAATAATGAC
+ATTTGAGCCAATCTGCAGAGGTAAGTGAGTCCATAAAAGAAACTGAGGCTGGGCCTAGTG
+GCTCACACCTGTAATCCCAGCACTTTGACAAGCATATCACTTGAGGCCAGGAGTTCGAGA
+CCAGCCTGGCCAACATGATGAAACCCTGTCTCTACTAAAAATACAACATTTAGCCAGGTG
+TAGTAGTGACAGCCCGTAGTCCCAGCTACTCAGGAAGCTAAGGTGGGAGGATTGCTTGAG
+CCCAGGAGGTTCAGGCTGCAGTGACCCATGATCACGCCACTACACTCTAGCCAGGGCAAC
+AGGGCAAGACCCGGTCTCAAATAAATAAATAAATACAAATTAAGTAAAAAGAAACTTGCC
+GGACATGGTGGCTCATGCCTATAATCCCAGCACTTTGGGAGGCTTGAGGTGGGTGGATCA
+CCTGAGGTCAGGAGTTTGAGACCTGCCTGGCCAAGATGGTGAAACCCCGTCTCTATTAAA
+AACACAAAAATTAGCTAGGCACGGTGGTGGGTTCCTGTAATCCCAGCTACTCGGGTGGTT
+GAGGCAGGAGAATTGCTTGAACCCAGGAGGCGGAGGATGCAGTGAGCTGAGATCATGCCA
+CTGCACTCCAGGCTGTGCGACAGAGCAAGACTCCGTCTCAAAAACAAAAAAAAGAAACTG
+AGGGTAGTGGCCAAAGAGAAAGGAAGAAAACTAGGATTTGAGGTTTGTAAGTTTTGGTGC
+AGTTTCTGAAATTTGTCCACAGTTTCCAATTTGGCTATGCCTTCACCCTAAAGCTAGTAT
+TGATACTGATTGATCATGCTTCATATCATCAAGTAGACCACTCTCTTTCTTTCCAGCTTC
+TGAAATGTAGGTGATTCCATATGAGGTGCTCTTACTCTCTCTGCTTTCTCTTTTATTATA
+GTTTAGTCTGAGGCTGGGTGCGGTGGCTCATGCCTGTAATCCTAGCACTTTGGGAGGCCA
+AGGTGGGCGGATCACTTGATGTCAGGTGTTCGAGACCAGCCTGGCCAACATGGTGAAACC
+CCGTCTCTACTAAAAATACAAAAATTGGCTGGGCATGGTGGCTCACACCTGTAATCCCAG
+CACTTTGGGAGGCCAAGGTGGGCGGATCACAAGGTCCACCCGCTAACATGGTGAAACCCC
+ATCTCTACTAAAAATACAAAGAAAAAAAAAAAAAAAAAAACTAGCCCGGTGTGGTGGCGG
+GCACCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCATGAACCTAGGAGG
+CAGAGCTTGCAGTGAGCCGAGATCGTGCCACTGCACTCCAGCCTGGGCGACAGGGCAAGA
+CTCTGTCTCGGGGGGGAAAAAAAGTAAAAAAGTTAATTGGGTGGTGGCGGGGGGATGTGT
+GTTGGTTATATTCAAATACTGCACCATTATATGTAAGGGATTGAGCGTTCACAGATTCTG
+GTGTGTGGGGGCAGTATCCTAGAACCAGTCCCCCGCAAAATATCAAGGATGACTGAACTA
+TGGAAGAAACAAAGCACTGTTAAACAGCATACAATTCCTGTCTTCAAAAAAGTTATCTCA
+TTAGGTAGATGAGACTTATAATGAATTAAAAGGAATGAATACAGATTTGGAGATAGTGGT
+TGTTGTGATGGAAAATCTTAATTGCGTTTTCTTCCAAAACAGAGTCATTCTTATAGAAGA
+GCATCAGAGGAAGATAAAAAAGAATCCTCAATGTCAGGCCCCTGAGCCCAAGCTAAGCCA
+TCATAACCCTGTGACCTGCACATATACATCCAGATGGCCTGAAGCAACTGAAGAACCATA
+AACGTGAAATAGCCAGTTCCTGCCTTAACTGATGACATTCCACCATTGTGATTTGTTCCT
+GCTCCACCCTAACTGATCAATTGATCTTGTGACATTCCTTCTCCTGGACAATGAGTCTCA
+GGAGCTCCTCACCAAGCACCTTGTTACCCCCACCCCTGCCCACAAGAGAAAACGCACGTT
+AACTGTAATTTTTCCACTACCTACCCAAATCCTATAAAACTGCCCCACCCCATCTCCTTT
+TGCTGACTCCAGGTGATTAAAAAACTATTGCTCACACAAAGCCTGTTTGGTGGTCTCTTC
+ACATGGATGCGCATAACACTCAAGGTAAATATTAGTCTGGTGATTTTTTTTTTTTTTGAG
+ATGGAGTTCCCTCTTGTTGCCAGGCTGGAGTACAATGGCGCGATCTCAGCTCACCGCAAC
+CTCCGCCTCCTGGGTTCAAGCGATTCTCCTGCCTAAGCCTCCTGAGTATCTGGGATTACA
+GGCTTGCGCCACCACTAGTCTGGCAATTTTTACATTAGAATTTTAGAATTAGAAGAGAGC
+TTAGAACTCTGCCCTCATTTGTCAGTGAGGAAACTGCCCAAGACAGGAAAAATAGTTACT
+TACCCTAATGCTTATCCTGGCTCCAGTGAAATTAGCTCCCCAGCCAAAGCTGAAATGGAT
+GGAACTAACAAGGACACATCTGCTGTCCCCAGCCCTTTCCAGAGGTGGGGAGGGATAGGA
+AGGGGAAAGTTTGTCGTGCCTGTTCCTGCTGATAGTGGGCATCAGGCTAGGCCAGGGGCC
+TTCTTGGAGGCTTTGGGGAAGGGGTAGGGAAGGCCACCAGGTGTTGGAGAGGGCACTCAT
+CTCCTTCAAGGCTGATGGAAGGTAGGATATGTGAGTCCTTCCTCTAAAGTGGCAGGAAAC
+ACTACTTTCTCTTTTTTATTTATTTATTATTTATTTCATGGATCCTAGAACTGAGCAAAC
+AGTACTTTCTCATCTTACTGGTTTTTGGGCCCCCACTCTATTCCTTTTATACAAACCTCA
+CAGAATTCTAACTAGAAAGGCCAGGCGGGATGGCTTACACGTGTAATCCCAGCGCTTTGG
+GAGGCCGAGGCGGGTGGATCACTTGAGGTTGGGAGTTTGAGACCAGCCTGACCAACATGG
+TGAAACCCTGTCACTACTGCCGGGCACGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG
+AGGCCGAGGCGGGCAGATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAACACAGTGA
+AACCCCGTCTCTACTAAAAATACAAAAAATTAGCCGGGCGTGGTGGCGGGCACCTGTAGT
+CCCAGCTACTCAGGAGGCTGAGGCAGGAGAATGGTGTGAACCTGGAAGGCAGAGCTTGCC
+GTGAGCCGAGATCGTGCCACTGCACTCCAGCCTGGGCTACAGAGCGAGACTCTGTCTCAA
+AATAAAAAAGAAACCCCGTCGCTACTAAAAATACAAAATTAGCCGGGCGCGGTGGCGCAG
+CCTGTAATCTCAGCTACTTGGGAGGCTAAGGCAGAATTGCTTGAACCCAGGAGGCAGAGG
+TTGCGGTGAGCCGAGATCACGCCATTGCACTCTAGCCTGGGCAACAAGAGTGAAACTCCA
+TCTTAAAAAAAAAAAAAGCCATGAGGCTGCAGGACAAGGAGTCTTCCAGTGAGGATGAGA
+TCTTCAACAGTGATGCGGGGTAAACGACGGGGCCCTCATGGTTCCCATCTAAAATGAGGA
+GGGGGTGAGAAACTTAATTGCTCCTTTCAAGAGTCAAAACCTTGGCATTGTTATTCTTAT
+CCCAGGGATGTTGAATCCCCAACAGAGAAGATCTCAACAGGAGAGTCGGCTGCTGAGAGG
+GGAAGAGAGTGAGGCCCTGCCCTAGGAGGAGAACACAGAGTGACCCTAGCCCACCTCAGG
+CCTCCTGTAAAATTACTTATTTTTCTTTTTTTTTCTTTCATAATTGAGATTTTATTGGTT
+GAGGGTCAGTACAGACATTTCAATTTGTACACAATTCTTAACATATGTAACAAAAATCGG
+CCAGGTTTCATGGCTCACGCCTGTAATCCCAAGACTTTGGGAGGCTGAGGCAGGCAGATC
+ACGAGGTCAGGAGATCGAGACCATCCTGGCTAATACAGTGAAACCCCGTCTCTACTAAAA
+ATACGAAAAATTAGCCAGGCATGGTGGAGGGTGCCTGTAGTCCCAGCTACTTGGGAGGCT
+AAGGCAGGAGAATGGCGTGAACCCGGGAGGCAGAGCTTGCAGTAAGCCAAGATTGCACCA
+CTGCACTCCAGCTTTGGCCACAGAGTGAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAA
+AAAAAAGTAACAAAAATCTAAAAAGCCACGTACTGTAATTCTTTTTAAAAGTTATCCCAG
+TGACTTTCCAGCTTAAAATTTGGAAGCAAATTTTCCTTAAGAGACTAAGTACCCATATCT
+TCACATGTTGATCAGCTGTTATGTATGGCCCACAGTTCACAACTGAATAGCATGTATACT
+ACATATTCAAATTTTTAGTATTTCACTTCACAATAACAAAGTTATTAGGAAAACAGGACT
+ACCACAACCAAAGATGTTACAGAGTGCCCACAACTCCAACAGGGTGAGCCATAATCAAGG
+AGTTGTTTTCTTTAGGAAACAATTCTACTACAAAACAACATGGGGATGGAAGTAATTTAA
+AATGTTCAAGACATTAAATGCAGGACTGACTCCATATTGCCATTTAATATGCTTTGTATT
+ACAGGATATAAAAACTAACCCCCATCTATGGAATGTTAAGCTGACACCCGAGACTGTCAA
+AGTCTCCCATAATTCAATATCCTACACAATTTTCTGGTTGTACCAAAAAATAAACAACCA
+GCAAATGATTTCACCTCTTAAAAAAAAGCATTTACACTTAAAAAATGGAATGAGGTGGGA
+TTCCCTCCTTCTCAAAAATGTTTCTAGAGCTACTAAAAAACTTGCATTTACAAAATAGTT
+GATAAAAATATTCCTCTGGAGGCCGGGCGCAGTGGCTCACGCCTGTAATCCCAGCACTTT
+GGGAGGCCGAGGCGGGCGGATCACGAGGTCAGGAGATCGAGACCATCCTGGCTAATGCGG
+TGAAACCCCATCTCTACTAAAAATACAAAAAATTAGCCGGGCGTGATGGTGGGCGCCTGT
+AGTCCCAGCTACACGGGAGGCTGAGACAGGAGAATGGCGTGAACCCGGGAGGCGGAGCTT
+GCAGTGAGCCGAGATCGCACCACTGCACTGCAGCCTGGGCGACAGAGCGAGACTCTGTCT
+CAAAAAAAAAAAAAAAGAAAGAAAAAAAATTCCTCTGAATTGTAAAGAAGGGAGACAGGG
+ACCACTGATAAGACATGGTCTATGGTATTCATCAGACTTGGCTTCTTTATCTCCTGCTTC
+ATCAGAGGCTGGACTCTCCTCAGTTTTCGTTTCCCCTGTTTTCTGCAGGTAAATCTTCTT
+TAGTTTTTTGGTTAGCCACTTCGGCCTGTTTTCCCTTTGCTCCCCTTTTCCCTTTTTTTG
+CACTTTTGTGTCTGAAAATTTATCCTTCGCTGCTGCCTTTTTCGGCTTCGCTTCCACTTT
+TGCAGGAGGTTTAGCTGACAATTGCGCTGATCTCCTCTTGGGCTCTTCCATGGCAGCCCC
+TTCGGTGGAGCTGACCTTTTTCTTGGGCATCCTGGCAGCAGGGAAGGTGGGTGCCAGGTG
+CCTGCTGGCCGCGGTGTGCCTACAGCCTTCGCGAAGCTGGGCTGCCTGGCCGCTGCCACT
+CCTCCCGCCACCGGAGCTGCTCTCGCTATGTTGGCCAGGCTGGTCTCGAACTCCAGACCT
+TAGATGAACCACCTGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCATGAGCCACCATG
+CCTGCCCTCGGAGCTGCTCTTATTTTTCTTATATTAAAGAATATATATAACTAATTCTAG
+CCATGCAGTAAGACATTTAAATGTGTAGTTAAATATTTATGCATAAATAACAAGGGCCAT
+CAGAAAGAAAAGCAGGACTGAAGCTGGCGGCCCACGCATCCACAAAGGCAGCAGGCAGAG
+GAAGCACAGGGCCATCTTTCCCTGCCTTGTTTCCCAGTCTAATTAGTCATCCAGACCTAA
+AAACATATCCTCAGAGGGTGGAGATTTTACAATTAAATATCGTTGTTCTTGGTGCCCTCT
+CCCCTGGTTCATCAAGTATAATACCACATACTTGACCTCCTGCCCACAGGGGACCTACCA
+CCTCCTGGCCCCTCTCATAGGATCACTGGGCCTACCTGCACTGTGTGGCCAAGCCCTGTC
+TTTTTCCCAAGCCCTCAAGCCCATGCATGAATGTTCATTCAGACATGGTAGGGGGCTTTT
+CGCCCTTACAAGATGGAGGAAAATTCACTTTATTTTTTTTATTGAGATGGAGTCTCGCTC
+TGTCACCCAGGCTGGAGTGCAGTGGTGCAATCTCGGCTCACTGCAACCTCCGCCTCCCAG
+GTTCACGCCATTCTCCTGCCTCAGCCTCCCGAGTAGGTGGGACTACAGGCGCCCGCCAGC
+ATGCCCAGCTAATTTCTTTTTGTATTCTTAGTAGAGACAGGGTTTCACCATCTTAGCCAG
+GATGGTCTCGATCTCCTGACCTTGTGATCTGCCCGCCTCAGCCTCCCAAAGTGCTGGGAT
+TACAGGACTGAGCCACCGCACCCGGCCTGGTTTTTTTTATAATTTATTTTTCTTTTTAAA
+AATCCCAACCTTTGGATAGCAGGGAGGTGCTGGAGGGATAGGGTCAAGAAGAGTGTGTGA
+GAGCAGTAATTTCCCAAGACTGCCCTCTGCGGGACTGTATTTCAGAAAACATACTGGTGG
+GGCTACCTCTCCATTCACGTGTACTGCCCTAGCCTCTCCCCATCCCCCGCTGATGCACTT
+CCATAGATGCACTGTTCCATAACGGCAGCAGAATGCTGCAGAAGGCGCAAGGATTCCTCC
+ACTCCATCTTCAAAAAAAAAGTCACTAATAAATCACATTTGGTAAGTTAGTGAACATGAA
+ACACATTAGTGAGCAAAAGAAAATCTGAATGAACAAGAATTGGTAATCTACCTAACTGAA
+CACAAATGAACGCTGGCAGTTCAGTAATAGGAAGTAAAGAACAGTGCTAACTGCAGAACA
+GCAGCACCCCCATCCCAGGAGCAGTGTGACTGGGAAGCAGCCCTGTGTGCGTGCTGTGGG
+GGTTCTAAGCAAAGTGAGCCGCCCATCGGTTTCCATGAGTTTGCTGATGTCAGACAAAAG
+ACACCTGTTCTTTAGCTGCCTGCCCCAATTATCTCCCAAAGTTCCTTACTGAGAATGAAA
+AGTGTCTTTATCTGTGTGGTGACTTCAGTGGGCCAACAAATATTTGAGTCTAAAGCACAA
+GACTAGGCCGGGCATGGTGGTTTATGCCTGTAATCCCAACATTTTGGGAGGCCAAGGCAG
+GCGGATCACCTGAGGTTGGGAGTTCAAGACCAGCCTAACCAACATGGAGAAACCCGTGTC
+TACCAAAAAAAATAAAATAAATAAATAAATAAATAAATATACACACACACATATATATAC
+ATATATATATACACATATATACATATATATACACACATATATACATATATATGCACACAT
+ATATACATATATACATATATATATACACACATATATATACACACACACACACACATATAT
+ATATACACACACACACACACACACACACACAAAAATTAGCCGGGCATGGTGGCACATGCC
+TGTAATCCCAGCTACTCAGGAGGCTGAGGTAGGAGAATCACTTGAACCTGGGAAGTGGAG
+GTTGTGGTGAGCCAAGATCACGCCATTGCACTCCTGCCTGGGCAATAAGACTGAAACTCT
+GTCTTAAAAATAATTAAATAAAAAGTAAAGCACAAGACTAAATAGTCATAGGCAGAACAG
+CAGCTACCATTTACAATTTGCTTACTTGATGCCAAATCCTGGGTTAGGCATTTTACAGTC
+TTATATGATTTAGCCCAGCAATCCATGGAAGCATAGTTTTTAAAATCATCATCTGACAGA
+TAAGGATACAGGGCTAGAAGGACGTAGGTGACCTGCCCAAGTGTCCAAGGCCACACATCC
+AAAACGACAAGTTACGGTTTTAAGCCAGCACTGTTAGGCTCAAAGCCTTGTAACCATTCC
+TCTGTCCGGCTGTAGGACATAGGGAGATAAAGGGGGATAAGCCATGGTTGCCATTGAAGA
+GTCAATAACAATAACATACGGATGGTGAGAATGATGGCAGCTGCTGTTTGTTGGGCACCA
+GCTGTGGTCAGGTACAGTGCTAAGCACTTTAATTACACTGTTAAGTCACCAGGACAGAAA
+CTCCCCCACACCAGCTCTGTAATAGGGGTGAGTGTTGGACATAAGCAGGGAGTTGACAAG
+AAGCCAAGACTAGGCTGGGCACAGTGGCTCACGCCTGTAATTCCAGCACTTTGGGAGGCT
+GAGGTGGGTGGACCACCTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGCAAAAC
+CCCGTCTCTACTAAAAAATACAAAAATTAGCTGGGGATGGTCATGTGCTCCTGTAATCCC
+AGTTACTCAGGAGGCTGAAGCAGGGAGAATTGCTTGAACCCAGGAGACGGAGGTTGCAGT
+GAGCCGAGACTGGGCCACTGCACACCAGCCTGGGCAACAGAGCAAGACTCCATCTCAAGA
+AAAAAAGAAGCCAAGAGTAGAGATCCTTGCACTGCTGGGCTCCCAAAGTCTGGATTCCAA
+GCACCTCCAGGTTCCTATTTTGGCATATTTACATAATTTCACATTTTTATGCTAAATTTT
+TTTTTTCGGTCTGTCGCCCAGGTTGGAGTGCAGTGGTGCGATCTCGGCTCACTGCAAGCT
+CCGCCTCCCAGGTTCACGCCATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTACAGG
+TGCCCGTCACCACACCTGGCTAATTTTTTGTTTTTAGTAGAGATGGGGTTTCACCATGTT
+AACCAAGATGGTCTCGATCTCCTGACCTCGTGATCCGCCCGCCTCAGCCTCCCAAAGTGC
+TGGATTACAGGTGTGAGCCACCGTGCCCGGTGATAATTTTTTTTTATATAACAAAAAATT
+TTTTTATGTATCTCAAATGTGCACATTTTTCTTTTGAGACAGGGTCTTGATGTGTCACCC
+AGCCTGGAGTGCAGTGGTGCATTCATAGCTCACTGCAGCCTCAAGCTCTAGGGCTCAAAA
+GATCCTCCTGCCTCAGCCTCCAGAGTAGCTGGGGGTCTACAGGCATGCACCACCATGCCT
+GGCTACAATTCTTATTATTCCCCAATGCTACCCCAACCATATTTCTAAAAACTCCCAAAG
+TAAGATTCTATTTTGCCCAGTTTGTCCTCAATTGAGCAGTTTTGTCTGAGCCCAGAGTTT
+CTGCTGGGCCAGCCTGTGGATGAGCTGTCTCTCCCAGGCCGGTGCCCATCCCTGCCAGTA
+GCCTGGGAGGGGGAGGGGTGCCCAGGGTCAGGTGGAACAAAACATGACTGCCTAGGGCTG
+CCTCTGTCTCCATCTCACTGACGGCAAACCATAGCTCAGAGGGCCAGCTCTTAAGTGAGA
+CCTGAGTGCCACAGAAAGGTGGACACAAGGCCAACAGCTACTAAATGAAAGAAAATTCTG
+ATTCCAATGAAATCTGCCAGAGAAATAAAGCATTTTTTAAAGGATGATGAAATAAGGCGA
+TGTCTGATTAGGGCAAACATGATGCAGACAGGAAATGCAGCAGTTCAGAGGAGGGAAGGT
+CAGGCCGCCTGGGGAGAGTCCATGAAAAAGATGGAACATGCCAGACGTTGTGCCTGGCGC
+TGGGAAAGAGTTGACTAGGACAGCATCCCTTTCCTCAAAGGGCTCCTAGACTAGGGAGAG
+GGCCGGACATCTGAATACATCCTGAGGAGACAGTGTGGGACAGCATGCTGGCAGTGGAGC
+CAGCCGTGGTTCTGCTCTTGGTCGGCTGGAAAGGAGTAGATATAAGGGATGGCTTAGAAG
+AAGGGAAGTGGAAGAAAAGTTTTCTGAGCAGAAAAGAGGAAGGAAAGGCCTTCTAGACAG
+GACACTACAAAGGCAGAGAAGCCCTAAGCAGAGTGAGCACCAGACTCCACAGGTTAAGGG
+CTCAGTCACACAGGACCGCCCTCACGTCAGACCCCAGGTGCAAGGCCAAGCATCACCTAT
+GCATCTGACCAACTGGCTATAAATTGGAGGTCCCCACAACTCCCTCCTCAGGTTTGACCA
+TTTGCTAGAACAGCTCACAAAACCCAGGAAAATAGTTTACTTACTATTGCTGATTTATTA
+CAAAGGATATTTTAAAGGATACAAATGAACAGCCAGATGAAGAGATACACAGGGTGAGGT
+CTGGAAGGGTCCTTGTGGAGTTGGGGTGCACCATCCTCCCGGCACATGGATGTGTTCGCC
+AACCCAGCAGCTCTCCATGTCCTGTCTTTCAAGGATTTTTCTGGAGGCTTTGTCACGCAG
+GCATGATCGAGCTCCAGCTCTGCTCCCCACCCCAGAGGATGGGGAATGGGGCTGAAAGCA
+CTAAGCTTCCAACCATAGTTAGGTATTTTTGGTGACCAGTCCCCAAATAAGGAGCCCACC
+AAGAGTCACCTCATGAGAACAAAGGACGCTCCTATCATGCAGAAAATTCCAAGGGATTTA
+GGAATCCTTGTGTCAGGAACCAAGGTGAAGGACCAAACGTTAGAACAAAAGATGTGCAAT
+CATAAAAAAGAACAAGATCATCTCTTTTGTAGGAACACAGATGGATCTTGAGGCCATTAT
+CCTCAGCAAACTAAGAAAGGAACAGAAAACCAAACACCACACGTTCTCACTTATAAGTGG
+GAGCTAAATGATGAGAACTCATAAACACAAAGAAGGGAACAACAGACACTGGGCCCTACC
+TGAGGGTGAAGGGTGGGAGGAGGGAGAGGAGCCAAAAAAACTACTGGGTACTGGCCAGGC
+ACGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGTGGGTGGATCGCAAGG
+TCAGGAGTTCGAGACCAGCCTGGCCAAGATGGTGAAACCCCATCTCTACTAAACATAAAA
+AATTAGCTGGACGTGGTGGCAGGCACCTGCAGTCCCAGCTACTCAGGAGGCTGAGGCAGA
+AGAATGGCGTAAACCTGGGAGGCGGAAGTTGCAGTGAGCCGAGATCGTGCCTCTAGCCTG
+GGCAACAGAGCGAGACTCTATCTCAAAAAAAAAAAAGAAAAAAACTATCGGGTATTAGGC
+CTAGTGCCTGGGTGACGAAATAATCTGTACAACAAACCCATGTGACACAAGTTTAGCTAT
+ATAACAAACGTTCACATGTATCCCCTAATCTAAAATAAAAGTTAAAAAAAAAAAAAAGGA
+AAAAACACCTGGGAGAAAAGAAAAATGATAAATTTAAAAAAAAAAAAAGACAATGCTCCT
+AGCACCCCCATCTTTCAGGAATTTCCAAGGGTTTTAGGAGCTTTGTGTTAGGAACCGGGG
+GCAGAGACCAAATGTATATTTCTTCTTACGTTACACTACCCCAGATAGGAAAACAGAAAT
+TACTCTAGATATTTCAAACAAAAAGGGGTTGTATATAGGCAATTAGTGCTTTTCATTGGA
+GGGGCTAGAGGTGGTGAAGGTTGTGGGGAGGGGGTTGTACCACTGGCTTTCAGGCTACTT
+TACCACAGCTGATTTCCAGAGGATGGAAGAAGTCAGGAAACTTGGGACACCGCTGCTGAG
+GTCCTTGCAGCCCCACGGTCCCCAGGCTGGTGACTGGTGGGGGAGTATGGAGTCCAGCTG
+ACCACCAGAGCCTGCACGCCTGCTGCTACAGGGGAGGAAAGGATGACTTCTACCTCCTTT
+CCACATTCCAAATTCCACGTGACTACCTTTTATTGGCAGCACCCTGCTGGCAAGGGAGCC
+TTGATGTGTGCTTCCTGGGCTTCCAGCACCTGCACAGAAAGGGGTGAAATGAATGTCATG
+AGCAGCCACCACTCTGCAGCACAACTCCACATCCAGGCATGGTGGGGAGCCCTACTTATA
+CTTGGAGGTGTCCTGGCACCCTACCCACTTTTGGTAGGTGTTTGGGTGTCCGAGGCTTTG
+CAAAAGAAGAAGGCATGGAGTCTACGGTGGAGTCACATGGTGGAGACCTAGCTAAGTCAG
+AGGCCTGGAGAGGTGTCATTCTAGCTGGGCAGCAGGTGACACACAACCATGCCCTGAGTT
+GATTGGAGAAACACCTGGGACCGACCTGGAGTTTGTTCTGGAATGTTTTCACTGGAATGA
+AAGCTGAGCGGTCCGCAGGCCATATAGTATCGGAGAAAACATAGCTCTCATTGAAAAAGG
+CTGCCAGAGAAAATGTGCCCGCAGGGAAGTTCAGGGGTTTTGTTTGTTTGGGTTTTTTCT
+CTTTTGCTTTTTTTTCCTTTTGAGATGGAGTTTCGCTCTTGTTGCCCAGTCTGGAATGCA
+ATGGCACAATCTCAGCTCACTGCATCCTCTGCCTCCTGCGTTCAGGCAATTCTGCCTCAG
+CCTCCCTAGTAGCTGGAATTACAGGCATGCACCACCATGCCCGGCTAATTTTTGTATTTT
+TAGTAGAGACAGGGTTTCACCATGCTGGTCAGACTGGTCTCAAACTCCTGACCTCAGGTG
+ATCCACCCGCCCCAGCCTCCCAAAGGGCTGGGATTACAGGTGCGAGACACCGCGCCCGGC
+CTATTTTGGGTTTTTGTTTTGTTTTGTTTTGGAGATGGTCTTACTCTGTCACCCAGGCTG
+GAGTGCAGTAGCATGATCTTGGTTCACTGCAACCTCTGCCTTCCAGGTTCAAATGATTCT
+CCTGCCTCAGCCTCCTGAATAGCTGGGAATACAGGTGCTCACCACCATGCCCGGCTAATT
+TTTATATTTTTTTGTAAAAACAGTTTCACCATGTTAGCCAGGCTGGTCTTGAACTGACCT
+CAAGTGATCCGCTCACCTTGACCTCCCAAAGTGCTGGGATTAAAGGCATGAGCCACTGTG
+CCCCGCCAGGAAATTCAGGTTCTGAAAATACACCTGTGGATCTCGAGCCTTGAACATCCT
+TGTATGCTGCTTTAAATGGCTGATCCTCAATGCCTCCCTTCCAACTCACACGCTCGCTCC
+CCTACATCAATCTCCCAGAAAAAGGGACCTCTTTTATTCTTTTTTTTTTTTTAATTATTA
+TTATACTTTAAGGTCTAGGGTACATGTGCACAACGTGCAGGTTTGTTACATAGGTATACA
+CGTGTCATGTTGGTGTGCTGCACCTGTTAACTCGTCATTTACATTAAGGATATCTCCTAA
+TGCTATCCCTCCCCCCTCCCCCCACCCCACAATAGGCTCTGGTGTGTGATGTTCCCCACC
+CTGTGTCCAAGTGTCCTCATTGTTCAGTTCCCACCTATGAGAACATGTGGTGTTTGGTTT
+TCTGTCCTTGCGATAGTTTGCTCAGAATGATGGTTTCCAGCTTCATCCATGTCCCTACAA
+AGGACATGAACTCATCATTTTTTAGGACTGCATAGTATATTATGGTGTATATGTGCCACA
+TTTTCTTAATCCAGTCTATCATTGATGGACATTTGGGTTGGTTCCAAGTCTTTGCTATTG
+TGAATAGTGCCGCAATGAACATACGTGTGCATTTGTCTTTATAGCAGCATGATTTATAAT
+CCTTTGGATATATGCCCAGTAATGGGATCGCTGGGTCAAATGGTATTTCTAGTTCTAGAT
+CCTTGAGGAATCACCACACTGTTTTCCACAATGGTTGAACTAGTTTACAGTCCCACCAAT
+GGCGTAAAAGCGTTCCTATTTCTCCACATCCTCTCCAGCACCTGTTGTTTCCTTTTTAAT
+GACTGACATTCTAACTGGTGTGAGATGGTATCTCATTGTGGTTTTGATTTGCATGTCTCT
+GATGGCCAGTGATGATGAGCATTTTTCCATGTGTCTGTTGGCTGCATAAATGTCTTCTTT
+TGAGAAGTGTCTGCTCATATCCTTTGCCCACTTTTTGATGGGGTTGTTTGATTTTTTATT
+GTAAATTTGTTTAAGTTCTTTGTAGATTCTGGATATTAGCCCTTTGTCAGATGGGTAGAT
+TGTAAAAATTTTCTCCCATTCTGTGGTTGCCTGTTCACTCTGATGGTAGTTTCTTTTGCT
+GTGCAGAAGCTCTTTAGTTTAATTAGATTCCATTTGTCAATTTTGGCTTTTGTTGCCACT
+GCTTTTGGTGTTTTAGTCATGAAGTCTTTGCCCCTGCCTATGTCCTGAATGGTATTGCCT
+AGGTTTTCTTTTAGGGTTTTTATGGTTTTAGATCTTATGTTTAAGTTTTTAATCCACCTT
+GAGTTAATTTTTGTATAAGGTGTAAGGAAGGGGTCCAGTTTCAGTTTTCTGCATATGGCT
+AGCCAGTTTTCCCAATGCCATTTATTAAATAGGGAATCCTTTCCTCATTGCCTGTTTCAG
+TCTATCCAATTTTTAGATTTATTTCTCATTGTCTTTGTTAGAGACGGGCCTCACTTTGTT
+GCCCAGGCTGGTTTTGAACTCCTGTTCTCAAGTGACCCTCCCGCCTTGGTCTCCCAAAGT
+ACTGGAATTACAGGCGGGAGCCCTGCGCCCGGCGAAGCCTGTATTAAGCCCTTTTATGCT
+CACTCTGCGGTACTGCAGAGAGCAGGGAGGAAGCAGAGGTGCCCTGGCATCTTCAGCTGG
+AGGTGAGCAGGGTGCTGAGGGTGTGAGAGGCCGGGCGCCTGGGGATGGGAGGCGGGACCG
+CATCTTCAAGGGGACGCTGCCACCCTACCCCAGAGGTCAGGGCCTCTCGCCCAGCTCTGG
+CTCTGATGTCCTGGAGGGAGGGAGATGCTGTTGCGATTCAGAAGATCAGGGGAGGGCCAC
+CCCCATTCGAGAAGAGTGAAAATCCTGAGCCTGAAGCAGAAGTGGAATCGGTTGGAGCCG
+AGGCTTTAGAGGGTGGCGTTGGGAAGAGGGTCTGGCGCCGCCCTATGGACTGTTCGGGCT
+CACGAGGCTGAAGGCTCCGAAGACCGCGACCTGCGAACCATGGGAAGGTTCCACGCGGAT
+GAAGGCTACAGCCCCGGCCAGAGACCCTACACTAGGCCTGGACTTCTCCACCGGCTTATG
+ACATGATAGCTCAATAAGCTCCTTATTTAACGCACTGTTGTATCAGGTCCCTGTCGCAGC
+CACTGGCCCTATAGCCTAATAAAGGAGCGGGTGCATGCATTGGATTGGTGAGCTACCGCC
+ACAGCAACGCGTCCTAATCAACCATCCCAAACGGCAGTTGGAAGAAAGTTCTTGCAGGCC
+TGTGCTTGGGCTTGAACGCTGGGCCGGCCGCTGCGCTCTGTGGCTCCCTGCAGGCCTGCG
+GATCGGCCAGGGGGCTCCGATCCTTTTGGACCGAGGCTGAAGCAACGGCTGCACCAGAGA
+AGGCCTTCTGGCTGAAGGTGGAAGTGCACGGGGTCCGCAGAACCGCCTAAGGCGTCTTCA
+GGCGTGGGTTAGGAACTAGCAGGCTCTCCTTTGTGCTTCATTCCATGGCCAGAGCAAGAC
+ACGTGGGCAAGCCCAAAGCCAGGGGCTGGGAAAGTACCCTCCACCCACAACGAAACCATG
+GCAAGGGGTGGGTGCATGTAGGGCTGAGGAATTGGGGCCAATAGTCTATCTATCCCGTGA
+GGAGACCTGCTGTGGGGGTTGCACAGCCTGGGTCTGCAAGCTTCACTGCCCTCGGCCTGG
+GCGTCCTGTGCTCCTTTGGCCTCTCTGGGTTAGGAAAGTATCCCTTTTATCTCTGCAAAG
+GTCAGAGTCCCAGTGTCTGCTTTCAAATATAAAACCAGCTATTGGGGGTATGACCCTGAA
+CTGTATGAGGGCCGCCCTTTCAGTAATTCTCTCTCCAGGAGTGAGAACCTCCCTTTCTCA
+ATTTTAGGTTAGATGGGTCTGAGTGTGTTTAGTGCAGTTCATGGTTGAGCAGGAAGATTA
+GAAATAAGGACATAGAGACAACTATTTTCTTGGTGTTAAACTCATTTTAAACAAAGTGGA
+AAGTAAAGGATTTAGTAGGGAAATCCTTTCACCTTGGCAAAAGTATAGTCTATCTGGTCA
+CAACTGCCACAGCATGATCCTTGGTGGCTTGGCACAAGCATTCCCTGTCCTCCATCAAGC
+CCATAATGTCCCTCAGTAATTCCACTGCATTTTTTTTGCAGCTGCTGTGTGCTGGAGCTG
+TGGGGAACCCCTCGGTAATCTCTTGTCTGCTTTTTAGGAACTCCTATCTCCAGATCTTCT
+TTTACTTCCCAAGCCACCCCACTTCTTTGAAAGGTCTGCAGGCTTGTCTACCTCTTCTCA
+GCTTGCTCTGCATGCCTTGGGGAAGCTCTTAAAGCATGGATCATGAAGGAGGGGGGCGGA
+GGAGAGGGAAATGCATGTTTCCACAAATGGACCATGAGCCCACCAGGCAGGCTCTAGATG
+GGGAAAAAAACCCCTTACATTATCATGTGACTTGTACAAGAAAAAAGGTACCTGCAAAGG
+GTCAAGGGACCAGAGAGGAGAACTTGAGAGGTATTCTGGAGGAGGCGACTTTTGATGTGA
+GCTTTCTAGGTGAGTAAAGGGCATTGTAGATGAAAGGACTGGCTGGTAAGTGGCCAGCAG
+ATAGAAATACAGGCTGAGCTCAGGGGAGGGTACACCCAGAGGTGGGGAGGAAGGTAGGAA
+GTGAAAAAGGAGGCTGGGCGTGGTGGCTCACGCCTGTAATCCTAGCACTTTGAGTGTCCG
+AGGCAGGCGGATCACTTGAGGTCAGGAGTTTGAGACCAGCCTGGCCAACATGGTGAAACC
+CCATCTCTACTAAAACTACAAAAATTAGCTGGGTGTGGTGGTGTGCGCCTGTAGTCCCAG
+CTACTCAGGAGGCTAAGGTATGATAATTGCTTGAACCCGGGAGGCGGAGCTTGCAGTGAG
+CGAAGATCATGCCACTGCACTCCAGCCTGGGTAACAGAGTGAGATCCTGTCTCAAAAAAA
+AAAAAAAAGGAAGTGAAAAAGGAAAGGGAGAAGGCCAGAATGGAAAGGAGCTAAAGACAG
+ACTGAGCAAGGCAGAGTTGGAGGCCAGCGCAGGAAGGGCTCAAAACATTTGCAAGGACAG
+TTCACATCCCACTGGTATGTCAGCTTAGATTTAAAGCACTACCCAGAGTTATTCAAAGCC
+AGACAGGAGAACTGCAGGCATCAGAATGCCCTGGGGACGGGTCCAAAATGCAGAATCCTA
+AGCCCCTAAAGAGTCACTCTACGATGAGATCCAAGAATTTGGGCTGGATCCCACTTCTCC
+TGTCCCCTGCCCTCACCACTGAGGACCTAAAGCATAATAAAAGGGGACAATCTCTGCCCT
+AAATAATCCCTTTTGGCAGTTACTTTCTGTTTTCAAACTTCAAATCTGTCCTCTGGGACT
+AACCTAGGAGATGAGGGATAAGGGAATTAACATTTATGGAAAATGGAGGAACCCACATAG
+GCACCTGTGTTCACCTAATATTCCTTACCAAGCAGTGGGTGCTGCCATTATCTCCATTGT
+ATGGATGAGAAAACAGGCTTAAAAGAGGTTAATCGACCAGGTGCGGTGGCTCACGCCTGT
+AATCCCAGCACTTTGGGAGACCGAGGACAGCGGATCACGATGTCAGGGGATCGAGACCAT
+CCTGGCTAACACAGTGAAACCCCGTCTCTACTAAAAATACAAAGAAAAAAAAAAATTAGC
+TGGGCGTGCTGGTGGGCGCCTGTAGTCCAAGCTACTCAGGAAGCTGAGGCAGGAGAATGG
+CGTGAACCCGGGAGGCAGAGCTTGCAGTGAGCCAAGATCGCGCCACTACACTCCAGCCTG
+GGCGACAGAGCGAGACTCCATCTCAAAAAAAAAAATAAAATAAAATAAAGAAAAAAAGAA
+TTAGCTGGGCATGGTTGCGCACGTCTGTAGTCCCAAGCTACTCGGGAGGCTGAAGCAGGA
+GAATTGCTTGAACCCGGAGGCAGAGGTTGCAGTGAGCCAAGATCACGCCACTGCACTCCA
+GCCTGGTGACAGAGCGAGACTTCGTCTCTAAAAAAAGAAAAAGAAAAAGGAAAAAAAAAA
+AAAGAGGTTAAGTAACTTGGGCGGGGGCGGCCAGAGCCACAGAACTAGTAAGTGATAGAA
+GTAGGATTCTCACCTAGTTCTTTCTGATGCTAGTTGGAGAGGCAGCTTTGTTCAGTGGGT
+TTTAGAGCCAGGGCTGCTTAGGTTTGGATCTCACCTCTATCCCATATTATTTGCTGGGAC
+TTCCTTAAAACAGTGTGGGGCTCAGGGCAACCCAATGAGTATGGGGCTAAGACAGCTGCC
+ACCGAGTCAGCATTTTTCACAGGCCCCTCGAGATAGCACTGAAGACAGAAATTTCTAAAT
+TGAATTTTATTGATGTTCAGGAAAGAGAAGTCAGTCACAACCCCCCTTGGCCCTCAGCCC
+CAAGCAGAGAGCCCAGAGTGTGTGACCTCAGGCAAGTACCAAAACCTCTCTGTGCCTCAG
+TTCCTCATCTGTAAATTGGGGCAAATGTCAGTTGATGTGAGGATTAAATATGATGATATC
+CTGGCTGGGCACAATGGCTCATGCCTGTAATCCCATAACTTTGGGAGGCTGAGGCCGCTG
+GATTGCTTGAGGCCAGGAGTTCAAAACCAGCCTGGCCAACATGGTGAAACCCCATTTCTA
+CCAAATATACAAAAATTAGCCAGGCATGGTGGTGCATGCCTGTAGTCCCAGCTACTTGGG
+AGGCTGAGGCACAAGAATCGCTTCAACCCAGGAAGCAGAGGTTGCAGTGAGCTGAGATTG
+CGCCACTGCACTGCAGCCTGGATGACAGAGTGAGACTCTGTCCCAAAACAAAAAGAAAAG
+CAAAGCAAAGAAAGAAAAGGAGAAAAGAAAAGAAAATAAAAAGCTGATATCCTTTTTTTT
+TTTTTGAGACGGAGTCTCGCTCTGTCACCGAGGCTGAAGTGCAGTGGCACGATCTCGGCT
+CACTGCAAGCTCCGCCTCCTGGGTTCACGCCATTCTCCTGCCTCAGCCTCCCAAGTAGCT
+AGGACTACAGGCGCCTGCTGCCACATTTGGCTAATTTTTTGTATTTTTAGTAGAGACGGG
+GTTCAATAAAATGAAGCGAAATGGGGATGAAACATAATGAACCACAGCAGTTTTCTGTCC
+CTACTGTTCCCACCCTTCTGGGGAGCAAGATTTCAATGGAATCTTCTGGTGCTTCTCCCG
+ACATCTCTTGCATGTCTCATTGTTTTTATTATTATTATTATTATTTTGAGACACAAATGA
+GCTAAGCGCTACTTCGAATTATTAAAGCCCATATCACTGGAGAAATAAGATCCCTATTCT
+GAACACCTAGCAATAAGTACCATAATATACTTTACCTCTTCATCTTCCTCATCCAGGTAT
+TTTATTTTAATACTATTCAGATCAAATGAAACTTTTACCTACAAAAGAAATACACATTTA
+AAGGCAGGTTATAATGTACATAGAAGTCAAAGGATGAGTTGGGCATATTTCATTACATAC
+TAAATATTTTATATGGTTAAAAAAATCCACAAAATCAGAAGACAACAAACAACCATCACA
+ACCCACAGCAAAGGGTTAATATCTGCAACACACCCAGAGTATCAGCAAAACTGCTAATGA
+TACAATTAACAACCCAGGAAAAAGTATACATAAAATTCATAGAAGAAGTCAGAACACCTA
+ACAAATACCTCAGAAGACTTTCAAACTTTCTGGTGGTCAGAACAATGCAAATTGAAAGCA
+ATGAAATGTCATCTAATCAGAACAGCAAATTGTGTGTATGTGTGTGAGCACAAAAAATGG
+GAAGACTTGGGTTCTAGACACAGCTCTGGCCCATTACTAGACATAAAACTGTGAGCAGGT
+CAGTTCACCTTTGAGCTTCAGTTCTTTAATCTGTAAAATAGGTCTAATATGTCTGTTTTG
+CCGATCTCACAGTGTTACCATAAGGATCAAATTAAAAATGAATATGCAAGTTCTTTCAAA
+ATGTCATTCAAATATAAAAATATTATAATACAGGCCAGGCACAGTGGCTCATGTCTGTAA
+TCCCAGGATTTTGGGAAGCAGAGGCAGGCAGATCGCTTGAGTCCAGGAGTTCGAGACCAG
+CCTAGCCAACATGGTGAAACTTCGTCTCTAATAAAAATACAAAAATTAGCTGGGTGTAGT
+GGCGCAGGCCTGTATTCCCAGCTACTCAAGAGGCTGAGGCAAGAGAATTGCTTGAATCTG
+GGAGGCAAGGTTGCAGTGCGCCAAGATCATGCCACTGCACTCCCGCCTGGGTGATAGAGC
+GAGACTCTGTCTCAAAAATAAAATAAAAAATTGGCCCGGTGTGGTGGCTCATGCCTGTAA
+TCCTAGCAATTTGGGAGGCTGAGGTGGAAGGATCGTGAACCTAGGAGTTGAAGACCAGCC
+TGGGCAACAAAGCCGGACCCTGTCTCCTTAAAAAAATTAAGTTCAATTAAACATTTTTAA
+AAATAATAAACCAGTCATTAGAACCATAAACCTGTACTGTTTTTGACAATGTAATGCACT
+GCCCTGTAAAACACTACAATTAAGACTGTTATTTTAAGGACCCTGAAGTCTGTGAAGATC
+AGGCACTTTTTTGAAACCCTAAGATAATTATCCCCCAGTTTTCTCCATTCTTTGTTTCTA
+CCTAGAACCAAGTTCACCACCAAAACGCAGTCCTGCTGACGTCAAGTATTCATTCATATG
+ACATGTAATTACTGGGGTCGTTAAAATTTGGGCAGAATCTTTGTCAATTCACCAGGACCT
+TAGGCAAAAAATCAGGAAAATGAAGTGACTGACTCAGTCTGCCAAAAGCGGATATTCTGA
+AATACCACTTTCCAACTTTAAGAAACACTTCCTGCCAGGTGCGGTGGCTCACGCCTATAA
+TCCCAGCACTTTGGGAGGCCGAGGAAGGCAGATCACGAGGTCAGGAGATCGAGGTCATCC
+TGGCTAACGCGGTGAAACCCCCATCTCTACTAAAAACACAAAAAATTAGCTGGGCGTGAT
+GGCGGGTGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCG
+GGAGACAGAGTTCGCAGTGCACTAGCCGCGATCGTGCCACTGCACTTCAGGCTGGGCGAC
+AGAGCGAGACTCAGTCTCAAAAAAAAAAGAAAAAAAAGAAACACACTTCCCTACTCGTTA
+GGGAAATTAATCTTCGTCTCTTTTTCTCAAATTACACAATTGGAAATTAATTTAGATATT
+CTGGAGCTCCTCCAGCTGGTGGGCCAACTAAGAGAAAACAGGAAGTGGGAGATTCTAGCT
+TAGCTGGACCATATCCAGGTCTCCATAAGGAACTCTCTTTGGCTGGCATGTAAAAAAATT
+CTTTCAGCAAGAGCATTAATCTTGAACGTGTGTAAACACGAAAGCTATGGTTAACCCTAC
+CTGCTCCTTAGGTCTACAGCCAGTAGAGTCAGATAGCTGGGTCCTAGGCCTTCAGCTTTC
+ATAATTGACATTATTGTTAAGTCCATGTGACTGACTCACCTTGTCTTGGCACAAGTTAGC
+TTTTCCTCCACATCGATTTTTTTTTCTTTCAGCCTCAACAAAATCCCTTTAATGAAACAA
+ACCTGGCAACCCGAACTTTGGTTACTGTCTCCACCAGAGGCCTGTACAAGCCAAGTTATC
+CAAGCTGAGGCCGGGAGTGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGG
+CAGGAGGATCGCTTGAGCTCAGGAGTTCAAGACCAGCCTGGGCTGGTCTTTGAGAAAGCG
+AGACTTTGTCTCGAAAAAAAAAAAAAAAGTGTGGCCTGAAAGTTGAGTGTTTGACAAAAA
+GGAGAAACAGTGCCTTTCCAAAACCAAAGGTCCCTAACCAAGATCTCTTTAACGGGGTCT
+CGAAAAAAGGAGAATGGGATGAGAAGGATATATGGGTAGTGTCATTTTTTAACTTGCAGA
+TTTCATCCTAGTCTTCCAGTTATCGTTTCCTAGCACTCCATGTTCCCAAGATAGTGTCAC
+CACCCCAAGGACTCTCTCTCATTTTCTTTGCCTGGGCCCTCTTTCTACTGAGGAGTCGTG
+GCCTTCCATCAGTAGAAGCCGGATGTTCTTGTGTCCGAAATTGGTGGGTTCTTGGTCTCA
+CTGACTTCAAGAATGAAGTTGCGGACCCTCACGGTGAGTGGTACAGTTCTTAAAGATGAT
+GTGTCCAGAGTTTGTTCCTTCTGATGTTCGGACGTGTTCAGAGTTACCTCCTTCTGGTGG
+ATTCGTGGTCTCGCTGGCTTCAGGAGTGAAGCTGCAGACCTTTGCGGTGAGTGTTACAGC
+TCTTAAGGCGGCATGTCTGGAGTTTGTTCGTTCCTCCCGTCTGGAGTTGTTCATTCCTCC
+TGGTGGGTTCGTGGTCTCGCTGGCTTCAGGAGTGAAGCTGCAGACCTCTGCGGTCGGTGT
+TACCAGCAGATAAATGCTATGCGGACCCAAAGAGTGAGCAGCAGCAAGATTTATTGCAAA
+GAGCACAAGAACAAAGCTTCCACAGCGTGGAAGGAGACCAGAGCGGGTTGCTGCTGCTGG
+CTCAGGCAGCCTGCATTTTTTTTTTTTTTTTTTTTTTTTTTTGAGATGGAGTCTCCCTCT
+GTCACCCAGGCTGGAATGCAGTGGTGCAATCTGGGCTCACTGCAAGCTCCGCCTCCCGGG
+TTCACGCCATTCTCCTGCCTCAACCTCCCCAGTAGAGGGGATTACAGGCACCCACCACCG
+CACCCAGCTAATATTTTGTCTTTTTAGTAGAGTCGGGGTTTCACTGTGTTAGCCAGGATG
+GTCTCGATCTCTTGACCTCGTGATCCACCCCTCTAGGCCTCCCAAATTGCTGGGATTACA
+GGTGTGAGCCACTGGCACCCAGCGGGGCAGCCTGCTTTTATTCCCTTATCTGACCCCACC
+CACATCCTGTTGATTGGTCCATTTTACAGAGAGCTAATTGGTCCGTTTTGACAGGGTGCT
+GATTGGTGCATTTACAATCCCTGAGCTAGATATACACAGAGTGCTGATTGGTGCATTTAC
+AATCCTCTAGCTAGACATAAAAATTCTCCAAGTCCCCACTACATTTGCTAGACACAGAGC
+ACTGATTGGTGCGTTTACAAACCTTTAGCTAGACACAGAGTGCTGATTGGTGCATTTGCA
+AACCTTGAGCTAGACACAGAGCACTGATTGGTGCATTTACAATCCTTTAGCTAGACACAG
+AAGTTCTCCAAGTGCCCACCAGATTAGCTAGATACAGAGTGCTGATTGGTGCATCCCCAA
+ACCCCAAGCTAGACACAGAGTGCTGACTGGTGCATATAAAATCCTCAGGCTAGACATAAA
+AGTTTTCCAAGTCCCCATCTGACTCAGGAGCCCAGCTGGCTTCACCTAGTGGATCCTGCG
+CAGGGCTGTGCCGGGCGCCTGCACTCCTCTCAGCCCTTGGGCAGTCGATGGGACCGGGCG
+CTGAGGAGCAGGGGGCGGTGCCCGTCGGGGAGGCTCAGGCCACGCTGGAGCTCACAGGGG
+TTGGGAGGGGGCTCGGGCATGGCGGGCTGCAGGTCCTGAGCCTTGCCCTGTGCAGGGCGG
+CTGGGGCCCGGTGAGAATTCAAGCGGGGTGCAGGCGGGCCGGCAGTGCTGGGGGACCCGG
+CGCACCCTCTGCAGCTGCTGGCCCGGGTGCTAGGCCCCTGACTGCCCGGGGCCGGGGGTG
+CGGGGCCCGCTGAGCCCGCGCCCACCTGGAACTCGCGCTGGCTGGCGAGCGCTGCGCGCA
+GCCCCAGTTCCCACACCCGCCTCTCCCTCCACACTTCCCCGCAAGCAGAGGGAGCCGGCT
+CTGGCTTCGGCCAGCCCAGAGAGGGGCCCCCACAGCGCAGTGGCGGGCTGAAGGGCTCCT
+CCAGCACGGCCAGAATGGACGCCAAGGCCGAGGAGGCGCCGAGAGCGAGCGAGGGCTGCT
+AGCACGTTGTCACCTCGCATTCTGAACCACAGACTCTCCAACTCTCCGGCGCTTTTCGCC
+CACTCGGTCCCTCAGAACACGAAGGGCTCTCTCATCCTGTCACTAAAACGATTAGCTGTC
+CGGAGACACGGAAAAAGTCGCCCCTCTTCTTTGCAGGATTCCTCCCTTGAACTTCTCCAA
+ACCCTCTTAGTGTGACGTGACCCCACCCCTAGCTAACCCAGGCTGCTTCCTTACCAGCTT
+CCCGCCCCCTGGGGAGGCGGCAATGCAAAGACCGTCCGCTGCCAGCTCTGCCGCTATCTC
+TGTGGGGTGAATCTAACATGGCGGACAAAGACAGTAACTAGTCCCGTTTCTCCGCGTTTT
+CGCCAAGAAGATTGGCTCTTACCACTTGTCCCTCAAAACGACCACCCCATTGACTGGTGG
+CGATTGCGTCGACGGAGACGGGGCAAAAGCAAGCTGAACCCGAAAAATAACAAACACTGG
+GGCTGAGGGGTGGAACTACGAGTGCGCAGACATGGGCCAGAGCGCATTTCCCCTGCCCCA
+GGCAAATTCGGCGCTCACTGCGTCCCCGCAGGCCACTGACCTTACAAGACTACTTGCCCC
+AGACTCCTGGGGCTGGATGGGAATTGTAGTCTCCCTAAAGAGTTGTACGTATCTTTTTAA
+GGCCTAGTTTCTGCTTTCAAAATACGAAAACATAACACTCCAGTCCATAACTGTTGACAA
+GTACAAGCGCGCACAGGTCTCCAATCTATCCACTGGATTTCCGTGAGAATTGTGCCCGCT
+CTGGTATTGGATGTTCCTCTCCATAAGACTACAGTTTCTAAGGAACACTGTGGCGAAGAC
+CTTTCATTCCGCAACGCATGCTGGAAATAATTATTTCCCTCCACCCCCCCAACAATCCTT
+ATTACTTATATTTACCGAAACTGGAGACCTCCATTAGGGCGGAAAGAGTGGGGGATTGGG
+ACCTCTTCTTACGACTGCTTTGGACAATAGGTAGCGATTCTGACCTTCGTACAGCAATTA
+CTGTGATGCAATAAGCCGCAACTGGAAGAGTAGAGGCTAGAGGGCAGGCACTTTATGGCA
+AACTCAGGTAGAATTCTTCCTCTTCCGTCTCTTTCCTTTTACGTCATCCGGGGGCAGACT
+GGGTGGCCAATCCAGAGCCCCGAGAGACGCTTGGCTCTTTCTGTCCCTCCCATCCTCTGA
+TTGTACCTTGATTTCGTATTCTGAGAGGCTGCTGCTTAGCGGTAGCCCCTTGGTTTCCGT
+GGCAACGGAAAAGCGCGGGAATTACAGATAAATTAAAACTGCGACTGCGCGGCGTGAGCT
+CGCTGAGACTTCCTGGACGGGGGACAGGCTGTGGGGTTTCTCAGATAACTGGGCCCCTGC
+GCTCAGGAGGCCTTCACCCTCTGCTCTGGGTAAAGGTAGTAGAGTCCCGGGAAAGGGACA
+GGGGGCCCAAGTGATGCTCTGGGGTACTGGCGTGGGAGAGTGGATTTCCGAAGCTGACAG
+ATGGGTATTCTTTGACGGGGGGTAGGGGCGGAACCTGAGAGGCGTAAGGCGTTGTGAACC
+CTGGGGAGGGGGGCAGTTTGTAGGTCGCGAGGGAAGCGCTGAGGATCAGGAAGGGGGCAC
+TGAGTGTCCGTGGGGGAATCCTCGTGATAGGAACTGGAATATGCCTTGAGGGGGACACTA
+TGTCTTTAAAAACGTCGGCTGGTCATGAGGTCAGGAGTTCCAGACCAGCCTGACCAACGT
+GGTGAAACTCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGCCGCTCCAGCT
+ACTCAGGAGGCTGAGGCAGGAGAATCGCTAGAACCCGGGAGGCGGAGGTTGCAGTGAGCC
+GAGATCGCGCCATTGCACTCCAGCCTGGGCGACAGAGCGAGACTGTCTCAAAACAAAACA
+AAACAAAACAAAACAAAAAACACCGGCTGGTATGTATGAGAGGATGGGACCTTGTGGAAG
+AAGAGGTGCCAGGAATATGTCTGGGAAGGGGAGGAGACAGGATTTTGTGGGAGGGAGAAC
+TTAAGAACTGGATCCATTTGCGCCATTGAGAAAGCGCAAGAGGGAAGTAGAGGAGCGTCA
+GTAGTAACAGATGCTGCCGGCAGGGATGTGCTTGAGGAGGATCCAGAGATGAGAGCAGGT
+CACTGGGAAAGGTTAGGGGCGGGGAGGCCTTGATTGGTGTTGGTTTGGTCGTTGTTGATT
+TTGGTTTTATGCAAGAAAAAGAAAACAACCAGAAACATTGGAGAAAGCTAAGGCTACCAC
+CACCTACCCGGTCAGTCACTCCTCTGTAGCTTTCTCTTTCTTGGAGAAAGGAAAAGACCC
+AAGGGGTTGGCAGCAATATGTGAAAAAATTCAGAATTTATGTTGTCTAATTACAAAAAGC
+AACTTCTAGAATCTTTAAAAATAAAGGACGTTGTCATTAGTTCTTTGGTTTGTATTATTC
+TAAAACCTTCCAAATCTTAAATTTACTTTATTTTAAAATGATAAAATGAAGTTGTCATTT
+TATAAACCTTTTAAAAAGATATATATATATGTTTTTCTAATGTGTTAAAGTTCATTGGAA
+CAGAAAGAAATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTCATTAATGCT
+ATGCAGAAAATCTTAGAGTGTCCCATCTGGTAAGTCAGCACAAGAGTGTATTAATTTGGG
+ATTCCTATGATTATCTCCTATGCAAATGAACAGAATTGACCTTACATACTAGGGAAGAAA
+AGACATGTCTAGTAAGATTAGGCTATTGTAATTGCTGATTTTCTTAACTGAAGAACTTTA
+AAAATATAGAAAATGATTCCTTGTTCTCCATCCACTCTGCCTCTCCCACTCCTCTCCTTT
+TCAACACAAATCCTGTGGTCCGGGAAAGACAGGGACTCTGTCTTGATTGGTTCTGCACTG
+GGGCAGGAATCTAGTTTAGATTAACTGGCATTTTGGCTTTTCTTCCAGCTCTAAAACAAG
+CTCCATCACTTGAAATGGCAAAATAAAATCATGGATGAGGCCGAGGGCGGTGGCTTATGC
+CTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGTAGGATCACGAGGTCAGGAGATCGAGA
+CCATCCTGGCCAACATGGTGAAACCCCCTCTCCACTAAAAATACAAAAATTAGCTGGGCG
+TAGTGGCATGTGCCTGTAATCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATCACTTGAA
+CCAGGAGGCAGATGTTGCTGTGAGCCAATATGGCACCACTGAACTCCAGCGACAGAGCTA
+AACTCCATCTCAAAAAAAAAAAAAAAAAAAAAAAAACATGGATGATCGGTGTCGTTGAGA
+GGATAGGTATTTGGAAGAACCTTTGTTTGAAACTGGCTCTGTACATACAATGAAATTACA
+TACTTATTTACATACAATGAAATGCAGAGGTTTTTTTTTTATATAGGATCTCTGTCGAGA
+GGCTGGAGTGCAGTGGTGCTATCACAGCTCACTGCAGCCTCAACCTCGTCAGGCTCAAGC
+AATCCTCCCACCTCAGCCTCCAGAGTAGCAGGGACGATAGGTGTGCACCACCATGCCCAG
+CTAATTTTTGTATTTTTTTTTCTTTTTTTGAGATGGAGTCTTGCTCTGTTGCCCAGGCTG
+GAGTGCAGTGGCGCGATCTCAGCTCACTGCAAACTCTGCCTCCCGGGTTCATGCCATTCT
+TCTGCCTGAGCCTCCTGAATAGCTGGGACTACAAGCACCCACTACCACGCCCGGCTAATT
+TTTTGTATTTTTTTTTCTTTTTTAGTAGAGGCGGGATTTCACCGTGTTAGCCAGGATAGT
+CTTGATCTCCTGACCTTGTGATCCACCCGCCTGGGCCTCCCAAAGTGCTAGGATTACAGG
+CATAAGCCACTGCGTCCAGCCATTCTTGTATTTTTCTGTTGTAGAGATAGGGTTTTGCTA
+TGTTGGCCATGCTGGTCTCAAACTCCTGACCTCAAGTGATCTACCCTCCCTTGGCCTCTC
+AAGGTGCTGGGATTACAGGCCTGAGCCATTGCACCCAGCCATGGTCTAAAAATCTTGATT
+GAAATACCACCTTTTCATTTCCAGACACCCCTATTTAAAATTACCACACCCCCAGCACAC
+ACTTTATCTTCTATTCCTGCTGCTTCTCCATAACACTGATTACTAGCTGACATTCTATGT
+AATGTATCCATTTTTTATCTCTAGTCCCACAGAATGTAAACTCCAGGATGGGATTTTTGT
+TTTGTTTACATACATCTGTATGTTCAGTAGTTAGAACGGTACTTGGGACCTAGTTGCCAC
+TCAATAAACATTTGTCAAATAAATAATAAACTAAACTAAATTAGTTCTTTAATTTTTTTA
+AATATGGTGATGGTTAGTAGTGAGTAACATTCAAAAAATAAGTTGAAAAGTTGTACCATT
+GCCTCTTACCCACAATAAAAAAGGGTAAATTCTTTTCTGCTTTATGAAAGTTGTTTTTCA
+TATTTGAAGTCAAGTTAATCAGATTAAGGAAAATGTATGTTGTGTTTTCAGAGCGATACA
+AGATTTATAAATAACCATCCTCTCCCTTGCCCTTCAACATTATAGCTAAACAAAAATAAG
+AGGAAAACAGGATTCACAATTTATCAATTTATTGAAAATCAGAGCCAGAGAAGCAGGAAA
+TGACATTGTAGGAAAAAACTGCTTTTGAAAAAGCACAAAACTTACTCATGACAATCAGTG
+ATCAGGAAAATCCTCAATAGTGTGGCATTTGGATACATTTATGTTTCATTTCCATGGGAG
+AGAGTCATAAAAATAGGATGTTCTTTCTCATTCTGGCAAATTAAACCATCAATTAAAAAC
+TCAGATACATAAAAATTAAAGATGTAAGAATGAAAATGCTAAATTGTTATTTTCAATCAA
+CTATTATGTTTTCTAGCTTTTCATTGCTTTTTTCTGTTTCCTGTTAAGATTAATTTCTTT
+TTTTTTTTTTTTTTTTTTTTTTGAGACAGACTTTGGCTCTTGTTGCCCAGGCTGGAGTGC
+AGTGGCACAATCTCGGCTCACTACAACCTCCACCTCCCGGGTTCAAGCAATTCTGCTGCC
+TCAGCCTCCGGAGTACCTGGGATTGCAGGCATGTGCCATCACACCAGCTAATTTTGTATT
+TTTAGTAGAGACAGGGTTTCTCCATATTGGTCAGGTTGGTCTCGAACTCCTGACCTCAGG
+TGATCCTCCTGCCTTGGCCTCCGAAAGTGCTGGGATTACAGGCGTGAGCCACCGCTCCCA
+GACTTTTTGTTTTGTTTTGTTTTGTTTTTTTGAGACACGGTCTCGCTCTGCTGCCTAGGC
+TGGAGTGCAGTGGCACGATCTTGGCTCACTGCCAGCTCCGCCTCCCGGGTTCAGGCCATT
+CTCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCGCCCACCACTATGCCCGGCTAA
+TTTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTAGCCAAGATGGTCTCGATCTC
+CTGACCTTGTGATCCACCCGCCTCAGCCTTCCAAAGTGCTGGGATTACAGTCCTGAGCCA
+CTGCGCCCGGCCTGGACCTTTTTTTTTCGGGGTGGGGGGTTGGAGTCTGGCTCTGTCGCC
+CAGGCTGGAGTGCAGTGGCGCCATCTTGGCTCACTGCAACCTCCGCCTGCCAGGTTCAAG
+TTCAAGCGCTTCTCCTGCCTCAGCCTCCTGAGTAGCTGGGATTATAGGCGCACGCCACCG
+TGGCCGGCTAATTTTGTATTTTTAGTAGAGATAGGGTTTCATCACGTTGGTCAGGCTGGT
+CTTGAAGTCCTGATCTCGTGATCCACCCGCCTCGGCCTTCCAAAGTGCTGGCGTGAGCCA
+CTGCGCCTGGCTTAAGATTAATTTTTGTTTGTTTTGTTTTTGAGACGGAGTCTCGCTCTT
+TCACCCAGGCCGGAGTGCAGTGGCGCCATCTCGGCTCACTGCAAGCTCCGCCTCCCGGGT
+TCACGCCATTCTCCTGCCTCGGCCCCCCAAGTAGCTGGGACTACAGGCGTCCACCACCAC
+GCCCGGCTAATTTTTTGTATTTTTAGTAGAGACGGGGTTTCACCGTGTTAGCCAGGATGG
+TCTCCACTTCCTGACCTCGTGATCCGCCCACCTCGGCCTCCCAAAGTGCTGGGATTACAG
+GCGTGAGCCACCGCGCCCGGCCTTAAGATTAATTTTTATGGTGTTTTACATTCATTTGTA
+TGGAAAGTTCTAGGATAGGGATCATATTTCACTTCCTTTTAATATAGTACAGTATAGCAC
+AATTTGCAGTTATGTCTTAATATGTGATCAGGAATGATCATGACTGGAAACAGTGTTATT
+TGTGGTAGCTATAGGGTAGGTAAGGTTTTCAGCCTGTTTTAGGTTTCTTGAACTAAAATT
+CCTTCTGCTGTCTTCTAAGTCAATATTGGCAGCTATTTCTGACAATTGGTAGTTCTTTGT
+AACTTTTTACCTATGACTATAACATTTTTGACTTTCAGAAGAATTTGCTAAAATGTGTTC
+CCCGGTGGGTTGTTGTTTTTCAACCTAAACCTAGCTGCTTTTTCCAGTCACTTATCCGTA
+TTGGAAGCTCAAAATGCAAATATACAGTAGGCCTAAAATATTGCCTGGTTTGAAAAGTGT
+TTAAAATATTTGAATCATTTTTATAGTAAACATTTACTCTCATCAGGACCTAGAAGGGGA
+ACATTTTAATTTTTTTTCTTTTCCCTTTTCACAGTCTTCCTTCAACATTCATTACCTTTT
+TACATATCGGAGTTTTCATCTGTTCAAAGTTTGTGTTTACAGTGTGTTTATATAGTTTAG
+ATTATAATTACCATACTGAAATATAATTGTTTCAGAATTGAGTCAGTGGTGAGAATGAAA
+GCCATCTGGTATGATAACTGAATCCAATTTTTCTTTTACGGAGAATTTCTTTGAAATGTA
+GCTTATCTCAGAAATAGGGATTTAGTAACCAATCAGAGTTTTCTTTGTCAAGGTTGTTTT
+TCTTTTTAAAGTCACATTTGGTCCCAGTAATAATACCAATGTTGGTACAAGTTATCTCAG
+GTTGTGAAGCATTTTTCCCAAGTCATCTCAGGTTGTGAAGCATTTTCCCAAGTAGCATTT
+AATTTTATTCTTGCAATAGCCCAAGGAGTCTGGCAGGGTGAATGGCAAGAGAAGGAAACA
+GGTTCAGGTAGAGTGGTTAGCCCAAGGTGGCTCTGCTTATATACACAACTGGTAGTAGAA
+ACCCAGCCTCCTGACTTAGTTCATTGTTTTTCTTTTCACTGCCCTGTGCTATGTCAAAAA
+CCCCATGATTACAAGAGTTGTATTACAACCCTTCACAATAAGGTTACTGTCCACAAGCTT
+TTCTTGTGATCCTTTTCTTTTTTTTTTTTCTTTTTTTGAGATGGATTCTCTGTCACCCAG
+GCTGGCCCGCCTTGGCCTCCCAAAATGCTGGGATTACAGCGTGAGCCACCGCACCTGGCC
+CTTGTGATCCTTTTCTAAAAAGTTAAATATTTAAGGAAAAAACCACATTCTTGTCACACT
+GCCAGGTTAGTCGTTCTTTGATATCTTGCCTGGACTTTATCCAAAAAATCCGTTTCAAAA
+ATTCACATTTAGAGCTAAGTGTAGTGGCTCACGCCTGTAATCCCGGTCGAGGCAGATGGA
+TCACTTGAGGTCAGGACTTCAAGACCAGCCTGGGCAATATGGTGAAACCCCTTCCCTACC
+AAAAATACAAAAAAATTAGCCGGGTGTGGCAGCACGCGCCTGTAGTCCCAGCTACTTGGA
+ATGCTGAGGCACAAGAATCACTTCAATCCGAGAGGCAGAGGTTGCAGTGAGCCAAGACCA
+CACCACTGCACTCCAGCCTGAGCAGCAGAGTGAGTGAGACTCCATCTCCAAAAAAAAAAA
+AAAAGGTTCACATTCAGAAGAAAGCTAAAGGCCGGGTATAGTAGCTCACACCTGTAATCC
+CAGCACTTTGGGAAGCCGAAGCAGGAAGATTGCTTGATGCCAGGCATTCAAGACCAGCAT
+GGGCATCATAGTGAGATCCTGTCTCTACAAAAATTAATTAACATTAAAAATTAAAAAGAT
+GGCTGGCATGGTGGCTCACTCCTGTAATCCCAGTACTTTGGGAGGCCAAGGCATGGTGGT
+GCATGCCTTTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAATTCAGGA
+GGCGGAGGTTACAGAGAGCCGAGATGGTGCCACTGCACTCCAGCCTGGGCGACAGAACGA
+GACTCTGTCTGAAAAAAAAAAAGAAAATTAAAAAGACCAGAATAAAGCTAAAGATTTAAA
+ATAGCCTATAGGTTCCTACCAGAAGTTACCAGCTACCTCTCTGATAGTCTTTCCCTACAA
+TATCCTCCTGGATTATTACATTTTAGCACCTTGACCTATCTGATGTCCTGCATACACAGG
+CATGGTCCTGCTCAGGGTTTGCCTTCTCTGCTCCCTCTTTCTTGGAATGCTCTTCCCCTA
+ATTGTTGCATAGTGTGTTTCTTTACATTATTAAGCTATCCTCTAGTCTCACCTCAGTGAA
+ACCTTTCCTGACTCCCCCCATGTACATCTCACCCCCACATAGATATTGAACTACCTGTTT
+CCCCTTACCCTGCTTAATTTTTCTCTTTAATGCACTTATTCCCATGTATTCTTTAATTCC
+GTATCAACTGTCTACCACACTAGAATATGAGCTCTATGAGAGCAGGCTTTATTTTGTAAA
+CTGCTACATTTCTATCTCCTAGAATAGTACTTGAATATAGTAGTAGATACTTAATAAACA
+CTTGTTATATTAGTATAATAAATGAACTAATCTCAGGAATGCCTTGGTTTTGTGGATAGA
+CAGGTAGGGATGGGAACTTGGGTGATGTATTTTCTGAAGTTTTTATTTTTAAGCTTATTA
+TTATTTTGAGATGGAGTCCAGCTCTGTCGCCCAGGTTGGAGTACAGTGGCGCGATCTTGG
+CTCACTGCAACGTGCACTTCCCCGGTTCAAGCGATTCTCCTGCCTTAGCCTCCCAAGTAG
+CTGGGATTACAGGCGCATGCCACCATGCCCAGTTAGTTTTGGTATTTTTAGTAGAGACAG
+CGTTTCACTGTGTTGGCCAGGCTGGTCTCGAAATCCTGACCTCATGATCCGCCCGCCTCG
+GCCTCCCAAGTGCTGGGATTACAAGCATGAGCCCCCGTGTCTGGCCTTATTTTCTTTTTT
+TTGAGACAGAGTCTTCCTCTGTCACCTAGGCTGGAGTGCAGTGGCACGATATTGGCTCAC
+TCTGCAACCTCCACCTCCAGGATTCAAGTGATCCTTCTACCTTAGTCTCCAAAGTAGCTG
+AGACCACAGGCATGCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGCGTAGACAGGGT
+TTCACCATATTGTCCAGGATGATCTGGAACTCCTGAGCTCAGGTGATCCACCCACCTCAG
+CCTCCCAAAGTGCTAGGATTACAGGCATGAGGCACCATGCCCGGCCTTAAGCTTATCATT
+TTCTAAATTTCCTTTAGTGAGTACTTATTACACTGTTTTTACAAAGTAATCACAAACCAA
+ACATCATGCCTCTTCTGAAGTGATCTAATAAGAGTACACAGTACCATCTGTAAAGTGTTC
+TTGCCAGAAAGTTGAACCTGAATGATTAAGCCTGTAAGTCTAGTTTATAGGAAATAAGGC
+TAGAGGAACAAGTTAAACCTCACCATAGGGTTATACAATCAGCAAAATCCAGAATGGGGG
+AAACTCCACAGGTCAAATGACCTAATTTTAAAAATAAATGACAAGGGAGAAAAAGTAAGA
+GACACCTATAGATCAGAAGACACTTGGGGCTGGGCATGGTGGCTCACACCTGTAATCCCA
+GCACTTTGGGAGGCCAAGGCAGGCGGATCACCTGAGGTCAGGAGTTCAAGACCAGCCGGC
+CAACATGGTGAAACCCCAACTCTACTAAAAATACGAAAAATCAGCCGGGCGTGGTGGCGC
+ACGCCTGTAGTTCCAACTACCTGGGAGGCTGAGGCAGGAGAATCACTTGAACTTGGGAGG
+CAGAGGTTGCAGTGAGCCGAGATCGCACCATTGCATGCCAGTCTGGGCTACAAAAGCAAA
+ACCCCATCTCAAAAAAAAGAAGACACTTGGGTTTGGGTGTGTTGGCTCATGCCTGTAAAC
+CCCGTGCTGGGAGGATTGCTTGAGCCCAGGAGTTCAAGGCTGCAGTGAGGTATGTTTGCA
+CCACTGCACTCCAGCCTAGGTGACAGAGTGTGACCTTATCTTAAAAGTAATAATAATTAA
+AATAATCTGGGGTAGGGGTGGATATGGGTGAAACAGCTTGGCCATGAGTTGATGGTTGTT
+GGACCAGGGTGATGGTCCATATAGTTCATTTTATTATTTTATTTACTTGAAATTTTGAAA
+TACTTGAAATTTTCCATATTAAGTTAAAAAGGCATTTACAGTAAACAAAAAAAAGTTCTA
+GGAAGGAATTCAAAAGAAATATAAGCAGAAAATTTTGTCTTTATGGAGCTTAAAGATGAG
+ATGTGCACCCACAGTGATAGTGCAGAAAAATATATCACTGGAAATGAATTCGTACGAACT
+ATTATCAACTAATCTTTTAAATGCTGATGATAGTATAGAGTATTGAAGGGATCAATATAA
+TTCTGTTTTGATATCTGAAAGCTCACTGAAGGTAAGGATCGTATTCTCTGCTGTATTCTC
+AGTTCCTGACACAGCAGACATTTAATAAATATTGAACGAACTTGAGGCCTTATGTTGACT
+CAGTCATAACAGCTCAAAGTTGAACTTATTCACTAAGAATAGCTTTATTTTTAAATAAAT
+TATTGAGCCTCATTTATTTTCTTTTTCTCCCCCCCTACCCTGCTAGTCTGGAGTTGATCA
+AGGAACCTGTCTCCACAAAGTGTGACCACATATTTTGCAAGTAAGTTTGAATGTGTTATG
+TGGCTCCATTATTAGCTTTTGTTTTTGTCCTTCATAACCCAGGAAACACCTAACTTTATA
+GAAGCTTTACTTTCTTCAATTAAGTGAGAACGAAAAATCCAACTCCATTTCATTCTTTCT
+CAGAGAGTATATAGTTATCAAAAGTTGGTTGTAATCATAGTTCCTGGTAAAGTTTTGACA
+TATATTATCTTTTTTTTTTTTTTTGAGACAAAGTCTCGCTCTGTCGCCCAGGCTGGAGTG
+CAGTGGCATGATCTTGGCTCACTGCAACCTCCGCCCCCCGAGTTCAAGCGATTCTTCTAC
+CTCAGCCTCCCAGGTAGCTGGGACTACAGGCACCCGCCACCATGCTTGGCTAATTTTTGT
+ACTTTTAGTAGAGATAAGGTTTCACCATATTGGCCAGGCTGGTCTCGAACTCCTGACCTT
+GTGATCCACCTGCCTCGGCCTCCCAAAGTTCTGGGATTACAGGCGTGAGCCACCACACCC
+GACTGACATATATTATCTATTAGGATGTAACATCATTTTGAACAGTGTTTTGTATTTTTT
+GTGTCCATCAGTGAAAGCAAACTGCAAGCAGTTTTGAAATAAGCACATTGTGTTTGAGCC
+TTCCCAGTTTCTCCTTTCTGTTCATTTCTGCATATCCTTATGCATTCCCCCTTCTAAGGG
+TCAGTGTTTGCCCGCTTTGTAATCATTGTGAAGACAGGAAAGGACCTGATACCAGTTTCT
+ATTTAGGCCAAAATTCATTTATAGCAGTGATTCAAGTTATATTTACGTATTTGATGATCT
+TGTCTTTTGAAATGAAAATGTTTGTTTCTTAATAAAAGAATTTCAGAAAAAGTAGAGTAG
+GTAATTTAGTAGAACAAGTGGGCTTTCTCCTTTTCTTTATGTTAAGCTATGGCTCACATC
+TTACCTTAAATGTCAACTAATTTGTTTTTAAGTATTTATGTACCTGGTACATAACCTGGT
+ACCAGGTACAAACTATGTACTTGGTAAAAAGTTTATTAGCACAAAAAGGTATATGATGCA
+AAGTATACTTCCCTCTTACCCTACAACCCCTGCCTCCCTGTTCCCTCCCCAGACAACCAC
+AATGATCAATTTCTTATGTATCCTTTGAGGAATTTTTAAATTCCAGAGTTCTTAACTTGG
+GGTTTATGAATAGTCTTTATGAATTTCCTAGAATTATATTTAAATTGTATTCAAAACTAT
+GGCCATGTACATTTTTCTGGGAAGATAGTCCATAATTTTCATCTGAGTGAGCTAAGATCA
+TGCCACTGCATTCCAGCCTGGGCGACAAGAGGGAGACTCAAAAAAAAAAAAAAAAGTCCC
+AGTATTTACTACAGAGAGCTAAAGATTAACCTTTAAAGCCCTGGGGCTTTCAATTTATCT
+GGATGAGAATCTTTCTGGAATGAACTGTATGTTTTCTTGTCAGCTTGAGTAACAAATGCT
+GAACATACTATACTATTATTACAGGGACTCAAGGGCCCAGTGTGGTAGCTCCTGCCCATA
+ACCCCAGCACTTTGGGAGGCCAAGGCAGGAAGATCACTTAAGGCCAGGAGTTCGAAGCTG
+TAGTGAGCTATGATCACACCACTGCACTCCAGCCTAGATGACAGAGTGAGACCCTGTCTT
+TTTTTTTTTTTGAGATGGTGTTTCACTCTATTGCCCAGGCTGGAGTGCAGTGGTGTGATC
+TCGGCTCACTGCAACCTCCACCTCCTGGGTTCAAGCGATTCTCCTGCCTCAGCCTCTTGA
+GTAGCTGGGATTACAGGCATCTGCCACCACACCCAGCTAATTTTTGTATTTTTAGTCGAG
+ACAGGGTTTTCACCATGTTGGCCAGGCTGCTCTCAAACTCCTGACTTCAGCTACCTTGGC
+CTTAAAAAGTGTTGGGATTACAGGTGTAAGCCACCGCGCCTGGCTGACCCTGTCTCTTAA
+CAAAAAAAGAGAGATTAAGTTATGAATATAGTTGCTTTGAGAACTTGTGGAAGAAGGAAA
+TTATAGGCTTATAGGCAGAGATAATAATACGAGCAAATGTACAAATAAAAGAAAATAGAG
+GACGGGCGCGGTGGCTCACGCCTATAATACCAGCACTTTGGGAGGTCGAGGTGGGCGGAT
+CACGAGGTCAGGAAATTAAGACCATCCTGGCCAAAATGGCGAAACACTGTCTCTACTAAA
+ACACACAAAAAACTAGCCTGGCATGGTGGCACGTACCTGTAGTCCCAGCTACTTGGTAGG
+CTGCGGCAGGGGTATCACTTGAACCTGGGAGGCAGAGGTTGCCCTGAGCCGAGATCATGC
+CAATGCACTCCAGCCTGACAACAGAGTGAGACTCTGTCTGAAAAAAAAGAAAAGAAAAGA
+AAATACATCCAGGAAAAATAAGCTAACTTTGCATATGTGTATAGGAGTTGTGTTAGAAAA
+GGAAGAAGCCCTCAAAGATGGGAAGCCATTTGCAAGAAAGAGAAGGTCCAAGAGGAGGCA
+GAAGGGATTGGAAATAGAAAAAGGATGTAAGAAAGAGTTGATTATTACTCATAAACAGTA
+ATGAAGGAAAAGGAGAGTAATTCTACAGGAAGATGCTGAGGTGCTTTGAGCCCAGTGAAG
+TTGGAGGTAAAGACAGCTGTTGAGGCCGGGCACGGTGGCTCACGCCTCTAATCCTAGCAC
+TTTTGGAGCCCAAGGCAGGTGGATCACCTGAGGTCAGGAGCTCAAGACCAGCCTGACCAA
+CATAGAGAAACCCCATCTCTACTAAAAATACAAAATTAGACGGGCGTGGAGGCGCATGCC
+TGTAATCCCAGTTACTTGGGAGGCTGAGGCAGGAGAATCACTTGAACCTGGGAGGCGGAG
+GTTGCAGTGAGCCGAGATTGCGCCATTGCACTCCAGCCTGGGCGACAAGAGTGAAAACTG
+TCTCAAAAAAAAAAAACAACAAAAAACAGCTGTTGAGATTGAGAGGATTAGAGTTGGCAA
+CTGGAGAAGAGTGAGAAGCTTGGTTTCAAGCTTGTGATAGTCAGGATTGTGATAGTCAGG
+AAAGAACCAGTCATAAAGATATATGTGTGTGTATACATATAAATATGTTATATATATGTG
+TGTGTGTGACACATATATATTTTTGTTTGTTTCTTTGAGACAGTGTCTCCCTCTGACACC
+CAGGCTGGAGTTCAGTGGTGTGATCATAGTTCACTTTTACCTTGCAATCTGGGTTCAAGC
+AATCTCTCATCTCAGCCCCTCAAGTAGCTAGGACTACAGGTACATGGCATTTGCCCAGCT
+AATTTTTAAGTTTCTTGTAGAGATGGGCCAGCCATATTTTAAATTGTGTTTTGAATGTTA
+TATTAGAATTAAAAGTCCAAAGCCGGGTGTGGTGGCTCACGCCTGTAATCCCAGCACTTT
+GGGAGGCTGAGGTGGGCGGATCACGAGGTCAGGAGTTCGAGACCAGCCTGGCCAATATGG
+TAACACCATCTCTACTAAAAATACAAAAATTAGCTGGGTATGGGGGCACATGCCTGTAGT
+CCCAGCTACTCAGGAGGCTGAGGCAGAGGAACCTCTTGAACCCAGGAGGCAGAGGCTGCA
+GTGAGTTGAGATCGTGCCACTGTACTCTAGCCTGGGCGACAGAGCAAGATTCCGTCTCAA
+AAAAAAAAAAAGTCCAGTATAATGCCCATGTGATAGATCGACTTTTTCATGAAATCTCTT
+CTGTAATATCAATATAATCTGAATAACACTTTGATCTATATGATGAGAAAGCTGGGAGCC
+TGGGAGCGATACCCCCATGCTTTTGTTGTATTAATTGTATTTTCTACGGATAAACTCTAA
+TTGCTAAAAATAAAACAACTTTATTGACCCAAGCAAGCCTAAAGTTCTGAAATCTTTTTT
+TTATTTTTGTTTGTTTGTTTGTTTGTTTTTGTTTGTTTTGTTTTGAGACGGAGTCTCGCT
+CTGTCGCCCAGGCTGGAGTGCGGTGGTGCAGTCTCGGCTCACTGCAAGCTCCACCTCCCG
+GGTTCACACCATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGACTACAGACGCCTGCCAC
+CACGCCCAGCTAATTTTTTTGTATTTTTAGTAGAGAAAGGGTTTCACCGTGTTAGCCAGG
+ATGGTCTCGATCTCCTGACCTCGTGATCTGCCCGCCTTGGCCTCCCTAAGTTCTGGGATT
+ACAAGTGTGAGCCACCACGCCCGGCTGTTTTTTTTTGTTTTGTTTTGAGACGGAGTCTCA
+CTGTGTTGCCCAGACTGGAGTGCAGTGGCATGATCTCAGCTCACTGCCACCTCCATCTCC
+TGGGTTCAAGCAAATCTCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCATGTGCC
+ACCACACCTGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACTATGTTGGCCAGG
+CTGGTCCAAAACTCCTGACCTCAGGTGATCTGCTCGCCTTGGCCTCCCACAGTGCCAGGA
+TTACAGGCATGAGCCACCTTGCCCAGCCAGTTCTGAAATCTTTTATGAAGCCTATAAAAA
+AAGATAATAATACCAATCTAGAAAATATTTCTTAAGGCAGTCATGCATTAGTTTGAACTT
+TCCAAACAAAAAAATGCAATGTGTAATACTTTTTTTTTTTTTTTTGAGATGGAGTCTTGT
+TCTGTTGCCCAGGCTGGAGTGCAGTGGTACAATCTCGGCTCACTGCAGCCTCTGCCTCTC
+TGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGATTACAGGCGTGCACCA
+CCATGCATGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTGACAAGGC
+TGATCTCGAACTCCTGACCTCAGGTGATCCGCCCACCTCAGCCTCCCAAAGTGCTGAGAT
+TACAGGCATTAGCCACCACGCCCAGCCTTTTATTTTAGTAGAGACCATGTTTCACCATGT
+TGACCAAGCTGGTCTTGAGCTGACCTCAAGTGATCCGCCCACCTCCACCTCCCAAAATGG
+TGGGATTATAGGCATGAGCCACCGCACCCAGCCTGTAATACTTTTTTGAAGATCTAGAAC
+CACATTGTTCAAAGAGATAGAATGTGAGCAATAAATGTAACTTAAATTTTTCAACAGCTA
+CTTTTTTTTTTTTTTTTTGAGACAGGGTCTTACTCTGTTGTCCCAGCTGGAGTACAGTGG
+TGCGATCATGAGGCTTACTGTTGCCTTGACCTCCTAGGCTCAAGCGATCCTATCACCTCA
+GTCTCCCAAGTAGCTGGGACTGTAAGTGCACACCACCATATCCAGCTAAATTTTGTGTTT
+TCTGTAGAGACGGGGTTTCGCCATGTTTCCCAGGCTGGTCTTGAACTTTGGGCTTAACCC
+GTCTGCCCACCTAGGCATCCCAAAGTGCTAGGATTACAGGTGTGAGTCATCATGCCTGGC
+CAGTATTTTAGTTAGCTCTGTCTTTTCAAGTCATATACAAGTTCATTTTCTTTTAAGTTT
+AGTTAACAACCTTTATACATGTATTCTTTTTCTAGCATAAAGAAAGATTCGAGGCCGGGT
+GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCTGAGATGGGCACATCACGAGG
+TCAGGAGATCGAGACCATCCTGGCTAACATGGTGAAACCCCGCCTCTACTAAAATTACAA
+AAAGTTAGCCAGGCGTGGTAGCGGGCACCTGTAGTCCCAGCTACTCAGGAGGCTGAGGCA
+GGAGAATGGCGTGAACCCAGGAGGCAGAGCTTGCAGTGAGCAGAGATTGTGCCACTGCAC
+TCCAGCCTGAGAGACAGAGCGAGACTCCGTCTAAAAAAAAAAAAAAAGATTCGAATCCTT
+ATCTTGGTTGATTTTTGCGTATCTAGTTCCACTGAATTATTTATATAATTGTATAGACTA
+CAGCACGAGACAGCTTAGCTTGTCACTCTACTGTACTATATTCTGCAGTACTATCATAAG
+GGAATTTCCTCCCTACCCCTGCTCTGAATTGTTCAATTGTACTATTTGCTGGAGTAATGC
+TTGATGCCTTCTTGATCCATTATACTAGAGTATATGTAGTATTTGTAGATTCTGAAGGAG
+TGGGAGCCTCTATTCTGAGTTTTAAAGGTACTTATGTACAGTGGAGGTAGCTTTTTGACA
+GCCTCATCTTCCAAACTATAGAGTCATTGTTTTGTTGAGTGCAATATGGTACTTGAAGCA
+TCTATATCGGCGAAGAAGGACCCAAGTCTCCTTGACCTTACCTACCTACATTCACTTTCT
+CTGGTAGGAAGATTGTGGGTGCCTCTCTCCAGACTTAGTTTCCATGTCAAAAAAGAAAAA
+AGGAAGATTGTGGGCTTTGCTACAATCCAATTCTGGATCCAATATAACCTTCATTGCTTA
+ATTACTGTGTGATCTGGGACAAGCCTCTACTCTATAAAAATGAAGATAAGGCCAGGCTTG
+ATGGCTCATGCCTGTAATCCCAGCACGTTGGGATGCCAAGGCAGGAGGATCACTTGAGGT
+CAGGAGTTCGAGACCAGACTGGGCAATATAGTGAAACCACATCTGTACAAAAATAAAGAT
+AGAAAGTAGCCCAGCGCAATGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCTGAAGC
+AGGCGATCACTTGAGGTCGGGAGTTCAAGACTGTAGACAGATAGATAGGTAGGTAGATAG
+ATAGAGATATAGATATAGTTGGGGTTTTTTTGTTTTGTTTTGTTTTGTTTTTGAGATGGA
+GTTTCGCTCTTGTTGCCCAGGCTGGAGTGCAATGGCGCGATCTCAGTTTACTGCAACCTC
+CGCCTCCCGGGTTCAAGAGATTCTCCTGCCTCAGCCTCCTGAGTAGCCAGGATTACAGGC
+ATATGCCACCATGCCCGGCTAATTTTTGTATTTTTAGTAGAGACAGGGTTTCTCCGTGTT
+GGTCAGGCTGGTCTTGAACTCCTGACCTCTCCCAAAGTGTTGGGATTACAGGCGTGAGCC
+ACCGCTCCTGGCCTTTTTTTTTTTTTTTTTTTTTTTTTTGAGACAGAGTCTTCCTCTGTT
+GCCCAGGGTGGAGTGCAGTGGCACTCTTCTCAGCTCATTGCAACCTCTGCCATCCTGGGT
+TCCAGTGATTCTCATGCCTCAGCCTCCCAAGTAGCTGGGACTCAGGCGTGTGCCCACCAC
+GCCTGGCTAATTTTGTTGTATTTTTAGTAGAGACAGGGTTTCACCATGTTAGCCAGGCTG
+GTCTCAAACTCCAGGCCTCAAGTGATCTGCCTGCCTCAGCCTCCTGGGATTGCAGACATG
+AGCCACTGCACCCGGCCAAGAGAGGGTAATAAATGTTAAATTACCTGGCTAGTAAAAAAT
+ATTCTCTAAGTGTCTTTTCTCACAATTCCCAATGCCTTTTTTTTTTTTTTGGCACAATCT
+CACTCTGTTGCCCAGGCTGGAATGCAATGGTGCAATATTGGCTCACTGTAACCCCCGCCT
+CACAGGTTCAACTTATTCTCATGCCTCAGCCTCCCGAGTAACTGGGACTACAGTGCACCA
+CCACCACACCCAGCTAATTTTTGAATATTTAGTAGAGACAGGGTTTCACCATGTTGGCCA
+GGCTGGTCTTGAACTCCTGGCCTCAAGTGATTCACCCACCCCGCAAGTGCTGGGATTACA
+GGTGTGGACCACCGTGCACAGCCCTAGTGACTTTTTTTTTAGCCCCTTAATCTTTTCTTT
+CCTGGGTCTCTTCATTGTCAGTGTCTGCTATTTACTCCCTACCTAGTCACCCCCTTCACC
+AGTATATTATGTCCTTTATGTTTTATTTTGCAGGATCTTATTTTGCTTTTCTATTGAATC
+CCCTCCATCTAGAATAGTACTAGACATAGTAAATATTGGTTGTATGAGTGAATCGCTGCT
+TTTAATTATCATCACCATTGCTCTCTCTACTTCTGGTCTATGATCCACTTTGAGTTAACT
+TTTGTTATTTGGTGTGAGATAGGAGTATAATTTCATTCTTTTACATGTGGTTATACTTTT
+GTCTCAACACTGTTTGTTAAAAACACAAAAAGTATTATTTTCCCATTTAATCATCTTTGG
+CCTGGGCACGGTGGCTCATGCCTGTAATCCCAGCACTCTGGAAGGCCAAGGCAGATGGAT
+CAATTTGAGGCCAGGAGTTCAAGACTAGCCAACATGGTGAAACTAAAAATACAAAAAATT
+AGCTGGGTATGGTGGTGCATGTCTGTAATCCCAGCTACTCGGGAGGCTGAGGCACGAGAA
+TTGCTTGAGCCTAGGAGGTGGAGGTTGTAGTGAGCTGAGATTGTGTCACTACCCTCCAGC
+CTGGGTGATAGAGTGAGTCTGTCTCAAAAAAAAAAAAAAAAAATTAAGAAAATAAAAATC
+GTCGGCCAGGCATGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCAGAGGCGGGC
+AGATCACGAGGTCAGGAGATGGAGACCATCCTGGCTAACATGGTGAAACCCCGTCTCTAC
+TAAAAATAAAAAAATTAGCCGGGCATGGTGCTGGGCGCCTGTAGTCCCAGCTGCTCGGGA
+GGCTGAGGCAGGAGAATGGCGTGAACCCAGGAGGTGGAGCTTGCAGTGAGCCGAGATCGT
+GCCACTGCACTCCAGCCTGGGAGACAGAGCGAGACTCCGTCTCAAAAAAAAAAAAAAAAA
+AAATTGTCTTGGTATTTATTATTGTTGAAAATCGCTTGATCACAGATGTATGTATGAGTT
+TATTTCTGTACTGTCAATTCCATTTTATTGATGTATGTGTCTATTCTTATGCTATTACCA
+CACTTTCTTGATTACTATAGCTTTGTGGTGAGGTGTTGAGATTTTAAACTAATTATAAGC
+ATCTTACATGAACTACTTACCGTTTATATTTGATTATGCAGCATGAAATAATTATGAATA
+TATCATTAAATATGCCATATTAACTTTTATTAAGTTTTATGTGATCATAACAGTAAGCCA
+TATGCATGTAAGTTCAGTTTTCATAGATCATTGCTTATGTAGTTTAGGTTTTTGCTTATG
+CAGCATCCAAAAACAATTAGGAAACTATTGCTTGTAATTCACCTGCCATTACTTTTTAAA
+TGGCTCTTAAGGGCAGTTGTGAGATTATCTTTTCATGGCTATTTGCCTTTTGAGTATTCT
+TTCTACAAAAGGAAGTAAATTAAATTGTTCTTTCTTTCTTTATAATTTATAGATTTTGCA
+TGCTGAAACTTCTCAACCAGAAGAAAGGGCCTTCACAGTGTCCTTTATGTAAGAATGATA
+TAACCAAAAGGTATATAATTTGGTAATGATGCTAGGTTGGAAGCAACCACAGTAGGAAAA
+AGTAGAAATTATTTAATAACATAGCGTTCCTATAAAACCATTCATCAGAAAAATTTATAA
+AAGAGTTTTTAGCACACAGTAAATTATTTCCAAAGTTATTTTCCTGAAAGTTTTATGGGA
+CATCTGCCTTATACAGGTATTAGAAACTTACTGCCTTTCTCTAATGCTTCTAGTGTAAAA
+ACTTGCAGACTTATGTAAAGTAGGGCTGTATCGCCGTGCCCCCATTGTCTGTTAATCTTG
+TTTTTATATTTTTGATTGTGTTTCCTTTTCTTTTTTTTTTTTTTTTTAAGACAGGGTCCT
+GCTCTGTCACTGAGGCTGGAGTGCAGTGGCGTGATCTCGGCTCACTGTAGCCTCTGTCTC
+CCAGCCTCTTCCTGCCTTAGCCTCCCAAATAGCTGGGACTACAGGCACACGCTACCATGC
+CCGGCCAATTTTTGTATTTTTTGTAGAGATGAGGTTTTACCATGTTGCCCAGGCTGGTAA
+CTCCTGAGCTCAGGTGATCTGCCCACCTCGGCCTCCCAAAGTGCTGGGGTTCACAGGTGT
+GTGTTTATTTCTATCTAATTATTTACACAAACACAATGTATTTATATATTGTGTATCTCT
+TCTGCTACAATGTAAATTCTATGAGAGTAGTAATTTTGTCTGTCTCAACACTGTTTTTCC
+TAAGTTTGGTACATAGTAGGCACTCAGATGCTTAAAGGAATGAATGAATTGTGCTTTAAT
+TCCACTTTACTAAACCCAAATCTCCCTTTGGACATTGTTATCTATGTGTTTTCAAAGAAG
+TATAATCATAATTTGACAGAAATCCTTGAGAGGCAGAACTAAGTGAGGGATTGGGCAGGG
+TTCAGATGTTAAGAACAGTAAGCTCAGCAGGGTGTGATTGCTCATGCCTATAACCCTAGC
+ACTCTAGGAGGCTGAGGTGGGATGATTGCTTGAGGCCAGGAGTTTGAAATCAGCCTGGGC
+AACATAGTGAGACCCCATCACTACCAACAAAATAAATAAATAAATGTACATGGTGGCATA
+TGCCCATAGTCCTAGCTACTTGGGAGGCTATAGTGGGAGGATAGCTTGAGTACAGAAGTC
+TGAGGCTGCAGTGAGCTATGATTGTGGCACTGCATGCTAGCCTGGGCAATAGAGCAAGAC
+CCTGTCTCTAAATTAAACAAAAAAAAAAGTACTCTAGTTTTCTATGCAATGCATTATATC
+TGCTGTGGATTTAGGGCAGTATTATATCAGATAATTTTAGGCATTTGGTAGGCTTAAATG
+AATGACAAAAAGTTACTAAATCACTGCCATCACACGGTTTATACAGATGTCAATGATGTA
+TTGATTATAGAGGTTTTCTACTGTTGCTGCATCTTATTTTTATTTGTTTACATGTCTTTT
+CTTATTTTAGTGTCCTTAAAAGGTTGATAATCACTTGCTGAGTGTGTTTCTCAAACAATT
+TAATTTCAGGAGCCTACAAGAAAGTACGAGATTTAGTCAACTTGTTGAAGAGCTATTGAA
+AATCATTTGTGCTTTTCAGCTTGACACAGGTTTGGAGTGTAAGTGTTGAATATCCCAAGA
+ATGACACTCAAGTGCTGTCCATGAAAACTCAGGAAGTTTGCACAATTACTTTCTATGACG
+TGGTGATAAGACCTTTTAGTCTAGGTTAATTTTAGTTCTGTATCTGTAATCTATTTTTAA
+AAAATTACTCCCACTGGTCTCACACCTTATTTTATCAATCGTAAGGTGCACATTTTTCAC
+ATCTTAACATCTCTGAAATTGGGAACATTTTACTATTGAGGGTGTGTCATTTGTTTAATT
+TGTGTGCTTTCTTTCTTAGTGATACAGAAAATAATAGTGCAACTTACATTGTTGGTGTCT
+TAGCTTTAGTGAAATACAGTATTGATAGGCAAATTTCTTAGTGTTAAGGTAGAAAACAAG
+GACTCTAAATAACTTTGATGGTCTGTGTATTTGTTTTTGTTTCCTAGGAGTAAAATTTCC
+AGTTGATTTTTTAAAATTTGATTTTTAAAAAAAATCACAGGTAACCTTAATGCATTGTCT
+TAACACAACAAAGAGCATACATAGGGTTTCTCTTGGTTTCTTTGATTATAATTCATACAT
+TTTTCTCTAACTGCAAACATAATGTTTTCCCTTGTATTTTACAGATGCAAACAGCTATAA
+TTTTGCAAAAAAGGAAAATAACTCTCCTGAACATCTAAAAGATGAAGTTTCTATCATCCA
+AAGTATGGGCTACAGAAACCGTGCCAAAAGACTTCTACAGAGTGAACCCGAAAATCCTTC
+CTTGGTAAAACCATTTGTTTTCTTCTTCTTCTTCTTCTTCTTTTCTTTTTTTTTTCTTTT
+TTTTTTTTGAGATGGAGTCTTGCTCTGTGGCCCAGGCTAGAAGCAGTCCTCCTGCCTTAG
+CCCCCTTAGTAGCTGGGATTACAGGCACGCGCCACCATGCCAGGCTAATTTTTGTATTTT
+TAGTAGAGACGGGGTTTCATCATGTTGGCCAGGCTGGTCTCGAACTCCTAACCTCAGGTG
+ATCCACCCACCTCGGCTCCCCAAATTGCTGGGATTACAGGTGTGAGCCACTGTGCCCGGC
+CGGTAAAACCATTTTCATTTATTCTGGCAACATCTCTTTATTGAGCATTGTGAATATGTT
+AGTGAATGTGCTAGATGCTCATAGATTTATATAAAAAGTTAGTGAAGAAGGAAAGATGGT
+ATATTAAGTGGTTAGACAAGTGTTCTAATCAGTTAGAGTTCAGAGAAGGTCAGGGTACCT
+GATATAATCAAGAGAGAGACCTTACAGCCAGGTGAGGTGAATGTACCTATAATCCCAGCT
+ACTTAGGAGGCTGAAATGGGAGGATCACTTGAGTCCAGGTTTGAGACCAGCCCAGGCAAC
+ATAGCAAGATCCCCATCAGATACACCAAAAAGACAGATTTCTTTTTTTTTTTTTTTTTTG
+AGACAGAGTCTCGCTCTGTCGCCCAGGCTGGAGCGCAGTGACACGATGTCAGCTCACTGC
+AACCTCCGCCTCCCAGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTGAGTAGTTGGGACT
+ACAGGGGTACGACACCAGACCTGGCTAATTTTTGTAATTTTAGTAGAGTCGGGGTTTCAC
+CATATTGGTCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCACCCTCCTTGGCCTCC
+CAGAGTGCTGGGATTACAGGCGTGAGCCACCAAGCCCGGCCAAAAAAGAGAGCTCTTATA
+GGCCCTTCCTTGCTTTGGAGCTTTATCTGCTCTGTGATGCTTATCTAAAATAGCCATAAG
+GTCACTGATATTTTTAAGCATTTGGAAATTACTTCAGCTGGGTGCCATGGCTCATGCCTA
+TAATCCCAACCCTTTGGGAGGCTGAGGTAGGAGGTCCTTTGAGCCCAGCTTGGGCAACAC
+AGTGAGACACTGTCTCTGCAATTAAAAAAAAAAAAAAGTAGCTGGGTGCCGTGGCTCACG
+CCTGTAATTCCAGCACTAGGAGGCTTGAGGATTGCCTGAGCTCAGGAGTTCAAGACCAGT
+TTGGGCAACATAGCAAGTCCTTGTCTATATTAAAAGTTTTTTTAAATTATCTGGGCATGG
+TGGTGTGTGCCTGTAGTCCCAGCTACTTGGGAAGCTGAGACAGAAGGATCACTTGAGTCC
+AGGAGATGTAGACTACAGTGAGCTATGATCACTCCACTGCACTTCAGCGTGGGCGGCAAA
+GCAAGATCTAGTTGCAAAAAAAAAAAGAACTGGCTGGGTGCGGCGGCTAACACCTGCAAT
+CCCAGCACCTTGGGAGGCTGAGGCCAGTGGATCATGAGGTCAGGAGATTGAGACCACCCT
+GGCCAACATGGTGAAACCCGGTCTCTACTAAAAATACAAAAATTAGCTGGGTGTGGTGGC
+ACGTGCCTGTAATCCCAGCTACTCCAGAGGCTGAGGATGGAGAATCACTTGAACCTGAGA
+GTCGGAGGTTGCAGTGAGCCGAGATTGCGCCACTGCACTCCAGCCTGGCGACAGAGCGAG
+ACTCCGTCTCAAAAAAAAAAAAAAAAAAGCTTCACGCCTGTAATCCCAGCACTTTGGGAG
+GCCGAGTCAAGTGGATCACGAGGTGTGGAGATCAAGACTATCCTGGCTCACATGGTGAAA
+GCCCGTCTCTACTAAAAACACAGAAAAATTAGCTGAGCGTGATGGCGGACTCCTGTAGTC
+CCAGCTACTCGGGAGGCTGAGGCAGGAGAATAGCATGAACCCGGGAGGTGGAGCTTGCAG
+TGAGCCGAGATCCCGCCACTGCGATCCAGCCTGGGCGACAGAGTGAGACTCTGTCTCAAA
+AAAAAAACAAAAAAACTTAGCTGGGCGTGGTGGTATGCACCTGTGGTCCTAGCTACTTGG
+GAGGCTGAGGCTGGAGCATTGCTTTAACATAGAGAGTCAAGGCTGCAGTTGAGCTATGAC
+TGTGCCACTGGACTCCAGCGCAGGTGACTGAGACCCTATCTTTTAAAAAAAGGGAAAATT
+ACTTGAACTTAAAAGGTGTAATTGTTAAAGAAAATGTAGTGATTTGCTCTGTTGTTACTT
+ATATGTGCATGAATGATGGAGATCTTAAAAAGTAATCATTCTGGGGCTGGGCGTAGTAGC
+TTGCACCTGTAATCCCAGCACTTCGGGAGGCTGAGGCAGGCAGATAATTTGAGGTCAGGA
+GTTTGAGACCAGCCTGGCCAACATGGTGAAACCCATCTCTACTAAAAATACAAAAATTAG
+CTGGGTGTGGTGGCACGTACCTGTAATCCCAGCTACTCGGGAGGCGGAGGCACAAGAATT
+GCTTGAACCTAGGACGCGGAGGTTGCAGCGAGCCAAGATCGCGCCACTGCACTCCAGCCT
+GGGCCGTAGAGTGAGACTCTGTCTCAAAAAAGAAAAAAAAGTAATTGTTCTAGCTGGGCG
+CAGTGGCTCTTGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGCGGGTGGATCTCGAGTC
+CTAGAGTTCAAGACCAGCCTAGGCAATGTGGTGAAACCCCATCGCTACAAAAAATACAAA
+AATTAGCCAGGCATGGTGGCGTGCGCATGTAGTCCCAGCTCCTTGGGAGGCTGAGGTGGG
+AGGATCACTTGAACCCAGGAGACAGAGGTTGCAGTGAACCGAGATCACGCCACCACGCTC
+CAGCCTGGGCAACAGAACAAGACTCTGTCTAAAAAAATACAAATAAAATAAAAGTAGTTC
+TCACAGTACCAGCATTCATTTTTCAAAAGATATAGAGCTAAAAAGGAAGGAAAAAAAAAG
+TAATGTTGGGCTTTTAAATACTCGTTCCTATACTAAATGTTCTTAGGAGTGCTGGGGTTT
+TATTGTCATCATTTATCCTTTTTAAAAATGTTATTGGCCAGGCACGGTGGCTCATGGCTG
+TAATCCCAGCACTTTGGGAGGCCGAGGCAGGCAGATCACCTGAGGTCAGGAGTGTGAGAC
+CAGCCTGGCCAACATGGCGAAACCTGTCTCTACTAAAAATACAAAAATTAACTAGGCGTG
+GTGGTGTACGCCTGTAGTCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCAACTGAACC
+AGGGAGGTGGAGGTTGCAGTGTGCCGAGATCACGCCACTGCACTCTAGCCTGGCAACAGA
+GCAAGATTCTGTCTCAAAAAAAAAAAACATATATACACATATATCCCAAAGTGCTGGGAT
+TACATATATATATATATATATATATATTATATATATATATATATATATGTTATATATATG
+TTATATATATATAACATATATATATGTTATATATATGTTATATATATATAATATATATAT
+GTTATATATATGTTATATATATATATACACACACACACACATATATATGTATATATATAT
+ACACACACACACACAAATTAGCCAGGCATAGTTGCACACGCTTGTAGACCCAGCTACTCA
+GGAGGCTGAGGCAGGAGAATCTCTTGAACTTAGGAGGCGGAGGTTGCAGTGAGCTGAGAT
+TGCGCCACTGCACTCCAGCCTGGGTGACAGAGCAGGACTCTGTACACCCCCCAAAACAAA
+AAAAAAAGTTATCAGATGTGATTGGAATGTATATCAAGTATCAGCTTCAAAATATGCTAT
+ATTAATACTTCAAAAATTACACAAATAATACATAATCAGGTTTGAAAAATTTAAGACAAC
+AGAAAAAAAAATTCAAATCACACATATCCCACACATTTTATTATTACTACTACTATTATT
+TTGTAGAGACTGGGTCTCACTCTGTTGCTTATGCTGGTCTTGAACTCCTGGCCTCAAGCA
+GTCCTGCTCCAGCCTCCCAAAGTGCTGGGATTATAGGCATGAGCTACCGCTCCCAGCCCC
+AGACATTTTAGTGTGTAAATTCCTGGGCATTTTTTCCAGGCATCATACATGTTAGCTGAC
+TGATGATGGTCAATTTATTTTGTCCATGGTGTCAAGTTTCTCTTCAGGAGGAAAAGCACA
+GAACTGGCCAACAATTGCTTGACTGTTCTTTACCATACTGTTTAGCAGGAAACCAGTCTC
+AGTGTCCAACTCTCTAACCTTGGAACTGTGAGAACTCTGAGGACAAAGCAGCGGATACAA
+CCTCAAAAGACGTCTGTCTACATTGAATTGGGTAAGGGTCTCAGGTTTTTTAAGTATTTA
+ATAATAATTGCTGGATTCCTTATCTTATAGTTTTGCCAAAAATCTTGGTCATAATTTGTA
+TTTGTGGTAGGCAGCTTTGGGAAGTGAATTTTATGAGCCCTATGGTGAGTTATAAAAAAT
+GTAAAAGACGCAGTTCCCACCTTGAAGAATCTTACTTTAAAAAGGGAGCAAAAGAGGCCA
+GGCATGGTGGCTCACACCTGTAATCCCAGCACTTTGGGAGGCCAAAGTGGGTGGATCACC
+TGAGGTCGGGAGTTCGAGACCAGCCTAGCCAACATGGAGAAACTCTGTCTGTACCAAAAA
+ATAAAAAATTAGCCAGGTGTGGTGGCACATAACTGTAATCCCAGCTACTCGGGAGGCTGA
+GGCAGGAGAATCACTTGAACCCGGGAGGTGGAGGTTGCGGTGAACCGAGATCGCACCATT
+GCACTCCAGCCTGGGCAAAAATAGCGAAACTCCATCTAAAAAAAAAAAAGAGAGCAAAAG
+AAAGAATATCTGGTTTTAAATATGTGTAAATATGTTTTGGAAAGATGGAGAGTAGCAATA
+AGAAAAAACATGATGGATTGCTACAGTATTTAGTTCCAAGATAAATTGTACTAGATGAGG
+AAGCCTTTTAAGAAGAGCTGAATTGCCAGGCGCAGTGGCTCACGCCTGTAATCCCAGCAC
+TTTGGGAGGCCGAGGTGGGCGGATCACCTGAGGTCGGGAGTTCAAGACCAGCCTGACCAA
+CATGGAGAAACCCCATCTCTACTAAAAAAAAAAAAAAAAAAATTAGCCGGGGTGGTGGCT
+TATGCCTGTAATCCCAGCTACTCAGGAGGCTGAGGCAGGAGAATCGCTTGAACCCAGGAA
+GCAGAGGTTGCAGTGAGCCAAGATCGCACCATTGCACTCCAGCCTAGGCAACAAGAGTGA
+AACTCCATCTCAAAAAAAAAAAAAAAGAGCTGAATCTTGGCTGGGCAGGATGGCTCGTGC
+CTGTAATCCTAACGCTTTGGAAGACCGAGGCAGAAGGATTGGTTGAGTCCACGAGTTTAA
+GACCAGCCTGGCCAACATAGGGGAACCCTGTCTCTATTTTTAAAATAATAATACATTTTT
+GGCCGGTGCGGTGGCTCATGCCTGTAATCCCAATACTTTGGGAGGCTGAGGCAGGTAGAT
+CACCTGAGGTCAGAGTTCGAGACCAGCCTGGATAACCTGGTGAAACCCCTCTTTACTAAA
+AATACAAAAAAAAAAAAAAATTAGCTGGGTGTGGTAGCACATGCTTGTAATCCCAGCTAC
+TTGGGAGGCTGAGGCAGGAGAATCGCTTGAACCAGGGAGGCGGAGGTTACAATGAGCCAA
+CACTACACCACTGCACTCCAGCCTGGGCAATAGAGTGAGACTGCATCTCAAAAAAATAAT
+AATTTTTAAAAATAATAAATTTTTTTAAGCTTATAAAAAGAAAAGTTGAGGCCAGCATAG
+TAGCTCACATCTGTAATCTCAGCAGTGGCAGAGGATTGCTTGAAGCCAGGAGTTTGAGAC
+CAGCCTGGGCAACATAGCAAGACCTCATCTCTACAAAAAAATTTCTTTTTTAAATTAGCT
+GGGTGTGGTGGTGTGCATCTGTAGTCCCAGCTACTCAGGAGGCAGAGGTGAGTGGATACA
+TTGAACCCAGGAGTTTGAGGCTGTAGTGAGCTATGATCATGCCACTGCACTCCAACCTGG
+GTGACAGAGCAAGACCTCCAAAAAAAAAAAAAAAAGAGCTGCTGAGCTCAGAATTCAAAC
+TGGGCTCTCAAATTGGATTTTCTTTTAGAATATATTTATAATTAAAAAGGATAGCCATCT
+TTTGAGCTCCCAGGCACCACCATCTATTTATCATAACACTTACTGTTTTCCCCCCTTATG
+ATCATAAATTCCTAGACAACAGGCATTGTAAAAATAGTTATAGTAGTTGATATTTAGGAG
+CACTTAACTATATTCCAGGCACTATTGTGCTTTTCTTGTATAACTCATTAGATGCTTGTC
+AGACCTCTGAGATTGTTCCTATTATACTTATTTTACAGATGAGAAAATTAAGGCACAGAG
+AAGTTATGAAATTTTTCCAAGGTATTAAACCTAGTAAGTGGCTGAGCCATGATTCAAACC
+TAGGAAGTTAGATGTCAGAGCCTGTGCTTTTTTTTTGTTTTTGTTTTTGTTTTCAGTAGA
+AACGGGGGTCTCACTTTGTTGGCCAGGCTGGTCTTGAACTCCTAACCTCAAATAATCCAC
+CCATCTCGGCCTCCTCAAGTGCTGGGATTACAGGTGAGAGCCACTGTGCCTGGCGAAGCC
+CATGCCTTTAACCACTTCTCTGTATTACATACTAGCTTAACTAGCATTGTACCTGCCACA
+GTAGATGCTCAGTAAATATTTCTAGTTGAATATCTGTTTTTCAACAAGTACATTTTTTTA
+ACCCTTTTAATTAAGAAAACTTTTATTGATTTATTTTTTGGGGGGAAATTTTTTAGGATC
+TGATTCTTCTGAAGATACCGTTAATAAGGCAACTTATTGCAGGTGAGTCAAAGAGAACCT
+TTGTCTATGAAGCTGGTATTTTCCTATTTAGTTAATATTAAGGATTGATGTTTCTCTCTT
+TTTAAAAATATTTTAACTTTTATTTTAGGTTCAGGGATGTATGTGCAGTTTGTTATATAG
+GTAAACACACGACTTGGGATTTGGTGTATAGATTTTTTTCATCATCCGGGTACTAAGCAT
+ACCCCACAGTTTTTTGTTTGCTTTCTTTCTGAATTTCTCCCTCTTCCCACCTTCCTCCCT
+CAAGTAGGCTGGTGTTTCTCCAGACTAGAATCATGGTATTGGAAGAAACCTTAGAGATCA
+TCTAGTTTAGTTCTCTCATTTTATAGTGGAGGAAATACCCTTTTTGTTTGTTGGATTTAG
+TTATTAGCACTGTCCAAAGGAATTTAGGATAACAGTAGAACTCTGCACATGCTTGCTTCT
+AGCAGATTGTTCTCTAAGTTCCTCATATACAGTAATATTGACACAGCAGTAATTGTGACT
+GATGAAAATGTTCAAGGACTTCATTTTCAACTCTTTCTTTCCTCTGTTCCTTATTTCCAC
+ATATCTCTCAAGCTTTGTCTGTATGTTATATAATAAACTACAAGCAACCCCAACTATGTT
+ACCTACCTTCCTTAGGAATTATTGCTTGACCCAGGTTTTTTTTTTTTTTTTTTTGGAGAC
+GGGGTCTTGCCCTGTTGCCAGGATGGAGTGTAGTGGCGCCATCTCGGCTCACTGCAATCT
+CCAACTCCCTGGTTCAAGCGATTCTCCTGTCTCAATCTCACGAGTAGCTGGGACTACAGG
+TATACACCACCACGCCCGGTTAATTGACCATTCCATTTCTTTCTTTCTCTCTTTTTTTTT
+TTTTTTTTTGAGACAGAGTCTTGCTCTGTTGCCCAGGCTGGAGTACAGAGGTGTGATCTC
+ACCTCTCCGCAACGTCTGCCTCCCAGGTTGAAGCCATACTCCTGCCTCAGCCTCTCTAGT
+AGCTGGGACTACAGGCGCGCGCCACCACACCCGGCTAATTTTTGTATTTTTAGTAGAGAT
+GGGGTTTCACCATGTTGGCCAGGCTGGTCTTGAACTCATGACCTCAAGTGGTCCACCCGC
+CTCAGCCTCCCAAAGTGCTGGAATTACAGGCTTGAGCCACCGTGCCCAGCAACCATTTCA
+TTTCAACTAGAAGTTTCTAAAGGAGAGAGCAGCTTTCACTAACTAAATAAGATTGGTCAG
+CTTTCTGTAATCGAAAGAGCTAAAATGTTTGATCTTGGTCATTTGACAGTTCTGCATACA
+TGTAACTAGTGTTTCTTATTAGGACTCTGTCTTTTCCCTATAGTGTGGGAGATCAAGAAT
+TGTTACAAATCACCCCTCAAGGAACCAGGGATGAAATCAGTTTGGATTCTGCAAAAAAGG
+GTAATGGCAAAGTTTGCCAACTTAACAGGCACTGAAAAGAGAGTGGGTAGATACAGTACT
+GTAATTAGATTATTCTGAAGACCATTTGGGACCTTTACAACCCACAAAATCTCTTGGCAG
+AGTTAGAGTATCATTCTCTGTCAAATGTCGTGGTATGGTCTGATAGATTTAAATGGTACT
+AGACTAATGTACCTATAATAAGACCTTCTGTAACTGATTGTTGCCCTTTCGTTTTTTTTT
+TTGTTTGTTTGTTTGTTTTTTTTTGAGATGGGGTCTCACTCTGTTGCCCAGGCTGGAGTG
+CAGTGATGCAATCTTGGCTCACTGCAACCTCCACCTCCAAGGCTCAAGCTATCCTCCCAC
+TTCAGCCTCCTGAGTAGCTGGGACTACAGGCGCATGCCACCACACCCGGTTAATTTTTTG
+TGGTTTTATAGAGATGGGGTTTCACCATGTTACCGAGGCTGGTCTCAAACTCCTGGACTC
+AAGCAGTCTGCCCACTTCAGCCTCCCAAAGTGCTGCAGTTACAGGCTTGAGCCACTGTGC
+CTGGCCTGCCCTTTACTTTTAATTGGTGTATTTGTGTTTCATCTTTTACCTACTGGTTTT
+TAAATATAGGGAGTGGTAAGTCTGTAGATAGAACAGAGTATTAAGTAGACTTAATGGCCA
+GTAATCTTTAGAGTACATCAGAACCAGTTTTCTGATGGCCAATCTGCTTTTAATTCACTC
+TTAGACGTTAGAGAAATAGGTGTGGTTTCTGCATAGGGAAAATTCTGAAATTAAAAATTT
+AATGGATCCTAAGTGGAAATAATCTAGGTAAATAGGAATTAAATGAAAGAGTATGAGCTA
+CATCTTCAGTATACTTGGTAGTTTATGAGGTTAGTTTCTCTAATATAGCCAGTTGGTTGA
+TTTCCACCTCCAAGGTGTATGAAGTATGTATTTTTTTAATGACAATTCAGTTTTTGAGTA
+CCTTGTTATTTTTGTATATTTTCAGCTGCTTGTGAATTTTCTGAGACGGATGTAACAAAT
+ACTGAACATCATCAACCCAGTAATAATGATTTGAACACCACTGAGAAGCGTGCAGCTGAG
+AGGCATCCAGAAAAGTATCAGGGTAGTTCTGTTTCAAACTTGCATGTGGAGCCATGTGGC
+ACAAATACTCATGCCAGCTCATTACAGCATGAGAACAGCAGTTTATTACTCACTAAAGAC
+AGAATGAATGTAGAAAAGGCTGAATTCTGTAATAAAAGCAAACAGCCTGGCTTAGCAAGG
+AGCCAACATAACAGATGGGCTGGAAGTAAGGAAACATGTAATGATAGGCGGACTCCCAGC
+ACAGAAAAAAAGGTAGATCTGAATGCTGATCCCCTGTGTGAGAGAAAAGAATGGAATAAG
+CAGAAACTGCCATGCTCAGAGAATCCTAGAGATACTGAAGATGTTCCTTGGATAACACTA
+AATAGCAGCATTCAGAAAGTTAATGAGTGGTTTTCCAGAAGTGATGAACTGTTAGGTTCT
+GATGACTCACATGATGGGGAGTCTGAATCAAATGCCAAAGTAGCTGATGTATTGGACGTT
+CTAAATGAGGTAGATGAATATTCTGGTTCTTCAGAGAAAATAGACTTACTGGCCAGTGAT
+CCTCATGAGGCTTTAATATGTAAAAGTGAAAGAGTTCACTCCAAATCAGTAGAGAGTAAT
+ATTGAAGACAAAATATTTGGGAAAACCTATCGGAAGAAGGCAAGCCTCCCCAACTTAAGC
+CATGTAACTGAAAATCTAATTATAGGAGCATTTGTTACTGAGCCACAGATAATACAAGAG
+CGTCCCCTCACAAATAAATTAAAGCGTAAAAGGAGACCTACATCAGGCCTTCATCCTGAG
+GATTTTATCAAGAAAGCAGATTTGGCAGTTCAAAAGACTCCTGAAATGATAAATCAGGGA
+ACTAACCAAACGGAGCAGAATGGTCAAGTGATGAATATTACTAATAGTGGTCATGAGAAT
+AAAACAAAAGGTGATTCTATTCAGAATGAGAAAAATCCTAACCCAATAGAATCACTCGAA
+AAAGAATCTGCTTTCAAAACGAAAGCTGAACCTATAAGCAGCAGTATAAGCAATATGGAA
+CTCGAATTAAATATCCACAATTCAAAAGCACCTAAAAAGAATAGGCTGAGGAGGAAGTCT
+TCTACCAGGCATATTCATGCGCTTGAACTAGTAGTCAGTAGAAATCTAAGCCCACCTAAT
+TGTACTGAATTGCAAATTGATAGTTGTTCTAGCAGTGAAGAGATAAAGAAAAAAAAGTAC
+AACCAAATGCCAGTCAGGCACAGCAGAAACCTACAACTCATGGAAGGTAAAGAACCTGCA
+ACTGGAGCCAAGAAGAGTAACAAGCCAAATGAACAGACAAGTAAAAGACATGACAGCGAT
+ACTTTCCCAGAGCTGAAGTTAACAAATGCACCTGGTTCTTTTACTAAGTGTTCAAATACC
+AGTGAACTTAAAGAATTTGTCAATCCTAGCCTTCCAAGAGAAGAAAAAGAAGAGAAACTA
+GAAACAGTTAAAGTGTCTAATAATGCTGAAGACCCCAAAGATCTCATGTTAAGTGGAGAA
+AGGGTTTTGCAAACTGAAAGATCTGTAGAGAGTAGCAGTATTTCATTGGTACCTGGTACT
+GATTATGGCACTCAGGAAAGTATCTCGTTACTGGAAGTTAGCACTCTAGGGAAGGCAAAA
+ACAGAACCAAATAAATGTGTGAGTCAGTGTGCAGCATTTGAAAACCCCAAGGGACTAATT
+CATGGTTGTTCCAAAGATAATAGAAATGACACAGAAGGCTTTAAGTATCCATTGGGACAT
+GAAGTTAACCACAGTCGGGAAACAAGCATAGAAATGGAAGAAAGTGAACTTGATGCTCAG
+TATTTGCAGAATACATTCAAGGTTTCAAAGCGCCAGTCATTTGCTCCGTTTTCAAATCCA
+GGAAATGCAGAAGAGGAATGTGCAACATTCTCTGCCCACTCTGGGTCCTTAAAGAAACAA
+AGTCCAAAAGTCACTTTTGAATGTGAACAAAAGGAAGAAAATCAAGGAAAGAATGAGTCT
+AATATCAAGCCTGTACAGACAGTTAATATCACTGCAGGCTTTCCTGTGGTTGGTCAGAAA
+GATAAGCCAGTTGATAATGCCAAATGTAGTATCAAAGGAGGCTCTAGGTTTTGTCTATCA
+TCTCAGTTCAGAGGCAACGAAACTGGACTCATTACTCCAAATAAACATGGACTTTTACAA
+AACCCATATCGTATACCACCACTTTTTCCCATCAAGTCATTTGTTAAAACTAAATGTAAG
+AAAAATCTGCTAGAGGAAAACTTTGAGGAACATTCAATGTCACCTGAAAGAGAAATGGGA
+AATGAGAACATTCCAAGTACAGTGAGCACAATTAGCCGTAATAACATTAGAGAAAATGTT
+TTTAAAGAAGCCAGCTCAAGCAATATTAATGAAGTAGGTTCCAGTACTAATGAAGTGGGC
+TCCAGTATTAATGAAATAGGTTCCAGTGATGAAAACATTCAAGCAGAACTAGGTAGAAAC
+AGAGGGCCAAAATTGAATGCTATGCTTAGATTAGGGGTTTTGCAACCTGAGGTCTATAAA
+CAAAGTCTTCCTGGAAGTAATTGTAAGCATCCTGAAATAAAAAAGCAAGAATATGAAGAA
+GTAGTTCAGACTGTTAATACAGATTTCTCTCCATATCTGATTTCAGATAACTTAGAACAG
+CCTATGGGAAGTAGTCATGCATCTCAGGTTTGTTCTGAGACACCTGATGACCTGTTAGAT
+GATGGTGAAATAAAGGAAGATACTAGTTTTGCTGAAAATGACATTAAGGAAAGTTCTGCT
+GTTTTTAGCAAAAGCGTCCAGAAAGGAGAGCTTAGCAGGAGTCCTAGCCCTTTCACCCAT
+ACACATTTGGCTCAGGGTTACCGAAGAGGGGCCAAGAAATTAGAGTCCTCAGAAGAGAAC
+TTATCTAGTGAGGATGAAGAGCTTCCCTGCTTCCAACACTTGTTATTTGGTAAAGTAAAC
+AATATACCTTCTCAGTCTACTAGGCATAGCACCGTTGCTACCGAGTGTCTGTCTAAGAAC
+ACAGAGGAGAATTTATTATCATTGAAGAATAGCTTAAATGACTGCAGTAACCAGGTAATA
+TTGGCAAAGGCATCTCAGGAACATCACCTTAGTGAGGAAACAAAATGTTCTGCTAGCTTG
+TTTTCTTCACAGTGCAGTGAATTGGAAGACTTGACTGCAAATACAAACACCCAGGATCCT
+TTCTTGATTGGTTCTTCCAAACAAATGAGGCATCAGTCTGAAAGCCAGGGAGTTGGTCTG
+AGTGACAAGGAATTGGTTTCAGATGATGAAGAAAGAGGAACGGGCTTGGAAGAAAATAAT
+CAAGAAGAGCAAAGCATGGATTCAAACTTAGGTATTGGAACCAGGTTTTTGTGTTTGCCC
+CAGTCTATTTATAGAAGTGAGCTAAATGTTTATGCTTTTGGGGAGCACATTTTACAAATT
+TCCAAGTATAGTTAAAGGAACTGCTTCTTAAACTTGAAACATGTTCCTCCTAAGGTGCTT
+TTCATAGAAAAAAGTCCTTCACACAGCTAGGACGTCATCTTTGACTGAATGAGCTTTAAC
+ATCCTAATTACTGGTGGACTTACTTCTGGTTTCATTTTATAAAAGCAAATCCAGGTGTCC
+CAAAGCAAGGAATTTAATCATTTTGTGTGACATGAAAGTAAATCCAGTCCTGCCAATGAG
+AAGAAAAAGACACAGCAAGTTGCAGCGTTTATAGTCTGCTTTTACATCTGAACCTCTGTT
+TTTGTTATTTAAGGTGAAGCAGCATCTGGGTGTGAGAGTGAAACAAGCGTCTCTGAAGAC
+TGCTCAGGGCTATCCTCTCAGAGTGACATTTTAACCACTCAGGTAAAAAGCGTGTGTGTG
+TGTGCACATGCGTGTGTGTGGTGTCCTTTGCATTCAGTAGTATGTATCCCACATTCTTAG
+GTTTGCTGACATCATCTCTTTGAATTAATGGCACAATTGTTTGTGGTTCATTGTCTCCTT
+AAATTAGACTGTAAGCACCTTGATGGAACTCATACTACCTTTTATTTCACACACACGCAC
+ACGCGCACACACAGCCTACACATACACTGCCTAGCTCATTGTAGCATACTAAATACTGAT
+TTTAATGAATAAGCTAAACCTTCGAAACCCATTTGCTAATCCCAGCACTTTGGGAGGCCA
+AGGTGGGTGGATCACCTCAGGTCAGAAGTTTGAGACCAGCCTGGCCAACATGGTGAAACC
+CCACATCTACTAAAAATACAAAAATTAGCTGGGCGTGGTGGCCAATGCCTTGTAATCCCA
+GCTATTCTGGAGGCTGAGACAGGAGAATCGCCTGAACCTGGGAGGCGGAGGTTGCACTGA
+GCTGGGATTGTACCACTGCACTCCAGCCTGGGTGACAAAGTGAGACTCCATCTCAAAAAC
+AAACAAACAAAAACACATCATTTCCCCTATAGCAAAAACATGACGGCACTTACTGTATCA
+AGAGAGGTGAGAAAAAGGAGCCACAGCAGGATGATTCAAGGGACTCTGCATAGCTCCATT
+TTAAGAATATGCCTACTGCAGGTCAGAGAAGGTAAGCAAACTGCCTAAGGCCACACAGCC
+AGGTACAGAACTCTCACCAATATTATTGCCAGCAATCGCAATTTTGGTGTTTATTCTTGG
+TACCAAGTTGGAGACTATAGGGTTCTCTTCCTAATAGAGACCATCTAGCCTTTCACTGTT
+TTGTGGATACTTCTTTCTCTTCTTCTTTTTTTTTTTCCCTTTTAAAATCTAGTTATTTTT
+TTCTTTTTGGTTTCTTTGACACAGGGTCTCTTACTCTGTTACCCAGGCTGGAATGGAGTA
+GTGCAGTCATGGTTCACTGTAGCTTTGACTTCCTGGGCTCAAGCGATCCTCCTACCTCAG
+CTTCCCGAGTAGCTGGGACCACAGGCGCCCACCAACACCTCCAGCTAATTTTTAAGTTTT
+TACTAGAGACAACATCTCACTATGTTGCCCAGGCTGGTCTCAAAATCCTGGGCTCAAGTG
+ATCCCACCTCAGCCTCCCAAAATGCTGGGATTACAGGTGTGTGCAACCACGCCTGGCCTA
+TTTTTTTTTTAATTGCTCATAAATCATCTTTTTTCTTTAAAAAAAAGAAAGATGGGAGGC
+TAAAGCAGGAGAATCACTTGAACCCAGGAGGCGGAGGTTGCAGTGAGCTGAGATCATGCT
+GCTGCTCTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAAAAAAAAAAAAAAAGAAA
+GTACACAATTTTACTTTCTGGACCTAATGGTCAAGGCCAATAATTTGGTCACCTATGAAA
+TAAATAAAAGCTTTACCATATATATGACCATTTGATAATGTAATATGAAATGTTTATGTA
+CTAAAGGCAGAATAGTCTAGAAAAAACATTCTGTATCACAACGTCTAAAAATGAATATCA
+TCTTCATCATAGAACCAGGCTCTTTCTCCTAATTTTTTTTTTTGAGATGGAGTTTTGCTC
+TGTCACCCAGGCTGGAATGCAGTGGCACAATTTTGGCTCACTGCAACCTTCAGCTCCCAG
+GTTCAGGATCAAGTGATTTTCGTGCTTCAGCCTTCTAAGTAGCTGGGATTACAGGTGACT
+GCCACCACACCCAGCTCATTTTTTTGTATTTTTTTAGTAGAGAGAGGGTTTCACCATGTT
+GGCCAGGCTCGTCTCGAACTCCTGACCTCAAATAATCCACCCGTCTCAGCCTCCCAAAGT
+GCTGAGATTACAGGCGTGAGCCACCAGGCCTGGCCTCCTAATTTTTATTTGTAGAAGTGG
+CACCAAAATTTTCCAAGTTCTCATGCAAAAATTCAGGCTCATCTCAGTTTATTTTTTTCA
+TTTATTTATCTCCCACTAAATTGACAACTTCTAATAATTAGGTTGGTTCTTTGTATTCCC
+AGCACAGGGTTCTATGCAGAATACACACACAGCAGTTGCTGGCAATAATATTGGTGAGAG
+TTCTGTACTGGGCTATGTGATCTTAGACAGTTTGCTTATGTTCTCTGACCTGCCGTAGGC
+ACATTCTTAAAATGAAGCTGTTCAGACCCCCTCGATTCATCCTGCTGTGGCTTCTTTTTC
+CCACCTAAATCTTAAATACCCTTTTAGCTGCTAGTAAGTGAATGATGTTTTTTTATGAAC
+TTTCTGAAGTCAGATTAGATGAAGTTGAGAAAAGCCTGATATTCTTATAAAGTTATATAT
+GTGCATCATAGAAAACTTAGAAAATACAGATAAACAAAAATCATCCATGGACGAACCTTG
+AAGACATTGTGTTAACTGAAATAAACCGGACACCAAAGGACACATGTTATATGCTTCCAC
+TTATATGAGATACCTAGAATAGTTACATTTGGTTACTCTGGGTACATTGCCTATAGATAA
+GCCTTGCTCCACAAGGAGCAGTTAAAAAAAAAAAAAAGATAAATTCATAGGATGGAAGGT
+AGAATAGTGGTTACTAGGGACTTGGGGAGGGGGAAATGGGGAGTTACTGTTTGATGAGTG
+CAGATTTCAGTTTGGGATGATGAAAAAGTTCTGGAGATAGATAGTGGCAATGGTAACACA
+ACAGTGTGAAAATAATGCCACTGAACTGTACACTTAAAATGATTAAAATGATAAGTTAAT
+TGTAATTTGTGTTATCCAGAAATGGTTAGCAATTTATTGGTGTATATTCTTTTAGTATTC
+CTGTGTGTGCACAGGGGTGCTTGTATATACTTTATCTTTAAAATATATCCAGGAAGCTAG
+GCACAGTGGCTTACACCTGTAATCCCAGCACTTTGGGAGGGTGAGGCAGGAAGATTGCCT
+GAGCCCCGGAGGTCAAGGCTGCAGTGAGTTGTGATCACGCTACTGCACTCTGTTCTGGGC
+AACCCCTGTCTGGGAAAAAAAAAAAAATTAGTGAGGCTTAGTGGTGCACACCTGTAGTCT
+CAGCTACTTGAGTGGCTGGGGTAGGATTGCTTGATCCCAGCAAGTTGAGGCCGTGGTGAG
+CCATGATGGTGCCACTGCACTCCATCCTGGGTGATATGGTGAGACCCTGTCTCAAAAACA
+AGAAATCCAGATAATTCTGTGCATTATAATCTAGCTTTTACTGGATCATTAAAATTCTTT
+TTTCTTTTTTTTTTTTTTTTTCTGAGATGGAGTTTCACTCTTGTTGCCCAGGCTGGAGTG
+CAGTGGTGTGACCTTGGCTCACCGCATCCTCTGCCTCCCGGGTTCATGCGATTCTCCTGC
+CTCAGCCTCCCGAGTAGCTGGGATTACAGGCATGTGCCACCATGCCCAGCTAACTTTGTA
+TTTTTAGTAGAGACAGGGTTTCTCCATGTTGACCAGGCTGGTCTCAAACTCCTGGCCTCA
+AGTGATCCACCCACCTCGGCCTCCCAAAGTGCTGGGGTTACAGGCGTGAGCCACCGCACT
+CAGCCTGGGTCGTTAAAATTCTTAAGTGACTTCATTTTTAATTACTATATGGGATTCTAT
+CTTTCCAGTGTATCATGATTTATTTGACCTATTGCTGAATGTTGGAGGTTTCAGGGTAAG
+AGGCACAGTTTGCTATTATGTACATCACTATAGTGGCATCCTGATAGCTAAATATTTGCC
+TACATCCCTGATTATTTCCTTAGTCTAAATTACTGGGACTAGGATTTTGGTGTTTGATAC
+ATGTTACTAAATTGTTTTTTAGAAAGATTAAACCAGTTTATGCTCTTCCAGCCCCTGTGG
+TATATGATAGTTCCCATTTTCCTGTACCTTGCCAACACTGGGTGATATCCAGTTTTAAAA
+TCTAAATCTTGCATTGCTATGAGAACTACAATTAGAGAAGGCTTATCTTCTACTGCCCAT
+TCTCTGTACAGAGCAAATCCCTCTAGACCTGAAGCCCCTTGGAGTTGTCAAGAAACCTTT
+GAGATGACTCCCCACTCTGTATCTGAGCTGTCACCAGTATTCTCCACTTCTTCAGGATTG
+CCATGGCAACTAAATTGATGAAAAGATTTAGGAGGCCTTTTCTCTCTTTGCAATTCCTAT
+GATCCTTTTTGAATGTGGGTTTGGGACTCTGTCAATATACCCATCATCTAATTCTGTCCA
+TTGTGTTTTAAAGTTTAAGGTTGCAATTTCTGATTACATCTGCCTTAGCCATACTGTATT
+ATATTTGACATTCAATATACAATGTCCTTGTTTTTCTGTATTTCTAATCTTATTCCCAGA
+GATGTGTCTATTTGTTCAGGATTCATTTTGCAACGTGTTTTTACTAAGCATCTACCCAAA
+ACCGTTGAAGTCAGATTTCAGGCTGTCTTACGTCTAAAGTAGCACAGGCAGGAAAAACTA
+TTGAAGTGGGATTTTTTTTTCCCTTTTTGTACTGAACCGAGAAAAAGTATATAGATGATA
+GAGAATTCCTAATTTGGTATCATTGATATCTGGGTTTTTGTTTGTTTTTACAGAAGACTG
+ATTAACTATACTTATTTATTAATTTATCTTCTCATTAATAAACACTTGCTGAGTGCTTAC
+TGTCTGCTAGGCATTAGGGAGACAAATATGATTAAGGGAAGCTTCCTCCTATCAAGGTCA
+TGTGTTCCATTTGGGTATACTAATGCATTAGCAATGTAAATCAAGTAGTGAGAGATCATC
+TGTTCCCGATAGGAGATGGATTATTGGTGGGGACTTCTGTGTGTGTGTGTGTGTGTGTGT
+GTGTGTGTGTGTGTGTATGTATGTGATAAAATAAATATAGGAAATGTTAATTATAGATTC
+TAAGTAGTAGATATATAAACACTCATTGCAAAGTTGCTTCAAGTTTTCTGTATATTTGAA
+AATATTCACAACATGTCGACAAAACTAGCATGATAAAGCCACTATTTGTGCTAAGACTTC
+AGCTTGTATCTGGATTAGGCTTATTATGTAGTAGTAGGAACATTAGAAATAGTTTTAACT
+CATTAAATACACATGTTTTATGGGAAGGTTTTATATATATATTTATATGTAATGAATGTG
+AACAAACAAGGGTCAGATATACACTCTGCTTCCCTCCAGACCAGTTCCGGCTGCTCTGCT
+GCACATTTCAGGAGTCTTATTAGAATTAGCCACATTCTGCCCACTTGCCCTTACTTCTCA
+TATTTCACAACTCCTCCTGGTGGGGACTTAAGGAGACATTCAAACTAGGCCTTGAAAGAT
+GAGAATTTTTCCAAGTGGAAAAAGAGGAGTGGCAGCAAGTAAGGTAAAGGTACAGAGTCA
+TGGAATTCCCAGGAAACGTAAAGTTGTCATGTGTTATAGGAAAACAACTTGTGTGAGGGG
+TGTTGGGAGAAATGAGAGATAATACCAGGGTATAAAGGGCCTTTTGAATGCTATGTTGAG
+GAATTTTATCCTAATGGCAGTAATGACTAACAATTATATAGTGTTCAAAAAGTATAAATC
+AGCAGTGGTATACCACTAAGGGTTTTTTTCTTTTCTTTTTTTTTTTGAGACAGAGTTTTG
+CTCTGTTGCCCAGGCTGGAGTGCCGTGGCACGATCTCAGCTCACTGCACTTCCGCCACCT
+GGGTTCAAGTGATTCTTCTGCCTCAGCCAGTGTTTCACTGTGATGGCCAGGATGGAGCAC
+TAAGGGTCTTTATGGAAGAAAAAGACATGATAAACAAGGCTTTTAGGGAACTTCTACAGT
+AATGTAGCTGTATTAAAAGTAGAGATCAGAGCAGCATAGTAGAAGTAGAAGGCTAGAGCT
+AATTGAAGGAGCACTTCAGAATTAGAATCAAGAAGTCTTAGAAACCTATTGGTTTTATTC
+TCCCTAATGTATTTGGCCACTTACCTGCTGGGGAATTTGTCTAAGTTATAAAAAATAATT
+CCTTTGGGAAACCCAAAGGAAAGTTATCTATTAATAATTACCCCACTACTTTTTCTGATT
+TATGTAATGGCCACGTAGAGGTTAGATGTGATGGTTGTGACAGTAGTGACTAATACAGCC
+TGTGAAGCATTTTGGTCAGATATCTATGTGCTTTCATTCCAGGTTGACTGAGGCAAGACT
+TTGGCTAGGGTTTGATCAGTGATGTAACTACTCACGAGTACCACGTGGTGGCAATGGCAT
+TGCTGCAGACCTTGGCAGCAAAGCAGTGTTAGAGTAGCAGTAGAAACCTTTGTGAAGCTA
+GGAATACATTTTCTGGTCATAAAAACCTCCTGAAAATTGTGAACTCAGTGTAGCAGGAGA
+AAGAAGATGGCTTGTTTTTAGTAAAGGGCAAAGTCATTTTTAAGGATCAGAAGAAGAAAC
+GGAGAGTGAAACAATGTGTTCCTGCCCTACTCCCCCACTGGACTTTTTGGCAACCATTGC
+TGTTCCTTCTAAAAGTGATTTTTAAACATGTATATTTTGAAGCCAGGCACAGTGACTCAC
+GTCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCAGATCACCTGAGGTCAGGAGTTC
+AAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGGCC
+AGGTGTGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGAGGATCAT
+GTGGTCAGGAGATCCAGACCATCCTGGCTAACACGGTGAAACACCATTTCTACTAAAAAT
+ACAAAAAATTAGCTGGGCATGGTGGCGGGCGCCTGTAATCCCAGCTACTCAGGAGGCTGA
+AGCAGAAGAATGGCTTGAACCTGGGAGGCGGAGCTTGCAGTGAACCAAGATTGCGCCACT
+GCACTCCAGCCTGGGCAACAAAGTGAGACTCCGTCTCAAAAAAAAAAAAAAAAATTAGTC
+GGGCATGGTAACAGGTGCCTGTAATCCCAGCTACTTGAGAGGCTGAGGCAGGGAGAATTG
+CTTGAACCAGGTAGGCGGAGGTTGCAGTGAGCCAAGATCGCACCACTGCACTCCAGCCTG
+GGGCAACAGAGCAAGACTGTCTCAAAAAAAATAAATAAATAAAATAAATTCTTAAGAAGG
+ATATTTTGGAAAACTCCTTACATACCTAAATTCTTTGTTTATCAAATACTTGGACTTAGC
+ACACTCTTCTTTGAAATGGACCAATAAACAACAGGAGCCCATAAGCAAAAAGAACTCATT
+ATTTTAAAAACAGTAACTATCCTTACAGGCTTTCTCAGGGCTCTTTCTGTTGGATCCTTC
+CCTCTCACAGGTCCTTGCTAATGATCTCTAGGTGGACACATTCTAGATGAGATGTCCCTG
+TCTAGAATGGCAGCACCATGAGGGCTATATCCTCAGTACTAGGACAGCGCCTGGTGCTTA
+ATAGATAGTAAATAGTTGTCTAATTAACTGAGCAAACAGATAGATTCATGAATTAGCTTT
+TTGCTTTTTCTGTTAGAAACTAAAGGTTCAGGTCAGGCACAATGGCGCATGTCTCTAATC
+CCAGCACTTTGGGAGGCCGAGGCGGGCTGATCACTTGAGGTCAGGAGTTCAAGACCAGCC
+TGGCCAACATAGTAAAACCCTGTTTCTACAAAAATTACCAAAATTAGCCGGGCGTCTTGG
+CAAGCACCTGTAATGCCAGCTACTTGAGAGGCTGAGGTGGGAGAATCGCTTGAACCTGGG
+AGGAAGAGGTTGCAGTGAGCCGAGATGGTGCCAACCTGGGTGACAGAGGGAGACTTAAAA
+AAAAAAAGAAAGAAAGAAAGAAAAGAAACTAAAGGTTCAAAGAATCCCAGAAAAGGAAGA
+GTCCTCACAAGCCAGTAATCTAGGCAGGATTACTGATAGTATTTTTATATTTGTTGTATT
+TTTATAAAATGCCATAGATAGAGGGCTTTTTTCAACATTACATCAGTCTAAAAATCACAC
+ATTTTTATATGAACTAACCTAAATGTCTGATGAATCTCACAACACCAAGTCTTTGAAATG
+TGCCCATATAAATAAAATGTTAACAGATTCATGCTAATTTTAAATATCGATAGTGTTTAA
+ATGCCTTAATTATTTTTTCACTCCCTAGCTTTAAAAGAAAATAACCAACTTCAAAAGGAC
+ATCACAATAACATCAAGTCTATTTGGGGGAATTTGAGGATTTTTTCCCTCACTAACATCA
+TTTGGAAATAATTTCATGGGCATTAATTGCATGAATGTGGTTAGATTAAAAGGTGTTCAG
+CTAGAACTTGTAGTTCCATACTAGGTGATTTCAATTCCTGTGCTAAAATTAATTTGTATG
+ATATATTTTCATTTAATGGAAAGCTTCTCAAAGTATTTCATTTTCTTGGTGCCATTTATC
+GTTTTTGAAGCAGAGGGATACCATGCAACATAACCTGATAAAGCTCCAGCAGGAAATGGC
+TGAACTAGAAGCTGTGTTAGAACAGCATGGGAGCCAGCCTTCTAACAGCTACCCTTCCAT
+CATAAGTGACTCTTCTGCCCTTGAGGACCTGCGAAATCCAGAACAAAGCACATCAGAAAA
+AGGTGTGTATTGTTGGCCAAACACTGATATCTTAAGCAAAATTCTTTCCTTCCCCTTTAT
+CTCCTTCTGAAGAGTAAGGACCTAGCTCCAACATTTTATGATCCTTGCTCAGCACATGGG
+TAATTATGGAGCCTTGGTTCTTGTCCCTGCTCACAACTAATATACCAGTCAGAGGGACCC
+AAGGCAGTCATTCATGTTGTCATCTGAGTACCTACAACAAGTAGATGCTATGGGGAGCCC
+ATGGAAGATACATGGTATACAACATAGCTCTTGCTCTATTGGAAGCTAAGTGGAATGGGA
+GAAATTGGTGACAGGCAACCCCATAATTTCAGAAAGCTATGAAAAAGTACTCAGACATAT
+TCCTTATAACACTGGTGTCACATCACAAAGACCTATTTAATGTGCTTCTGATTTATAGGG
+AGAGACATCCTATACTTCAGGAACTGCACTTTGATCCACAGAAAGCCTAGTGATGTAGAG
+CTCCTGTTAGTTCAAAAGGAAAAGAAAAGAACAACACAGAAAGCCTAATTATGCAATAGA
+GTCAAGTGCTTTATAGCAATGTTACAGTTATCAAAAAAAATCCAGATGGACCTCTGAGAG
+GATGCCATTGGAGTAACCAGGCAGATGCAGTTGATCAGAGCTGACTTCCTATAAGAAGTG
+AGCACTGAGCTGAGGAATAATGGCATAAATGAAGGAAAGTGAGATGGAAATTTGAGTTTT
+TAATTGGAAAGACAATACATCAGGCAGATTTTTAAATAGGGGCAAACAAACAGACACATA
+GGAGATGCTAGGCATGGGGTCCCCACTAGGATGCTGCTTAGAAACATGCAGGGGTGGTGA
+GTACTCCCAAAGTACACTTCATTCCTAGCTCAGTGATTCTTATCTGAGTGTTAAAGTTCC
+TTCTTCAGCACCCCGTTCCACAGTCCAACTGGGAACTTTAAGACCTTTCTTGGAGTCTTT
+CTAGGAACTCAAGTCTGCTACTTATACAGAACAGTGGCTTTGGTCCCCAGTTGTGCCTTG
+CAGTATTTTTGTGTTCAGGAAGAAACAGTAGCTCTTGGATAAAGAAGCTAGCTAGAAACT
+CTGTTGCTATGGCAGTGCTTCAAAATGTATTTCCTTAAATGCTTTCTTTGTAACTATCTT
+CATTTAGTTCATCTCTCAGATAATGAGAGATCAGAGTCCCATCCCCAGTATAATACTCTT
+CTTTAGGGTACTTTCACCATCTTCAGTCTAAACACAGACTAGACTTTCAATTATAATGTG
+TAAGATTTAAAATGTTATTATTGTGTGACTTTGAATATCTGTGTAAATCTACTATCTCCT
+CTTTGGTATATACGTGTGTTTATTTTTTTCTGGAGATCTGTAACTGAAATGCTTAATTTC
+TGAATTGTTTTGGATATCACAACTTAATACCAACATAAGTTTTGAGCCTTTTTCTCCCTA
+AATCTGGTGTGAGTCTAACTGAAACTCAAATGAACTTTTTAAAAATAATTTTTTCTTTTC
+TTTAATTTTTTTTTTAAGTAGAGACAGGGACGCACTGTTAACTAGGCTGGTCTTGAACTC
+CTGATCTTGAGCCATCCTCCCCGACCTGAGCCTCACCTTATAGAGAGGGTCTTGCTCTGT
+TGCCCAAGCTGGAGGGCAGTGGCATAATCACAGCTCACTGCAGCCTCTCGACCTCCTCAA
+GCGATCCTCCTGCCTTAGCCTCCCAAGTAGCTGGGACTATAGGCGTCCACCACCATACCC
+AGCTAATTTTTTTTTTTATTTTTTGTAGAGACAAGGTCTCCCTATGTTGCCCAAGTTGGT
+CTCAAACTCCTGGACTCAAGCAGTCCTCTCACCTCAGCCTCCCAAAGTGCTGGGGTTACA
+GGTGTGAGCCATGGCACCTGGCCAGAACTTCTAGTAAAAAGAATATTGTTGCCGGGTACG
+GTGGCTCACGCCTGTAACCCCAGCACTTTGGGAGGCCAAGGCAGGCGAATCACCTGAGGT
+CGGGAGCTCGAGACCAGCCTGACCAACATGGAGAAACCACATCTCTACTAAAACTACAAA
+AAATTAGCCGGGCGTGGTGGCACATGCCTGTAATCCCACCTACTTGGGAGCTACGGTGCC
+TGGCCTAGTTTATTATTTCTTAATATCTGTTGTCTTCCAGTGTCTTCCTTAATTCTTCAC
+AATACCCTGTACAATGCTTAGCACACAGTGGGCAGTCTGTAAGTTTATTAAATGTTTGGT
+GTGGCCCATACTTCCTATCCACAAAGAATGTAACATGTTAAGACATCTAGATGAGGGAAT
+GATTTAAGAGGAACTACAATAATATTCTGAAACTTGGACTCTGGATCTCTGCATTTAGAC
+TTTCCTAAACCAGCCAGCAAGTAGATCATCATGTCACAAGGCTTAGGTTGGGCTTGCTGT
+TCAGAGAATGAATTAAGGATTAAGGAGAAAAAAAAGCAGAAAGGTTTTGCTCTGTTTTTC
+AGGTTCTATTGAGTTGTTAACTTCTAACAAGTTATCTTATTTGCTTCATTGCATGAGGCC
+CATTGTAGTAAGAAGAGGAATTTATATGCTAAATGTTCTGGTGATAGAATGACTTTTCTT
+TTTTTTTACAGTCCAAAGGTCTTTTTTTTTTTTTTTTAACACCTATTATGCCATGAATTC
+ATAGGGAATAGGTTCCAGCTGCTCAGGCTCCTTCCCATTGGTTCTCACAAAGTGTGCTTC
+TCTGGGTGGAGCAGGCTGGTGCTTCAGTTGAACCCACGTACCTTTCTCTTTGGCTTCTTT
+CTTTTTCTGATCATTTTCCTTCACGCGTTTCAGGAAGCTGTCTTGGCTCTTAGAGTGTTT
+AATGTGCTCAATACGCACATTAATTCTCTTGGCAAGAATCTTGCCCTTAACTTGTTTACA
+GCGATGCCAACAGCATGCTGGGTCACGTTGTAGACTTTTCCAGTTTTGCCATGGTAACAC
+TTGTGGGGCATTCCTTTTTGAACAGTACCCGTTCCCTTGATGTCTACAATTTCACCTTTC
+TTACAGATTCGCATATACATGGCCAAAGGAACAACTCCATGTTTTCTAAAAGGCCTAGAG
+AACATATATCAGGTGCCTCTCCTCTTTCCCTTTGTGTTCGTCATTTTGGCAAATTACTGA
+AAGATGGTGGTTCTGGCCAAAAGGAGGAATGACTTTTTAATAGCTGTGTTTGTATCTGAG
+CCTTCCCTCTGCCTTTCATTTTTTTTGTTTTGTTTTGTTTTGTTTTTGTTTGAGATGAAG
+TTTCACTTTTGTTGCCCAGGCTGGAGTGCAATGGTGTGATTTCGGCTCATTACAATGTCC
+GCCTCAGCCTCCTGGGTAGCTGGGATTACAGGCACCCGCCACCACGCCCAGCTAATTTTT
+GTATTTTTAGTAGAGACAGGGTTTCACCATGTTGGCCGGGCTGGTCTCAAACTCCTGACC
+TCAGGTGATCTGTCCACCTCGGCCTCTCAAAGTGCTGGGATTGTAGGCGTGAGCCACATC
+ACCTGGCCACTTTTTTAACTCTTTCCAATGGTTAATTCCGTTTGATATGGTTCCTTGGAA
+CTTGCACATTACCCTTTATCAATTATCACCCTGTATTGGGGGTGGGGAGGATGATACCTC
+TCTTCATAGTTAGATCCTACTTACTTTCAACAGAGTTCTTAACAATCCTAGAAACTCACA
+GGTCCAGAAAAGACAAGCATAAAGGAAACTATAAATAATGCATTTGAAGACTAACTCAGG
+AAATCAATGATTATTTCCCCCCAGGCTACCCAGTGTCTTAAAAAAACAGTTTAATTAATA
+CAATCTTTTGTTTCAATTTTCTACCTATATTTATGGCTTTTAGCTTTTCTAATAAAAGCT
+CAAAATGAATTACAGTCATCAGTGACTTTTTAATGAATAGAAGACTTTTGCAATTTTTAA
+CTATTTGTTTTTACTTATTAAATATTTCCGCCTTGGCCAGGCATGGTGGCTCACGCCTAT
+AATCCCAGCACTGTGAGATGCCAAGGCAGGAGGATCACTTGAGTTTAAGAGTTCTAGACC
+AGGCTGGGTATGGTGGCTCATGCCTATAATCCCAGCACTTTGTGAGGCCAAGGTTGGCGG
+ATCACCTGAGGTCAGGAGTTTAAGACCAGCCTGGCCAACATGGTAAAACCCCATCTCTAC
+AAAAAATACAAAAATTAGCCAAGGGGTGGTGGTGGGCACCTATAATCCCATCTTCTTGGG
+AGGCTAAGGCAGGAGAATCGCTTGAACCTGGAGGCAGAGGTTGCAGTGAGCCGAGATCAT
+GCCACTGTATTCCAGCCTGGGTAACAGAGCAAGACTCTGTCTCAAAAAAAAAAAAAAGTT
+TGAAACCAGCCTGGTCAACACAGCAAGACACCCATCTCGTTGAAAAATAACGGTCGGGCG
+CAGTGGCTCACGCCTGTAATCCCATCACTTTGGGAGGCCGAGGCAGGCAGATCACCTGAG
+GTCGGGAGTTCGAGACCAGCGTGACCAACATGGAGAAACCCCATCTCTACTAAAAATACA
+AAATTAGTTGGGCGAGGTGGTGCATACCTGTAATCCCAACTACTTGGGAGGCTGAGGCAG
+GAGAACAGCTTGAACCTGGGAGGCAGAGAGGTTGTGGTGAGCCAAGATCATGCCATTGCA
+CTGCAGCCTGGGCAACAAGAGCAAACTCCATCTCAAAAAAAATAAATAAATAAAAATAAA
+TAAATAAGTACTTCTGCCTTTAAGCCACTTCCTAGAAGGCAGTGGCACAAAGTGATACAT
+TTGGAGGAGTAAATATATTACAAAATGAATTAGGCTGGGCGCAGTGGCTCATGTCTGTAA
+TCCCCGCACTTTGGGAGGCCAAGGCGGGTGGATCACTTGAGGTCAGGAGTTCGAGACTAG
+CCTGATCAACAGGGTAAAATCCCATCTCTACTAAAAATACCAAAAAAACTAGCTGGGCGT
+GGTGGCAGGCACCTGTAATGTCAGCTACTAGGAAGGCTGAGGCAGGAGAATCGCTTGAAC
+CCAGGAGGTGGAGGTTGCAGTGAGCCAAGATTGCACCATTGCACTTCAGCTTGGGCAACA
+GAGTGAGACTCCGTCTCAAAAAAAAAAAAAGAACTAACATGCCAGAACTTTGCCTTCAGT
+ATGTTTTGTGATTTTTCCCTTCTTGTGCCATTTCATCATTAGTTCCATGTATTATTTAAG
+ATTTCTTATCAACCAGCACCTTGGGATTTTTTTGTGTATGTGTTGGTTTAGGGGGTTTAT
+TTGTTTTTTTCTTTTTTTTCGGTAATTGAAAATGTGAAGCAAAATGTCACCTGTTTTTTC
+TTTCATGTCTGACACTCATGTCTTGTTTACCCCCGACATGCAGAAGCTGAAATCCCCATT
+TCATACAGTCTTCAATGTGGAGGCAGTAGGGATGGAGAAAATAATGTACTTTGTGCTCTC
+CGGTACTCTTTCTTTCCTATTGTCTGAGGGGATTTGGGCATAATTTATTTTGCTGCAGAG
+ATAAAAATTTGTTATATATATTTTTTATCATTCAGGGCCAAGGAATATAGATTTTTTTTT
+TCAGCCTTGTCTCAGCTGGGTGTCTTTATTTACTCTGTCTTAAAGTGTTCCTTTTATTAT
+CATTATTATTTTTTAATCATTGAATTCCATTTGGTGCTAGCATCTGTCTGTTGCATTGCT
+TGTGTTTATAAAATTCTGCCTGATATACTTGTTTAAAAACCAATTTGTGTATCATAGATT
+GATGCTTTTGAAAAAAATCAGTATTCTAACCTGAATTATCACTATCAGAACAAAGCAGTA
+AAGTAGATTTGTTTTCTCATTCCATTTAAAGCAGTATTAACTTCACAGAAAAGTAGTGAA
+TACCCTATAAGCCAGAATCCAGAAGGCCTTTCTGCTGACAAGTTTGAGGTGTCTGCAGAT
+AGTTCTACCAGTAAAAATAAAGAACCAGGAGTGGAAAGGTAAGAAACATCAATGTAAAGA
+TGCTGTGGTATCTGACATCTTTATTTATATTGAACTCTGATTGTTAATTTTTTTCACCAT
+ACTTTCTCCAGTTTTTTGCATACAGGCATTTATACACTTTTATTGCTCTAGGATACTTCT
+TTTGTTTAATCCTATATAGGTTTTTTGAACCTATAACATAAGCTACAACATGAGAAATGT
+GCGGTTAGATAGATATGTCCCTTCTGAAGGTCAGAAAAAAATATAATGGAGGTAAAACCT
+GAACAAGCTTGGAAACTGATGGTAGACTTCTTCAAGGCAGCCCTTGCCCTAATTAAAATT
+CTTGTCTTTCTAGAAAAAGTCTAGCTGTTGATTTACCACAGAAAATAATAATAATAATTA
+CTATTATTATTATTTTTTGAGACAGGGTCGCCCTGTGTCACCTAGATTGCAGTGGTGCAG
+TCATGGCTCACTGCATCCTCCGTTTTTCAGGCTCAAGCAATCCTCCCACCTTAGCCTCCT
+GAGTAGCTGGGTCCACAAGCATGCGCCACCCACACCCACTAAGTTTTTGTATTTTTGGTA
+GAGATGGAGTTTTACCTTGTTGCCCAGGCTGGTCTCAAATTCCTGGACTCAAGTAGTCCG
+CCCGCCTTGCCCTCCCAAAGCCAGAAAACATTTAGAATATCTTTCAGAGATGTGTATTTA
+CACCACTATTAACACAGGGCTGTATAGCAGTCCAGTACTGGACTATGTAGTCCAGTACTA
+TTCTTTTCCTTACTGGAGGGCCAGGCGTGGTGGCAGGTGCCTGTAATCCCAGCTACTCAG
+GAGGCTGAGGCAGGAGAATTGCTTGAACCTGGGAGGCAGAGGTTGCAGTGAGCTGGGACC
+GTGCCATTGCACTCCAGCCTGGGCGACAGAGCAAGACTCCGTCTCAAAACAAAAAAAAAA
+AGAGAGAGAGAGCAGTAATTCAGGTCTCACCCATCTTCAATCCAGGGGGCCTAGCCTTAG
+TATTTGACCCATAGTAAGCACCCAATAATTGTTTAAATTAATTAACCTCTGAGGCCCTTT
+AAATCTGTTGATAAGTATCTTATTTTGCAAAGTCCTAAGCACTTGGAAGAGCAGAGGAAC
+TATTTACTGGGTGTGTATGCTTTTCTAACAATATTTTATAGCTGGCTTTTGTTTTTAGAA
+TGAATTTGAACATTGAAAAGGCAGGCAATAGGGATGATTCTGTGAATTCTGCTAAAACTG
+AGTAGAAAGAATGAGTGTAGAGATGTCGACATTGATCAACTTTCTATCTTCATAAGAGAT
+CTGATTCTAACATATCCATTTAGACTCAAGTAGAATATTGTGTATAGAGTGAGTGGCAGT
+GAGTAATTTGGTAAAAATTTGCTGACCTGCTTTTATTCTTTCCTCCTTTCTTTCTTCCTT
+TCCTTCCTTCCTTCCTTCCGTCCTTTCCTTTCCTTTCCCTCCCTTCCTTCCTTCTTTCCT
+TCTTTCTTTCCTTTCTTTCCTTTCTTCCTTTCTTTCCTTCCTCCCTTCCTTTTCTTTTCT
+TTCTTTCCTTTCCTTTTCTTTCCTTTCTTTCCTTTCCTTTCTTTCTTGACAGAGTCTTGC
+TCTGTCACTCAGGCTGGAGTGCAGTGGCGTGATCTCGGCTCACTGCAACCTCTGTCTCCC
+AGGTTCAAGCAATTTTCCTGCCTCAGCCTCCCGAGTAGCTGAGATTACAGGCGCCAGCCA
+CCACACCCAGCTACTGACCTGCTTTTAAACAGCTGGGAGATATGGTGCCTCAGACCAACC
+CAACCCCATGTTATATGTCAACCCTGACATATTGGCAGGCAACATGAATCCAGACTTCTA
+GGCTGTCTTGCGGGCTCTTTTTTGCCAGTCATTTCTGATCTCTCTGACATGAGCTGTTTC
+ATTTATGCTTTGGCTGCCCAGCAAGTATGATTTGTCCTTTCACAATTGGTGGCGATGGTT
+TTCTCCTTCCATTTATCTTTCTAGGTCATCCCCTTCTAAATGCCCATCATTAGATGATAG
+GTGGTACATGCACAGTTGCTCTGGGAGTCTTCAGAATAGAAACTACCCATCTCAAGAGGA
+GCTCATTAAGGTTGTTGATGTGGAGGAGCAACAGCTGGAAGAGTCTGGGCCACACGATTT
+GACGGAAACATCTTACTTGCCAAGGCAAGATCTAGGTAATATTTCATCTGCTGTATTGGA
+ACAAACACTTTGATTTTACTCTGAATCCTACATAAAGATATTCTGGTTAACCAACTTTTA
+GATGTACTAGTCTATCATGGACACTTTTGTTATACTTAATTAAGCCCACTTTAGAAAAAT
+AGCTCAAGTGTTAATCAAGGTTTACTTGAAAATTATTGAAACTGTTAATCCATCTATATT
+TTAATTAATGGTTTAACTAATGATTTTGAGGATGAGGGAGTCTTGGTGTACTCTAAATGT
+ATTATTTCAGGCCAGGCATAGTGGCTCACGCCTGTAATCCCAGTACTCCAGGAGGCCGAG
+GCAGGTGGATCAGCTGAGGTCAGGAGTTCAAGACCTGTCTGGCCAACATGGTGAAACCCT
+GTCTCTACTAAAAATACAAAAAAATTAACTGGGTGTGCTAGTGCATGCCCGTAATCCTAG
+CTACTCTGGAGGCTGAGGCAGCAGAATCACTTGAACCCGGGAGGCGGAGGTTGCGGTGAG
+CCAAGATCACACCACTGCACTCCAGTCTGGGTGACAGAGCAAGACTCCATCTCAAAAAAT
+ATATATATATATATATACACACATATATTTTATTTCAACTGTTAGACAAGAGTCCAAAGG
+CCAAAGAATAAAGTTTTAGGCCAGTCCTTTATTAGAAAATGAGTCAAATCCCAAAGCAAG
+TTTTTTTTATGAGTTAATGAATATAAATGACTACATATTTTATGCCTTAAAAATCACTTT
+TAATGAATGGTGTTTTATGGCTTGTAAATCAGAGTTTTAATCAGTAAAGAAAGTTTTTAA
+TCCTCAAAAACACGTTATCATAAAAGACACTGTTTGGCATCAAATGTGGTATTTGGCCAT
+GTTCATTAGGGTCATTTTAGGAATCTCATACATTCTACTTAGCTATGCTTAATTCCTGAT
+ACCATGGCATTTTCTGAAATGTTTCAAGGATGACATCTCTGCTGTTTTTAATTTGGTAAT
+GATATCTGCTGATTTATTAAGTGAAAAAAGTAATGGTGTCATTACCTTGGATGAAGAAAC
+AAAAATAAAGCATTTGCCACATTTTTCAACTTTTTTTTCCTTTCTTACAAAATTGCTATA
+AGCTCATTGCCCCCAAATTGGACAATATAGGGAATAAAAAAGATAATTTGGGGTGGGGTT
+AGACACGGGTCTTGTTATGTTGCCGAGGCTGGTCTCTAACTCCTGGCCTCATGCAATCTT
+CCTACCTTGGCCTCCCAAAGTGCTGGGATTATAGGTGTGAGCCACTTCACCAAGCTGAGA
+TGCCACCTCTTAAAAGATAAAATAAGGACAGATTACAGCCACTGCTCATGCCTGTAATCT
+CAGTACTTTGGGAGGCCAAGGTGGGAGAATTGCTCGAGGCCAAGAGTTCAAGACCAGCCT
+GGGCAATGTAGCGAGACCTGATCTCTATAAAAAGTAAAAAAAAAAAAAAACTAGCTGGGG
+CCAGGCGTGGTGGGTGGCTTACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCA
+GATCACCTGAGGGCAGGAGTTCAGGACCAACCTGACCAATATGGAGAAACCCTGTCTCTA
+CTAAAAATACAAAATTAGCCAGGCTTGGTGGCTTATGCCTGTAGTCCCAGCTACTCGGGA
+GGCTGAGGCAGGAGAATCGCTTGAACCTGGGAGGCAGAGGTTTCAGTGAGCTGAGATCGC
+GCCATTGCACTCTAGCCTGGGCAACAAGAATGAAACTCCATCTCAAAAAAAAAAAAAATC
+AGCTGGAAGGTGGCAAACACCTGTGGTCCCAGCTACTCAGGAGGCTGAGACAGGAAGATC
+ACTTGAGTCCAGGAGGTCAAGGCTGCAGGTGAGCCATGTTTGTGCCACTGCACTGCAGCC
+TGGATGACAGACCGAGACCCTTCTCAAAAAAAAAAATATTACCCGTACTCTTTTTTGAGA
+CGGAGTTTCACTCTTGTTGCCCAGGCTGGAGTGCAATGGCGCAATCTCGGCTCAGCGCAA
+CCTCCGCCTCCTGGGTTCGAGCGATTCTCCTGCTTCAGCCTCCCCAGTAGCTGGGATTAC
+AGGCATGCACCACCACGCCCGGCTAATTTTTTGTATTTTTAGTAGAGACAGGGTTTCTCC
+ATGTTGGTCAGACTGGTCTCGACCTCTTGACCTCAGGTGATCCGCCCACCTTGGCCTCCC
+AAAGTGCTGGGATTACAGGCCTGAGCCACCGCACCCGGCCTGTACTCTTATTCTTTAATA
+ATAAAATATTTCTGTGTTTCTTTAGTCATTTTACATAAACTTTTATTTATTTATTTATTT
+TTATTTATTTATTTTTTTGAGACGGAGTCTCGCTCTGTTGCCCAGGCTGGAATGCAATGG
+CTCAATCTCAGCTCACTGCAAGCTCTGCCTCCCGGGTACACGCCATTCCCCTGCCTCAGC
+CTCCCTAGTAGCCGGGACTACAGGCGCCCGCCACCACGCCCAGCTAATTTTTTTTTTTGT
+ATTTTCAGTAGAGACAGGGTTTCACTGTGTTAGCCAGGATGGTCTTGATCTCCTGACCTC
+GTGATCCACCCGTCTCGGCCTCCCAAAGTGCTGGGATTACAGGTGTGAGCCACCGTGCTC
+GGCCCATAAACTTTTATTTTTAAAATAATGTCATGATAAATAATATTGCTTAGGTGTCTT
+TAATATATTAGTAACATTTCTGTTTTATTGTACATCAACATTTATATTCAAATTAATGGG
+TGAAGAGTACTCCATTGGACTAGGTATATCGTAATTTAATCTCCTATTATTGGACAACTA
+CATTGTTTCTAAAATTATACTATTCCTATGACTAAACCTTTGCATATATCTTTTATCTCC
+CTAGGATATATTTCTAAAACTAGCATTGTTGACTGAAAGTGTAAATACGTGTTAAGGTGT
+TTGCTACATAATGCCATATTTCCTTTTTAGGAAACTAAGCTACTTTGGATTTCCACCAAC
+ACTGTATTCATGTACCCATTTTTCTCTTAACCTAACTTTATTGGTCTTTTTAATTCTTAA
+CAGAGACCAGAACTTTGTAATTCAACATTCATCGTTGTGTAAATTAAACTTCTCCCATTC
+CTTTCAGAGGGAACCCCTTACCTGGAATCTGGAATCAGCCTCTTCTCTGATGACCCTGAA
+TCTGATCCTTCTGAAGACAGAGCCCCAGAGTCAGCTCGTGTTGGCAACATACCATCTTCA
+ACCTCTGCATTGAAAGTTCCCCAATTGAAAGTTGCAGAATCTGCCCAGAGTCCAGCTGCT
+GCTCATACTACTGATACTGCTGGGTATAATGCAATGGAAGAAAGTGTGAGCAGGGAGAAG
+CCAGAATTGACAGCTTCAACAGAAAGGGTCAACAAAAGAATGTCCATGGTGGTGTCTGGC
+CTGACCCCAGAAGAATTTGTGAGTGTATCCATATGTATCTCCCTAATGACTAAGACTTAA
+CAACATTCTGGAAAGAGTTTTATGTAGGTATTGTCAATTAATAACCTAGAGGAAGAAATC
+TAGAAAACAATCACAGTTCTGTGTAATTTAATTTCGATTACTAATTTCTGAAAATTTAGA
+TCTAGATAAAGCTATAGTGTGGATTATTTTATGTATATTTACTTGAGAAAATAATTATTA
+AATATTAGTGGAAAAGCTATACTTTGGGTATGATATAGGACTTTCGAATTGGAATTTTCC
+TTTCTATCTGTAAAAGCAAGTAGGTATAGTTTTATTCCCCAGAAGGCATCTTTTTCTCCC
+CCTTGTCTCACATGGGTGAATTTACCAGCATATTTAACTAAATTCAGACTGGTTCCAAAT
+GTACTGCCAGATAGTAGCATTTCTCTAGTGTTTGTTTTCATCCTGGCTTGTAAGAATGCC
+CTGCCACTTCTGCCCTGCAATATCCCTTGCTATTAGGATTTTGGCATCACCTTGGGTCCT
+TAATGCCAGAAATGGGAATTGCTTCATACTGTGGAAAAATACCCATTAAAATATTAAGAC
+CAGTAAAACCTCGTTTCTGCTTGGGCTATTTGTGGATTTCAGACATCCTGAGAAGTTTAC
+CACCCCTGTAATTAATTGTCATTGTCATCACTTCATAATAAAAATAATTGCATGGCCGGG
+CATGGTGGCTCAAGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGTCAGATCACCTA
+AGGTCAGGAGATCAAGACCAGCCTGACCAACATGAAGAAACCCCATCTTTACTAAAAATA
+CACAATTAGCCGGGCGTGGTGGCGCATGCCTATAATCCCAGCTACTCAGGAGGCTGAGGC
+AGGAGAATTGCTTGAACCCGGGAGGCGGAGGTTGCGGTGAGCCGAGATTGCACCATTGCA
+CTCCAGCCTGGGCAACAAGAGCGAAACTCTGTCTCAATAATAAGAAGAAGAATTGCGTGA
+ATATTTCTTTAAAACTATGATGAGATAACATACCAGATTATCAAATGGATTCAGTAGTGG
+GTGTGCCATTTATTGCACACTGAGAGATGACCAAGTCATTCTGAAATATCTTTATTAATA
+TATCCTTCCTAGGATTTTTCATCCTAACTTCTCCATAGGTAGTTACTTAGCATAACATCT
+CTGTGGCCAGATGTATCCCACTACTAAAAGGGCAAAGTAAGCTGTGGCTGCCCTGGTAGA
+TACAATGAGTAAGTGCACAGTGATGGCTATAAATGTTTTCATCTCATAATCCCATGTCCA
+GACCAGCAATTTGCTCTGAAAGCTCTTACCTGTGTCTGTTTCAATGGCTCTTGATCACTT
+GCCTGCACGTCCAGAATTCCTTATTTATTCATTGAAAATTAGCGTTCTTTATCCCTTTGT
+TTTGCAAGTTCAGCTTTTTAGAGATGGCTAAAATGGTCTAATCTTTCTTGGCAAAGGCAA
+TTCTGAGCTGCAGATTAGACTACAAGTGGCTTGGGTACATGTTGTCTTTAAACAAGCGAA
+GAGGAAAACTTTGAGCTCTATTCAGACTTGGTGAAGTGTGGTAAATTTATGATGAAAGCT
+ACTGACTGTATTACACATGATTAATTCTGAAGCCCATATTAAGATGATCTTTTCAGCAGT
+TCAGCATTGCTCTTCTAACTGAACAGTTTCAAGGCTGGGATTTCAGCAATTAATCAGTTC
+AGAATTGCTAATGATCCTGGCGGAGGGTGGTAGCAAAAGGGGGAGGATGTCATTAGCTTC
+TCTAGCCTGCCTTTTTTCAGTGCCCTGTGGCAGTATGGAGTGAGGCAACATGAAAGAAAG
+ATGGCCTGACCTTCATGGCAGTATTGTGCAACACGTAAATACTGGTGTGAGTGGCTGTGG
+CTATGGCTAGTAAATGATGGCCCTTGGTAAACAAAGTTATTTATCAGACAATACCTACCA
+GCTAGGTCAACTGTGCCCATAATTGATCTGGTTAATTTCTTTTGCTGCCTATTGATTTTT
+ATTTGGTTGATAGATAATAGCTAGAGGACTCTAAATTTCTTTGGGGAAGAACATGAACCC
+CTTCTAAGCCTTCTTACGAGAGAATTGATCGCTTTTGCACTGACCTTTAGTAACATCCTG
+ATTTCAGTGTTTTGTAACTATCAGAGGGTTGAGTCTTGGTTTTAAGCCATGTATATCTGT
+AGCATAACTTTCTGTGTAGGCTAGTTACCTCTCAGCTTATAAAGTGTAGGCTGATAAATT
+TATAGTACAGTAGAGTGTCACTATGCAAAGAAACGATCTTAGGGAATCGAATGATATCTG
+CTATTAAAGCAAAATTAATATATATTTTTTCTTTTTACTTTTTTTTTTTTTTAAAGACAT
+GAAATCTCACTGTATTGCCCAGGCTGGTCTTGGTCTCAGACTCTTGAGCTCAAGCAGTCC
+TCCCACCTCAGCTTCCCAAAGTGCTGGGATTATAGGCATGAGCTGCCGTGTCTGGCCCAG
+TATATATTTTTTAAGTTTTAAGTTTTGTGGTACGTAGTAGGTTTATAATATTATTTTGAA
+TCCTTAGTTGTAATTTTATGTCTGCTGATGTGTACATAATTTTTATTAAACTATTTATTT
+GAGACTTCAGGTATCTTTTTTTTTTTTTTGAGACGGAGTCTCGCACTCTCGCCCAGGCTA
+GAGTGCAGTGGCGCCATCTCGGCTTACTGCAAGCTCTGCTTCCTGGGTTCACGCCATTCT
+CCTGCCTCAGCCTCCTGAGTAGCTGAGACTACAGGTGCCCGCCACCACGCCTGGCTAATT
+TTTTGTATTTTTAGTAGAGACAGGGTTTCACCGTGTTAGCCAGGATGGTCTCGATCTCCT
+GACCTTGTGATCTGCCCGCCTCAGCCTCCCAAAGTGCTGAGATTACAGGCGTGAGCCACC
+GCGCCCAGCCGAGACTTCAGGTGTCTTAGAATTTTTTAAATGTACCCTTTCTGAGAAAAA
+CAGAGACTTAAAGCTAGGATAACTGGTATTCTATTTTTTTTTTTTTTTTTTTTTTACCTC
+CAGCCTGGGTGACAGAGCAAGACTCTGTCTAAAAAAAAAAAAAAAAAAATTCACTTTAAA
+TAGTTCCAGGACACGTGTAGAACGTGCAGGATTGCTACATAGGTAAACATATGCCATGGT
+GGAATAACTAGTATTCTGAGCTGTGTGCTAGAGGTAACTCATGATAATGGAATATTTGAT
+TTAATTTCAGATGCTCGTGTACAAGTTTGCCAGAAAACACCACATCACTTTAACTAATCT
+AATTACTGAAGAGACTACTCATGTTGTTATGAAAACAGGTATACCAAGAACCTTTACAGA
+ATACCTTGCATCTGCTGCATAAAACCACATGAGGCGAGGCACGGTGGCGCATGCCTGTAA
+TCGCAGCACTTTGGGAGGCCGAGGCGGGCAGATCACGAGATTAGGAGATCGAGACCATCC
+TGGCCAGCATGGTGAAACCCCGTCTCTACTAAAAAATAAAAAAATTAGCTGGGTGTGGTC
+GCGTGCGCCTGTAGTCCCAGCTACTCGTGAGGCTGAGGCAGGAGAATCACTTGAACCGGG
+GAGATGGAGGTTGCAGTGAGCCGAGATCATGCCACTGCATTCCAGCCTGGCGACAGAGCA
+AGGCTCCGTCTCAAAAAAAAAAAAAAAAAACGTGAAAAAATAAGAATATTTGTTGAGCAT
+AGCATGGATGATAGTCTTCTAATAGTCAATCAATTACTTTATGAAAGACAAATAATAGTT
+TTGCTGCTTCCTTACCTCCTTTTGTTTTGGGTTAAGATTTGGAGTGTGGGCCAGGCACGG
+TGGCTCACACCTGTAATCTCAGCACTTTGGGAGGCCGAGGCGGGTGGATCACCTGAGGTC
+AGGAGTTCGAGACCAGCCTGGCCAACGTGTTGAAACCCCGTCTCTACTAAAAATATAAAA
+ATTAGGTGGGCGTGGTGGCAGGCACCTGTAATCCCAGCTACTCAGGAGGCTGAGGCAGCA
+GAATCGCTTGAACCCAGGAGGTGGAGGTTGCAGTGACCCAAGATCGCACCATTGCACTCC
+AGCCTGGGGACAAGAGCGAGATTCTTGTCTCAAAAAAAAAAAAAAAAAAAAAAGGTTTGG
+AGGGTGGTGAGCTGAGATAGTCAACTATTAACTCCTATCTACCTGCTGGGACTACACTGG
+TGAGGTGGAGCCTAAGTCCTAAAACAACAAGTGAGGCAGCTGGACGCGGTGGCTCGCATC
+AGTAATCCCAGCACTTTGGGAGCCTGAGGCGGGCAGATCACAAGGTCAGGAGTTCGAGAC
+CAGCCTGGCCAATATGGTAAAACCCAGTCTCTACTAAAAATACATAAATTGGCTGGGCGT
+GGTGGTGTGCACCTGTAATCCCAGCTACTTGGGAGGCTGACACAGAAGAATTGCTTGAAC
+TCTGGAGGCTGAGGTTGCAGTCAGCTGAGATCCTGCCACTGCACTCCAGCCTGGCGACAG
+AGTGAGACTCTGTCTCAACAACAACAAAAGAAAGAACAAGTGAGGCAAAACCTGGAGACC
+CCAGCTTCATGTAACACCTAGTTTGAGTATTGTTGAGAGTTTTTCAGGAAAAAAGTCTGA
+TAACAGCTCCGAGATAGTCTTAACATATGAAAAAGCAAAAAAGGGAGGAGACAGATCATT
+TGTCCTATACCTTTCTCTTTTAAGGTTTTAATTATAACTTGTGTAATACAGGAGACCTCT
+GGGTGTTTTTAGTTGACTATAAACTAAATCTGAGTACACATTTCAGGGCTGCTAAAAATG
+CTTATTTGAAACTGGGCCGTATTAACACAAGCAGAGGCTCTGGAGCAAGTGAAGTACAGA
+TCCAGAGCCCCACTGTATTCTCCAATGGAGTGATTGCCTGAAAGATGATGTCAGTTTTAA
+GCACCGTGCTTGGTTTTTAACATGGTCACTGACAAATTGGAGAGTGTTTATCCAGAGGTA
+GATGGTAAAGATACATAAAAGTAACTTGAAATACTGTCTTTTGAAGAAGAAATGAGAAGA
+TTTAAGGAAATAAGACACTGTCTTCAAGTATCTGAAGAACCGTTACCCGGAAGAGAACTG
+TTATCTGGAACAGGATTAAGACTCACTCATGGGGCTCCAGAAAGCAGACGAGTGCATGGA
+GGACGCAGAAGATGCAGATTGTGTGGCTCAACTCTAAAATCTTTCTAACAAAATTAGTTC
+TCTGGATGTGTTCCAGTTCACTTGATGATGATTCTTTTGTTTTTGTTTTTGTTTTTGAGG
+TGTAGTTTTTCACTCTTGTTGCCCAGGCTGCTGGAGTGCAATGGCACGATCTTGGCTTGC
+TGCAACCTCCCCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGG
+ATTACAGGAATGCACCACCATACCTAATTTTGTATTTTTAGTAGAGACAGGGTTTTTCCA
+TGTCAGTCAGGCTGGTCTTGGACTCCCGACCTCAGGTGATCCACCTACCTCGGCCTCCCA
+AAGTGCTGGGATTACAGGTGTGAGCCATCGCGCCTAGCCTATGATGATTCTTTTCACAGA
+GATACAGGCACTTAAGGAGAGGATCTAAACCCCTTGGACACATTGCCGTTGAACTTCTAA
+GATCTTAGGTTTCCACTTACTCATGAAAATTATACCACAGGGTCAGAGGGTAGTGTTCAT
+TGGAGCCAGGTGCCAGAACAAGTTATTACAAACTACTATTTTAGAGAAAAATGTCATTAA
+AGTTTAAGATACCTTAAGCTATAGGTTTGCATCAAAGTTAATGAAAGGTAAAAAGATGCC
+AAGCGTGGTGGCTCAGGCCTGTAATCCCAGCGCTTTGGGGGGCCAAGGCGGGCAGATCAC
+GAGGTCAGGAGATCGAGACCATCCTGGCTAACACGGTGAAACCCCATCTCTAGTAAAAAT
+ACAAAAAATTAGCCGGGCATGGTGGCGGGCATCTGTAGTCCCAGCTACTCAGGAGGCTGA
+GGCAGGAGAATGGCATGAACCCAGGAGGCAGAGCTTGCCGTGAGCTGAGATCCAGCCACT
+GCACTCCAGCCTGGCTGACAGAGCAAGACTGCATCTCAAAAAAAAAAAAAAAAAAAAATG
+CAAATCAAATCTAAAGTAGTTCAGTCTTTAAACTCAAAGCCAATACATTTGCTTTGAACT
+ACAAATGAACTGAAGTTTTTAAGTGTAATAAATGTTACTAAATCGGCTTTTGTAGCAGTT
+AAACAAAAAACTTCAAAAATTGTAAGGATTCTGTGAGGGAGCATGGCTGCTGCTGCTGCT
+GCTGCTTGCAGATAGCCTGCTGTGTTTAGGATTTAGTTAAATACATTTCTCCTGTTTAAA
+ACTAAATGGTCTTTCCTTAGTTTGCTTAGTTCTTCAGAAGGGCCTTTGAAACACTGGGAA
+ATAAACAAGTGATTCTTTAGCTACTGCTTTCTGAAATACTTATATAAAAGCTCTGCACTG
+TATTCTCCCATCCCTCTCAGGGGAATATTAGAGGGTTAGGACTCCCCAGGTAGACATTCT
+AGGGGTGAAAATTTGTCATTACATTGACATTTCAGATTTAGGTTTTCAACAATACTGTTT
+TCTTCTTTCACATATTGCCATCTAGTAATATAGATGTTCTCCGTCCACATTAATCAAAAC
+TATTGACATGGATAATTCCTAATTCCTTGAACACTATAATGGAGATCTATAGCTAGCCTT
+GGCGTCTAGAAGATGGGTGTTGAGAAGAGGGAGTGGACAGATATTTCCTCTGGTCTTAAC
+TTCATATCAGCCTCCCCTAGACTTCCAAATATCCATACCTGCTGGTTATAATTAGTGGTG
+TTTTCAGCCTCTGATTCTGTCACCAGGGGTTTTAGAATCATAAATCCAGATTGATCTTGG
+GAGTGTAAAAAACTGAGGCTCTTTAGCTTCTTAGGACAGCACTTCCTGATTTTGTTTTCA
+ACTTCTAATCCTTTGAGTGTTTTTCATTCTGCAGATGCTGAGTTTGTGTGTGAACGGACA
+CTGAAATATTTTCTAGGAATTGCGGGAGGAAAATGGGTAGTTAGCTATTTCTGTAAGTAT
+AATACTATTTCTCCCCTCCTCCCTTTAACACCTCAGAATTGCATTTTTACACCTAACGTT
+TAACACCTAAGGTTTTTGCTGATGCTGAGTCTGAGTTACCAAAAGGTCTTTAATTGTAAT
+ACTAAACTACTTTTATCTTTAATATCACTTTGTTCAGATAAGCTGGTGATGCTGGGAAAA
+TGGGTCTCTTTTATAACTAATAGGACCTAATCTGCTCCTAGCAATGTTAGCATATGAGCT
+AGGGATTTATTTAATAGTCGGCAGGAATCCATGTGCAGCAGGCAAACTTATAATGTTTAA
+ATTAAACATCAACTCTGTCTCCAGAAGGAAACTGCTGCTACAAGCCTTATTAAAGGGCTG
+TGGCTTTAGAGGGAAGGACCTCTCCTCTGTCATTCTTCCTGTGCTCTTTTGTGAATCGCT
+GACCTCTCTATCTCCGTGAAAAGAGCACGTTCTTCTGCTGTATGTAACCTGTCTTTTCTA
+TGATCTCTTTAGGGGTGACCCAGTCTATTAAAGAAAGAAAAATGCTGAATGAGGTAAGTA
+CTTGATGTTACAAACTAACCAGAGATATTCATTCAGTCATATAGTTAAAAATGTATTTGC
+TTCCTTCCATCAATGCACCACTTTCCTTAACAATGCACAAATTTTCCATGATAATGAGGA
+TCATCAAGAATTATGCAGGCCTGCACTGTGGCTCATACCTATAATCCCAGCGCTTTGGGA
+GGCTGAGGCGCTTGGATCACCTGATGTCGGGAGTTCAAGACCAGCCTGACCAACATGGAG
+AAACCCCGTTTCTACTAAAAATACAAAATTAGCCGGGCTTGGTGGCACTTGCCTGTAATT
+CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCACTTGAACCTGGGAGGCGGGGGTTGCAG
+TGAGCTGAGATCGCATCATTGCACTCTAACCTGGGCAACAAGAGCAAAACTCCATCAAAA
+GAAAAAAAAAATCGGGTGCAGTGGCTCATGCCTGTAATCCTAACACTGTGGGAGGCCAAG
+ACAGGCAGATTGCCTGAGCTCAGGAGTTCGAGATCAGCCTGGGCAACATGGTGAAACCCT
+GTCTCTACTAAAATACAAAAAATTACTCAGCGTGGTGGCATGCGCCTTTAGTTCCAGCTA
+CTCAGGAGGCTGAGGCAGGAGAATCTCTTGAACCCGGGAGGTGGAGGTTGCAATGAGCCA
+AGATCGTGCCACTGCACTCCAACCTGGCAACAGAGCGAGACTCCGTCTTAAAAAAAAAAA
+AAATTTTGCAGCGCAAACCAGGATATCCTCTGTTCTCATTTGTTCTAGATTTCAAAAGAA
+ACAGTCCTTTCTTTGGGGAAAAGAGAAAGGAAAAGGAGTTTTATAAAAGGAAAGAAAAGA
+TTCATAAGAACAAGAAGTGGGCCCACTTGCATATACCTTTGTAGAAAACTGTTCACTGTT
+GTTGAAGAAAAGCTCTTCATATTAATATGCAGTCCAGATGCAGTGGCTCACACTTATAAT
+CTCAGCCCTTTGGGAGGCTGAGACAGGAAGATTACTTGAGGCCAGGAGTTTGAAACCAGC
+CTGGGCAACATAGTGAGACTCTGTCTCCACAAAATTTTTTTTTAATTAGCCGGGCATGGC
+AGTGTGCTTCTGTAGTCTTAGCTACTGAGGAAGCTAAGCCAGAAGAATCACTTGAGCCCA
+GGAGTTCAAGGCTGCAGTGAGCTATGATCATACCATTGCACTCTTGCACTTGCACAGAGC
+AAGACCCTGTCTCTTAAAAAAAAAAAAGTGTGTGTGTGCATATGCATATATACATATATA
+TACATGCAAATGTATCTGTTTATAATTCAGATTGCTTCAAAAAGATGTTGCACTTTATGA
+TACTGAGAACAGTGAGAAGTAAATAAGATAGAGTGTAGGAGGAGGAATAATTTCAGAACA
+GCCATCTGAGAACTTCTGTGACAACAGATCAGGCAAAATGAAATGTGAAAGTAATTTTAT
+AGGCCAGGCGTGGTGGCTCATGCCTATAATCCCAGCACTTTGAGTGGCCAAGGCAGGTGG
+ATCACTTGAGGTCAGGAGTTCGAGACCAGCCTGGTCAACATGGTGAAACCTTGTCTCTAC
+TAAAAACACAAAAAAATTAGTCGAGCGTGGTGGCATGTGCCTGTAATCCTAGCTGCTGGG
+GAGGCTGAGGCAGGAGAATCACTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCTAGATT
+GCACCACTGCACTCCAGCCTGTGAGACAGAATGAGACCCTGTCTTAAAAAAAAAAAAAAA
+GTAATTTTATAAACTATTGTGCACAATTCGATGTATTCATAATTAATTAAATGATTATTT
+TTGTTGGTTTTAACTTTTATTCAGTGGCTATTTATTGGGAGCCTACTGTGTTCTGGGCAC
+TAGGAATGCAACAGTAAATAAGACTAACTAAGTCCCTGGTAGGATTCAGGTTCTGTCGAG
+GGGAGATACACAATAAAGATGAATTTAAGATAACAATAAATGCTATGGAGAAATATACAG
+AACAGTGGAATAGTATTAGCTGTCAAAGGTTGTTGATTACTTTCGTTTAAGGAGGCCAGG
+GAAAGCCTTTCTGAAAAAATTGAGCTGAGACCTAAATAACAAGAAATAATTGTCCTTGAA
+AAATGAAGGGAATGCATCTTATAGGCAGAGGAATAGCAAACATAAAGGTCTTGAGGTAAT
+AATGAGTGTGGTTTTTTGATTTCTGTATTTTGGTTTTTTTGAGATGGTGTCTCCCTCTAT
+CCCCCAGGCTGGAGTGCAGTGGCACAATCTTGGCTCACTGCAAACTCTGTCTCCTGGGTT
+CAAGCAATTCTCCTGCCTTGGCCTCCTGAGTAGCTGGTATTACAGGCACGCGTGCTACCA
+CACCCGACTAGTTTTTATTTTTAGTAGAGATGGGGTTTTACCACGTTGGTCAGGCTGGTC
+TCAAACTCCTGAACTCAAGTGATCCAACCACCTCAACCTCCCAAAGTGCTGGGATCACAG
+GTGTGAGCCACTGTGCCCGGCCAGAGCTTGGTTTATTTTTTAAAAGATAGGCCAATGTTG
+GTCGTGTGTGGTGGCTCGTGCCTATAATCCCAGCACTTTGGGAAGCCAAGGCAGGCAAAT
+CACTTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCATCTCTACTA
+AAAATACAAAAAACTAGCATGGTGTGGTGGTGTGTGCCTGTAATCCCAGTGCCTGTAATC
+CCAGCTACTCCAGAGGCTGAGGCAGGAGAATCACTTGAACCGAAAGGTAGGAGTTACAGT
+GAGCCAAGATCGCATCACTGCACTCCAGCCTGAACGACAGAGCAAGACTCCTGTCTCAAG
+AAATAATAATGATAAAAGGTTCGGGCACAGTGGCTCACACCTGTAATTCCAGCACTCTAG
+GAGGCCGAGGCAGGCAGATCCCCTGAGGTCAGGAGTTTGAGACCAGCCTGGCCAACGTGG
+CAAAACCCCATCTCTACTAAAAAATGCAAAAATTAGCTGGGCACGGCTGGGTGTGGTGGC
+TCATTCCTGTAATCCCAGCACTTTGGGAGGTCAAGGCGGACAGATCACTGAGGTAGAAAC
+CCTGTCTCTACTAAAAATACAAAAATTTGCCCAGCGTGGTGGCGCGTGCCTCTAATCCCA
+GCTACACGGGAGGCTGAGACAAGAGAATCACTTCATCAACCCGGGAGGTGGAGGTTGTGG
+TGAGCTGAGATCGCACCATTGCACTCCAGCCTGGGCAACAAGAGTGAAACTCCATCTCAA
+AAACAAAAAAAAATTAGCTGGGAATGGTGGCATGTGCCTGTAATCACAGCTACTTGGGAG
+GCTGGGGCAGGAGAATCGCTTGAACCCAGGAGGCGGAGATTGCAGTGAGCTGAGATTGCG
+CCACTGCACTCCAGGCTGGGCGAAAGAGCAAGACTCCGTCTCAAAAATAATAATAATAAT
+AATAATAGGCCAGTGTAGCTGGAGTAATTTGCAAATTATGTGTGGAGGCAGAGATTACAC
+AAGGAATGGGAGAAGGTCATAGATGAGGGCCAGATCACATAGTATTTGGTGGTAAGGAAT
+TCAGATTTTATCCTTGTGGTAATTGGTGGTGTGGAGATGGTTAAAAACAAGGTTGGTTTG
+GGATGGGTTTGAAGAGAGGACTTGCTAATGGATTAAATTTGGAGGATAAGGTAAAGAGAA
+ATTGAAGGAGTGACACTTGGGTTTTGGCTTGAACAATAGATCTTGTTAGTAATATTAAAT
+TAGATGAAGAAGGCATGGTAGGGAATATGGGGGAGTGGGAAAGGCAGGAAGCAGGAATGG
+AACCAGGAACTCTGTTTTAGATGTGAGAATTTGTTGTTGTTGTTGTTGTTGTTGTTGTTG
+TTGTTGTTGTTGTTGTGACAGCATCTCGTTCTGTTGCCCAGGCTAGAGTGCATGGAGTGC
+GGTAGCACGATCTCAGCTCACTCCAACCTCCGCCTCCCGGTTCAAGTGATTTTCCTGCCT
+CAGCCTCCCGAGTAGCTGGGATTACAGGCACCTGCCACAATGCCTGGCTAATACTTGTAT
+TTTTAGTAGAGATGGGGTTTTACCATGTTGGCCAGGCTGGTCTTAAACTCCTGACCTCAG
+GTAATCCACCCACCTCGGCCTCCCAAAGTGCTGGGATTGCAGGTGTGAGCCACTGTGCCC
+GGCCAGATGCATGAATTTTGAGATGTATACTAGACTTCTGGATAGAGAAGTTAAGTAGGC
+AGTTGGACACATTGTATGAAGCTCAGGGGTACAAGGAGGACTATGAACATGGGAGTCTTC
+TGACAAATTTATCACTAGACTCCTCATTCAAGTAACTAGGAAATGTCAGATATTCTTCCC
+CTAGTAATAGCCAGTGGTTATACTCTTGCCTTTAGTTTTCTTCACAATACTCTTGGCAAC
+ACATAAGGCCTTCCCTACAATCTGAGTTTCAGTCAGAATTGTTTCTGAGCGTTCTTCCTC
+AAATTTCTCCCCAGTCTCATTATTCTTTATTCTCATGTCCATGACCAGTCATAATAGTAA
+TTATGAAAAACCTCTAACTTTCTTTAGTGCATTGAATGTATATTTTATCATTTTGGTTGT
+GTTAACTGTAAATCTCTCAGTGGAAATCTGAAAAGCCTTTATTTCCTTAGATGATAATAT
+ACAATTGATTTAGGAGATAGGGAATTTTTCAGTTACCTTTATAACAGCACAGTATTAGCA
+GTCTAATCTAAATGCTAAGTGAATGTTTTGAGAGGAGATAGATGTTGAAAATTAAAATAC
+ATTAAGTCCCAGTGAGGTGAAAAGCCGATTGTTAAGTTCTGCACACAAAAGATTTGCTTC
+AGTGAATTGATTTCAACAGCTGAGATCCTAGTCATTTCACCTGGTCTACCAAAAAGAATG
+ATTTTACTTGCTTTTGGTCAAATCTCTGCCCAGCAATTCTTTTTCTTTCTTTCTTTTTTT
+TGTTTTATGTGTGTGTGTGTGTGTGTTTTTTTTTAGCAGAGTCTCACTTTGTCACCCAGG
+CGGGAGTGTGGTGGTATGATCACAGTTCACTGCAGCCTCCAACTCCTGGGCTCAAGTGAT
+CCTCCAGCTTCAGCTTTTCAAGAAATTGGGACTGCAGGCACATGCAACTATGCCTGGCTG
+AGGTTTTATGTATCTTTTTTCTAGAGAAGGGGTCTCACTGTGTTGCCCAGCTGGGTCTCC
+AGCTCCTGGTCTCAAGCTGTCCTCCTGCCTCAGCCTCCCAAAGTGCCAAAGTGCTAGGGT
+TATAGGTGTGAGCCATTGGTGCCCAGCTACTGCCTGCCTGGCAATTCTGAATGCCTTAAA
+TTTTTTTTTTTTTTTTTTTTTTTTTTGAGACAGAGTTTCACTCTGTCACCCAGGCTGGAG
+TGCAGTGGCATGATCGTGGCTCACAGCAACCTCTGCCTCCTGGATTCCAGCAATTCTCAT
+GCCTCAGCTTCCCGAGTAGCTGGGACTACAGGTGCATGCCACCACGCCCAGCTAATTTTT
+GGTTTTTTTGTTTGTTTGTTTGTTTGTTTTGAGACGGAGTCTCGCTCAGTTGCCCAGGCT
+GGAGTGCAGTGGCGTGATCTCCGCTCACTGCAAGCTCCGCCTCCCGGGTTCACGCCATTC
+TCCTGCCTCAGCCTCCCGAGTAGCTGGGACTACAGGCGCCTGCCACTACACCCGGCTAAT
+TTTTTTGTATTTTAAGTAGAGACGGGGTTTCACCGTGTTAGCCAGGATGGTCTCGATCTC
+CTGACCTCGTGATCCGCCTGTCTCGGCCTCCCAAAGTCCTGGGATTACAGGCGTGAGCCA
+CCACACCCGGCCTAATTTTTTTTTTTTTAATTTTATTTTTAATTTTTTGAGATGCGAGAT
+GGAGTCTCGCTCTGTTACCCAGGCTGGAGTGCAGTGGCACCATCTCAGCTCACTGCAACC
+TCCACCTCCTGCATTCAAAAGATTCTCCTGCCTCAGCCTCCCAAGTAGCTGGGATTACAG
+GTGCCTGCCACCACGCCCAACTAATTTTTTGTATTTTTAGTAGAGATGAGGTTTCACCAT
+GTTGGTCAGACTGGTGTCGAACTCCTGACCTCAAGTGATCTGCCTGCCTCAGTCTCCCAA
+AGTGCTAGGATTACAGGGGTGAGCCACTGCGCCTGGCCTGAATGCCTTAAATATGACGTG
+TCTGCTCCACTTCCATTGAAGGAAGCTTCTCTTTCTCTTATCCTGATGGGTTGTGTTTGG
+TTTCTTTCAGCATGATTTTGAAGTCAGAGGAGATGTGGTCAATGGAAGAAACCACCAAGG
+TCCAAAGCGAGCAAGAGAATCCCAGGACAGAAAGGTAAAGCTCCCTCCCTCAAGTTGACA
+AAAATCTCACCCCACCACTCTGTATTCCACTCCCCTTTGCAGAGATGGGCCGCTTCATTT
+TGTAAGACTTATTACATACATACACAGTGCTAGATACTTTCACACAGGTTCTTTTTTCAC
+TCTTCCATCCCAACCACATAAATAAGTATTGTCTCTACTTTATGAATGATAAAACTAAGA
+GATTTAGAGAGGCTGTGTAATTTGGATTCCCGTCTCGGGTTCAGATCTTAGCTGATAAGT
+GGAAGAGCTGGGACTTTAAGCAGATGAGAATCTAAAGACTTTGCTCTTTTCACTTCACTG
+GGGTGTCTTTCTCTCTCTCTCTCTTGCTCTCTCTCTCTCTTTTTTTTTTTCCCAAGACGG
+AGTCTCACTCCATTGCCCAGGCCAGAGTGCAGTGGTGCGATCTCAGCTCACTGAAAACTC
+ATCTTGCCCAGGCTGGTCTTGAACCCCTGACCTTGTGATCCTCCCGCCTTGGCCTCCCCA
+AGTGCTGGGATAGGCGTGAGCCACCGTGCCCAGCCAATAATAGCTAAAATTTATATAATG
+TTCACTGGGCCAGGCACAGCGGCTCGTTCCTGTTATCCCAGCACTTTGGGAAGCTGAGGC
+AGGCAGATCGCTTGAGCCAAGGAGTTCGATACCAGCCTGGGCAACATGGCAAAACCCCAT
+CTCTACCAAAAAAAATATACAAAAATTAGCCAGGCGTGGTGGCATGTACTTGTAGTTCCA
+GCTACTCGGAAGGCTGAGTTGAGAGTATCTCTTGAGCCCAAGAAGAGGGGACTACAGTGA
+ACGGAGATTGCGCCACTGCACTCCAGCCTAGACGACAGACAGAAGATCTCAAAAGAAAAA
+AAAAAAAAAAAGATCACTTTATGCTGGGACTGCTCTAAAGGCCCAACCATGTTTTAACTA
+ATTAACAATTTTATGACAACTCTATGAGCTATGTACTGTAATTATGCCTATATTACAGAT
+GTGAAAATTGAGGCTCAGAGAGGTTGAATAAGTTGCTCAAAGTCACACAGGTAATAAGTG
+ATGGAACTAGAAGTTGAACTCAGGAAGTCTAGCTCCAAGTCTAAATTCTTTGTTAATTTA
+TTTTTCGGGCCAGAGTCTTACTCTGTCACCCAGGCTGGAGTGCAGTGCCACTATCTCTGC
+TCACTGCAACCTTCACCTCCCAAGTTCAAACCTTGTTCAATTCTTGTGCCTTGGCCTCCC
+AAGTGGCTAGGATTACAGGCATGTGCCACAACAACTAGCTAATTTTTTGTCTGATTCTGT
+TGGCCAGTCTGGAGTGCAGTGGCGCAATCTCAGCTCACTGCAGTCTCCAGCTCCCAGGTT
+CAAGTGATTCTCGTGCCTTAGCCTCCCAAATAGCTGGGATTACAGGCACGTGCCACCACA
+CCGAGATAGTTTTTTGTATTTTTAATAGAAACAAGGTTTCAACATGTTGGCCAGGCTGGT
+CTCAAATTCCAGACCTCAGATCATCTGCCCGCCTCAGGCTCCCAAAGTGCTGGGATTACA
+GGCATGAGCCACTGCACCCGGCCTTAATTTTTATATTTTTATTAGAGATGGGGTTTTGCC
+ATGTTGGCCAGGCTGGCCTTGATCTCCTGGCCTCCAGTGATCCACCCGCCTTGGCTTCCC
+AAAGTGCTGGGATTACAAGCATGAGCCACTGCACCCGGCCTCCAATTCTAAACTCTTAAC
+AACAATACTATAGTTTCTTGAAAAGTTGTTGAAGGCTTCACGGAGGGAAAAAAAATGGAG
+CATTCTAACAACTTTGCAGATGAGACCCAAGAAGACTCAATGACTTTCTCCTGATCATAT
+TGTAGCAGATGACTTAGCCAGAACTCTGACTTCCTCACAGGGAGAAAGTCTGCAAGATTT
+CACACTTACCTGTCAGGCCTGAGCTGGCTGCTTTCTCAGCTCCCTAAGTGCTATGTTCCC
+AGTCTGCTTTTCTTCCTTTTTCAAGTGTGCACTACCAGGCATTTCAGAACATCCCAGGCT
+GGTCGCGGTGGCTCACACCTGTGATCCCAGCACTTTGGGAGCCCAAGGCGGGTGGATCAC
+CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCATCTCTACTAAAA
+ATACAAAAGTTAACTGGGCGTGGTGGTAGGCACCTGTAATCCTAGCTCAGGATTACTCGG
+GAGGCTGAGGCTAGAGAATCGGTTGAACCCAGGAGGCGGAGGTTGCAGTGAGCCAAGATT
+GCGCCACTGCACTCTAGCCTGGGGACAAGAGGGAGACTTCATCTCAAAAAAAAAAAAAAA
+ATCCCAGCTGGGCACAGCGGCTCACTTCTGTAATCCCAGCACTTTAGGAGGCCAAGGCAG
+GAGGATCACTTGAGCCCAGGAGTTCAAGACTAGCCTGGGCAACATAGTAAGACCCTGTCT
+CTACAAAAAAATTTAAAAATTAATTGGGTGTCGTAGCACACTCTTGTATTCCCAGCTACT
+CAGGAGGCTGAGGTGAGAAGAATGCTTGAGTCTGGGAGGTCGAGGCTGCAGTGAGCCATG
+ATGGTGCTACTGCACTCCAGCCTGGCCAACATTGTGAGACCTTGTCTCAAAACAAAACAA
+AACATCCTTCTACTGAGCACTTTCTGTCCCTTTATAGAAACTTAAGAGGGAACCAGTAGA
+GGTAATTTCCTAAGGAAAACTGCTTTGGGACATGATCACAAATGAAGCCTGGAGTTTTGA
+ACTGCTGAGGTCAGCCTGTTTTTACCTTCTGAGCCTATCAAGTAATTGTTCCAGATGCCA
+AGAAAAGCTGCTGGCCTTATTTCTGCTTCTGCCTTTACCACAGGGGAGCGCCATGTGAGC
+CAGTCCTCTGTTTTTCCTCCACTGTATGCTAGGCAGTATTAGCACCAGATTCTTCCCCTC
+TTTAAAAAGAAATTCTAGTGCTTTGGATTTTTTCCTCCATGCAGAATAGCAATGATGGAA
+AGTATGTGGTCAAAGTAATGACATTCTGAAAATACTAAATGTCACCATAGTATTTTTCTC
+TGGAAGAGAAATGTATATGTAGAGGTGAAACTTCAAATTTCTTTTTTTTTTTTTTTAAGA
+CGAAGCTTTGCTCTTCTTGCCCAGGCTGAAGTACAATGGCGTGATCTTGGCTCACCGCAA
+TCTCTGCCTCCAGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCTAAGTAGCTAGGATTAC
+AGGCATGTGCCACCACGCCCAGCTGATTTTGTATTTTTAGTAGAGATGGGGTTTCTCCAT
+GTTGGTCACGCTGGTCTTGAACTCCCGACCCCAAGTGATCCACCCACCTCGGCCTCCCAA
+AGTGCTAGGATTACAGGCCACCGCGCCCGGCCTGAAACTTCAAATTTCTTTTTTTTTTTG
+AGACAGAGTCTCGCTATGTCACCCAGGCTGGAGTGCAGTGGCGCCGTCTCGGCTCACTAC
+CAGCTCCACTCCACCTCCTGGGTTCACACCATTCTCCTGCCTCAGCCTCCCAAGTAGCTG
+GGACTACAGGTGCCCGCCACCATGCCCAGCTAATTTTTTGTATTTTTAGTAGAGACGGGT
+TTTCACTGTGTTAGACGGGATGGTCTCCATCTCTTGACCTCGTGATCCGCCTGCCTCAGC
+CTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACTACGCCAAGCCCGAAACTTCAAATTT
+CTTATCTCATAACTAGGCATCCTCATCACTGAGTGTTAGCCTGGATATAAACATTCCTAA
+TCTTTTGTACTTTTCATGTCAGCATTTGGCTCCACTTGGCTGCCTGGGGAGAACTTCTAG
+CATTATGAGCATGCAGGTCCTATCAACAGGTTGGGGGTGCGGTTTATTCATACAGGTAGT
+GAGAGTGGCACAGATGGATGCTGTCCCTTAAAACAAACAGACTTGTCTTTGGGAGCCTGA
+GGCGGGTGGATCATGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATAGTGAAACCCCG
+TTTCTACTAAAAATACAAAAAATTAGCCGGGTGTGGTGGTGTGCACCTGTAATCCCAGCT
+ACTAGGGAGGCTGAGGCAGGAGAATCACTTGAACCCAGGAGGTGGAGGTTGCAGTGAGCC
+GAGATGGCACCATTGCACTCCAGCCCAGGCGACAGTGCAAGACTGCGTCTCAAAAAAAAA
+AAAAAAACACACAGACTTGTCCTACTGCCATTTCTTTTCACTCTGGCGGTAAAGTAAGAG
+AGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTTTCTGTCCGTCTGTC
+TGTCAAGGGGGAGGGTGACCACTTTCTAAAAGGCCATCCGTGTATTTTTAGCTTCCTGAT
+TTTTTTCTCTATCGCAGTCTCTTTGAAGCCAGGTGAATTTTAGGCCTTGGCAATTTTCTT
+TTTATTGCAATGGGAAGGTCAAGACACTGAGAGTCACCCAAAACATATCCATCCAAAATG
+ATACAATTTTAGGGTTTATTTTTAAGTGATACCCAAGTTATTTGCTAAGAACCTATGCCA
+GTGTGTTTATGAGAATTTGCACTGTCCCACACTGTTGCCACCAGCCACATGGGACTGTTT
+AAATTTAAATTTTACAAATTAGCCAGTCATGGTGGTGTGCACTTGTAGTCCCAGCTACTT
+AGGAGGCTGAGGCAAGAGGATTGCTTGAGCCCAGAAGTTCAATACTGCAGCAAGCTATGA
+TCGTGCCACTGTACTCCAGCCTGAGTGACAGAATGAGACCTCATCTCTTCAAAAAAAAAG
+AAAAAAATTAAAATATGAAGTTTAGTTCTTCATTCACCCTAACCACATCTCCAGTGCTCA
+ATAACTATATGTGACTCATGGCTACCTTATTAGCATAGATATAGAACATTGTGACTATCA
+CAGAAAGTTGTTTTGAACAGTGTTGCCAAGCCCTGTAAGTGGAAGAGGCAGTGCAGTGTG
+ATCTGTGTCTTCAGGAAACCAGGTAGTCAGACTAGTTCAATGAGGAGAGGCAGAACCTGG
+CTTCACTTCTAGATTAAAAACTGCTTAGGTGGCCTAAAGATACAATGGCCATTCTCAGAG
+TAGTGAGAAGGAAGGAACAGATGTTTAGGGGGCTAGAAGAAAGTCAGAGAGGGCCGGGCG
+CAGTGGCTTATGCCTGTAATCCCAGCACTTTGGAAGGCCAAGACAGGCAGATCACGAGGT
+CAGGAGTTCGAGACCAGCCTGACCAACATGGTGAAACCCTGTCTCTACTAAAAATACAAA
+AATTAGCCGGGCGTGGTGGTGCGCGCCTGTAATCCCAGCTACTCAGGAGGCTAAGGCAGG
+AGAATCGCTTGAACCCTGGAGGCAGAGGTTGCAGTGAGCCCAGATCGCACCACTACGCTC
+CAGCCTAGGTGACAGAGAGAGACTCCGTCTCAAAAAAAAAAAAAAAAGTCAGAGGAGACA
+AGGAGCATGTACACCTAAAATCAACATAGACCCCTCTGTTGATGGGGTCATAGTGAGTAC
+TTGAGGTACCAAGTCTGGATAAACATCAAACTTCAGCCAATAACTTTGAGTTTCTAGCCA
+TCCAAGCCTCTTATTAAACATACAGAAGGACCTTTTTTCCCTTGCATCTAACAAGTTAAA
+GCACCTGCAGAGATCATTAGGGAGGAGCCTTGGCCTGATTGGTGACAAAAGTGAGATGCT
+CAGTCCTTGAATGACAAAGAATGCCTGTAGAGTGCAGGTCAACTACATATGCACTTCAAG
+AAGATCTTCTGAAATCCAGTAGTGTTCTGGACATTGGACTGCTTGTCCCTGGGAAGTAGC
+AGCAGAAATCATCAGGTGGTGAACAGAAGAAAAAGAAAAGCTCTTCCTTTTTGAAAGTCT
+GTTTTTTGAATAAAAGCCAATATTCTTTTATAACTAGATTTTCCTTCTCTCCATTCCCCT
+GTCCCTCTCTCTTCCTCTCTTCTTCCAGATCTTCAGGGGGCTAGAAATCTGTTGCTATGG
+GCCCTTCACCAACATGCCCACAGGTAAGAGCCTGGGAGAACCCCAGAGTTCCAGCACCAG
+CCTTTGTCTTACATAGTGGAGTATTATAAGCAAGATCCCACGATGGGGGTTCCTCAGATT
+GCTGAAATGTTCTAGAGGCTATTCTATTTCTCTACCACTCTCCAAACAAAACAGCACCTA
+AATGTTATCCTATGGCAAAAAAAAACTATACCTTGTCCCCCTTCTCAAGAGCATGAAGGT
+GGTTAATAGTTAGGATTCAGTATGTTATGTGTTCAGATGGCGTTGAGCTGCTGTTAGTGC
+CAACATGTTAGTGAGAAAATATCTTTGGATAGGTAAAAATCAAGGAGGAGTTCTCCTCTT
+CCTAAACCATCTTAATTTACTTACATAGAAGAAAGCACAGCAGCTGGCCCACCACGGACG
+GGCCCAGAGCAGGGGAAGATTCTCGGTGAACATTTCTTTTTTTTTTTCTTTTTTTTTGAG
+GTCGAGTCTCTGTTGCCCAGGCCAGAGTGCAATGGCGCGATCTCGGCTCACTGCAACCTC
+CACCTCCCGGGTTCAAGTGATTCTCCTGCCTCAGCCTCCCAAATAGCTGAGACTACAGGC
+GTGTGCCACCACGCCCGACTAATTTTTTGTATTTTTTTTTTAGTAGAGACGGGGTTTCAC
+CGTGTTAGCCAATATGGTCCCGATCTCCTGACCTCGTGATCCACCCGCCTCAGCCTCCCA
+AAGTGCTAGGATTACAGGCATGAGCCACTGTGCCCAGCCCTCTCCATGAACATTTTCTAA
+TTAAACTTGACACTTAATACAATGTTATGCTTAGGACTGCTATAAAGCTTACCTCTGGAG
+TTGCGCAGCACAAAGGCCTTGGTGTGTGTATAAATTTGGTTTGTTCTTTTCACAGCAAAA
+GCTACCCACCTTTGCCTCCTGTGCCTGCTTCTGCCCAGGGACTTAGGTCCTCTTACACCT
+TAGAGAAAGGCCTTAGCATCTGGTCACAGGCAGATGAGTGACAGCAAGAAAACCTGGCTG
+CAATGTAATTTTGTTTCCATCCTCTTTATTAGTTATCAATTGGATTTTTATGAAATTTCC
+AAGTTCCACTCAAGGATTTCTCAGTGTTTTTTTACTTTGGTATAGTGGAAACCAGGGTTG
+CCAGAAAGTATTATTTTGGGGGTGAGTTAGTCAACCTTCGTTCAGTCAGACAGACAGGAG
+CACCTCAGCAATTCCCAGAAACGGGCTGATGGGAAAGAGCAACATACATGAATGTCTTGA
+AGAACACAGCCAACAGAGCCCATTGGGCAGTTCTGATTTTCCAGGTACACAGCATCTCCA
+CAGTCTCTTCTGATTTTTATTCCCCTGAGTATATGGATTCCAGCTCAGCATGTAGCCTTT
+CCCTGCTGAGTCTCTAACCAGGATAACATGTATTTTTTTGACTGGATGAATTATCTTCCC
+ATCTCTTGACATTTACAGTAATTACCACCAAGTATGGTATTTTCAGTGGCCGTGATTATC
+AGTTACCAACACAGAATTAGGATGAAGGGAGGAAGGGAGGGAAGGAAGGTGGGTGTTTTT
+TCACACAGTGTCTTAGCCAGCAATTTAGCAAATTAATGGAAATTAGATCTTTGATTTTTT
+TTTCTTTCAAGCATTTTATTTGAGAGACTATCAAACCTTATACCAAGTGGCCTTATGGAG
+ACTGATAACCAGAGTACATGGCATATCAGTGGCAAATTGACTTAAAATCCATACCCCTAC
+TATTTTAAGACCATTGTCCTTTGGAGCAGAGAGACAGACTCTCCCATTGAGAGGTCTTGC
+TATAAGCCTTCATCCGGAGAGTGTAGGGTAGAGGGCCTGGGTTAAGTATGCAGATTACTG
+CAGTGATTTTACATCTAAATGTCCATTTTAGATCAACTGGAATGGATGGTACAGCTGTGT
+GGTGCTTCTGTGGTGAAGGAGCTTTCATCATTCACCCTTGGCACAGTAAGTATTGGGTGC
+CCTGTCAGAGAGGGAGGACACAATATTCTCTCCTGTGAGCAAGACTGGCACCTGTCAGTC
+CCTATGGATGCCCCTACTGTAGCCTCAGAAGTCTTCTCTGCCCACATACCTGTGCCAAAA
+GACTCCATCTGTAAGGGATGGGTAAGGATTTGAGAACTGCACATATTAAATATACTGAGG
+GAAGACTTTTTCCCTCTAACTCTTTTTCCCATATGTCCCTCCCCCTCCTCTCTGTGACTG
+CCCCAGCATACTGTGTTTCAACAAATCATCAAGAAATGATGGGCTGGAGGCTGGGCATGG
+TGGCTCATGTCTGTAATCCCAGCACTTTGGGAGGCCGAGGCAGGTGGATCACTTGTCAGG
+AGTTTGAGACCAGCCTGGCCAACATGGTGAAACCCCATCTGTACTAAAAAAAAAAAAACA
+AAAAGTAGCCAGGCCTGGTGGAGCATGCCTGTAATGCCAGCTATTTGGGAAGTTGAGGTG
+TGAGCATCGCTTGAACGTGGGAGGCAGAGGTTGCAGTGAGCCAAGATTGCACCACTGCAC
+TCCAGACTGGGTGACAGAGTGAGACTTTGTCTAAAAAAAAAAAAAAAGAGAGAGAGAGAA
+AAGCTAGGTGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCTGAGGTGGGCAG
+ATCACGAGGTCAAGAGATCGAGACCATCCTGGCCAACCAACATGGCGAAACCCCGTCTCT
+ACTAAAAATACAAAAATTAGCTGGGCGTAGGGGCGCACGCCTGTAGTCCCAGCTACTTGA
+GGGGCTGGGGCAGGAGAATCGCTTGAACCCCGGAGGCGGAGGTTGCAGTGAGCCAAGATC
+GCGCCACTGCACTCCAGCCCGGGCGACAGAGCGAGACTCCGTCTCAAAAAAAAAGAGAGA
+GAGAGAAATGATGGGCTGGGCCAGTGCCCCACCCCTGTAATCACAACACTGGGAGGCCAA
+GGTGGGAGAATCGCTTGAGCCTGGGAGCTGAAGACCAGCCTGGGCAATACAGTAGGACCT
+CATGTCTACAAAAAAATTATTAAAAATTAGCCAAGGCTGGGTGCGGTGGCTCATGCCTAT
+AATCCCGGGGGTGAAGTTGAGCCCAGGAGTTTGAGACCAGCCTGGGCAACATGGCAAAAC
+CCTGTCTCTACCAAAAATACAAAAAAATTAGCCAGGGGTGGTGGTACGTGTCTGTAGTTC
+CAGCTACTTAGGAGGCTGAGATGGAAGGATTGCTTGAGCCCAGGAGGCAGAGGTGGCAGT
+GAGCTGAGATCACACCACTGCACTCCAGCCTGGGTGACAGAGCAAGACCCTGTCTCAAAA
+ACAAACAAAAAAAATGATGAAGTGACAGTTCCAGTAGTCCTACTTTGACACTTTGAATGC
+TCTTTCCTTCCTGGGGATCCAGGGTGTCCACCCAATTGTGGTTGTGCAGCCAGATGCCTG
+GACAGAGGACAATGGCTTCCATGGTAAGGTGCCTGCATGTACCTGTGCTATATGGGGTCC
+TTTTGCATGGGTTTGGTTTATCACTCATTACCTGGTGCTTGAGTAGCACAGTTCTTGGCA
+CATTTTAAATATTTGTTGAATGAATGGCTAAAATGTCTTTTTGATGTTTTTATTGTTATT
+TGTTTTATATTGTAAAAGTAATACATGAACTGTTTCCATGGGGTGGGAGTAAGATATGAA
+TGTTCATCACAAAAACATAAATCAAGGCCGGGCATGGTGGCTCATGCCTATAATTCCAGC
+ACTTTGGGAGGTCAAGATGGAGGTCAAGGTGGGAGCCTAGAAGTTCGAGACCAGCCTGGG
+CAACATAAGGAGACTTCATCTGTACAACAAATTTAAAAAGTAGCTGGGTGTGGTGGCAGA
+TGCCTGTAGTCGCAGCTACTTGGGAAGCTGAGGTGGGAGGATCACTTGAGCTCAGGAGGT
+TGATGCTTCAGTGAGCCACGATCACACCACTGTACTCCAGCCTGGGCGACAGAGCGAGAC
+CGTGTCTCAAAAAGAAAAAAGAAAGTATAAATTTACACAAAAACAATAAAATAATCCCAG
+TAATTCCACCACTTGGAGATGATCACCATAAAACTCCACCAGGCATATGTGCGTATATAT
+ACACGTGTATTTTATAAAATGTGATCATAATTACACTGTTTTGCTTTTTTCCTTAAGATA
+TTACATACATTTTTCCACATCGTTAAATTACAGTGCTGTTTTCCTGGTGGCTTTCCTTTA
+ACAGATTGAAGTTCATGTTAATACAGTTGCCAGAGGCTGTGGGCTTTCACTGTCACCAGG
+AGTCACTCCTAGGGCCTCTTCAGAGCAAGGCCTTATGTCCTGAAGCATTGCCTTTTTTTT
+TTTTTTTTGAGGTGGAGTCTCACTCTGTCACTTAGCAGGCTGGAGTGCAGTGGCCCAGTC
+TTGGCTCACTGCAACCTCCGCCTCCTGGGTTTAAATGATTCTCCTGCCTCAGCCTCAGGG
+CGGATCACCTGACATCAGGAGTTTGAGACCAGCCTGGCCAATATGGCGAAACCCCATCTC
+TACTAAAAATACTAAAAAAAATTAGCCAGGCATGGTGGCACGCACTTGTAGTCCCAGCTA
+CTTGGGAGACTGAGGCAGGAGAATCGCTTGAACCCAGGATGTTGAGGTTGCAGTGAGCTG
+AGATCACACCATCACAATCCAGCCTGAGTGACAGAGTGAGACTCCATCTGAAAAAAAAGA
+AAAAACAATTAGCCTGGCATGGTGGCAGGCACCTGTAATCCCTGCTACTTGGGAGGCTGA
+GGCAGGAGAATTGCTTGAACCCGGGAGGTGGAGGTTGCAGTGAGCTGAGATCGTGCCATT
+GCATTCCAGGCTGAGCAACAAGAGCAAGACTCCGTCTCAAAAAAAAAAAAAAAAAAAAAA
+AAAGGCCAGGTGCAGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGGT
+GGATCACCTGAGGTCAGGAGTTCCAGAGCAGCCTGGCCAACATTGTGAAACCCCCGTCTC
+TACTAAAAATACAAAAATTAGCTGGGTGTGATGGCATGTGCCTGTAATTCCAGCTACTCA
+GGAGGCAGAGACAGGAGAATTGCTTGAACCCAGGAGGCGGAGGTTGAATGAGCCGAGATT
+GCGCCATCACACTCTAGCCTCGGCGACAGAGCAAGACTCCGTCTCAAAAAAAAAAAAAAA
+AAATTAGCTTCTACCTCATTAATCCTAAGAACTCATACAACCAGGACCCTGGAGTCGATT
+GATTAGAGCCTAGTCCAGGAGAATGAATTGACACTAATCTCTGCTTGTGTTCTCTGTCTC
+CAGCAATTGGGCAGATGTGTGAGGCACCTGTGGTGACCCGAGAGTGGGTGTTGGACAGTG
+TAGCACTCTACCAGTGCCAGGAGCTGGACACCTACCTGATACCCCAGATCCCCCACAGCC
+ACTACTGACTGCAGCCAGCCACAGGTACAGAGCCACAGGACCCCAAGAATGAGCTTACAA
+AGTGGCCTTTCCAGGCCCTGGGAGCTCCTCTCACTCTTCAGTCCTTCTACTGTCCTGGCT
+ACTAAATATTTTATGTACATCAGCCTGAAAAGGACTTCTGGCTATGCAAGGGTCCCTTAA
+AGATTTTCTGCTTGAAGTCTCCCTTGGAAATCTGCCATGAGCACAAAATTATGGTAATTT
+TTCACCTGAGAAGATTTTAAAACCATTTAAACGCCACCAATTGAGCAAGATGCTGATTCA
+TTATTTATCAGCCCTATTCTTTCTATTCAGGCTGTTGTTGGCTTAGGGCTGGAAGCACAG
+AGTGGCTTGGCCTCAAGAGAATAGCTGGTTTCCCTAAGTTTACTTCTCTAAAACCCTGTG
+TTCACAAAGGCAGAGAGTCAGACCCTTCAATGGAAGGAGAGTGCTTGGGATCGATTATGT
+GACTTAAAGTCAGAATAGTCCTTGGGCAGTTCTCAAATGTTGGAGTGGAACATTGGGGAG
+GAAATTCTGAGGCAGGTATTAGAAATGAAAAGGAAACTTGAAACCTGGGCATGGTGGCTC
+ACGCCTGTAATCCCAGCACTTTGGGAGGCCAAGGTGGGCAGATCACTGGAGGTCAGGAGT
+TCGAAACCAGCCTGGCCAACATGGTGAAACCCCATCTCTACTAAAAATACAGAAATTAGC
+CGGTCATGGTGGTGGACACCTGTAATCCCAGCTACTCAGGTGGCTAAGGCAGGAGAATCA
+CTTCAGCCCGGGAGGTGGAGGTTGCAGTGAGCCAAGATCATACCACGGCACTCCAGCCTG
+GGTGACAGTGAGACTGTGGCTCAAAAAAAAAAAAAAAAAAAGGAAAATGAAACTAGAAGA
+GATTTCTAAAAGTCTGAGATATATTTGCTAGATTTCTAAAGAATGTGTTCTAAAACAGCA
+GAAGATTTTCAAGAACCGGTTTCCAAAGACAGTCTTCTAATTCCTCATTAGTAATAAGTA
+AAATGTTTATTGTTGTAGCTCTGGTATATAATCCATTCCTCTTAAAATATAAGACCTCTG
+GCATGAATATTTCATATCTATAAAATGACAGATCCCACCAGGAAGGAAGCTGTTGCTTTC
+TTTGAGGTGATTTTTTTCCTTTGCTCCCTGTTGCTGAAACCATACAGCTTCATAAATAAT
+TTTGCTTGCTGAAGGAAGAAAAAGTGTTTTTCATAAACCCATTATCCAGGACTGTTTATA
+GCTGTTGGAAGGACTAGGTCTTCCCTAGCCCCCCCAGTGTGCAAGGGCAGTGAAGACTTG
+ATTGTACAAAATACGTTTTGTAAATGTTGTGCTGTTAACACTGCAAATAAACTTGGTAGC
+AAACACTTCCACCATGAATGACTGTTCTTGAGACTTAGGCCAGCCGACTTTCTCAGAGCC
+TTTTCACTGTGCTTCAGTCTCCCACTCTGTAAAATGGGGGTAATGATAGTATCTACCTCC
+TAGGATTTATTGAGGCAGCTTAAATACCTTTTGTATTTCCTGTTGCTGCCAAAACAAATT
+GTTGCAAGGTCAGAAGTCTGAGGTGGCTCAACTGTTTCTTTGTTTCAGGTTTCATGAGGC
+CAAAATAAAGGTGTTCGCAGGGCGTGTTCCCTTCTAGAGGCTCTGGGTCCTTGCAGTTCT
+AGGACTAAGATCCCTGTTTCCCACTGGCTGTTGGCTGGGCATCATTCTCAGCTTCTTGAG
+GCTCCCCACATTCCTAGGCTCCTGGCCTGTCTGCCTCCATCTTCAAAACCAGCAATGGGT
+GGTCAAGTTTTTCTCACACTGAATCTTGCTGACTACTGTATCTTTCTAACTCCTGCCAGA
+GACATTTCTCTGTTTCTAAGGGCTCAAGTGATTAGATTGCACCCACTTGGTAATCCAAAG
+TGATCTTCATATCTTAAGGCCCATAGCCTTAATTATAGCTGCAAAGTCCCTTCGCAGCAG
+TACCTAGATTA
diff --git a/data/example_fasta.fasta b/data/example_fasta.fasta
new file mode 100644
index 0000000..ae5498d
--- /dev/null
+++ b/data/example_fasta.fasta
@@ -0,0 +1,18 @@
+>GTD323452 5S_rRNA NODE_272_length_223_cov_0.720238:18-129(+)
+ACGGCCATAGGACTTTGAAAGCACCGCATCCCGTCCGATCTGCGAAGTTAACCAAGATGCCGCCTGGTTAGTACCATGGTGGGGGACCACATGGGAATCCCT
+GGTGCTGTG
+>GTD678345 16S_rRNA NODE_80_length_720_cov_1.094737:313-719(+)
+TTGGCTTCTTAGAGGGACTTTTGATGTTTAATCAAAGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGGCCGCACGCGCGCTACACT
+GAGCCCTTGGGAGTGGTCCATTTGAGCCGGCAACGGCACGTTTGGACTGCAAACTTGGGCAAACTTGGTCATTTAGAGGAAGTAAAAGTCGTAACAAGGT
+>GTD174893 16S_rRNA NODE_1_length_2558431_cov_75.185164:2153860-2155398(+)
+TTGAAGAGTTTGATCATGGCTCAGATTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAACAGCTTGCTGTTTCGCTGACGAGTGG
+GAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCACTTTGTGATTCATGACTGGGGTGAAGTCGTAACAAGGTAACCGTAGGGGAACCTGCGGTTGGATC
+ACCTCCTT
+>GTD906783 16S_rRNA NODE_1_length_2558431_cov_75.185164:793941-795479(-)
+TTGAAGAGTTTGATCATGGCTCAGATTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAACAGCTTGCTGTTTCGCTGACGAGTGG
+GAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCACTTTGTGATTCATGACTGGGGTGAAGTCGTAACAAGGTAACCGTAGGGGAACCTGCGGTTGGATC
+ACCTCCTT
+>GTD129563 16S_rRNA NODE_4_length_428221_cov_75.638017:281055-282593(-)
+CGGACGGGTGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGGAAACGGTAGCTAATACCGCATAACGTCGCAAGACCAAAGAGGGGGACC
+GAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCACTTTGTGATTCATGACTGGGGTGAAGTCGTAACAAGGTAACCGTAGGGGAACCTGCGGTTGGATC
+ACCTCCTT
\ No newline at end of file
diff --git a/magos_biologis.py b/magos_biologis.py
index f7668d7..c546328 100644
--- a/magos_biologis.py
+++ b/magos_biologis.py
@@ -1,21 +1,61 @@
from __future__ import annotations
import os
import sys
-from Bio import SeqIO, SeqUtils, SeqRecord
-from Bio.SeqUtils import gc_fraction
+import re
+import datetime
+import requests
+from abc import ABC, abstractmethod
+from Bio import SeqIO, SeqUtils
+from dataclasses import dataclass
+from io import BytesIO, StringIO
+from bs4 import BeautifulSoup
+from typing import Callable, Optional, List
+from dotenv import load_dotenv
+load_dotenv()
-class BiologicalSequence:
+
+class BiologicalSequence(ABC):
+ """
+ Abstract base class representing a biological sequence.
+
+ Defines methods that must be implemented by concrete subclasses:
+ - __len__: Returns the length of the sequence.
+ - __getitem__: Returns the item at the specified index.
+ - __str__: Returns the string representation of the sequence.
+ - is_valid_alphabet: Checks if the sequence contains valid symbols according to its alphabet.
+
+ Subclasses must implement these methods to provide functionality specific to the type of biological sequence.
+ """
+
+ @abstractmethod
+ def __len__(self):
+ pass
+
+ @abstractmethod
+ def __getitem__(self, item):
+ pass
+
+ @abstractmethod
+ def __str__(self):
+ pass
+
+ @abstractmethod
+ def is_valid_alphabet(self):
+ pass
+
+
+class NucleicAcidSequence(BiologicalSequence):
"""
- Represents a generic biological sequence.
- Attributes:
- - sequence (str): The biological sequence.
+ Represents a nucleic acid sequence.
Methods:
- - __len__(): Returns the length of the sequence.
- - __getitem__(index: int): Returns the character at the specified index.
- - __str__(): Returns a string representation of the sequence.
- - is_valid_alphabet(): Checks if the sequence uses a valid alphabet.
+ - complement(): Returns the complemented sequence.
+ - gc_content(percentage: bool = True) -> int | float: Calculates the GC content of the sequence.
+ Raises:
+ - NotImplementedError: If complement method is not implemented for this class.
"""
+ alphabet = None
+ complement_map = None
def __init__(self, sequence: str):
self.sequence = sequence
@@ -23,8 +63,8 @@ def __init__(self, sequence: str):
def __len__(self) -> int:
return len(self.sequence)
- def __getitem__(self, index: int) -> str:
- return self.sequence[index]
+ def __getitem__(self, item: int) -> str:
+ return self.sequence[item]
def __str__(self) -> str:
return f"{self.sequence}"
@@ -33,35 +73,27 @@ def is_valid_alphabet(self) -> bool:
"""
Checks if the sequence uses a valid alphabet.
"""
- try:
- unique_chars = set(self.sequence)
- return unique_chars <= self.ALPHABET
- except AttributeError as e:
- raise NotImplementedError(
- "Is valid alphabet method not implemented for this class."
- ) from e
-
+ if self.alphabet is None:
+ raise NotImplementedError("Is valid alphabet method not implemented for this class.")
+ return set(self.sequence).issubset(self.alphabet)
-class NucleicAcidSequence(BiologicalSequence):
- """
- Represents a nucleic acid sequence.
- Methods:
- - complement(): Returns the complemented sequence.
- - gc_content(percentage: bool = True) -> int | float: Calculates the GC content of the sequence.
- Raises:
- - NotImplementedError: If complement method is not implemented for this class.
- """
+ def complement(self) -> NucleicAcidSequence:
+ """
+ Returns the complement of the sequence based on the provided complement map.
+ Args:
+ complement_map (dict or None): A dictionary specifying the mapping of nucleotide bases to their complements.
+ If None, raises NotImplementedError.
+ Returns:
+ NucleicAcidSequence: A new instance of the same class representing the complemented sequence.
+ Raises:
+ NotImplementedError: If complement_map is None, indicating that the complement method is not implemented for
+ this class.
+ """
+ if self.complement_map is None:
+ raise NotImplementedError("Complement method not implemented for this class.")
+ complemented_sequence = "".join([self.complement_map[base] for base in self.sequence])
- def complement(self) -> DNASequence | RNASequence:
- try:
- complemented_sequence = "".join(
- [self.COMPLEMENT_MAP[base] for base in self.sequence]
- )
- return self.__class__(complemented_sequence)
- except AttributeError as e:
- raise NotImplementedError(
- "Complement method not implemented for this class."
- ) from e
+ return self.__class__(complemented_sequence)
def gc_content(self, percentage: bool = True) -> int | float:
"""
@@ -86,19 +118,20 @@ class DNASequence(NucleicAcidSequence):
- transcribe(): Returns the transcribed RNA sequence.
"""
+ alphabet = set("ATGCatgc")
+ complement_map = {
+ "A": "T",
+ "C": "G",
+ "G": "C",
+ "T": "A",
+ "a": "t",
+ "c": "g",
+ "g": "c",
+ "t": "a",
+ }
+
def __init__(self, sequence: str):
super().__init__(sequence)
- self.ALPHABET = set("ATGCatgc")
- self.COMPLEMENT_MAP = {
- "A": "T",
- "C": "G",
- "G": "C",
- "T": "A",
- "a": "t",
- "c": "g",
- "g": "c",
- "t": "a",
- }
def transcribe(self) -> RNASequence:
"""
@@ -111,33 +144,45 @@ def transcribe(self) -> RNASequence:
class RNASequence(NucleicAcidSequence):
- """
- Represents an RNA sequence.
- """
+ alphabet = set("AUGCaugc")
+ complement_map = {
+ "A": "U",
+ "C": "G",
+ "G": "C",
+ "U": "A",
+ "a": "u",
+ "c": "g",
+ "g": "c",
+ "u": "a",
+ }
def __init__(self, sequence: str):
super().__init__(sequence)
- self.ALPHABET = set("AUGCaugc")
- self.COMPLEMENT_MAP = {
- "A": "U",
- "C": "G",
- "G": "C",
- "U": "A",
- "a": "u",
- "c": "g",
- "g": "c",
- "u": "a",
- }
class AminoAcidSequence(BiologicalSequence):
"""
Represents an amino acid sequence.
"""
+ alphabet = set("GgLlYySsEeQqDdNnFfAaKkRrHhCcVvPpWwIiMmTt")
def __init__(self, sequence: str):
- super().__init__(sequence)
- self.ALPHABET = set("GgLlYySsEeQqDdNnFfAaKkRrHhCcVvPpWwIiMmTt")
+ self.sequence = sequence
+
+ def __len__(self) -> int:
+ return len(self.sequence)
+
+ def __getitem__(self, item: int) -> str:
+ return self.sequence[item]
+
+ def __str__(self) -> str:
+ return f"> {self.sequence}"
+
+ def is_valid_alphabet(self) -> bool:
+ """
+ Checks if the sequence uses a valid alphabet.
+ """
+ return set(self.sequence).issubset(self.alphabet)
def count_aa(self) -> dict:
"""
@@ -156,11 +201,11 @@ def count_aa(self) -> dict:
def filter_fastq(
- path_to_seqs: str,
- output_file_name: str = None,
- gc_bounds: tuple | int = (0, 100),
- length_bounds: tuple | int = (0, 2**32),
- quality_threshold: int = 0,
+ path_to_seqs: str,
+ output_file_name: str = None,
+ gc_bounds: tuple | int = (0, 100),
+ length_bounds: tuple | int = (0, 2 ** 32),
+ quality_threshold: int = 0,
) -> None:
"""
Filters FASTQ sequences based on the GC-content, length and quality parameters.
@@ -185,7 +230,7 @@ def filter_fastq(
filtered_records = []
for record in records:
- gc_content = gc_fraction(record.seq)
+ gc_content = SeqUtils.gc_fraction(record.seq) * 100
if isinstance(gc_bounds, tuple):
if not (gc_bounds[0] <= gc_content <= gc_bounds[1]):
continue
@@ -204,3 +249,277 @@ def filter_fastq(
with open(output_file_name, "w") as output_handle:
SeqIO.write(filtered_records, output_handle, "fastq")
+
+
+def send_telegram_message(chat_id: int,
+ text: str,
+ document_name: Optional[str] = None,
+ file: Optional[BytesIO] = None) -> dict:
+ """
+ Sends a message to Telegram.
+ Args:
+ - chat_id (int): ID of the chat room or user where the message will be sent
+ - text (str): Message text
+ - document_name (str): The name of the document being sent
+ - file (Optional[BytesIO]): File to send (optional)
+ Returns:
+ - Response from Telegram API in JSON format
+ """
+ telegram_token = os.getenv("TG_API_TOKEN")
+ url = f"https://api.telegram.org/bot{telegram_token}/sendMessage"
+ params = {"chat_id": chat_id, "text": text, "parse_mode": "Markdown"}
+ response = requests.post(url, params=params)
+ if file:
+ files = {"document": (document_name, file)}
+ response = requests.post(
+ f"https://api.telegram.org/bot{telegram_token}/sendDocument",
+ params=params,
+ files=files
+ )
+ return response.json()
+
+
+def telegram_logger(chat_id: int) -> Callable:
+ """
+ Decorator function for logging and sending messages to Telegram
+ Args:
+ - chat_id (int): The chat ID to which messages will be sent
+ Returns:
+ - Callable: Decorator function that can be applied to other functions
+
+ """
+
+ def decorator(func):
+ def wrapper(*args, **kwargs):
+ start_time = datetime.datetime.now()
+ stdout = sys.stdout
+ stderr = sys.stderr
+ sys.stdout = StringIO()
+ sys.stderr = StringIO()
+ try:
+ result = func(*args, **kwargs)
+ end_time = datetime.datetime.now()
+ duration = end_time - start_time
+ message = (
+ f"🥳 Function `{func.__name__}` completed successfully.\n"
+ f"Execution time: {duration}."
+ )
+ send_telegram_message(chat_id, message)
+ except Exception as e:
+ message = (
+ f"☠️ Function `{func.__name__}` failed with an exception:\n"
+ f"Type: {type(e).__name__}\n"
+ f"Error: {str(e)}\n"
+ )
+ send_telegram_message(chat_id, message)
+ raise e
+ finally:
+ sys.stdout.seek(0)
+ sys.stderr.seek(0)
+ stdout_content = sys.stdout.read()
+ stderr_content = sys.stderr.read()
+ sys.stdout = stdout
+ sys.stderr = stderr
+ if stdout_content or stderr_content:
+ log_content = f"STDOUT:\n{stdout_content}\nSTDERR:\n{stderr_content}"
+ log_content_bytes = log_content.encode('utf-8')
+ send_telegram_message(chat_id, "", f"{func.__name__}.log", file=BytesIO(log_content_bytes))
+
+ return result
+
+ return wrapper
+
+ return decorator
+
+
+@dataclass
+class Intron:
+ gene: int
+ number: int
+ start: int
+ end: int
+
+ def __repr__(self):
+ return f"Intron(gene='{self.gene}', number={self.number}, start={self.start}, end={self.end})"
+
+
+@dataclass
+class Exon:
+ gene: int
+ number: int
+ start: int
+ end: int
+
+ def __repr__(self):
+ return f"Exon(gene='{self.gene}', number={self.number}, start={self.start}, end={self.end})"
+
+
+@dataclass
+class GenscanOutput:
+ status: str
+ cds_list: List[str] | None
+ intron_list: List['Intron'] | None
+ exon_list: List['Exon'] | None
+
+ def __repr__(self):
+ return (
+ f"GenscanOutput(status='{self.status}',\n"
+ f" cds_list={self.cds_list},\n"
+ f" intron_list={self.intron_list},\n"
+ f" exon_list={self.exon_list})"
+ )
+
+
+def parse_genscan_output(lines: List[str]) -> tuple[List[str], List[Exon], List[Intron]]:
+ """
+ Parse the output of Genscan and extract exons, introns, and protein sequences.
+ Introns are considered to be regions lying between the initial, internal, and terminating exon.
+ Promoters and poly-A regions are not considered exons.
+ Args:
+ - lines (List[str]): List of lines from the Genscan output
+ Returns:
+ Tuple containing:
+ - List of protein sequences
+ - List of Exon objects
+ - List of Intron objects
+ """
+
+ pattern = r'^\d{1,2}\.\d\d'
+ gene = ''
+ exon_list = []
+ intron_list = []
+ exon_number, exon_start, exon_end = 0, 0, 0
+ intron_number, intron_start, intron_end = 0, 0, 0
+ proteins = {}
+ protein_name = ''
+ protein = []
+ sequence_length = 0
+
+ for line in lines:
+ if line:
+ line = line.strip()
+ if line.startswith('Sequence'):
+ sequence_length = int(line.split(':')[3].strip().split(' ')[0])
+ if re.match(pattern, line):
+ string = line.split()
+ if string[1] not in ['Prom', 'PlyA']:
+ gene = int(string[0].split('.')[0])
+ exon_number = int(string[0].split('.')[1])
+ exon_start = int(string[3])
+ exon_end = int(string[4])
+ exon = Exon(gene=gene, number=exon_number, start=exon_start, end=exon_end)
+ exon_list.append(exon)
+ if string[1] == 'Sngl':
+ continue
+ elif string[1] == 'Init':
+ if string[2] == '+':
+ intron_number = exon_number
+ intron_start = exon_end + 1
+ elif string[2] == '-':
+ if not intron_number:
+ intron_number = exon_number - 1
+ intron_start = exon_end - 1
+ if not intron_end:
+ intron_end = 1
+ intron = Intron(gene=gene, number=intron_number, start=intron_start, end=intron_end)
+ intron_list.append(intron)
+ intron_number, intron_start, intron_end = 0, 0, 0
+ elif string[1] == 'Intr':
+ if string[2] == '+':
+ if not intron_start:
+ intron_start = 1
+ intron_end = exon_start - 1
+ intron = Intron(gene=gene, number=intron_number, start=intron_start, end=intron_end)
+ intron_list.append(intron)
+ intron_number = exon_number
+ intron_start = exon_end + 1
+ elif string[2] == '-':
+ intron_number = exon_number
+ intron_start = exon_end - 1
+ if not intron_end:
+ intron_end = 1
+ intron = Intron(gene=gene, number=intron_number, start=intron_start, end=intron_end)
+ intron_list.append(intron)
+ intron_end = exon_start + 1
+ elif string[1] == 'Term':
+ if string[2] == '+':
+ if not intron_number:
+ intron_number = exon_number - 1
+ if not intron_start:
+ intron_start = 1
+ intron_end = exon_start - 1
+ intron = Intron(gene=gene, number=intron_number, start=intron_start, end=intron_end)
+ intron_list.append(intron)
+ intron_number, intron_start, intron_end = 0, 0, 0
+ elif string[2] == '-':
+ intron_number = exon_number - 1
+ intron_end = exon_start - 1
+
+ if line.startswith('>') and not protein_name:
+ protein_name = line
+ elif line.startswith('>') and protein_name:
+ proteins[protein_name] = str(''.join(protein))
+ protein_name = line
+ protein = []
+ elif protein_name:
+ protein.append(line)
+
+ proteins[protein_name] = str(''.join(protein))
+
+ if intron_start or intron_end:
+ if string[2] == '+':
+ intron_end = sequence_length
+ elif string[2] == '-':
+ intron_start = sequence_length
+ intron = Intron(gene=gene, number=intron_number, start=intron_start, end=intron_end)
+ intron_list.append(intron)
+
+ cdc_list = list(proteins.values())
+ return cdc_list, exon_list, intron_list
+
+
+def run_genscan(sequence: Optional[str] = None,
+ sequence_file: Optional[str] = None,
+ organism: str = "Vertebrate",
+ exon_cutoff: Optional[float] = 1.00,
+ sequence_name: Optional[str] = None) -> GenscanOutput:
+ """
+ Run Genscan prediction.
+ Args:
+ - sequence (str, optional): DNA sequence (upper or lower case, spaces/numbers ignored)
+ - sequence_file (str, optional): Path to a file with DNA sequence (upper or lower case, spaces/numbers ignored)
+ - organism (str): Organism type. Allowed values are 'Vertebrate', 'Arabidopsis' or 'Maize'
+ - exon_cutoff (float, optional): Exon cutoff value
+ - sequence_name (str, optional): Name of the DNA sequence
+ Returns:
+ - GenscanOutput: An object containing the status of the prediction, predicted coding sequences, introns, and exons
+ Introns are considered to be regions lying between the initial, internal, and terminating exon
+ Promoters and poly-A regions are not considered exons
+ """
+
+ allowed_organisms = ["Vertebrate", "Arabidopsis", "Maize"]
+ if organism not in allowed_organisms:
+ raise ValueError(f"Invalid value for organism. Allowed values are: {', '.join(allowed_organisms)}")
+
+ url = "http://hollywood.mit.edu/cgi-bin/genscanw_py.cgi"
+ params = {
+ "-o": organism,
+ "-e": exon_cutoff,
+ "-n": sequence_name,
+ "-p": "Predicted peptides only"
+ }
+ files = None
+ if sequence_file:
+ files = {"-u": open(sequence_file, "rb")}
+ else:
+ params["-s"] = sequence
+
+ response = requests.post(url, data=params, files=files)
+
+ if response.status_code == 200:
+ soup = BeautifulSoup(response.content, 'html.parser')
+ lines = soup.find('pre').text.split('\n')
+ cds, exons, introns = parse_genscan_output(lines)
+ return GenscanOutput(status="Success", cds_list=cds, intron_list=introns, exon_list=exons)
+ else:
+ return GenscanOutput(status="Failed", cds_list=None, intron_list=None, exon_list=None)
diff --git a/requirements.txt b/requirements.txt
index 1da061d..1bd8ceb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,34 @@
-python==3.11.7
-Bio==1.6.2
+attr==0.3.2
+beautifulsoup4==4.12.3
+Bio==1.7.0
biopython==1.83
+ConfigParser==7.0.0
+contextlib2==21.6.0
+cryptography==42.0.5
+Cython==3.0.10
+dl==0.1.0
+docutils==0.21.2
+HTMLParser==0.0.2
+ipython==8.22.2
+ipython==8.12.3
+ipywidgets==8.1.2
+Jinja2==3.1.3
+jnius==1.1.0
+keyring==25.2.0
+lockfile==0.12.2
+mock==5.1.0
+numpy==1.26.4
+Pillow==10.3.0
+protobuf==5.26.1
+pyOpenSSL==24.1.0
+pytest==8.2.0
+python-dotenv==1.0.1
+railroad==0.5.0
+scikit_learn==1.4.2
+Sphinx==7.3.7
+thread==2.0.1
+tornado==6.3.3
+trove_classifiers==2024.4.10
+truststore==0.9.0
+urllib3_secure_extra==0.1.0
+xmlrpclib==1.0.1
diff --git a/test_genome_forge_modules.py b/test_genome_forge_modules.py
new file mode 100644
index 0000000..bd984fe
--- /dev/null
+++ b/test_genome_forge_modules.py
@@ -0,0 +1,80 @@
+import os
+import pytest
+from magos_biologis import DNASequence, AminoAcidSequence, NucleicAcidSequence
+from bio_files_processor import convert_multiline_fasta_to_oneline
+class TestDNASequence:
+ """
+ Test methods of the DNASequence class.
+ """
+ def test_complement(self):
+ """
+ Test the complement method of the DNASequence class.
+ """
+ dna_seq = DNASequence("ATGC")
+ assert str(dna_seq.complement()) == "TACG"
+
+ def test_gc_content(self):
+ """
+ Test the gc_content method of the DNASequence class.
+ """
+ dna = DNASequence("ATGC")
+ gc_content = dna.gc_content(percentage=True)
+ assert gc_content == 50.0
+
+@pytest.mark.parametrize(
+ "input_sequence, expected",
+ [
+ ("ATGC", "AUGC"),
+ ("atgc", "augc"),
+ ("TTTGG", "UUUGG")
+ ]
+)
+def test_dna_sequence_transcribe(input_sequence, expected):
+ """
+ Test the transcribe method of the DNASequence class.
+ """
+ dna_seq = DNASequence(input_sequence)
+ rna_seq = dna_seq.transcribe()
+ assert str(rna_seq) == expected
+
+
+class TestAminoAcidSequence:
+ """
+ Test methods of the AminoAcidSequence class.
+ """
+ def test_count_aa(self):
+ """
+ Test the count_aa method of the AminoAcidSequence class.
+ """
+ amino_acid_seq = AminoAcidSequence("LISITSA")
+ count = amino_acid_seq.count_aa()
+ assert count == {'L': 1, 'A': 1, 'T': 1, 'S': 2, 'I': 2}
+
+@pytest.fixture(scope="module")
+def input_fasta_path():
+ return "test_input.fasta"
+
+@pytest.fixture(scope="module")
+def output_fasta_path():
+ return "test_output.fasta"
+
+def test_convert_multiline_fasta_to_oneline(input_fasta_path, output_fasta_path):
+ with open(input_fasta_path, "w") as f:
+ f.write(">Seq1\nACGT\nTGCA\n>Seq2\nGGGG\nCCCC")
+
+ convert_multiline_fasta_to_oneline(input_fasta_path, output_fasta_path)
+
+ assert os.path.exists(output_fasta_path)
+
+ with open(output_fasta_path, "r") as f:
+ content = f.read()
+ assert content == ">Seq1\nACGTTGCA\n>Seq2\nGGGGCCCC"
+
+ os.remove(input_fasta_path)
+ os.remove(output_fasta_path)
+
+
+def test_complement_method_not_implemented():
+ sequence = NucleicAcidSequence("ATGC")
+ with pytest.raises(NotImplementedError):
+ sequence.complement()
\ No newline at end of file