diff -Nru beast2-mcmc-2.6.6+dfsg/build.xml beast2-mcmc-2.6.7+dfsg/build.xml --- beast2-mcmc-2.6.6+dfsg/build.xml 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/build.xml 2022-04-04 07:18:36.000000000 +0000 @@ -269,10 +269,10 @@ - - + + - + @@ -847,7 +847,7 @@ - + - + @@ -1160,9 +1160,11 @@ --> - + + + - + @@ -1170,17 +1172,21 @@ - + + + + - + + - + - + - - - + + + @@ -1204,9 +1210,11 @@ + + - + @@ -1217,9 +1225,11 @@ --> - + + + - + @@ -1246,17 +1256,20 @@ - - - - - - - - - - - + + + + + + + + + + + + + + diff -Nru beast2-mcmc-2.6.6+dfsg/debian/changelog beast2-mcmc-2.6.7+dfsg/debian/changelog --- beast2-mcmc-2.6.6+dfsg/debian/changelog 2021-08-23 14:40:39.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/debian/changelog 2022-04-22 13:59:01.000000000 +0000 @@ -1,3 +1,10 @@ +beast2-mcmc (2.6.7+dfsg-1) unstable; urgency=medium + + * New upstream version 2.6.7+dfsg + * Reworking debian/copyright + + -- Pierre Gruet Fri, 22 Apr 2022 15:59:01 +0200 + beast2-mcmc (2.6.6+dfsg-2) unstable; urgency=medium * Lowering heap size on 32 bit architectures diff -Nru beast2-mcmc-2.6.6+dfsg/debian/copyright beast2-mcmc-2.6.7+dfsg/debian/copyright --- beast2-mcmc-2.6.6+dfsg/debian/copyright 2020-09-30 06:08:29.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/debian/copyright 2022-04-22 13:53:50.000000000 +0000 @@ -6,10 +6,116 @@ Files-Excluded: */*.jar Files: * -Copyright: 2002-2011 Alexei Drummond and Andrew Rambaut -License: LGPL-3+ +Copyright: 2002-2011 Alexei Drummond, Andrew Rambaut, and Walter Xie +License: LGPL-2.1+ + +Files: release/Mac/stub/* +Copyright: 2014-2021 Tobias Fischer +License: Expat + +Files: src/beast/app/tools/LogCombinerDialog.java + src/beast/app/treeannotator/TreeAnnotator.java + src/beast/app/treeannotator/TreeAnnotatorDialog.java + src/beast/evolution/alignment/distance/* + src/beast/evolution/branchratemodel/* + src/beast/evolution/likelihood/BeagleTreeLikelihood.java + src/beast/evolution/speciation/* + src/beast/evolution/tree/* + src/beast/math/* + src/beast/util/FrequencySet.java + src/test/beast/beast2vs1/* +Copyright: 2002-2010 Alexei Drummond and Andrew Rambaut +License: LGPL-2+ + +Files: src/beast/evolution/operators/JointOperator.java + src/beast/evolution/tree/TreeTraceAnalysis.java + src/beast/app/draw/IntegerListInputEditor.java + src/test/beast/evolution/tree/RandomTreeTest.java +Copyright: 2012-2015 Tim Vaughan +License: GPL-3+ + +Files: src/beast/core/parameter/GeneralParameterList.java + src/beast/app/beauti/JPackageRepositoryDialog.java +Copyright: 2013-2014 Tim Vaughan +License: LGPL-2.1+ + +Files: src/beast/evolution/alignment/Sequence.java + src/beast/evolution/alignment/Alignment.java + src/beast/evolution/likelihood/TreeLikelihood.java + src/beast/evolution/likelihood/ThreadedTreeLikelihood.java + src/beast/evolution/likelihood/ThreadedLikelihoodCore.java + src/beast/evolution/likelihood/LikelihoodCore.java + src/beast/evolution/operators/Exchange.java + src/beast/evolution/operators/TreeOperator.java + src/beast/evolution/operators/SubtreeSlide.java + src/beast/evolution/operators/Uniform.java + src/beast/evolution/operators/WilsonBalding.java + src/beast/evolution/operators/ScaleOperator.java + src/beast/evolution/tree/Node.java + src/beast/evolution/sitemodel/SiteModel.java + src/beast/evolution/substitutionmodel/Frequencies.java + src/beast/evolution/substitutionmodel/TN93.java + src/beast/evolution/substitutionmodel/GeneralSubstitutionModel.java + src/beast/evolution/substitutionmodel/SubstitutionModel.java + src/beast/evolution/substitutionmodel/HKY.java + src/beast/util/MersenneTwisterFast.java + src/beast/util/PackageManager.java + src/beast/util/XMLParserException.java + src/beast/util/JSONParserException.java + src/beast/util/XMLProducer.java + src/beast/util/ClusterTree.java + src/beast/util/TreeParser.java + src/beast/util/JSONParser.java + src/beast/util/XMLParser.java + src/beast/util/PackageDependency.java + src/beast/util/Randomizer.java + src/beast/core/Distribution.java + src/beast/core/Input.java + src/beast/core/Description.java + src/beast/core/BEASTObject.java + src/beast/core/State.java + src/beast/core/util/CompoundDistribution.java + src/beast/core/MCMC.java + src/beast/core/Citation.java + src/beast/core/BEASTInterface.java + src/beast/core/Logger.java + src/beast/app/BeastMCMC.java + src/beast/app/DocMaker.java + src/beast/app/ModelBuilder.java + src/beast/app/draw/Document.java + src/beast/app/draw/InputShape.java + src/beast/app/draw/Selection.java + src/beast/app/draw/HelpBrowser.java + src/beast/app/draw/Arrow.java + src/beast/app/draw/Shape.java + src/beast/app/draw/ModelBuilder.java + src/beast/app/draw/BEASTObjectShape.java + src/beast/app/draw/TrackPoint.java +Copyright: 2010 Remco Bouckaert +License: LGPL-2+ -Files: src/org/apache/commons/math/* +Files: src/beast/app/treeannotator/TreeSetParser.java +Copyright: 2011 Remco Bouckaert +License: GPL-2+ + +Files: src/beast/app/treeannotator/RealNumberField.java +Copyright: 2009 JAM Development Team +License: LGPL-2.1+ + +Files: src/beast/core/Operator.java +Copyright: 2011 BEAST2 Core Team +License: LGPL-2+ + +Files: src/beast/core/parameter/BooleanParameter.java + src/beast/evolution/operators/BitFlipOperator.java +Copyright: 2010 Joseph Heled jheled@gmail.com +License: LGPL-2+ + +Files: src/beast/math/MachineAccuracy.java +Copyright: 2010 BEAST II Developer Group +License: LGPL-2+ + +Files: src/org/apache/* Copyright: 2003-2016 The Apache Software Foundation License: Apache-2.0 @@ -17,8 +123,11 @@ Copyright: 2010-2015 The Android Open Source Project License: Apache-2.0 -Files: src/beast/app/treeannotator/TreeSetParser.java -Copyright: 2011 Remco Bouckaert +Files: debian/* +Copyright: 2011-2012 Andreas Tille + 2022-2022 Pierre Gruet +License: LGPL-3+ + License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,10 +142,6 @@ On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. -Files: src/beast/app/draw/IntegerListInputEditor.java - src/beast/evolution/operators/JointOperator.java - src/beast/evolution/tree/TreeTraceAnalysis.java -Copyright: 2012-2015 Tim Vaughan License: GPL-3+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,10 +156,6 @@ On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-3'. -Files: debian/* -Copyright: 2011-2012 Andreas Tille -License: LGPL-3+ - License: LGPL-3+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -91,3 +192,30 @@ . On Debian systems you can find the full text of the Apache 2.0 license at /usr/share/common-licenses/Apache-2.0. + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + +License: LGPL-2+ + On Debian systems the full text of the LGPL-2 can be found in + /usr/share/common-licenses/LGPL-2 + +License: LGPL-2.1+ + On Debian systems, the complete text of the GNU Lesser General Public + License version 2.1 can be found in ‘/usr/share/common-licenses/LGPL-2.1’. diff -Nru beast2-mcmc-2.6.6+dfsg/Dockerfile beast2-mcmc-2.6.7+dfsg/Dockerfile --- beast2-mcmc-2.6.6+dfsg/Dockerfile 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/Dockerfile 2022-04-04 07:18:36.000000000 +0000 @@ -6,16 +6,21 @@ # To run the tests, use # docker run beast_testing # +# To run just the core tests, use +# docker run beast_testing test-core +# # To run the tests interactively, use -# docker run -it -p 5900:5900 beast_testing /bin/bash +# docker run --entrypoint /bin/bash -it -p 5900:5900 beast_testing # This will give you a shell in the container. From this # shell, run -# vncserver $DISPLAY -geometry 1920x1080; ant -f build-testing.xml +# ./entrypoint.sh +# or +# ./entrypoint.sh test-core # # The previous command exposes the VNC session, so while the -# BEAUti test suite is running you can run a VNC viewer and -# connect it to localhost (password: password) to observe -# the graphical output of these tests. +# BEAUti test suite is running you should be able to run a +# VNC viewer and connect it to localhost (password: password) +# to observe the graphical output of these tests. FROM openjdk:8 diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP-b1.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP-b1.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP-b1.xml 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP-b1.xml 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,661 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CTCTTGGCACTTCTCTCGTGCCTGACCGTCCCTGCCTCGGCCATACACTATCGCAATGCTTCGGATGTCTACCACGTCACCAATGACTGTCCGAATTCCAGCATAGTCTATGAGTCTGAAAACCACATCCTACACCTTCCGGGGTGTGTGCCCTGTGTGAGGATTGGGAACGTGTCACAATGCTGGGTGGCCCTAACCCCCACCGTGGCGGCGCCGTACCTCAATGCTCCGGTCGACTCCCTACGGAGGCACGTGGACCTGATGGTTGGCGCCGCTACTATGTGCTCAGCATTTTATGTTGGGGACCTGTGCGGGGCTGTGTTCCTGGCGGGCCAGTTGGTGACGTTTCGACCGCGACGCCACTGGACCACTCAAGATTGTAACTGTTCCATCTATGCCGGGCACATCACA + + + + CTCTTGGCACTTCTCTCGTGCCTGACCGTTCCTGCATCAGCCATCCACTATCGCAACAGCTCGGGCGTCTACCACATCACCAATGACTGCCCCAATTCCAGCATAGTGTACGAGACTGACCATCACATCCTACACCTCCCAGGATGCGTGCCCTGTGTGAGGAGCGGGAACGAGTCGCGATGCTGGGTGTCCTTAACCCCCACCGTGGCAGCGCCGTACCAAAATGCACCACTTCAGTCCTTGCGACGGCATGTAGACCTGATGGTGGGCGCTGCTACCATGTGTTCTGCCCTTTATATCGGCGACTTGTGTGGGGGCTTGTTTTTGATAGGCCAGGCTTTTACTTTCCAACCACGCCGCCATTGGACTACTCAGGATTGCAATTGCTCCATCTACTCAGGCCACATCACA + + + + CTTTTGGCACTTCTCTCGTGCCTGACCGTTCCCGCATCAGCCATTCACTATCGCAACAGCTCGGGCATCTACCACATCACCAATGACTGCCCCAACTCCAGCATAATTTATGAGGCTGACCATCACATCCTACACCTCCCAGGATGCGTGCCCTGTGTGAGGAGCGGGAACGTGTCGCGATGCTGGGTGTCCTTGACCCCCACCGTGGCAGCGCCGCACCTCAACGCACCACTTCGGTCCTTGCGACGGCATGTGGATCTGATGGTGGGCGCCGCTACTATGTGTTCTGCCTTTTACATCGGCGACTTGTGTGGGGGTTTGTTTCTGATAGGCCAGGCCTTTACTTTCCAACCACGCCGCCACTGGACTACCCAGGATTGCAATTGCTCCATCTACTCAGGCCACATTACA + + + + CTTTTGGCACTTCTCTCGTGCCTGACCGTTCCTGCATCAGCCATTCACTATCGCAACAGTTCGGGCGTCTACCACGTCACCAATGACTGCCCCAATTCCAGCATAGTTTATGAGGCTGACCATCACATCCTACACCTCCCAGGATGCGTGCCCTGTGTGAGGAGCGGGAACGTGTCGCGATGCTGGGTGTCCTTAACCCCCACCGTGGCGGCGCCATACCTCAATGCGCCACTTCAGTCCTTGCGACGGCATGTGGACCTGATGGTGGGCGCTGCTACCATGTGTTCTGCCCTTTACATCGGCGACTTGTGTGGGGGCCTGTTTCTGATAGGCCAGGCCTTTACTTTCCAACCACGCCGCCACTGGACTACTCAGGATTGCAATTGCTCCATCTATTCAGGCCACATCACA + + + + CTTTTGGCACTTCTTTCGTGCCTGACCGTTCCTGCATCAGCCACTCACTATCGCAATAGTTCGGGTGTCTACCACATCACTAATGACTGCCCGAATTCCAGCATAGTTTATGAGGCTGACCATCACATCTTACACCTCCCAGGATGCTTGCCCTGTGTGAAGAGCGGGAACGTGTCGCGATGCTGGGTGTCCTTAACCCCCACCGTGGCAGCGCCGCATCATAACGCACCACTTRAGTCCTTGCGACGGCATGTGGACCTGATGGTGGGCGCTGCTACCATGTGTTCTGCCCTCTACATCGGCGACTTGTGCGGGGGCTTGTTTCTGATAGGCCAGGCCTTTASTTTCCAACCGCGCCGCCACTGGACTACTCAGGATTGTAATTGCTCCATCTATACAGGCCACATTACA + + + + CTTCTGGCACTCCTCTCGTGCCTGACCGTCCCCGCATCGGCCATACACTATCATAACACCTCGGGCATCTACCACATCACCAATGATTGCCCAAATTCCAGCATAGTCTATGAGTCCGATCATCACATAATGCACCTTCCGGGGTGCGTGCCATGTGTGATGGAAGGGAACAGATCCAGGTGTTGGGTGGCCCTGTCTCCCACAGTGGCGACCTCACACGTTGGTGCTCCAGTTGAGTCCATGCGACGACATGTGGACCTGATGGTGGGCGCTGCCACTTTGTGCTCCGCCCTATACGTCGGGGACTTGTGCGGAGGTGTGTTTCTGGTTGGTCAGATGTTCACCTTTCAGCCTCGTCGCCACTGGACTACCCAGGACTGCAACTGCTCAATCTATTCTGGGCATGTCACG + + + + CTCTTGGCACTCCTTTCATGCCTGACCGTTCCCGCCTCGGCCATACACTATCGCAATGCTTCGGACGTCTACCACATCACCAACGACTGTCCGAATTCCAGCATAGTCTATGAATCCGAGAATCACATCTTACACCTTCCGGGGTGCGTACCCTGTGTGAAGGTCGGGAATAGGTCACAATGCTGGGTGGCCCTAACCCCCACCGTGGCGGCGTCGTACCTCAATGCTCCAATCGACTCCTTACGGAAGCACGTGGACCTGATGGTTGGCGCCGCTACTGTGTGCTCAGCTCTCTATGTTGGAAACGTGTGCGGGGCTGTGTTCCTGGCGGGCCAGATGGTGACGTTTCGACCGCGGCGCCACTGGACCACTCAGGAGTGCAACTGTTCCATCTATGCTGGGCACCTCACA + + + + CTCTTGGCACTCCTTTCATGCCTGACCGTTCCCGCCTCGGCCATACACTATCGCAATGCTTCGGACGTCTACCACATCACCAACGACTGTCCGAATTCCAGCATAGTCTATGAATCCGAGAATCACATCTTACACCTTCCGGGGTGCGTACCCTGTGTGAAGGTCGGGAATAGGTCACAATGCTGGGTGGCCCTAACCCCCACCGTGGCGGCGTCGTACCTCAATGCTCCAATCGACTCCTTACGGAAGCACGTGGACCTGATGGTTGGCGCCGCTACTGTGTGCTCAGCTCTCTATGTTGGAGACGTGTGCGGGGCTGTGTTCCTGGCGGGCCAGATGGTGACGTTTCGACCGCGGCGCCACTGGACCACTCAGGAGTGCAACTGTTCCATCTATGCTGGGCACGTCACA + + + + CTTTTGGCACTTCTCTCGTGCCTGACCGTCCCCACGTCGGCCATACACTATCATAACACCTCGGGCATCTATCACATCACCAACGATTGCCCAAATTCCAGCATAGTTTATGAGTCCGACTACCACATAGTGCACCTTCCGGGGTGCGTACCATGTGTGAGAACCGGAAACGCGTCGACGTGTTGGGTGGCCTTGTCTCCCACAGTGGCGGCCCCATACATCGGTGCTCCAGTTGAGTCTCTACGGCGACACGTGGACCTGATGGTGGGAGCTGCCACCTTGTGCTCTGCCCTATATGTCGGGGACCTGTGCGGAGGTGCGTTTCTGGTCGGCCAGATGTTCACCTTCCGCCCTCGTCTCCACTGGACCACCCAGGACTGCAACTGTTCAATCTACTCTGGGCATATCACG + + + + CTCTTGGCACTTCTCTCGTGCCTGACCGTCCCCGCATCGGCCATACACTATCATAACACCTCGGGCATCTATCACATCACCAATGATTGCCCAAATTCCAGCATAGTTTATGAGTCCAGCAACCACATAATGCACCTTCCGGGGTGTGTACCATGTGTGAGGAGCGGGAACGTGTCGAGCTGTTGGGTGGCTTTAACTCCCACAGTGGCGGCCCCATACGTCGGTGCTCCAGTTGAGTCTCTACGACGACACGTGGACCTGATGGTGGGTGCTGCCACTTTGTGCTCCGCCCTATATGTCGGGGACCTGTGCGGAGGTGTGTTTCTGGTGGGTCAGATGTTCACCTTCCGCCCCCGCCTCCACTGGACTACTCAAGACTGTAACTGTTCAATCTATTCTGGGCATGTCACG + + + + CTCTTGGCACTTCTCTCGTGCCTGACCGTCCCCGCATCGGCCATACACTATCATAACACCTCGGGCATCTATCACATCACCAATGATTGCCCAAATTCCAGCATAGTTTATGAGTCCAGCAACCACATAATGCACCTTCCGGGGTGTGTACCATGTGTGAGGAGCGGGAACGTGTCGAGGTGTTGGGTGGCTTTAACTCCCACAGTGGCGGCCCCATACGTCGGTGCTCCAGTTGAGTCTCTACGACGACATGTGGACCTGATGGTGGGTGCTGCCACTTTGTGCTCCGCCCTATATGTCGGGGACCTGTGCGGAGGTGTGTTTCTGGTGGGTCAGATGTTCACCTTCCGCCCCCGCCTCCACTGAACTACTCAAGACTGTAACTGTTCAATCTATTCTGGGCATGTCACG + + + + CTCTTGGCACTCCTCTCGTGCCTGACTGTCCCCGCATCAGCCACGCATTATCGCAATGCTTCGGGCGTCTACCACATCACCAACGACTGCCCGAATTCCAGCATAGTGTACGAGGGTCAGCATCACATCCTGCACCTTCCCGGGTGTGTACCCTGTGTCAAAACCGACAACGTATCGCGGTGTTGGGTAGCTTTGACCCCCACTGTGGCGGCTCCCTACCTCAATGCTCCAACAGAAGAGCTCAGGCACCATGTGGACATGCTGGTGGGTGCCGCTACTTTTTGCTCCGCCCTTTACATCGGCGACTTGTGTGGGGGAGCCTTCTTAGTGGGCCAGCTATTCACATTCCGGCCGCGTCGCCATTGGACCACGCAGGATTGCAACTGTTCCATCTACGCTGGTCACATCACA + + + + CTCTTGGCACTCCTCTCGTGCCTGACTGTCCCCGCATCGGCCGCACATTATCGCAATGCTTCGGGTGTCTACCATATCACCAATGACTGCCCGAATTCTAGCATAGTGTACGAGGCTGATCACCACATCATGCACCTTCCGGGGTGCGTGCCCTGCGTCAAGACCGGCAACGTATCGCGGTGTTGGGTAGCTTTGACCCCCACTGTGGCGGCCCCCTACCTCAATGCTCCAACAGAAGCGCTTAGGCGCCATGTGGACTTGATGGTGGGTGCCGCCACTTTCTGCTCCGCCCTTTACATCGGCGATTTGTGTGGGGGAGCCTTCTTAGTGGGCCAACTATTCACATTCCGGCCGCGTCGCCATTGGACCACGCAGGACTGCAACTGCTCCATCTACACCGGTCACATCACA + + + + CTTTTGGCACTTCTCTCGTGCCTGACTGTTCCTGCATCAGCCATTCACTATCGCAACAGTTCGGGCATCTACCACATCACCAACGATTGCCCAAATTCTAGCATAGTTTATGATTCTGACCATCACATCCTACACCTCCCAGGATGCGTACCCTGTGTGAGGAGCGGGAACATGTCGCGATGCTGGGTGTCCTTAACCCCCACCGTGGCAGCGCCGTATCCCAACGCACCACTTCAGTCCTTGCGACGGCATGTAGACCTGATGGTGGGCGCTGCTACCATGTGTTCAGCCTTCTACGTCGGCGACCTGTGTGGGGGCCTATTTTTGATAGGCCAGGCCTTTAATTTCCAACCACGCCGCCACTGGACTACTCAGGATTGCAATTGCTCCATCTATACAGGCCACATCACA + + + + CTCTCGGCACTTCTCTCGTGCTTGACTGTCCCCGCTTCGGCCGTCAACTATCGCAACATCTCGGGCGTCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTCCCAGGTTGTGTGCCCTGCGTGAGAGTGGGGAATCAGTCGCGTTGCTGGGTGGCCCTTACCCCTACCGTCGCAGCGCCATACATTGGCGCGCCGCTTGACTCCCTGCGGAGTCACGTGGATCTGATGGTGGGAGCAGCCACTGTTTGCTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCGCCTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACTACCCAGGATCGCAATTGTCCCATCTACACTGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTTCCCGCTTCGGCCATCAACTACCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGCCCAAATTCAAGCATAGTATATGAGGCCGACCATCACATCCTGCACCTTCCGGGTTGTGTGCCCTGTGTGAGGGAGGGGAATCAGTCGCGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCCTGCGGAGTCACGTGGATCTGATGGTGGGAGCCGCTACTGTTTGCTCACCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTTGGTCAAATGTTCTCTTTCCGACCACGGCGTCACTGGACTACTCAGGAATGCAATTGTTCCATCTACGCGGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGCCCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGAGAATCAGTCTCGCTGCTGGGTGGCCCTCACTCCTACCGTCGCAGCGCCATATATCGGCGCGCCGCTTGATTCCCTGCGGAGTCATGTGGATCTGATGGTGGGAGCTGCCACTGCTTGTTCGGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAAATTTTTCCTTTCAGACCACGGCGCCACTGGAATACCCAGGAATTGCATTGTTCCATCTATACAGGGCACATCACG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCCTCGGCCACTAATTACCGCAATGCTTCGGGTGTCTACCACGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCATCTTCCAGGCTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCCACCGTCGCGACGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCTTCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGCCCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGAGAATCAGTCTCGCTGCTGGGTGGCCCTCACTCCTACCGTCGCAGCGCCATATATCGGCGCGCCGCTTGATTCCCTGCGGAGTCATGTGGATCTGATGGTGGGAGCTGCCACTGCTTGTTCGGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTTTCTTTCAGACCACGGCGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCACTTCGGCTATCAGCTATCGCAATGTCTCGGGCATTTATCACATCACCAACGACTGCCCGAATTCAAGCATAGTATATGAGGCCGACCATCACATCTTGCACTTTCCAGGTTGCGTGCCCTGTGTGAGAGAGGGGAATCAGTCGCGTTGCTGGGTGGCCCTTACCCCTACCGTCGCAGCGCCATACATCGGCGCGCCACTTGAGTCCCTACGGGGTCATGTGGATTTGATGGTGGGGACCGCCACTRTTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTATTCCTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACCACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACC + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCTATCAACTACCATAATGCCTCGGGCATCTACCATGTCACCAAYGATTGCCCGAATGCAAGCATAGTGTATGAGGCCGACCACCACATCTTGCACCTTCCAGGTTGCTTGCCCTGTGTGAGAGTGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACCCCTACCGTTGCAGCGCCATACATCGGCGCACCGCTTGAGTCCTTGCGGAGTCATGTGGATCTAATGGTGGGGGCTGCCACTGCYTGTTCAGCCCTCTACATCGGAGACTTGTGCGGCGGCCTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCGCGACGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATTACT + + + + CTCTTGGCACTTCTCTCGTGCTTGACTGTCCCCGCTTCGGCCACCAACTATCGCAACGCTTCGGGCGTCTACCATGTCACCAATGACTGCCCGAACTCAAGCATAGTGTATGAGGCCGACTATCACATCCTACACCTCCCAGGTTGTGTGCCTTGTGTGAAAACAGGGAACCAGTCACGTTGTTGGGTGGCCCTTACTCCTACTGTCGCAGCGCCATACATCGGTGCGCCGCTTGAGTCCTTACGGAGTCATGTGGATCTGATGGTGGGGGCAGCCGCCGCTTGTTCAGCCCTTTATGTCGGGGACCTGTGCGGCGGCGTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGTCACTGGACTACCCAGGATTGCAATTGTTCTATCTACACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCCTCGGCCGTTAACTACCACAATGTCTCGGGCATTTACCACGTCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCACCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGGGTGGGGAATCAATCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACGTTGGCGCGCCACTTGAGTCTTTGCGGAGTCATGTGGATTTGATGGTGGGGGCTGCCACTGTTTGCTCAGCCCTTTACATCGGGGATTTATGCGGTGGTTTGTTCCTGGTCGGTCAGATGTTTTCTTTCCGGCCACGGCGCCACTGGACCACCCAGGATTGCAACTGTTCCATCTATACAGGGCACATCATG + + + + CTCTTGGCACTTCTTTCGTGCCTGACTGTCCCCGCTTCGGCCACCAATTACCGCAATGCCTCGGGCATCTACCATGTTACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCATATCTTNCACCTTCCAGGTTGCGTGCCCTGTGTGAGAGTGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACCCCTACCGTCGCAGCGCCATACATCGGCGCGCCACTTGAGTCCTTGCGGAGTCATGTGGACCTGATGGTGGGGACTGCCACTGTTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTTTTGGTTGGTCAGATGTTCTCTTTCCGACCGCGGCGCCACTGGACCACCCAGGATTGCAATTGTTCCATCTATACAGGACACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCACCTCGGCCATCAACTATCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGTCCGAACTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCATCTCCCAGGWTGCGTGCCCTGTGTGAGAGTGGGGAATGTGTCAAGMTGTTGGGTGGCCCTTACCCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCTCTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATTTATGTGGCGGCTTGTTTTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTTTCGTGCCTGACTGTCCCCGCTTCGGCCACCAACTACCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCCTGCACCTTCCAGGTTGCGTGCCTTGCGTGAGGGTGGGGAATCAGTCACGTTGCTGGGTGGCTCTTACCCCTACTGTCGCAGCGCCACACATCGGCGCGCCACTTGAGTCCTTGCGGAGTCATGTGGACTTGATGGTGGGGACTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGTGGCTTGTTTTTGGTTGGTCAGATGTTCTCTTTCCGACCGCGGCGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTACACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCCTCGGCCACTAATTACCGCAATGCTTCGGGTGTCTACCACGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCATCTTCCAGGCTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGWTGCTGGGTGGCCCTTACTCCCACCGTCGCGACGCCATACATCGGCGCACCGSTTGAGTCCCTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGYTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGWTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCTTCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATCGCAATGCTTCGGGTATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTACGAGGCCGACCACCACATTTTACACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGAGTCATGTGGATTTGATGGTGGGGGCTGCCACTGTCTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGTGTGTTCTTGGTCGGTCAGATGTTTTCTTTCCGACCACGACGCCACTGGACTACCCAGGATTGCAATTGCTCCATCTATACAGGGCACATCATG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTACCGCAATGCTTCGGGCATCTACCATATCACCAATGATTGCCCGAATTCAAGCATAGTGTATGAGGCCGATCACCACATCTTGCACCTTCCAGGCTGCGTGCCCTGCGTGAGATCGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCGGCGCCACACATCGGCGCRCCGCTTGAGTCCTTGCGGAGTCAYGTGGATCTGATGGTGGGAACTGCCACTGTTTGTTCAGCCCTTTACATCGGCGATTTGTGTGGYGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCGCGGCGCCACTGGACTACCCAGGATTGCAACTGTTCCATCTATACAGGGCACATYACT + + + + CTCTTGGCACTTCTCTCATGCCTGACTGTCCCTGCTTCGGCTATTAACTATCGCAATGYTTCGGGCATTTACCAYGTCACCAATGACTGTCCGAATTCTAGCATAGTGTATGAGGCCGATCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAAGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCATCGCAGCGCCATTCATCGGCGCGCCGCTTGAGTCTCTGMGGAGTCATGTGGAYTTGATGGTGGGGGCTGCYACTGCTTGTTCGGCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACKACCCAGGACTGTAAYTGKTCCATCTATACAGGGCACATTACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCRTCAACTACCGCAAYGTCTCGGGCATCTACCATGTCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCAYCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAAACAGGGGAATCAGTCACGTTGCTGGGTGGCCCTCACYCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCCTGCGGAGTCATGTGGATTTRATGGTGGGAGCTGCCACTGTTTGTTCAGCCTTTTACATCGGCGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTCTCMTTCCGACCACGGCGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCATG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTATCGCAATGTTTCGGGCGTCTACCACGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGAGCATCACATCTTGCACCTCCCAGGTTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCAAGTTGCTGGATGGCCCTTACCCCTACTGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCTTGCGGAGTCATGTGGATCTGATGGTGGGGGCCGCCACTGTTTGTTCAGCCCTTTACATCGGCGATCTGTGTGGCGGCTTGTTCTTGGTTGGCCAAATGTTCTCTTTCCAACCGCGGCGCCACTGGACCACCCAGGAGTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCYATCAACTACCGCAATGCYTCGGGCGTCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCAYATCTTGCACCTTCCAGGATGCGTGCCCTGCGTGAAAGTGGGAAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATATRTTGGCGCGCCGCTTGAGTCCYTGCGGAGTCATGTGGACCTGATGGTGGGAGCTGCTACTGTCTGCTCAGCCCTTTACATTGGGGATTTGTGTGGCGGCGTGTTCTTGGTCGGCCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACTACCCAGGAGTGCAATTGTTCCATCTATACAGGGCAACTTACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCTGCTTCGGCCATCAATTACCGCAATGCCTCGGGCGTTTACCACATCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCATCTTCCAGGTTGCGTGCCCTGCGTAAGAGTGGGGAATCAGTCACGCTGCTGGGTGTCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCACCACTTGAGTCTCTACGGAGTCATGTAGACTTGATGGTGGGAGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTTCTGGTCGGTCAGATGTTCTCTTTCCGACCGCGACGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTACCACAATGTCTCGGGCATCTACCATGTCACCAATGATTGCCCGAACTCAAGCATAGTGTATGAGGCCGAGCACCACATCCTGCACCTTCCTGGTTGCGTGCCCTGCGTGAGAGTGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGACTCCTTGCGGAGTCATGTGGATTTGATGGTGGGAACCGCCACTGTTTGTTCAGCTCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTTTCTTTTCAACCACGGCGCCATTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGACACATCACT + + + + CTCTTGGCACTTCTCTCGTGCTTGACTGTCCCCGCTTCGGCCATTAACTACCGCAATGCGTCGGGCATCTACCATGTCACCAATGATTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGTGTGAGAGTGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCCACCGTCGCAGCGCCATACATCGGCGCGTCACTTGCATCTTTGCGGAGTCATGTGGATCTGATGGTGGGGACCGCCACTGTTTGTTCAGCCCTCTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCAACCACGGCGCCACTGGACTACCCAGGATTGCAATTGTTCTATCTATACAGGGCACATCACT + + + + CTCTTGSCACTTCTCTCGTGCCTGACTGTCCCCACTTCGGCCATTAACTACCATAATGTTTCGGGCATCTATCACGTCACCAATGATTGTCCGAATTCAAGCATTGTGTATGAGGCCGATCATCACATCTTGCACGTTCCAGGCTGTGTGCCCTGCGTGAGAGAGGGAAATCAGTCACGTTGCTGGGTGGCCATTACTCCTACCCTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCCTGCGGAGTCACGTGGATMTGATGGTGGGGGCTGCCACTGCTTGNTCAGCCCTTTACATCGGGGATTTGTGTGCCGGTCTGTTCTTGGTTGGTCAGATGTTATCTTTCCGACCACGGCGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATACAGGAGCGNGTGTT + + + + CTTTTGGCACTTCTCTCGTGCCTGACCGTCCCCGCTTCGGCCACCAACTATCGCAATGTCTCGGGCGTCTACCACATCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAAAGAGGGGAACCGGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACCTTGGCGCGCCACTTGAGTCTTTACGGAGCCATGTGGACTTGATGGTGGGAGCTGCCACTGCTTGTTCAGCCCTTTACATCGGAGACTTGTGTGGTGGCTTGTTCCTGGTTGGTCAGATGTTCTCTTTCCGACCACGACGCCACTGGACTACCCAAGAATGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTAGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCGTTAACTACCGCAATGCTTCGGGTGTCTATCATATCACCAATGATTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCATGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGGGAACCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCATYGCAGCGCCATACATCGGCGCGTCGCTCGAGTCCTTGCGGAGTCATGTGGATGTGATGGTGGGGGCYGCCACTGTTTGTTCAGCCCTTTACATCGGGGACTTGTGTGGTGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCRCGGCGCCACTGGACTACCCAGGACTGCAACTGTTCCATTTATACAGGGCAGATACTG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATCGCAATGCCTCGGGCATCTATCACGTCACCAATGACTGCCCGAATTCGAGCATAGTGTATGAGGCCGACAACCACATCCTGCACCTTCCAGGTTGCGTGCCCTGTGTGAAAGAGGGGAATCAGTCACGTTGCTGGGTGTCCCTTACTCCCACCGTCGCAGCGCCATACATCGGCGCGCCACTTGCGTCTCTACGGAGTCACGTGGATTTGATGGTGGGGGCTGCCACTGTTTGTTCAGCCCTCTACATCGGGGACTTGTGCGGCGGCTTGTTCTTGGTTGGCCAGATGTTCTCTTTCCAACCACGGCGTCACTGGACCACCCAGGATTGTAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCTGTCAACTACCGCAAYGCTTCGGGCGTTTACCATATCACCAATGAYTGTCCGAATGGAAGCATAGTGTATGAGGCCGACCATCACATYTTGCACCTCCCAGGTTGCGTGCCCTGCGTGAGARAGGGGAATCAGTCACGTTGCTGGGTAGCCCTTACTCCTACCMTCGCGGCGCCACACATCGGCGCGCCACTTGAATCTCTACGGAAACATGTGGATTTGAKGGTGGGAGCTGCTACWGCCTGTTCAGCCCTTTACATCGGGGATTTGTGTGCCGGCTTGTTCTTGGTCGGTCAGATGTTATCATTCCGACCACGACGCCACTGGACTACCCAGGATTGCAGTTGTTCCATCTAAACAGGACGAAGTGTT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTACCGCAATGTCTCGGGCATTTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGTTGCTGGGTGGCCCTAACTCCTACCGTCGCGGCACCACACATCGGTGCGCCACTTGAGTCTCTACGGAGTCATGTGGATTTGATGGTGGGGACCGCCACTGTTTGTTCAGCCCTTTACATCGGGGATTTATGTGGTGGTTTGTTCCTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGTCACTGGACCACCCAGGATTGCAATTGTTCCATCTACACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTACCGCAATGCTTCGGGCGTTTACCACATCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCATGCACCTTCCAGGTTGCGTGCCCTGCGTGAGGACGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGTGCCGTATATTGGCGCGCCACTTGACTCTCTTCGGAGTCATGTGGATTTGATGGTGGGGGCTGCTGCTGCTTGTTCAGCCCTTTACGTCGGGGACTTGTGTGGTGGCGTGTTCCTGGTCGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACTACCCAGGACTGCAACTGTTCCATCTACACAGGGCACATTACT + + + + CTCTTGGCACTTCTCTCGTGCCTGAGTGTCCCCGCCTCGGCAATTAATTACCGCAATGCTTCGGGTGTCTACCACGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCATCTTCCAGGCTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCCACCGTCGCGACGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGATTCATGTGGATCTGATGGTGGGGGCTGCCATTGCTTGTTCACCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTCGGTCAGATGTTCTCTTCCCGACCAAGGCTTCACTGGACTACTCAGGATCGCCATTGTTCCATCTATACGGGGCACATCTCC + + + + CTCTTGGCACTCCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTATCACAACACCTCGGGCGTCTACCACGTCACCAATGACTGCCCGAATTCAAGCATAGTCTATGAGGCCGACCATCACATCTTGCATCTCCCAGGGTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCACGTTGCTGGGTGGCCCTCACCCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCTTGCGGAGTCACGTGGATCTGATGGTGGGGGCAGCTACTGTCTGCTCTGCCCTTTACATCGGGGATTTGTGTGGCGGCGTGTTCTTGGTTGGTCAGATGTCCTCTTTCCGACCACGGCGCCACTGGACTACCCAGGAGTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCACTAACTACCGCAACGCTTCGGGCATCTACCATGTCACCAATGACTGCCCGAATGCGAGCATAGTGTATGAGGCCGACCATCACATCCTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAAAGGGGAATCAGTCAAGCTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCTTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGTCTGTTCAGCCCTCTACATCGGGGATTTGTGTGGCGGCGTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGACGCCACTGGACTACCCAGGATTGCAATTGTCCCATCTATACAGGGCCCATTACT + + + + CTTCTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATAGCAACGTCTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGACCGAACATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGCGTGACGGGAATCAGTCGCGTTGCTGGGTGGCCCTTACCCCTACCGTCGCAGCGTCACGACTCGACGCGCCGCTTGAGTCCTTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGCTTGCTCAGCCCTTTACATCGGGGATTTGTGTGGCGGTCTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGCCCACGGCGCCTCTGGACTACCCAGGATTGCAATTGTTCCATTTATACAGGGCACATCACT + + + + CTTTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTATCGCAATGTCTCGGGCATCTACCACGTCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGGACGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCACTTGAGTCTCTACGGAGTCATGTGGATTTGATGGTGGGGGCTGCCACTGTTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCCTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACCACCCAGGATTGCAATTGTTCCATCTATACGGGGCACATCACT + + + + CTCTTGGCACTTCTTTCGTGCCTGACTGTTCCCNCTTCGGCCACTAACTATCGCAATGTTTCGGGCATCTACCATGTTACCAACGACTGCCCGAATTCAAGCATAGTATATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGYGTGAAAGTCGGGAACCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGYGCTCCGCTTGAGTCCCTGCGGAATCATGTGGATYTGATGGTGGGGGCTGCCACTGTTTGTTCAGCCCTTTACATCGGRGAYTTGTGTGGCGGCTTGTTTTTGGTTGGTCAGATGTTTTCTTTTCGGCCACGACGCCACTGGACTACCCAAGACTGCAACTGTTCCATCTATACGGGACACATCATG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCACCAACTATCGCAATGTCTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGATCACCACATCTTGCACTTGCCAGGTTGCGTGCCCTGCGTGCAAACGGGGAATCAGTCACGTTGCTGGGTGGCCCTCACTCCTACCGTCGCAGCGCCGTATATCGGCGCGCCACTTGAGTCTTTACGGAGTCATGTGGATTTGATGGTGGGAGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGACTTGTGTGGCGGCCTGTTCCTGGTTGGTCAGATGTTCTCTTTCCGACCGCGGCGCCACTGGACCACCCAAGACTGCAATTGTTCCATCTACACAGGGCACATTACT + + + + CTCTTGGCACTTCTCTCTTGTCTGACTGTCCCCGCTTCGGCCACTAACTACCGCAATGTTTCGGGCATCTACCACGTCACCAATGACTGCCCGAACTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGTGTGAGGACGGGGAATCAGTCACGTTGCTGGGTGGCCCTTACCCCTACCGTCGCATCGCCATACATCGGCGCGCCACTTGCATCTCTACGGACTCATGTGGACTTGATGGTGGGGGCCGCCACTGTTTGTTCAGCCCTTTACATCGGAGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAAATGTTCTCTTTCCGACCAAGGCGCCACTGGACCACCCAGGATTGCAACTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCTTCAACTACCGCAACATCTCGGGTATTTACCATGTCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATTTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGGGAGGGGAATCAGTCGCGCTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGAGTCACGTGGATATGATGGTGGGGGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATCTGTGTGGCGGCTTGTTTCTGGTTGGTCAGATGTTTTCTTTCCGACCACGACGCCACTGGACTACCCAGGAGTGCAATTGTTCCATCTATTCAGGGCATATCACT + + + + CTCTTGGCACTTCTTTCGTGCTTGACTGTCCCCGCTTCGGCCGTTAACTACCGCAATGTCTCGGGCATCTACTATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCACCACATCTTGCACTTGCCAGGCTGCGTGCCCTGCGTGCGGGTGGGGAACCAGTCACGTTGCTGGGTGGCTCTCACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCACTTGAGTCTTTACGGAGTCATGTGGATTTGATGGTGGGGGCTGCCACTGTTTGTTCAGCCCTCTACATCGGGGATTTGTGTGGTGGCCTGTTCCTGGTTGGTCAGATGTTTTCTTTCCAACCACGGCGCCACTGGACCACCCAAGACTGCAATTGTTCCATCTATACGGGGCATATTACC + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTTCCCGCTTCGGCCGTTAACTACCGCGATGCTTCGGGCATCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCCTGCATCTCCCGGGTTGCGTGCCCTGCGTGAGAGTTGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCATCGCATCGCCATACATCGGTGCGCCGCTTGAATCCCTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGTTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGTCACTGGACCACCCAGGATTGCAATTGTTCCATCTACACGGGGCACATCACT + + + + CTCTTGGCACTACTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAATTACCGCAATGCCTCGGGCGTCTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCCTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGCTGCTGGGTGGCCCTTACTCCTACTGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCCTTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTTTTGGCTGGTCAGATGTTTTCTTTCCGGCCACGGCTCCACTGGACCACCCAGGATTGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCTTCAACTACCGCAACATCTCGGGTATTTACCATGTCACCAACGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATTTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGGGAGGGGAATCAGTCACGCTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGAGTCATGTGGATATGATGGTGGGGGCTGCCACTGCTTGTTCAGCCCTTTACATCGGGGATCTGTGTGGCGGCTTGTTTTTGGTTGGTCAGATGTTTTCTTTCCGACCACGACGCCACTGGACTACCCAGGATTGCAATTGTTCCATCTATGCAGGGCATATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATCAACTATCGCAATGCCTCGGGCATCTACCATGTCACCAATGATTGCCCGAATTCAAGCATAGTGTATGAGGCCGAATATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGCGATGGGAATCAGTCACGTTGCTGGGTGGCCCTTACTCCTACCGTTGCAGCGCCGTACGTTGGCGCGCCGCTTGAGTCCCTGCGGAGTCATGTGGATCTGATGGTGGGAGCTGCCACTGTTTGTTCAGCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTTGGTCAAATGTTCTCTTTCCAGCCACGGCGTCACTGGACTACCCAGGGTTGTAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCACTAACTATCGCAATGTCTCGGGTATCTATCATGTCACCAATGATTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAACGGGGAATCAGTCACGCTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGCCTCCCTGCGGAGTCATGTGGATCTGATGGTGGGGGCCGCCACTGCTTGTTCAGCCCTTTACATCGGGGATTTGTGTGGCGGCTTGTTCTTGGTTGGTCAGATTTTCACCTTCCGACCACGGCGCCACTGGACTACCCAGGAATGCAATTGTTCCATCTATACAGGGCACATCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCACCAACTACCACAATGCTTCGGGCGTCTACCATGTCACCAATGACTGCCCAAATTCAAGCATAGTGTTTGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCGCGCTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCGCCGCTTGAGTCTCTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGTCTGCTCAGCCTTTTACATCGGGGATTTGTGTGGTGGCGTGTTCTTGGTCGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACTACCCAAGACTGCAATTGTTCCATCTATGCAGGGCACATTACG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTATCGCAATGTCTCGGGCATTTACCACATCACCAATGACTGCCCGAATTCAAGCATAGTGTTTGAGGCCGATCACCACATCTTACACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCGCGTTGCTGGGTGGCCCTAACTCCTACCGTCGCAGCGCCGTACATCGGCGCACCACTTGAGTCCTTACGGAGTCATGTGGATTTGATGGTGGGGGCTGCCACTGCTTGTTCGGCCCTTTACATCGGGGATTTGTGTGGTGGCTTGTTCCTGGTTGGTCAGATGTTCTCCTTCCGACCACGGCGCCACTGGACTACCCAGGAATGCAATTGCTCCATCTATTCAGGACACCTCACT + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCACCTCGGCCATTAACTATCGCAATGCTTCGGGCGTTTACCATGTCACCAATGACTGCCCGAATTCAAGCATAGTGTATGAGGCCGACCATCACATCTTGCACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCACGCTGCTGGGTGGCCCTTACCCCCACCGTCGCAGCGCCATACATCGGCGCGCCACTTCAATCTCTACGGAGTCATGTGGATTTGATGGTGGGGGCCGCCACTGCTTGTTCAGCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTCGGTCAGATGTTCTCTTTCCGGCCACGGCGCCACTGGACTACCCAGGACTGCAATTGTTCCATCTATACAGGGCACATCATG + + + + CTCTTGGCACTTCTCTCGTGCCTGACTGTCCCCGCTTCGGCCATTAACTACCACAATGTTTCGGGCATCTACCATGTCACCAATGACTGCCCAAATTCAAGCATAGTGTATGAGGCCGACCATCACATCCTACACCTCCCAGGTTGCGTGCCCTGCGTGAGGACGGGGAACCAGTCGCACTGCTGGGTGGCCCTTACTCCTACCGTCGCAGCGCCATACATCGGCGCACCGCTTGAGTCCCTGCGGAGTCATGTGGATCTGATGGTAGGGGCTGCCACTGTTTGTTCAGCCCTTTATATCGGGGATTTGTGTGGCGGCTTGTTTTTGGTTGGTCAGATGTTCTCTTTCCGACCACGGCGCCACTGGACCACCCAGGATTGCAATTGTTCCATCTATACGGGGCACATTACT + + + + CTCTTGGCACTTCTTTCGTGCTTGACTGTCCCCGCTTCGGCCATCAACTACCGCAATGCTTCGGGCGTCTACCACGTCACCAACGACTGCCCGAATTCAAGCATAGTGTTTGAGGCCGACCATCACATCTTACACCTTCCAGGTTGCGTGCCCTGCGTGAGAGAGGGGAATCAGTCTCGTTGCTGGGTGGCTCTTACTCCTACTGTCGCAGCGCCACACATCGGCGCGCCGCTTGAATCCTTGCGGAGTCATGTGGATCTGATGGTGGGGGCTGCCACTGCTTGTTCGGCCCTTTACATCGGGGACTTGTGTGGCGGCTTGTTCTTGGTCGGTCAGATGTTCTCTTTCCGACCACGACGCCACTGGACTACCCAGGACTGCAATTGTTCTATCTATACAGGGCACATCACT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hcv.log + + + + hcv.trees + + + + stepwise + + + demographic.popSize1 + + + demographic.indicators1 + + + + + + + + + diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP-old.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP-old.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP-old.xml 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP-old.xml 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,836 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGAGGTATTACAATACCAGACTTCAAACTTTACTATAGAGCCATAATAACAAAAACCGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAATGGAAYAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGTCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCACCATGCACAGGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCAGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGGGAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATAGGAGAAAGACTCAATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAATAATACATCTGACAAATGCTTGAT--ATCCAGT-ATCTACAGGGAACTCAAGAAATTAATC + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACMCAGTCTATTCAATTATTGGKGCTGGCAAAACTGGGCAGCCMCATGCARAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCM-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGT???????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAAYTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAAYTGTTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGATCCAGAAATAGAACCAC-ATACCTATAGTCAACTTGTATTTGATAAAGGAGCTAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCATTTCACCATGCACAAGAATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCT-------------------------------------CATAGGCACTCATAGGCACAGGCAAAAGATTCCTATACAGGAACCCAGGGTCAACAACAGATTGGAGAGAGACTCAATAAATGGGACTACCTAAAAATAAAA-GTTTCTGCAC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCARAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAAYTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAAATTCCTGAACAGAATCCCAGGGTCA-CAACAGATKGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATA????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCTATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACA??????????????????????????????????????????????????????????? + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCATTTCACCATGCACAAGAATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAATTGCTACATGATAAWGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCAATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATAT???????????????????????????????????????????????????????????????????? + + + + ???CTAGGCAAAA-G-AGC-ATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CKCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ????????CAAAA-G-AGCAATGCTGGTGGTATYACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ????GGCGCAAAA-G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGCTATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAAAGAAGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCSCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTA-TC + + + + ??????????????G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGYCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATYACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAWATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAATGGAACRAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATATATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAA-G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTKTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATCCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTYGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTCTGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCCACAATACATCTGACAAATGCTTAAT--ATCCAGT-ATCTACAGG-AACTCAAG????????? + + + + ??????????????G-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTAYTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCACTATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAATGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAATTGCTACATGATAAWGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAATGTTTCTGTACAGATAAAAACATAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ?????????????AG-AGC-ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCTTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATACATCTGACAAATGCTTAAT--ATCCAGT-ATCTACA???????????????????? + + + + ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGCATTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGKCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGYCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAATTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCCACAATACATCTGACAAATGCTT-ATATATCCAGT-ATCTACAGAGAACTCAAG????????? + + + + + + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCACAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCGTTTCTGGAAAACTGAGATCTTGTTTTGACCAACAGAAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGATGTCTCTGTCAGGATCTAGTCCCATCCTG-AATCCATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTCAGAACTGACTGAATCAGGCCAGTGAAAGTTA-CAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATTGTGCATGGCTTCATTAGCAGGTTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCATCAGATTGTCAGGGTCTTGGATTCTGATAAGTTCTGTGTTCCTGATGAGAGACTGGTTATTCAGTAAGTTGTAGGACAAA + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGAGAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGAKAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCACTAAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTRTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTACCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCACTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCASTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGTGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + ?????????????????????????????C-AGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACYGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTAKGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCRTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCC-AGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGTTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCYACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAATTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTGGTCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCATATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAAWGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGACAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTTTAAGTGTTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGTCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGTCCAGTGAAACTTAACAGCTACCTTGCCAATKGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGG--TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCGGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + CAAGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTGTTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGTCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGG--TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCGGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTATTGCCTGGATATAGTGTCTATAGACAGAGACAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCACATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCACCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAG-CGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACAATGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTATTGCCTGGATATAGTGTCTATAGACAGAGACAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCACATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAG-CGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGACGCCKTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAGGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGACGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTYCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAGGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGAMTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTGGTCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTGGTCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTGGTCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAAGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTGGAATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGAGGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA + + + + + + + + + CATGATTTTGTCATGCCTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGATGATTGACGCTGCTGTCAGTAGTGAGTGACACAAATTTTATTTAGTTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACGTGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAATTGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATTTCTTTTCCA-CC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTAGATTTTATGGGACTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTAYCTGAAGGTTATTGATGGTGACCTCATTTTCTTGTGCTTGTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAATTCAGAGTTTGAACACTGTCCTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTCTATGTATGTGGTACCGTGCACTCAAACCCAGGTCTTTGTGAATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGCAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACARAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGACGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAMGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTGTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTYGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTYGTTTTCACCTGTGTGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCYGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGGTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAYGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCYGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAYGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTARGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTATTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATATCTTTTCCAACCCTAGATTTTTTTTT--------------------------------GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTC-TATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATCTCTTTGTCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTGTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGTA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A + + + + ???????TTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTTACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTCGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT---------------------------T--GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGATGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGACTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTA--------CCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTA????????????????????????????????????????????????????? + + + + ?ATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTTACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACTAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTATACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATGTTTTTTTT-G------------------------------CACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCACCACTTCTGGCTTTTTTTTTTCTACGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGCTTTTTATTTATGCTTACCTGAAGATTATTGATGATGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATTATGTTTGTGCAA???? + + + + ??????????????????????A---GCTTATATGCTTGTGTGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGCCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATATAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT------------------------------------------------------------------------------------------------------TTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTTGTGCATGCTATGCAAGCACTTTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATGTTTCGTTTCATCTTGTTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACATCGTTTTCTTGTGCTTTTTAGTGATTTCTTT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? + + + + ??????????????GCTTTCTTACGTGCTTATATGCTTGTGTGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGCCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATATAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATATCTTTTCCAACCCTAGATTTTTTTTTTTGCCAGTCCTGGGCTTGAGCTCAGGGCCTGAGCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCTTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTTGTGCATGCTATGCAGGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATGTTTCGTTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACATCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTGTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTCC---------GGTACCATGCACTGGAACCCAGGTCTTCGTGCATGCTGGACAGCAACTCTACCACTAGGCAAAGCTTCTGGACCCATTAGT????????????????????????????? + + + + CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGAGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTTGCCAGTCCTGGGCTTGAGCTCAGGGCCTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTT-TTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGCCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGATCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAAATCAGGGTTTGAACATTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------AATACCATGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCATTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A + + + + CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGAGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAAYGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTT--GCCAGTCCTGGGCTTSAGCTCAGGGCCTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTKTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGCCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGAYCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCYAGTCCTGGGGCTTGAAATCAGGGTTTGAACATTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------AATACCATGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCATTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A + + + + ?????????????????TTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGCTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGTTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAGTGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT---------------------------TTTGCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCAGTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGTCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAATACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCAC??????????????????????????????????????????????????????? + + + + CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGTTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT------------------------------GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTT-TTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTCGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCYCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACACAAATTTCATTTAGTTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCCTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTT--ATATCATCTTTGTGCAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTGTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTRCCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A + + + + CATGATTTTGTCATGYTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTYGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTTYATATCATCTTTGTGAAACT-A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/beast1/testEBSP.xml 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/beast1/testEBSP.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,836 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGAGGTATTACAATACCAGACTTCAAACTTTACTATAGAGCCATAATAACAAAAACCGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAATGGAAYAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGTCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCACCATGCACAGGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCAGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGGGAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATAGGAGAAAGACTCAATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAATAATACATCTGACAAATGCTTGAT--ATCCAGT-ATCTACAGGGAACTCAAGAAATTAATC - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACMCAGTCTATTCAATTATTGGKGCTGGCAAAACTGGGCAGCCMCATGCARAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCM-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGT???????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAAYTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAAYTGTTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGATCCAGAAATAGAACCAC-ATACCTATAGTCAACTTGTATTTGATAAAGGAGCTAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCATTTCACCATGCACAAGAATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCT-------------------------------------CATAGGCACTCATAGGCACAGGCAAAAGATTCCTATACAGGAACCCAGGGTCAACAACAGATTGGAGAGAGACTCAATAAATGGGACTACCTAAAAATAAAA-GTTTCTGCAC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCARAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAAYTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAAATTCCTGAACAGAATCCCAGGGTCA-CAACAGATKGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATA????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCTATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACA??????????????????????????????????????????????????????????? - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCATTTCACCATGCACAAGAATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ????????????????????ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAATTGCTACATGATAAWGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCAATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTT-GCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATAT???????????????????????????????????????????????????????????????????? - - - - ???CTAGGCAAAA-G-AGC-ATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CKCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ????????CAAAA-G-AGCAATGCTGGTGGTATYACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ????GGCGCAAAA-G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATMCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGCTATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAAAGAAGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCSCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTA-TC - - - - ??????????????G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGYCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATRTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATYACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAWATAGAACCAC-ACAACTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAATGGAACRAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATATATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAA-G-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTKTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATACAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAAYTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATCACAATACCAGACTTCAAACTTTACTATAAAGCCATAATAACAAAAACTGC-TTGGTACTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGATATAGAACCAC-ACAACTATAGGCAACTTRTATTTGACAAAGGAGCCAAAGATATCCAATGGAACGAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGAAAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCRACGTCAGACCGGAAACCGTGAAACTGCTACATGATAATGTAGGAGAGACACTGGAACTCATAGGCACAGGAAACAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGACAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGACAAAAACATAGT-CGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATGTATCTGACAAATGCTTAAT--ATCCAGC-ATCTACAGAGAACTCAAGAAACTAATC - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTYGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGTCTGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCCACAATACATCTGACAAATGCTTAAT--ATCCAGT-ATCTACAGG-AACTCAAG????????? - - - - ??????????????G-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTAYTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCACTATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACAATGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAACGTCAGACCGGAAACCGTGAAATTGCTACATGATAAWGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAATGTTTCTGTACAGATAAAAACATAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ?????????????AG-AGC-ATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGC-TTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGGCAACTTGTATTTGACAAAGGAGCCAAAGATATACARTGGAACAAACACAGTCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCTTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAATGTCAGACCGGAAACCGTGAAACTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCAACAATACATCTGACAAATGCTTAAT--ATCCAGT-ATCTACA???????????????????? - - - - ATTCTAGGCAAAAAG-AGCAATGCTGGTGGTATTACAATACCAGACTTCAAACTCTACTATAGAGCCATAATAACAAAAACTGCATTGGTATTGGCACAAAAACAGACCAGAAGATCAGTGGAACAGAATAGAAGACCCAGAAATAGAACCAC-ATACCTATAGKCAACTTGTATTTGACAAAGGAGCCAAAGATATACAGTGGAACAAACACAGYCTATTCAATTATTGGTGCTGGCAAAACTGGGCAGCCACATGCAGAAAACTAAAAATTGACCCTAGCCTTTCGCCATGCACAAGCATTAACTCAAAGTGGATCAAAGACCTCAAYGTCAGACCGGAAACCGTGAAATTGCTACATGATAAAGTAGGAGAGACACTGGAACTCATAGGCACAGGCAAAAGATTCCTGAACAGAATCCCAGGGTCA-CAACAGATTGGAGAGAGACTCGATAAATGGGACTACCTAAAAATAAAAAGTTTCTGTACAGATAAAAACATAGT-TGCAAAAGTAGAGAGACAGCCAACCAACTGGGAAAAGATATTCACCCACAATACATCTGACAAATGCTT-ATATATCCAGT-ATCTACAGAGAACTCAAG????????? - - - - - - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCACAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCGTTTCTGGAAAACTGAGATCTTGTTTTGACCAACAGAAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGATGTCTCTGTCAGGATCTAGTCCCATCCTG-AATCCATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTCAGAACTGACTGAATCAGGCCAGTGAAAGTTA-CAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATTGTGCATGGCTTCATTAGCAGGTTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCATCAGATTGTCAGGGTCTTGGATTCTGATAAGTTCTGTGTTCCTGATGAGAGACTGGTTATTCAGTAAGTTGTAGGACAAA - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGAGAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGAKAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCACTAAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTRTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTACCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCACTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCASTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGTGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - ?????????????????????????????C-AGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACYGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTAKGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCRTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCC-AGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGTTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCYACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAATTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTGGTCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCATATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAAWGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGACAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTTTAAGTGTTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGTCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGTCCAGTGAAACTTAACAGCTACCTTGCCAATKGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGG--TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCGGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - CAAGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTGTTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGTCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGG--TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCGGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTATTGCCTGGATATAGTGTCTATAGACAGAGACAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCACATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCACCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAG-CGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACAATGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTATTGCCTGGATATAGTGTCTATAGACAGAGACAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCACATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCTGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCTCTGGGTTGTTAG-CGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGACGCCKTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAGGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGACGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTYCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAGGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGTCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTGCTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGAMTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTGCCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCTCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGGATCCAGTCCCATCCTG-AATTGATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGACTCTTAAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGG-TCTTTCCAAGGATTGTGCTTCTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTACTGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTGGACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTGGTCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTGGTCACACCGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTGGTCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAAGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTGGAATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGAGGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - C-AGCTTGCTG-TCACACTGCCCCTTCTACAAGCCCAGCTGACAGAGGCCTTAAGTACTACCTGGATATAATGTCTATAGACAGAGGCAATTCTGGAAAACTCAGATCTTATTTTGACCAACAGGAATTAATGTCTATGGTAGAATTCCCCTCAGCTCCTGGATTGCTGGTACTGGTGACGTCTCTGTCAGAATCCAGTCCCATCCTG-AATTTATACTTAACAATTTTCTAAGTATTTTGTGGTCTTGCTCTACCTCCAGGGAAGCTGGCCTGGCTATGAAAGGAAGGGCTCTTTAGAACTGACTGAATCAGGCCAGTGAAACTTAACAGCTACCTTGCCAATGGTCTGTGTGCCAGTGACATCGTGCATGGCTTCATTAGCAGATTTACTGTGCCGGGGTCTTTCCAAGGATTGTGCTTGTTGATTTGGTCCCTGGATAAATTTGCAAATGCTAATCTAGTTGTTAATGGAGAGCATCCAAACCTAAGACAGGACTATTCCTCCCTGGGTTGTTAGGCGTCAGATTGGCAGGGTCTTG-ACTCTGATAAGTTCTGTGTTCCTGATGAGAGGCTGGTTATTCAGTAAGTTGTAGGGCAAA - - - - - - - - - CATGATTTTGTCATGCCTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGATGATTGACGCTGCTGTCAGTAGTGAGTGACACAAATTTTATTTAGTTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACGTGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAATTGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATTTCTTTTCCA-CC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTAGATTTTATGGGACTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTAYCTGAAGGTTATTGATGGTGACCTCATTTTCTTGTGCTTGTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAATTCAGAGTTTGAACACTGTCCTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTCTATGTATGTGGTACCGTGCACTCAAACCCAGGTCTTTGTGAATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGCAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACARAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGACGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAMGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTGTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTYGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTYGTTTTCACCTGTGTGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCYGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGGTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAYGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCYGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAMCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGAYGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCSACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGSTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTARGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACASAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCYTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTATTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATATCTTTTCCAACCCTAGATTTTTTTTT--------------------------------GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTC-TATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATCTCTTTGTCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTGTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGTA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A - - - - ???????TTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTTACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTCGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT---------------------------T--GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGATGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGACTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTA--------CCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTA????????????????????????????????????????????????????? - - - - ?ATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTTACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACTAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTATACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATGTTTTTTTT-G------------------------------CACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCACCACTTCTGGCTTTTTTTTTTCTACGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGCTTTTTATTTATGCTTACCTGAAGATTATTGATGATGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATTATGTTTGTGCAA???? - - - - ??????????????????????A---GCTTATATGCTTGTGTGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGCCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATATAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT------------------------------------------------------------------------------------------------------TTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTTGTGCATGCTATGCAAGCACTTTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATGTTTCGTTTCATCTTGTTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACATCGTTTTCTTGTGCTTTTTAGTGATTTCTTT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? - - - - ??????????????GCTTTCTTACGTGCTTATATGCTTGTGTGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGCCAGTAGTGGGTGACACAAATTTCATTTAATTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATATAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATATCTTTTCCAACCCTAGATTTTTTTTTTTGCCAGTCCTGGGCTTGAGCTCAGGGCCTGAGCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCTTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTTGTGCATGCTATGCAGGCACTCTACCACTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATGTTTCGTTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACATCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTGTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTCC---------GGTACCATGCACTGGAACCCAGGTCTTCGTGCATGCTGGACAGCAACTCTACCACTAGGCAAAGCTTCTGGACCCATTAGT????????????????????????????? - - - - CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGAGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTTGCCAGTCCTGGGCTTGAGCTCAGGGCCTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTT-TTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGCCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGATCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAAATCAGGGTTTGAACATTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------AATACCATGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCATTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A - - - - CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGAGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAAYGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTT--GCCAGTCCTGGGCTTSAGCTCAGGGCCTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTKTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTACCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCACTAGCCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGAYCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCYAGTCCTGGGGCTTGAAATCAGGGTTTGAACATTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------AATACCATGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCATTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A - - - - ?????????????????TTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGCTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGTTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAGTGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT---------------------------TTTGCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTTTTTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTAGGCAAGCACTCTACCAGTAGGCCAAACTCCCAGCCCCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGTCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAATACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCAC??????????????????????????????????????????????????????? - - - - CATGATTTTTTCATGCTTTCTTAC-TGCTTATCTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACACTACTGTCAGTAGTGGGTGACACAAATTTCATTTAATTTGGTTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAACGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCACGATATCTTTTCCAACCCTAGATTTTTTTTTTT------------------------------GCACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCACTTGAGCCTCAGCATCACTTCTGGCTTTTTTT-TTCTATGTATGTGGTATCAAGGAATCGAACCCGGGTCTTCGTGCATGCTCGGCAAGCACTCTACCACTAGGCCAAACTCCCAGCCYCAACCCTAGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTTATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCTTTGGGCTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTTGACTCTTTTC---------GGTACCATGCACTGGAACCCAGGTCTTCATGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATGTTTGTGCAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACACAAATTTCATTTAGTTTGGGTGTGTGCCTACCAGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCCTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCAACC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGTTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCCACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTT--ATATCATCTTTGTGCAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTATGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGWTTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGCTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTTGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTGTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTRCCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTT-ATATCATCTTTGTGAAACT-A - - - - CATGATTTTGTCATGYTTTCTTAC-TGCTTATTTGCTTGTGGGCTTTGGGTTGTTTTCACCTGTGGGTYGATTGACGCTACTGTCAGTAGTGGGTGACAGAAATTTCATTTAGTTTGGGTGTGTGCCTACCGGTATAATTGCTGGACCACATGTAGGTCTGTATTAATCTTCTGAAGAATGGTTAGGCCATCTGTGAAATGCTGTACTTCTTTRTGTTCCCGCCATTCTGAGTTCTGATTTCATGATACCTTTTCCACCC-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CTGGATTTTATGGGGCTCTTTTATGTAACCAGAATGGCAGATG-----TTTCATCTTGGTTTTGATTTATGCTTACCTGAAGATTATTGATGGTGACCTCGATTTCTTGTGCTTTTTAGTGATTTCTTTGCCAGTCCTGGGGCTTGAACTCAGGGTTTGAACACTGTCCTTGGACTTTCTCAAGGCTAGAGCTCTACCATTTGAGCCACAACACCACTTTCGACTCTTTTCTATGTATGTGGTACCGTGCACTGGAACCCAGGTCTTCGTGCATGCTAGACAGCA-CTCTACCACTAGGCCAAACTTCTGGACCCATTAGTGATTTTTYATATCATCTTTGTGAAACT-A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP-b2.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP-b2.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP-b2.xml 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP-b2.xml 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + beast.math.distributions.Uniform + + beast.math.distributions.Exponential + + beast.math.distributions.LogNormalDistributionModel + + beast.math.distributions.Normal + + beast.math.distributions.Beta + + beast.math.distributions.Gamma + + beast.math.distributions.LaplaceDistribution + + beast.math.distributions.Prior + + beast.math.distributions.InverseGamma + + beast.math.distributions.OneOnX + + + + + + + + + + 2.0 + + false + + 1.0 + + 1.0 + + 0.25 + + + + + + + + + + + + + + + + + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + 0.69314718056 + + + + + + + + + + 1.0 + + 1.25 + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 + + 1.0 + + 0.0 + + + + + + + + + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP-old.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP-old.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP-old.xml 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP-old.xml 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP.xml beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP.xml --- beast2-mcmc-2.6.6+dfsg/examples/beast2vs1/testEBSP.xml 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/examples/beast2vs1/testEBSP.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,317 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru beast2-mcmc-2.6.6+dfsg/release/common/README.txt beast2-mcmc-2.6.7+dfsg/release/common/README.txt --- beast2-mcmc-2.6.6+dfsg/release/common/README.txt 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/common/README.txt 2022-04-04 07:18:36.000000000 +0000 @@ -1,7 +1,7 @@ - BEAST v2.6.6 2021 - Beast 2 development team 2011-2021 + BEAST v2.6.7 2022 + Beast 2 development team 2011-2022 -Last updated: August 2021 +Last updated: March 2022 Contents: 1) INTRODUCTION diff -Nru "/tmp/tmpf4cdn695/LuIOAMVLdw/beast2-mcmc-2.6.6+dfsg/release/common/VERSION HISTORY.txt" "/tmp/tmpf4cdn695/Ko41VIyH3z/beast2-mcmc-2.6.7+dfsg/release/common/VERSION HISTORY.txt" --- "/tmp/tmpf4cdn695/LuIOAMVLdw/beast2-mcmc-2.6.6+dfsg/release/common/VERSION HISTORY.txt" 2021-08-11 20:11:54.000000000 +0000 +++ "/tmp/tmpf4cdn695/Ko41VIyH3z/beast2-mcmc-2.6.7+dfsg/release/common/VERSION HISTORY.txt" 2022-04-04 07:18:36.000000000 +0000 @@ -1,10 +1,23 @@ - BEAST v2.6.6 2021 - Beast 2 development team 2011-2021 + BEAST v2.6.7 2022 + Beast 2 development team 2011-2022 Version History -Last updated: August 2021 +Last updated: March 2022 All issues can be viewed at https://github.com/CompEvol/beast2/issues ================================================================================ +Version 2.6.7 + SimulatedAlignment correctly links indices of tree to alignment + Option 'ascii' added to Logger to allow it to convert output to ascii or not + Loading two dimensional data into trait dialog robustified + Make NexusParser more robust and allow Fasta imports to select from all data types + Fix TreeAnnotator -heights processing issue + Make Prior.sample() obey parameter bounds + Fix auto-set clock rate in BEAUti when independent trees are involved + Fix TipDateRandomWalker to ensure heights are always >= 0 + Add upper limit to delta exchange optimization + Made tree input to RatesStatistic required to ensure appropriate behaviour + Remove superfluous new lines in XML produced by BEAUti + Version 2.6.6 Fix so that when not using ambiguities, the nucleotide 'U' base pair is correctly interpreted Fix tree annotator for lower bound on common ancestor heights diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/applauncher beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/applauncher --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/applauncher 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/applauncher 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/beast beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/beast --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/beast 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/beast 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/beauti beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/beauti --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/beauti 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/beauti 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/densitree beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/densitree --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/densitree 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/densitree 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/loganalyser beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/loganalyser --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/loganalyser 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/loganalyser 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/logcombiner beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/logcombiner --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/logcombiner 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/logcombiner 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/packagemanager beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/packagemanager --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/packagemanager 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/packagemanager 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/treeannotator beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/treeannotator --- beast2-mcmc-2.6.6+dfsg/release/Linux/jrebin/treeannotator 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Linux/jrebin/treeannotator 2022-04-04 07:18:36.000000000 +0000 @@ -1,5 +1,5 @@ #!/bin/sh -export JAVA_HOME=$(dirname "$0")/../jre1.8.0_282 +export JAVA_HOME=$(dirname "$0")/../jre1.8.0_292 if [ -z "$BEAST" ]; then ## resolve links - $0 may be a link to application diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/createdmg.sh beast2-mcmc-2.6.7+dfsg/release/Mac/createdmg.sh --- beast2-mcmc-2.6.6+dfsg/release/Mac/createdmg.sh 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/createdmg.sh 2022-04-04 07:18:36.000000000 +0000 @@ -15,12 +15,13 @@ cp install.png ${source}/${backgroundPictureName} +echo "Creating image from folder ${source} at volume name ${title}" hdiutil create -srcfolder "${source}" -volname "${title}" -fs HFS+ \ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${size}k pack.temp.dmg export device=$(hdiutil attach -readwrite -noverify -noautoopen "pack.temp.dmg" | \ egrep '^/dev/' | sed 1q | awk '{print $1}') - +echo "Attach device : ${device}" echo ' tell application "Finder" @@ -54,5 +55,6 @@ sync sync hdiutil detach ${device} +echo "Detach device : ${device}" hdiutil convert "pack.temp.dmg" -format UDZO -imagekey zlib-level=9 -o "${finalDMGName}" rm -f /pack.temp.dmg diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationJREStub beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationJREStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationJREStub 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationJREStub 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,572 @@ +#!/bin/bash +################################################################################## +# # +# universalJavaApplicationStub # +# # +# A BASH based JavaApplicationStub for Java Apps on Mac OS X # +# that works with both Apple's and Oracle's plist format. # +# # +# Inspired by Ian Roberts stackoverflow answer # +# at http://stackoverflow.com/a/17546508/1128689 # +# # +# @author Tobias Fischer # +# @url https://github.com/tofi86/universalJavaApplicationStub # +# @date 2018-07-29 # +# @version 3.0.3 # +# # +################################################################################## +# # +# The MIT License (MIT) # +# # +# Copyright (c) 2014-2018 Tobias Fischer # +# # +# Permission is hereby granted, free of charge, to any person obtaining a copy # +# of this software and associated documentation files (the "Software"), to deal # +# in the Software without restriction, including without limitation the rights # +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # +# copies of the Software, and to permit persons to whom the Software is # +# furnished to do so, subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be included in all # +# copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +# # +################################################################################## + + + +# function 'stub_logger()' +# +# A logger which logs to the macOS Console.app using the 'syslog' command +# +# @param1 the log message +# @return void +################################################################################ +function stub_logger() { + syslog -s -k \ + Facility com.apple.console \ + Level Notice \ + Sender "$(basename "$0")" \ + Message "[$$][${CFBundleName:-$(basename "$0")}] $1" +} + + + +# set the directory abspath of the current +# shell script with symlinks being resolved +############################################ + +PRG=$0 +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) + if expr "$link" : '^/' 2> /dev/null >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi +done +PROGDIR=$(dirname "$PRG") +stub_logger "[StubDir] $PROGDIR" + + + +# set files and folders +############################################ + +# the absolute path of the app package +cd "$PROGDIR"/../../ || exit 11 +AppPackageFolder=$(pwd) + +# the base path of the app package +cd .. || exit 12 +AppPackageRoot=$(pwd) + +# set Apple's Java folder +AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java + +# set Apple's Resources folder +AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set Oracle's Java folder +OracleJavaFolder="${AppPackageFolder}"/Contents/Java + +# set Oracle's Resources folder +OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set path to Info.plist in bundle +InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist + +# set the default JVM Version to a null string +JVMVersion="" +JVMMaxVersion="" + + + +# function 'plist_get()' +# +# read a specific Plist key with 'PlistBuddy' utility +# +# @param1 the Plist key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get(){ + /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null +} + +# function 'plist_get_java()' +# +# read a specific Plist key with 'PlistBuddy' utility +# in the 'Java' or 'JavaX' dictionary () +# +# @param1 the Plist :Java(X):Key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get_java(){ + plist_get ${JavaKey:-":Java"}$1 +} + + + +# read Info.plist and extract JVM options +############################################ + +# read the program name from CFBundleName +CFBundleName=$(plist_get ':CFBundleName') + +# read the icon file name +CFBundleIconFile=$(plist_get ':CFBundleIconFile') + + +# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode +/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 +exitcode=$? +JavaKey=":Java" + +# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode +if [ $exitcode -ne 0 ]; then + /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 + exitcode=$? + JavaKey=":JavaX" +fi + + +# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) +if [ $exitcode -eq 0 ]; then + stub_logger "[PlistStyle] Apple" + + # set Java and Resources folder + JavaFolder="${AppleJavaFolder}" + ResourcesFolder="${AppleResourcesFolder}" + + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${AppleJavaFolder}" + USER_HOME="$HOME" + + + # read the Java WorkingDirectory + JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) + # set Working Directory based upon PList value + if [[ ! -z ${JVMWorkDir} ]]; then + WorkingDirectory="${JVMWorkDir}" + else + # AppPackageRoot is the standard WorkingDirectory when the script is started + WorkingDirectory="${AppPackageRoot}" + fi + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + WorkingDirectory=$(eval echo "${WorkingDirectory}") + + + # read the MainClass name + JVMMainClass="$(plist_get_java ':MainClass')" + + # read the SplashFile name + JVMSplashFile=$(plist_get_java ':SplashFile') + + # read the JVM Properties as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + else + JVMClassPath=${JVMClassPath_RAW} + fi + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + # read the JVM Options in either Array or String style + JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) + if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then + JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) + else + JVMDefaultOptions=${JVMDefaultOptions_RAW} + fi + + # read StartOnMainThread and add as -XstartOnFirstThread + JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') + if [ "${JVMStartOnMainThread}" == "true" ]; then + JVMDefaultOptions+=" -XstartOnFirstThread" + fi + + # read the JVM Arguments as an array and retain spaces + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get_java ':JVMVersion' | xargs) + # post processing of the version string follows below... + + +# read 'Info.plist' file in Oracle style +else + stub_logger "[PlistStyle] Oracle" + + # set Working Directory and Java and Resources folder + JavaFolder="${OracleJavaFolder}" + ResourcesFolder="${OracleResourcesFolder}" + WorkingDirectory="${OracleJavaFolder}" + + APP_ROOT="${AppPackageFolder}" + + # read the MainClass name + JVMMainClass="$(plist_get ':JVMMainClassName')" + + # read the SplashFile name + JVMSplashFile=$(plist_get ':JVMSplashFile') + + # read the JVM Options as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get ':JVMClassPath') + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + elif [[ ! -z ${JVMClassPath_RAW} ]] ; then + JVMClassPath=${JVMClassPath_RAW} + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + else + #default: fallback to OracleJavaFolder + JVMClassPath="${JavaFolder}/*" + # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) + fi + + # read the JVM Default Options + JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) + + # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get ':JVMVersion' | xargs) + # post processing of the version string follows below... +fi + + + +# JVMVersion: post processing and optional splitting +if [[ ${JVMVersion} == *";"* ]]; then + minMaxArray=(${JVMVersion//;/ }) + JVMVersion=${minMaxArray[0]//+} + JVMMaxVersion=${minMaxArray[1]//+} +fi +stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" +stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" + +# MainArgs: replace occurences of $APP_ROOT with its content +MainArgsArr=() +for i in "${MainArgs[@]}" +do + MainArgsArr+=("$(eval echo "$i")") +done + +# JVMOptions: replace occurences of $APP_ROOT with its content +JVMOptionsArr=() +for i in "${JVMOptions[@]}" +do + JVMOptionsArr+=("$(eval echo "$i")") +done + + +# internationalized messages +############################################ + +LANG=$(defaults read -g AppleLocale) +stub_logger "[Language] $LANG" + +# French localization +if [[ $LANG == fr* ]] ; then + MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." + MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." + MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" + MSG_JAVA_VERSION_OR_LATER="ou ultérieur" + MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" + MSG_JAVA_VERSION_MAX="à %s" + MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." + MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." + MSG_LATER="Plus tard" + MSG_VISIT_JAVA_DOT_COM="Visiter java.com" + +# German localization +elif [[ $LANG == de* ]] ; then + MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." + MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" + MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." + MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" + MSG_JAVA_VERSION_OR_LATER="oder neuer" + MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" + MSG_JAVA_VERSION_MAX="bis %s" + MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." + MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." + MSG_LATER="Später" + MSG_VISIT_JAVA_DOT_COM="java.com öffnen" + +# Simplifyed Chinese localization +elif [[ $LANG == zh* ]] ; then + MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." + MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" + MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" + MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" + MSG_JAVA_VERSION_OR_LATER="及以上版本" + MSG_JAVA_VERSION_LATEST="(最新版本)" + MSG_JAVA_VERSION_MAX="最高为 %s" + MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" + MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" + MSG_LATER="稍后" + MSG_VISIT_JAVA_DOT_COM="访问 java.com" + +# English default localization +else + MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" + MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." + MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" + MSG_JAVA_VERSION_OR_LATER="or later" + MSG_JAVA_VERSION_LATEST="(latest update)" + MSG_JAVA_VERSION_MAX="up to %s" + MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." + MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." + MSG_LATER="Later" + MSG_VISIT_JAVA_DOT_COM="Visit java.com" +fi + + + +# function 'get_java_version_from_cmd()' +# +# returns Java version string from 'java -version' command +# works for both old (1.8) and new (9) version schema +# +# @param1 path to a java JVM executable +# @return the Java version number as displayed in 'java -version' command +################################################################################ +function get_java_version_from_cmd() { + # second sed command strips " and -ea from the version string + echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') +} + + +# function 'extract_java_major_version()' +# +# extract Java major version from a version string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return the major version (e.g. '7', '8' or '9', etc.) +################################################################################ +function extract_java_major_version() { + echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') +} + + +# function 'get_comparable_java_version()' +# +# return comparable version for a Java version number or requirement string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') +################################################################################ +function get_comparable_java_version() { + # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' + local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') + # splitting at '.' into an array + local arr=( ${cleaned//./ } ) + # echo a string with left padded version numbers + echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" +} + + +# function 'is_valid_requirement_pattern()' +# +# check whether the Java requirement is a valid requirement pattern +# +# supported requirements are for example: +# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] +# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6.0_45 requires Java 6u45 [1.6.0_45] +# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] +# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] +# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] +# - 9.1.3 requires Java 9.1.3 [9.1.3] +# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] +# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] +# - 10-ea requires Java 10 (early access release) +# +# unsupported requirement patterns are for example: +# - 1.2, 1.3, 1.9 Java 2, 3 are not supported +# - 1.9 Java 9 introduced a new versioning scheme +# - 6u45 known versioning syntax, but unsupported +# - 9-ea*, 9-ea+ early access releases paired with */+ +# - 9., 9.*, 9.+ version ending with a . +# - 9.1., 9.1.*, 9.1.+ version ending with a . +# - 9.3.5.6 4 part version number is unsupported +# +# @param1 a Java requirement string ('1.8+') +# @return boolean exit code: 0 (is valid), 1 (is not valid) +################################################################################ +function is_valid_requirement_pattern() { + local java_req=$1 + java8pattern='1\.[4-8](\.0)?(\.0_[0-9]+)?[*+]?' + java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' + # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) + if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then + return 0 + else + return 1 + fi +} + + + +# determine which JVM to use +############################################ + +JAVACMD="${AppPackageFolder}/../jre1.8.0_292/bin/java" + + +# log the Java Command and the extracted version number +stub_logger "[JavaCommand] '$JAVACMD'" +stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" + + + +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + + # different error messages when a specific JVM was required + if [ ! -z "${JVMVersion}" ] ; then + # display human readable java version (#28) + java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). + + if [ ! -z "${JVMMaxVersion}" ] ; then + java_version_hr=$(extract_java_major_version ${JVMVersion}) + java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" + fi + + # log exit cause + stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" + + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" + # exit with error + exit 3 + + else + # log exit cause + stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" + # exit with error + exit 1 + fi +fi + + + +# MainClass check +############################################ + +if [ -z "${JVMMainClass}" ]; then + # log exit cause + stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + # exit with error + exit 2 +fi + + + +# execute $JAVACMD and do some preparation +############################################ + +# enable drag&drop to the dock icon +export CFProcessPath="$0" + +# remove Apples ProcessSerialNumber from passthru arguments (#39) +if [[ "$*" == -psn* ]] ; then + ArgsPassthru=() +else + ArgsPassthru=("$@") +fi + +# change to Working Directory based upon Apple/Oracle Plist info +cd "${WorkingDirectory}" || exit 13 +stub_logger "[WorkingDirectory] ${WorkingDirectory}" + +# execute Java and set +# - classpath +# - splash image +# - dock icon +# - app name +# - JVM options / properties (-D) +# - JVM default options (-X) +# - main class +# - main class arguments +# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon +stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" +exec "${JAVACMD}" \ + -cp "${JVMClassPath}" \ + -splash:"${ResourcesFolder}/${JVMSplashFile}" \ + -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ + -Xdock:name="${CFBundleName}" \ + ${JVMOptions:+"${JVMOptions[@]}" }\ + ${JVMDefaultOptions:+$JVMDefaultOptions }\ + "${JVMMainClass}"\ + ${MainArgsArr:+ "${MainArgsArr[@]}"}\ + ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationStub beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationStub 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-0-3/universalJavaApplicationStub 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,774 @@ +#!/bin/bash +################################################################################## +# # +# universalJavaApplicationStub # +# # +# A BASH based JavaApplicationStub for Java Apps on Mac OS X # +# that works with both Apple's and Oracle's plist format. # +# # +# Inspired by Ian Roberts stackoverflow answer # +# at http://stackoverflow.com/a/17546508/1128689 # +# # +# @author Tobias Fischer # +# @url https://github.com/tofi86/universalJavaApplicationStub # +# @date 2018-07-29 # +# @version 3.0.3 # +# # +################################################################################## +# # +# The MIT License (MIT) # +# # +# Copyright (c) 2014-2018 Tobias Fischer # +# # +# Permission is hereby granted, free of charge, to any person obtaining a copy # +# of this software and associated documentation files (the "Software"), to deal # +# in the Software without restriction, including without limitation the rights # +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # +# copies of the Software, and to permit persons to whom the Software is # +# furnished to do so, subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be included in all # +# copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +# # +################################################################################## + + + +# function 'stub_logger()' +# +# A logger which logs to the macOS Console.app using the 'syslog' command +# +# @param1 the log message +# @return void +################################################################################ +function stub_logger() { + syslog -s -k \ + Facility com.apple.console \ + Level Notice \ + Sender "$(basename "$0")" \ + Message "[$$][${CFBundleName:-$(basename "$0")}] $1" +} + + + +# set the directory abspath of the current +# shell script with symlinks being resolved +############################################ + +PRG=$0 +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) + if expr "$link" : '^/' 2> /dev/null >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi +done +PROGDIR=$(dirname "$PRG") +stub_logger "[StubDir] $PROGDIR" + + + +# set files and folders +############################################ + +# the absolute path of the app package +cd "$PROGDIR"/../../ || exit 11 +AppPackageFolder=$(pwd) + +# the base path of the app package +cd .. || exit 12 +AppPackageRoot=$(pwd) + +# set Apple's Java folder +AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java + +# set Apple's Resources folder +AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set Oracle's Java folder +OracleJavaFolder="${AppPackageFolder}"/Contents/Java + +# set Oracle's Resources folder +OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set path to Info.plist in bundle +InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist + +# set the default JVM Version to a null string +JVMVersion="" +JVMMaxVersion="" + + + +# function 'plist_get()' +# +# read a specific Plist key with 'PlistBuddy' utility +# +# @param1 the Plist key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get(){ + /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null +} + +# function 'plist_get_java()' +# +# read a specific Plist key with 'PlistBuddy' utility +# in the 'Java' or 'JavaX' dictionary () +# +# @param1 the Plist :Java(X):Key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get_java(){ + plist_get ${JavaKey:-":Java"}$1 +} + + + +# read Info.plist and extract JVM options +############################################ + +# read the program name from CFBundleName +CFBundleName=$(plist_get ':CFBundleName') + +# read the icon file name +CFBundleIconFile=$(plist_get ':CFBundleIconFile') + + +# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode +/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 +exitcode=$? +JavaKey=":Java" + +# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode +if [ $exitcode -ne 0 ]; then + /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 + exitcode=$? + JavaKey=":JavaX" +fi + + +# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) +if [ $exitcode -eq 0 ]; then + stub_logger "[PlistStyle] Apple" + + # set Java and Resources folder + JavaFolder="${AppleJavaFolder}" + ResourcesFolder="${AppleResourcesFolder}" + + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${AppleJavaFolder}" + USER_HOME="$HOME" + + + # read the Java WorkingDirectory + JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) + # set Working Directory based upon PList value + if [[ ! -z ${JVMWorkDir} ]]; then + WorkingDirectory="${JVMWorkDir}" + else + # AppPackageRoot is the standard WorkingDirectory when the script is started + WorkingDirectory="${AppPackageRoot}" + fi + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + WorkingDirectory=$(eval echo "${WorkingDirectory}") + + + # read the MainClass name + JVMMainClass="$(plist_get_java ':MainClass')" + + # read the SplashFile name + JVMSplashFile=$(plist_get_java ':SplashFile') + + # read the JVM Properties as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + else + JVMClassPath=${JVMClassPath_RAW} + fi + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + # read the JVM Options in either Array or String style + JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) + if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then + JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) + else + JVMDefaultOptions=${JVMDefaultOptions_RAW} + fi + + # read StartOnMainThread and add as -XstartOnFirstThread + JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') + if [ "${JVMStartOnMainThread}" == "true" ]; then + JVMDefaultOptions+=" -XstartOnFirstThread" + fi + + # read the JVM Arguments as an array and retain spaces + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get_java ':JVMVersion' | xargs) + # post processing of the version string follows below... + + +# read 'Info.plist' file in Oracle style +else + stub_logger "[PlistStyle] Oracle" + + # set Working Directory and Java and Resources folder + JavaFolder="${OracleJavaFolder}" + ResourcesFolder="${OracleResourcesFolder}" + WorkingDirectory="${OracleJavaFolder}" + + APP_ROOT="${AppPackageFolder}" + + # read the MainClass name + JVMMainClass="$(plist_get ':JVMMainClassName')" + + # read the SplashFile name + JVMSplashFile=$(plist_get ':JVMSplashFile') + + # read the JVM Options as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get ':JVMClassPath') + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + elif [[ ! -z ${JVMClassPath_RAW} ]] ; then + JVMClassPath=${JVMClassPath_RAW} + # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + else + #default: fallback to OracleJavaFolder + JVMClassPath="${JavaFolder}/*" + # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) + fi + + # read the JVM Default Options + JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) + + # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get ':JVMVersion' | xargs) + # post processing of the version string follows below... +fi + + + +# JVMVersion: post processing and optional splitting +if [[ ${JVMVersion} == *";"* ]]; then + minMaxArray=(${JVMVersion//;/ }) + JVMVersion=${minMaxArray[0]//+} + JVMMaxVersion=${minMaxArray[1]//+} +fi +stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" +stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" + +# MainArgs: replace occurences of $APP_ROOT with its content +MainArgsArr=() +for i in "${MainArgs[@]}" +do + MainArgsArr+=("$(eval echo "$i")") +done + +# JVMOptions: replace occurences of $APP_ROOT with its content +JVMOptionsArr=() +for i in "${JVMOptions[@]}" +do + JVMOptionsArr+=("$(eval echo "$i")") +done + + +# internationalized messages +############################################ + +LANG=$(defaults read -g AppleLocale) +stub_logger "[Language] $LANG" + +# French localization +if [[ $LANG == fr* ]] ; then + MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." + MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." + MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" + MSG_JAVA_VERSION_OR_LATER="ou ultérieur" + MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" + MSG_JAVA_VERSION_MAX="à %s" + MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." + MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." + MSG_LATER="Plus tard" + MSG_VISIT_JAVA_DOT_COM="Visiter java.com" + +# German localization +elif [[ $LANG == de* ]] ; then + MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." + MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" + MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." + MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" + MSG_JAVA_VERSION_OR_LATER="oder neuer" + MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" + MSG_JAVA_VERSION_MAX="bis %s" + MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." + MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." + MSG_LATER="Später" + MSG_VISIT_JAVA_DOT_COM="java.com öffnen" + +# Simplifyed Chinese localization +elif [[ $LANG == zh* ]] ; then + MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." + MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" + MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" + MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" + MSG_JAVA_VERSION_OR_LATER="及以上版本" + MSG_JAVA_VERSION_LATEST="(最新版本)" + MSG_JAVA_VERSION_MAX="最高为 %s" + MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" + MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" + MSG_LATER="稍后" + MSG_VISIT_JAVA_DOT_COM="访问 java.com" + +# English default localization +else + MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" + MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." + MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" + MSG_JAVA_VERSION_OR_LATER="or later" + MSG_JAVA_VERSION_LATEST="(latest update)" + MSG_JAVA_VERSION_MAX="up to %s" + MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." + MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." + MSG_LATER="Later" + MSG_VISIT_JAVA_DOT_COM="Visit java.com" +fi + + + +# function 'get_java_version_from_cmd()' +# +# returns Java version string from 'java -version' command +# works for both old (1.8) and new (9) version schema +# +# @param1 path to a java JVM executable +# @return the Java version number as displayed in 'java -version' command +################################################################################ +function get_java_version_from_cmd() { + # second sed command strips " and -ea from the version string + echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') +} + + +# function 'extract_java_major_version()' +# +# extract Java major version from a version string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return the major version (e.g. '7', '8' or '9', etc.) +################################################################################ +function extract_java_major_version() { + echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') +} + + +# function 'get_comparable_java_version()' +# +# return comparable version for a Java version number or requirement string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') +################################################################################ +function get_comparable_java_version() { + # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' + local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') + # splitting at '.' into an array + local arr=( ${cleaned//./ } ) + # echo a string with left padded version numbers + echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" +} + + +# function 'is_valid_requirement_pattern()' +# +# check whether the Java requirement is a valid requirement pattern +# +# supported requirements are for example: +# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] +# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6.0_45 requires Java 6u45 [1.6.0_45] +# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] +# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] +# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] +# - 9.1.3 requires Java 9.1.3 [9.1.3] +# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] +# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] +# - 10-ea requires Java 10 (early access release) +# +# unsupported requirement patterns are for example: +# - 1.2, 1.3, 1.9 Java 2, 3 are not supported +# - 1.9 Java 9 introduced a new versioning scheme +# - 6u45 known versioning syntax, but unsupported +# - 9-ea*, 9-ea+ early access releases paired with */+ +# - 9., 9.*, 9.+ version ending with a . +# - 9.1., 9.1.*, 9.1.+ version ending with a . +# - 9.3.5.6 4 part version number is unsupported +# +# @param1 a Java requirement string ('1.8+') +# @return boolean exit code: 0 (is valid), 1 (is not valid) +################################################################################ +function is_valid_requirement_pattern() { + local java_req=$1 + java8pattern='1\.[4-8](\.0)?(\.0_[0-9]+)?[*+]?' + java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' + # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) + if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then + return 0 + else + return 1 + fi +} + + + +# determine which JVM to use +############################################ + +# default Apple JRE plugin path (< 1.6) +apple_jre_plugin="/Library/Java/Home/bin/java" +apple_jre_version=$(get_java_version_from_cmd "${apple_jre_plugin}") +# default Oracle JRE plugin path (>= 1.7) +oracle_jre_plugin="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" +oracle_jre_version=$(get_java_version_from_cmd "${oracle_jre_plugin}") + + +# first check system variable "$JAVA_HOME" -> has precedence over any other System JVM +stub_logger '[JavaSearch] Checking for $JAVA_HOME ...' +if [ -n "$JAVA_HOME" ] ; then + stub_logger "[JavaSearch] ... found JAVA_HOME with value $JAVA_HOME" + + # PR 26: Allow specifying "$JAVA_HOME" relative to "$AppPackageFolder" + # which allows for bundling a custom version of Java inside your app! + if [[ $JAVA_HOME == /* ]] ; then + # if "$JAVA_HOME" starts with a Slash it's an absolute path + JAVACMD="$JAVA_HOME/bin/java" + else + # otherwise it's a relative path to "$AppPackageFolder" + JAVACMD="$AppPackageFolder/$JAVA_HOME/bin/java" + fi + JAVACMD_version=$(get_comparable_java_version $(get_java_version_from_cmd "${JAVACMD}")) +else + stub_logger "[JavaSearch] ... didn't found JAVA_HOME" +fi + + +# check for any other or a specific Java version +# also if $JAVA_HOME exists but isn't executable +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + stub_logger "[JavaSearch] Checking for JavaVirtualMachines on the system ..." + # reset variables + JAVACMD="" + JAVACMD_version="" + + # first check whether JVMVersion string is a valid requirement string + if [ ! -z "${JVMVersion}" ] && ! is_valid_requirement_pattern ${JVMVersion} ; then + MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMVersion}") + # log exit cause + stub_logger "[EXIT 4] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + # exit with error + exit 4 + fi + # then check whether JVMMaxVersion string is a valid requirement string + if [ ! -z "${JVMMaxVersion}" ] && ! is_valid_requirement_pattern ${JVMMaxVersion} ; then + MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMMaxVersion}") + # log exit cause + stub_logger "[EXIT 5] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + # exit with error + exit 5 + fi + + + # find installed JavaVirtualMachines (JDK + JRE) + allJVMs=() + # read JDK's from '/usr/libexec/java_home -V' command + while read -r line; do + version=$(echo $line | awk -F $',' '{print $1;}') + path=$(echo $line | awk -F $'" ' '{print $2;}') + path+="/bin/java" + allJVMs+=("$version:$path") + done < <(/usr/libexec/java_home -V 2>&1 | grep '^[[:space:]]') + # unset while loop variables + unset version path + + # add Apple JRE if available + if [ -x "${apple_jre_plugin}" ] ; then + allJVMs+=("$apple_jre_version:$apple_jre_plugin") + fi + + # add Oracle JRE if available + if [ -x "${oracle_jre_plugin}" ] ; then + allJVMs+=("$oracle_jre_version:$oracle_jre_plugin") + fi + + # debug output + for i in "${allJVMs[@]}" + do + stub_logger "[JavaSearch] ... found JVM: $i" + done + + + # determine JVMs matching the min/max version requirement + minC=$(get_comparable_java_version ${JVMVersion}) + maxC=$(get_comparable_java_version ${JVMMaxVersion}) + matchingJVMs=() + + for i in "${allJVMs[@]}" + do + # split JVM string at ':' delimiter to retain spaces in $path substring + IFS=: arr=($i) ; unset IFS + # [0] JVM version number + ver=${arr[0]} + # comparable JVM version number + comp=$(get_comparable_java_version $ver) + # [1] JVM path + path="${arr[1]}" + # construct string item for adding to the "matchingJVMs" array + item="$comp:$ver:$path" + + # pre-requisite: current version number needs to be greater than min version number + if [ "$comp" -ge "$minC" ] ; then + + # perform max version checks if max version requirement is present + if [ ! -z ${JVMMaxVersion} ] ; then + + # max version requirement ends with '*' modifier + if [[ ${JVMMaxVersion} == *\* ]] ; then + + # use the '*' modifier from the max version string as wildcard for a 'starts with' comparison + # and check whether the current version number starts with the max version wildcard string + if [[ ${ver} == ${JVMMaxVersion} ]]; then + matchingJVMs+=("$item") + + # or whether the current comparable version is lower than the comparable max version + elif [ "$comp" -le "$maxC" ] ; then + matchingJVMs+=("$item") + fi + + # max version requirement ends with '+' modifier -> always add this version if it's greater than $min + # because a max requirement with + modifier doesn't make sense + elif [[ ${JVMMaxVersion} == *+ ]] ; then + matchingJVMs+=("$item") + + # matches 6 zeros at the end of the max version string (e.g. for 1.8, 9) + # -> then the max version string should be treated like with a '*' modifier at the end + #elif [[ ${maxC} =~ ^[0-9]{2}0{6}$ ]] && [ "$comp" -le $(( ${maxC#0} + 999 )) ] ; then + # matchingJVMs+=("$item") + + # matches 3 zeros at the end of the max version string (e.g. for 9.1, 10.3) + # -> then the max version string should be treated like with a '*' modifier at the end + #elif [[ ${maxC} =~ ^[0-9]{5}0{3}$ ]] && [ "$comp" -le "${maxC}" ] ; then + # matchingJVMs+=("$item") + + # matches standard requirements without modifier + elif [ "$comp" -le "$maxC" ]; then + matchingJVMs+=("$item") + fi + + # no max version requirement: + + # min version requirement ends with '+' modifier + # -> always add the current version because it's greater than $min + elif [[ ${JVMVersion} == *+ ]] ; then + matchingJVMs+=("$item") + + # min version requirement ends with '*' modifier + # -> use the '*' modifier from the min version string as wildcard for a 'starts with' comparison + # and check whether the current version number starts with the min version wildcard string + elif [[ ${JVMVersion} == *\* ]] ; then + if [[ ${ver} == ${JVMVersion} ]] ; then + matchingJVMs+=("$item") + fi + + # compare the min version against the current version with an additional * wildcard for a 'starts with' comparison + # -> e.g. add 1.8.0_44 when the requirement is 1.8 + elif [[ ${ver} == ${JVMVersion}* ]] ; then + matchingJVMs+=("$item") + fi + fi + done + # unset for loop variables + unset arr ver comp path item + + # debug output + for i in "${matchingJVMs[@]}" + do + stub_logger "[JavaSearch] ... ... matches all requirements: $i" + done + + + # sort the matching JavaVirtualMachines by version number + # https://stackoverflow.com/a/11789688/1128689 + IFS=$'\n' matchingJVMs=($(sort -nr <<<"${matchingJVMs[*]}")) + unset IFS + + + # get the highest matching JVM + for ((i = 0; i < ${#matchingJVMs[@]}; i++)); + do + # split JVM string at ':' delimiter to retain spaces in $path substring + IFS=: arr=(${matchingJVMs[$i]}) ; unset IFS + # [0] comparable JVM version number + comp=${arr[0]} + # [1] JVM version number + ver=${arr[1]} + # [2] JVM path + path="${arr[2]}" + + # use current value as JAVACMD if it's executable + if [ -x "$path" ] ; then + JAVACMD="$path" + JAVACMD_version=$comp + break + fi + done + # unset for loop variables + unset arr comp ver path +fi + +# log the Java Command and the extracted version number +stub_logger "[JavaCommand] '$JAVACMD'" +stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" + + + +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + + # different error messages when a specific JVM was required + if [ ! -z "${JVMVersion}" ] ; then + # display human readable java version (#28) + java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). + + if [ ! -z "${JVMMaxVersion}" ] ; then + java_version_hr=$(extract_java_major_version ${JVMVersion}) + java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" + fi + + # log exit cause + stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" + + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" + # exit with error + exit 3 + + else + # log exit cause + stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" + # exit with error + exit 1 + fi +fi + + + +# MainClass check +############################################ + +if [ -z "${JVMMainClass}" ]; then + # log exit cause + stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + # exit with error + exit 2 +fi + + + +# execute $JAVACMD and do some preparation +############################################ + +# enable drag&drop to the dock icon +export CFProcessPath="$0" + +# remove Apples ProcessSerialNumber from passthru arguments (#39) +if [[ "$*" == -psn* ]] ; then + ArgsPassthru=() +else + ArgsPassthru=("$@") +fi + +# change to Working Directory based upon Apple/Oracle Plist info +cd "${WorkingDirectory}" || exit 13 +stub_logger "[WorkingDirectory] ${WorkingDirectory}" + +# execute Java and set +# - classpath +# - splash image +# - dock icon +# - app name +# - JVM options / properties (-D) +# - JVM default options (-X) +# - main class +# - main class arguments +# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon +stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" +exec "${JAVACMD}" \ + -cp "${JVMClassPath}" \ + -splash:"${ResourcesFolder}/${JVMSplashFile}" \ + -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ + -Xdock:name="${CFBundleName}" \ + ${JVMOptions:+"${JVMOptions[@]}" }\ + ${JVMDefaultOptions:+$JVMDefaultOptions }\ + "${JVMMainClass}"\ + ${MainArgsArr:+ "${MainArgsArr[@]}"}\ + ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationJREStub beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationJREStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationJREStub 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationJREStub 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,650 @@ +#!/bin/bash +################################################################################## +# # +# universalJavaApplicationStub # +# # +# A BASH based JavaApplicationStub for Java Apps on Mac OS X # +# that works with both Apple's and Oracle's plist format. # +# # +# Inspired by Ian Roberts stackoverflow answer # +# at http://stackoverflow.com/a/17546508/1128689 # +# # +# @author Tobias Fischer # +# @url https://github.com/tofi86/universalJavaApplicationStub # +# @date 2021-02-21 # +# @version 3.2.0 # +# # +################################################################################## +# # +# The MIT License (MIT) # +# # +# Copyright (c) 2014-2021 Tobias Fischer # +# # +# Permission is hereby granted, free of charge, to any person obtaining a copy # +# of this software and associated documentation files (the "Software"), to deal # +# in the Software without restriction, including without limitation the rights # +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # +# copies of the Software, and to permit persons to whom the Software is # +# furnished to do so, subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be included in all # +# copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +# # +################################################################################## + + + +# function 'stub_logger()' +# +# A logger which logs to the macOS Console.app using the 'syslog' command +# +# @param1 the log message +# @return void +################################################################################ +function stub_logger() { + syslog -s -k \ + Facility com.apple.console \ + Level Notice \ + Sender "$(basename "$0")" \ + Message "[$$][${CFBundleName:-$(basename "$0")}] $1" +} + + + +# set the directory abspath of the current +# shell script with symlinks being resolved +############################################ + +PRG=$0 +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) + if expr "$link" : '^/' 2> /dev/null >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi +done +PROGDIR=$(dirname "$PRG") +stub_logger "[StubDir] $PROGDIR" + + + +# set files and folders +############################################ + +# the absolute path of the app package +cd "$PROGDIR"/../../ || exit 11 +AppPackageFolder=$(pwd) + +# the base path of the app package +cd .. || exit 12 +AppPackageRoot=$(pwd) + +# set Apple's Java folder +AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java + +# set Apple's Resources folder +AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set Oracle's Java folder +OracleJavaFolder="${AppPackageFolder}"/Contents/Java + +# set Oracle's Resources folder +OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set path to Info.plist in bundle +InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist + +# set the default JVM Version to a null string +JVMVersion="" +JVMMaxVersion="" + + + +# function 'plist_get()' +# +# read a specific Plist key with 'PlistBuddy' utility +# +# @param1 the Plist key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get(){ + /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null +} + +# function 'plist_get_java()' +# +# read a specific Plist key with 'PlistBuddy' utility +# in the 'Java' or 'JavaX' dictionary () +# +# @param1 the Plist :Java(X):Key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get_java(){ + plist_get ${JavaKey:-":Java"}$1 +} + + + +# read Info.plist and extract JVM options +############################################ + +# read the program name from CFBundleName +CFBundleName=$(plist_get ':CFBundleName') + +# read the icon file name +CFBundleIconFile=$(plist_get ':CFBundleIconFile') + + +# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode +/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 +exitcode=$? +JavaKey=":Java" + +# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode +if [ $exitcode -ne 0 ]; then + /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 + exitcode=$? + JavaKey=":JavaX" +fi + + +# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) +if [ $exitcode -eq 0 ]; then + stub_logger "[PlistStyle] Apple" + + # set Java and Resources folder + JavaFolder="${AppleJavaFolder}" + ResourcesFolder="${AppleResourcesFolder}" + + # set expandable variables + APP_ROOT="${AppPackageFolder}" + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${AppleJavaFolder}" + USER_HOME="$HOME" + + + # read the Java WorkingDirectory + JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) + # set Working Directory based upon PList value + if [[ ! -z ${JVMWorkDir} ]]; then + WorkingDirectory="${JVMWorkDir}" + else + # AppPackageRoot is the standard WorkingDirectory when the script is started + WorkingDirectory="${AppPackageRoot}" + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + WorkingDirectory=$(eval echo "${WorkingDirectory}") + + + # read the MainClass name + JVMMainClass="$(plist_get_java ':MainClass')" + + # read the SplashFile name + JVMSplashFile=$(plist_get_java ':SplashFile') + + # read the JVM Properties as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + else + JVMClassPath=${JVMClassPath_RAW} + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + # read the JVM Options in either Array or String style + JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) + if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then + JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) + else + JVMDefaultOptions=${JVMDefaultOptions_RAW} + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME (#84) + JVMDefaultOptions=$(eval echo "${JVMDefaultOptions}") + + # read StartOnMainThread and add as -XstartOnFirstThread + JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') + if [ "${JVMStartOnMainThread}" == "true" ]; then + JVMDefaultOptions+=" -XstartOnFirstThread" + fi + + # read the JVM Arguments in either Array or String style (#76) and retain spaces + IFS=$'\t\n' + MainArgs_RAW=$(plist_get_java ':Arguments' | xargs) + if [[ $MainArgs_RAW == *Array* ]] ; then + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + else + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) + fi + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get_java ':JVMVersion' | xargs) + # post processing of the version string follows below... + + +# read 'Info.plist' file in Oracle style +else + stub_logger "[PlistStyle] Oracle" + + # set Working Directory and Java and Resources folder + JavaFolder="${OracleJavaFolder}" + ResourcesFolder="${OracleResourcesFolder}" + WorkingDirectory="${OracleJavaFolder}" + + # set expandable variables + APP_ROOT="${AppPackageFolder}" + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${OracleJavaFolder}" + USER_HOME="$HOME" + + # read the MainClass name + JVMMainClass="$(plist_get ':JVMMainClassName')" + + # read the SplashFile name + JVMSplashFile=$(plist_get ':JVMSplashFile') + + # read the JVM Options as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get ':JVMClassPath') + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + elif [[ ! -z ${JVMClassPath_RAW} ]] ; then + JVMClassPath=${JVMClassPath_RAW} + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + else + #default: fallback to OracleJavaFolder + JVMClassPath="${JavaFolder}/*" + # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) + fi + + # read the JVM Default Options by parsing the :JVMDefaultOptions + # and pulling all values starting with a dash (-) + JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME (#99) + JVMDefaultOptions=$(eval echo "${JVMDefaultOptions}") + + # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get ':JVMVersion' | xargs) + # post processing of the version string follows below... +fi + + +# (#75) check for undefined icons or icon names without .icns extension and prepare +# an osascript statement for those cases when the icon can be shown in the dialog +DialogWithIcon="" +if [ ! -z ${CFBundleIconFile} ]; then + if [[ ${CFBundleIconFile} == *.icns ]] && [[ -f "${ResourcesFolder}/${CFBundleIconFile}" ]] ; then + DialogWithIcon=" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + elif [[ ${CFBundleIconFile} != *.icns ]] && [[ -f "${ResourcesFolder}/${CFBundleIconFile}.icns" ]] ; then + CFBundleIconFile+=".icns" + DialogWithIcon=" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + fi +fi + + +# JVMVersion: post processing and optional splitting +if [[ ${JVMVersion} == *";"* ]]; then + minMaxArray=(${JVMVersion//;/ }) + JVMVersion=${minMaxArray[0]//+} + JVMMaxVersion=${minMaxArray[1]//+} +fi +stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" +stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" + +# MainArgs: expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME +MainArgsArr=() +for i in "${MainArgs[@]}" +do + MainArgsArr+=("$(eval echo "$i")") +done + +# JVMOptions: expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME +JVMOptionsArr=() +for i in "${JVMOptions[@]}" +do + JVMOptionsArr+=("$(eval echo "$i")") +done + + +# internationalized messages +############################################ + +# supported languages / available translations +stubLanguages="^(fr|de|zh|es|en)-" + +# read user preferred languages as defined in macOS System Preferences (#101) +stub_logger '[LanguageSearch] Checking preferred languages in macOS System Preferences...' +appleLanguages=($(defaults read -g AppleLanguages | grep '\s"' | tr -d ',' | xargs)) +stub_logger "[LanguageSearch] ... found [${appleLanguages[*]}]" + +language="" +for i in "${appleLanguages[@]}" +do + langValue="${i%-*}" + if [[ "$i" =~ $stubLanguages ]]; then + stub_logger "[LanguageSearch] ... selected '$i' ('$langValue') as the default language for the launcher stub" + language=${langValue} + break + fi +done +if [ -z "${language}" ]; then + language="en" + stub_logger "[LanguageSearch] ... selected fallback 'en' as the default language for the launcher stub" +fi +stub_logger "[Language] $language" + + +case "${language}" in +# French +fr) + MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." + MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version de Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." + MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" + MSG_JAVA_VERSION_OR_LATER="ou ultérieur" + MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" + MSG_JAVA_VERSION_MAX="à %s" + MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." + MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." + MSG_LATER="Plus tard" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; + +# German +de) + MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." + MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" + MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." + MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" + MSG_JAVA_VERSION_OR_LATER="oder neuer" + MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" + MSG_JAVA_VERSION_MAX="bis %s" + MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." + MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." + MSG_LATER="Später" + MSG_VISIT_JAVA_DOT_COM="Java von Oracle" + MSG_VISIT_ADOPTOPENJDK="Java von AdoptOpenJDK" + ;; + +# Simplified Chinese +zh) + MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." + MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" + MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" + MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" + MSG_JAVA_VERSION_OR_LATER="及以上版本" + MSG_JAVA_VERSION_LATEST="(最新版本)" + MSG_JAVA_VERSION_MAX="最高为 %s" + MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" + MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" + MSG_LATER="稍后" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; + +# Spanish +es) + MSG_ERROR_LAUNCHING="ERROR iniciando '${CFBundleName}'." + MSG_MISSING_MAINCLASS="¡'MainClass' no especificada!\n¡La aplicación Java no puede iniciarse!" + MSG_JVMVERSION_REQ_INVALID="La sintaxis de la versión Java requerida no es válida: %s\nPor favor, contacte con el desarrollador de la aplicación." + MSG_NO_SUITABLE_JAVA="¡No se encontró una versión de Java adecuada en su sistema!\nEste programa requiere Java %s" + MSG_JAVA_VERSION_OR_LATER="o posterior" + MSG_JAVA_VERSION_LATEST="(ultima actualización)" + MSG_JAVA_VERSION_MAX="superior a %s" + MSG_NO_SUITABLE_JAVA_CHECK="Asegúrese de instalar la versión Java requerida." + MSG_INSTALL_JAVA="¡Necesita tener JAVA instalado en su Mac!\nVisite java.com para consultar las instrucciones para su instalación..." + MSG_LATER="Más tarde" + MSG_VISIT_JAVA_DOT_COM="Java de Oracle" + MSG_VISIT_ADOPTOPENJDK="Java de AdoptOpenJDK" + ;; + +# English | default +en|*) + MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" + MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." + MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" + MSG_JAVA_VERSION_OR_LATER="or later" + MSG_JAVA_VERSION_LATEST="(latest update)" + MSG_JAVA_VERSION_MAX="up to %s" + MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." + MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." + MSG_LATER="Later" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; +esac + + + +# function 'get_java_version_from_cmd()' +# +# returns Java version string from 'java -version' command +# works for both old (1.8) and new (9) version schema +# +# @param1 path to a java JVM executable +# @return the Java version number as displayed in 'java -version' command +################################################################################ +function get_java_version_from_cmd() { + # second sed command strips " and -ea from the version string + echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') +} + + +# function 'extract_java_major_version()' +# +# extract Java major version from a version string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return the major version (e.g. '7', '8' or '9', etc.) +################################################################################ +function extract_java_major_version() { + echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') +} + + +# function 'get_comparable_java_version()' +# +# return comparable version for a Java version number or requirement string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') +################################################################################ +function get_comparable_java_version() { + # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' + local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') + # splitting at '.' into an array + local arr=( ${cleaned//./ } ) + # echo a string with left padded version numbers + echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" +} + + +# function 'is_valid_requirement_pattern()' +# +# check whether the Java requirement is a valid requirement pattern +# +# supported requirements are for example: +# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] +# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6.0_45 requires Java 6u45 [1.6.0_45] +# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] +# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] +# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] +# - 9.1.3 requires Java 9.1.3 [9.1.3] +# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] +# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] +# - 10-ea requires Java 10 (early access release) +# +# unsupported requirement patterns are for example: +# - 1.2, 1.3, 1.9 Java 2, 3 are not supported +# - 1.9 Java 9 introduced a new versioning scheme +# - 6u45 known versioning syntax, but unsupported +# - 9-ea*, 9-ea+ early access releases paired with */+ +# - 9., 9.*, 9.+ version ending with a . +# - 9.1., 9.1.*, 9.1.+ version ending with a . +# - 9.3.5.6 4 part version number is unsupported +# +# @param1 a Java requirement string ('1.8+') +# @return boolean exit code: 0 (is valid), 1 (is not valid) +################################################################################ +function is_valid_requirement_pattern() { + local java_req=$1 + java8pattern='1\.[4-8](\.[0-9]+)?(\.0_[0-9]+)?[*+]?' + java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' + # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) + if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then + return 0 + else + return 1 + fi +} + + + +# determine which JVM to use +############################################ + +# modified for BEAST 2 with JRE +JAVACMD="${AppPackageFolder}/../jre1.8.0_292/bin/java" + + +# log the Java Command and the extracted version number +stub_logger "[JavaCommand] '$JAVACMD'" +stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" + + + +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + + # different error messages when a specific JVM was required + if [ ! -z "${JVMVersion}" ] ; then + # display human readable java version (#28) + java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). + + if [ ! -z "${JVMMaxVersion}" ] ; then + java_version_hr=$(extract_java_major_version ${JVMVersion}) + java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" + fi + + # log exit cause + stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" + + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\", \"${MSG_VISIT_ADOPTOPENJDK}\"} default button 1${DialogWithIcon}" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"https://www.java.com/download/\"" \ + -e "if response is \"${MSG_VISIT_ADOPTOPENJDK}\" then open location \"https://adoptopenjdk.net/releases.html\"" + # exit with error + exit 3 + + else + # log exit cause + stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\", \"${MSG_VISIT_ADOPTOPENJDK}\"} default button 1${DialogWithIcon}" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"https://www.java.com/download/\"" \ + -e "if response is \"${MSG_VISIT_ADOPTOPENJDK}\" then open location \"https://adoptopenjdk.net/releases.html\"" + # exit with error + exit 1 + fi +fi + + + +# MainClass check +############################################ + +if [ -z "${JVMMainClass}" ]; then + # log exit cause + stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1${DialogWithIcon}" + # exit with error + exit 2 +fi + + + +# execute $JAVACMD and do some preparation +############################################ + +# enable drag&drop to the dock icon +export CFProcessPath="$0" + +# remove Apples ProcessSerialNumber from passthru arguments (#39) +if [[ "$*" == -psn* ]] ; then + ArgsPassthru=() +else + ArgsPassthru=("$@") +fi + +# change to Working Directory based upon Apple/Oracle Plist info +cd "${WorkingDirectory}" || exit 13 +stub_logger "[WorkingDirectory] ${WorkingDirectory}" + +# execute Java and set +# - classpath +# - splash image +# - dock icon +# - app name +# - JVM options / properties (-D) +# - JVM default options (-X) +# - main class +# - main class arguments +# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon +stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" ${JVMSplashFile:+ -splash:\"${ResourcesFolder}/${JVMSplashFile}\"} -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" +exec "${JAVACMD}" \ + -cp "${JVMClassPath}" \ + ${JVMSplashFile:+ -splash:"${ResourcesFolder}/${JVMSplashFile}"} \ + -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ + -Xdock:name="${CFBundleName}" \ + ${JVMOptionsArr:+"${JVMOptionsArr[@]}" }\ + ${JVMDefaultOptions:+$JVMDefaultOptions }\ + "${JVMMainClass}"\ + ${MainArgsArr:+ "${MainArgsArr[@]}"}\ + ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationStub beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationStub 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/stub/3-2-0/universalJavaApplicationStub 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,888 @@ +#!/bin/bash +################################################################################## +# # +# universalJavaApplicationStub # +# # +# A BASH based JavaApplicationStub for Java Apps on Mac OS X # +# that works with both Apple's and Oracle's plist format. # +# # +# Inspired by Ian Roberts stackoverflow answer # +# at http://stackoverflow.com/a/17546508/1128689 # +# # +# @author Tobias Fischer # +# @url https://github.com/tofi86/universalJavaApplicationStub # +# @date 2021-02-21 # +# @version 3.2.0 # +# # +################################################################################## +# # +# The MIT License (MIT) # +# # +# Copyright (c) 2014-2021 Tobias Fischer # +# # +# Permission is hereby granted, free of charge, to any person obtaining a copy # +# of this software and associated documentation files (the "Software"), to deal # +# in the Software without restriction, including without limitation the rights # +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # +# copies of the Software, and to permit persons to whom the Software is # +# furnished to do so, subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be included in all # +# copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +# # +################################################################################## + + + +# function 'stub_logger()' +# +# A logger which logs to the macOS Console.app using the 'syslog' command +# +# @param1 the log message +# @return void +################################################################################ +function stub_logger() { + syslog -s -k \ + Facility com.apple.console \ + Level Notice \ + Sender "$(basename "$0")" \ + Message "[$$][${CFBundleName:-$(basename "$0")}] $1" +} + + + +# set the directory abspath of the current +# shell script with symlinks being resolved +############################################ + +PRG=$0 +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) + if expr "$link" : '^/' 2> /dev/null >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi +done +PROGDIR=$(dirname "$PRG") +stub_logger "[StubDir] $PROGDIR" + + + +# set files and folders +############################################ + +# the absolute path of the app package +cd "$PROGDIR"/../../ || exit 11 +AppPackageFolder=$(pwd) + +# the base path of the app package +cd .. || exit 12 +AppPackageRoot=$(pwd) + +# set Apple's Java folder +AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java + +# set Apple's Resources folder +AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set Oracle's Java folder +OracleJavaFolder="${AppPackageFolder}"/Contents/Java + +# set Oracle's Resources folder +OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources + +# set path to Info.plist in bundle +InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist + +# set the default JVM Version to a null string +JVMVersion="" +JVMMaxVersion="" + + + +# function 'plist_get()' +# +# read a specific Plist key with 'PlistBuddy' utility +# +# @param1 the Plist key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get(){ + /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null +} + +# function 'plist_get_java()' +# +# read a specific Plist key with 'PlistBuddy' utility +# in the 'Java' or 'JavaX' dictionary () +# +# @param1 the Plist :Java(X):Key with leading colon ':' +# @return the value as String or Array +################################################################################ +plist_get_java(){ + plist_get ${JavaKey:-":Java"}$1 +} + + + +# read Info.plist and extract JVM options +############################################ + +# read the program name from CFBundleName +CFBundleName=$(plist_get ':CFBundleName') + +# read the icon file name +CFBundleIconFile=$(plist_get ':CFBundleIconFile') + + +# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode +/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 +exitcode=$? +JavaKey=":Java" + +# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode +if [ $exitcode -ne 0 ]; then + /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 + exitcode=$? + JavaKey=":JavaX" +fi + + +# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) +if [ $exitcode -eq 0 ]; then + stub_logger "[PlistStyle] Apple" + + # set Java and Resources folder + JavaFolder="${AppleJavaFolder}" + ResourcesFolder="${AppleResourcesFolder}" + + # set expandable variables + APP_ROOT="${AppPackageFolder}" + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${AppleJavaFolder}" + USER_HOME="$HOME" + + + # read the Java WorkingDirectory + JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) + # set Working Directory based upon PList value + if [[ ! -z ${JVMWorkDir} ]]; then + WorkingDirectory="${JVMWorkDir}" + else + # AppPackageRoot is the standard WorkingDirectory when the script is started + WorkingDirectory="${AppPackageRoot}" + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + WorkingDirectory=$(eval echo "${WorkingDirectory}") + + + # read the MainClass name + JVMMainClass="$(plist_get_java ':MainClass')" + + # read the SplashFile name + JVMSplashFile=$(plist_get_java ':SplashFile') + + # read the JVM Properties as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + else + JVMClassPath=${JVMClassPath_RAW} + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + # read the JVM Options in either Array or String style + JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) + if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then + JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) + else + JVMDefaultOptions=${JVMDefaultOptions_RAW} + fi + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME (#84) + JVMDefaultOptions=$(eval echo "${JVMDefaultOptions}") + + # read StartOnMainThread and add as -XstartOnFirstThread + JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') + if [ "${JVMStartOnMainThread}" == "true" ]; then + JVMDefaultOptions+=" -XstartOnFirstThread" + fi + + # read the JVM Arguments in either Array or String style (#76) and retain spaces + IFS=$'\t\n' + MainArgs_RAW=$(plist_get_java ':Arguments' | xargs) + if [[ $MainArgs_RAW == *Array* ]] ; then + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + else + MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) + fi + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get_java ':JVMVersion' | xargs) + # post processing of the version string follows below... + + +# read 'Info.plist' file in Oracle style +else + stub_logger "[PlistStyle] Oracle" + + # set Working Directory and Java and Resources folder + JavaFolder="${OracleJavaFolder}" + ResourcesFolder="${OracleResourcesFolder}" + WorkingDirectory="${OracleJavaFolder}" + + # set expandable variables + APP_ROOT="${AppPackageFolder}" + APP_PACKAGE="${AppPackageFolder}" + JAVAROOT="${OracleJavaFolder}" + USER_HOME="$HOME" + + # read the MainClass name + JVMMainClass="$(plist_get ':JVMMainClassName')" + + # read the SplashFile name + JVMSplashFile=$(plist_get ':JVMSplashFile') + + # read the JVM Options as an array and retain spaces + IFS=$'\t\n' + JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) + unset IFS + # post processing of the array follows further below... + + # read the ClassPath in either Array or String style + JVMClassPath_RAW=$(plist_get ':JVMClassPath') + if [[ $JVMClassPath_RAW == *Array* ]] ; then + JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + elif [[ ! -z ${JVMClassPath_RAW} ]] ; then + JVMClassPath=${JVMClassPath_RAW} + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME + JVMClassPath=$(eval echo "${JVMClassPath}") + + else + #default: fallback to OracleJavaFolder + JVMClassPath="${JavaFolder}/*" + # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) + fi + + # read the JVM Default Options by parsing the :JVMDefaultOptions + # and pulling all values starting with a dash (-) + JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) + # expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME (#99) + JVMDefaultOptions=$(eval echo "${JVMDefaultOptions}") + + # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) + IFS=$'\t\n' + MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) + unset IFS + # post processing of the array follows further below... + + # read the Java version we want to find + JVMVersion=$(plist_get ':JVMVersion' | xargs) + # post processing of the version string follows below... +fi + + +# (#75) check for undefined icons or icon names without .icns extension and prepare +# an osascript statement for those cases when the icon can be shown in the dialog +DialogWithIcon="" +if [ ! -z ${CFBundleIconFile} ]; then + if [[ ${CFBundleIconFile} == *.icns ]] && [[ -f "${ResourcesFolder}/${CFBundleIconFile}" ]] ; then + DialogWithIcon=" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + elif [[ ${CFBundleIconFile} != *.icns ]] && [[ -f "${ResourcesFolder}/${CFBundleIconFile}.icns" ]] ; then + CFBundleIconFile+=".icns" + DialogWithIcon=" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" + fi +fi + + +# JVMVersion: post processing and optional splitting +if [[ ${JVMVersion} == *";"* ]]; then + minMaxArray=(${JVMVersion//;/ }) + JVMVersion=${minMaxArray[0]//+} + JVMMaxVersion=${minMaxArray[1]//+} +fi +stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" +stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" + +# MainArgs: expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME +MainArgsArr=() +for i in "${MainArgs[@]}" +do + MainArgsArr+=("$(eval echo "$i")") +done + +# JVMOptions: expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOME +JVMOptionsArr=() +for i in "${JVMOptions[@]}" +do + JVMOptionsArr+=("$(eval echo "$i")") +done + + +# internationalized messages +############################################ + +# supported languages / available translations +stubLanguages="^(fr|de|zh|es|en)-" + +# read user preferred languages as defined in macOS System Preferences (#101) +stub_logger '[LanguageSearch] Checking preferred languages in macOS System Preferences...' +appleLanguages=($(defaults read -g AppleLanguages | grep '\s"' | tr -d ',' | xargs)) +stub_logger "[LanguageSearch] ... found [${appleLanguages[*]}]" + +language="" +for i in "${appleLanguages[@]}" +do + langValue="${i%-*}" + if [[ "$i" =~ $stubLanguages ]]; then + stub_logger "[LanguageSearch] ... selected '$i' ('$langValue') as the default language for the launcher stub" + language=${langValue} + break + fi +done +if [ -z "${language}" ]; then + language="en" + stub_logger "[LanguageSearch] ... selected fallback 'en' as the default language for the launcher stub" +fi +stub_logger "[Language] $language" + + +case "${language}" in +# French +fr) + MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." + MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version de Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." + MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" + MSG_JAVA_VERSION_OR_LATER="ou ultérieur" + MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" + MSG_JAVA_VERSION_MAX="à %s" + MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." + MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." + MSG_LATER="Plus tard" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; + +# German +de) + MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." + MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" + MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." + MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" + MSG_JAVA_VERSION_OR_LATER="oder neuer" + MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" + MSG_JAVA_VERSION_MAX="bis %s" + MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." + MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." + MSG_LATER="Später" + MSG_VISIT_JAVA_DOT_COM="Java von Oracle" + MSG_VISIT_ADOPTOPENJDK="Java von AdoptOpenJDK" + ;; + +# Simplified Chinese +zh) + MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." + MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" + MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" + MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" + MSG_JAVA_VERSION_OR_LATER="及以上版本" + MSG_JAVA_VERSION_LATEST="(最新版本)" + MSG_JAVA_VERSION_MAX="最高为 %s" + MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" + MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" + MSG_LATER="稍后" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; + +# Spanish +es) + MSG_ERROR_LAUNCHING="ERROR iniciando '${CFBundleName}'." + MSG_MISSING_MAINCLASS="¡'MainClass' no especificada!\n¡La aplicación Java no puede iniciarse!" + MSG_JVMVERSION_REQ_INVALID="La sintaxis de la versión Java requerida no es válida: %s\nPor favor, contacte con el desarrollador de la aplicación." + MSG_NO_SUITABLE_JAVA="¡No se encontró una versión de Java adecuada en su sistema!\nEste programa requiere Java %s" + MSG_JAVA_VERSION_OR_LATER="o posterior" + MSG_JAVA_VERSION_LATEST="(ultima actualización)" + MSG_JAVA_VERSION_MAX="superior a %s" + MSG_NO_SUITABLE_JAVA_CHECK="Asegúrese de instalar la versión Java requerida." + MSG_INSTALL_JAVA="¡Necesita tener JAVA instalado en su Mac!\nVisite java.com para consultar las instrucciones para su instalación..." + MSG_LATER="Más tarde" + MSG_VISIT_JAVA_DOT_COM="Java de Oracle" + MSG_VISIT_ADOPTOPENJDK="Java de AdoptOpenJDK" + ;; + +# English | default +en|*) + MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." + MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" + MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." + MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" + MSG_JAVA_VERSION_OR_LATER="or later" + MSG_JAVA_VERSION_LATEST="(latest update)" + MSG_JAVA_VERSION_MAX="up to %s" + MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." + MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." + MSG_LATER="Later" + MSG_VISIT_JAVA_DOT_COM="Java by Oracle" + MSG_VISIT_ADOPTOPENJDK="Java by AdoptOpenJDK" + ;; +esac + + + +# function 'get_java_version_from_cmd()' +# +# returns Java version string from 'java -version' command +# works for both old (1.8) and new (9) version schema +# +# @param1 path to a java JVM executable +# @return the Java version number as displayed in 'java -version' command +################################################################################ +function get_java_version_from_cmd() { + # second sed command strips " and -ea from the version string + echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') +} + + +# function 'extract_java_major_version()' +# +# extract Java major version from a version string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return the major version (e.g. '7', '8' or '9', etc.) +################################################################################ +function extract_java_major_version() { + echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') +} + + +# function 'get_comparable_java_version()' +# +# return comparable version for a Java version number or requirement string +# +# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') +# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') +################################################################################ +function get_comparable_java_version() { + # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' + local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') + # splitting at '.' into an array + local arr=( ${cleaned//./ } ) + # echo a string with left padded version numbers + echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" +} + + +# function 'is_valid_requirement_pattern()' +# +# check whether the Java requirement is a valid requirement pattern +# +# supported requirements are for example: +# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] +# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] +# - 1.6.0_45 requires Java 6u45 [1.6.0_45] +# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] +# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] +# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] +# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] +# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] +# - 9.1.3 requires Java 9.1.3 [9.1.3] +# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] +# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] +# - 10-ea requires Java 10 (early access release) +# +# unsupported requirement patterns are for example: +# - 1.2, 1.3, 1.9 Java 2, 3 are not supported +# - 1.9 Java 9 introduced a new versioning scheme +# - 6u45 known versioning syntax, but unsupported +# - 9-ea*, 9-ea+ early access releases paired with */+ +# - 9., 9.*, 9.+ version ending with a . +# - 9.1., 9.1.*, 9.1.+ version ending with a . +# - 9.3.5.6 4 part version number is unsupported +# +# @param1 a Java requirement string ('1.8+') +# @return boolean exit code: 0 (is valid), 1 (is not valid) +################################################################################ +function is_valid_requirement_pattern() { + local java_req=$1 + java8pattern='1\.[4-8](\.[0-9]+)?(\.0_[0-9]+)?[*+]?' + java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' + # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) + if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then + return 0 + else + return 1 + fi +} + + + +# determine which JVM to use +############################################ + +# default Apple JRE plugin path (< 1.6) +apple_jre_plugin="/Library/Java/Home/bin/java" +apple_jre_version=$(get_java_version_from_cmd "${apple_jre_plugin}") +# default Oracle JRE plugin path (>= 1.7) +oracle_jre_plugin="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" +oracle_jre_version=$(get_java_version_from_cmd "${oracle_jre_plugin}") + + +# first check system variable "$JAVA_HOME" -> has precedence over any other System JVM +stub_logger '[JavaSearch] Checking for $JAVA_HOME ...' +if [ -n "$JAVA_HOME" ] ; then + stub_logger "[JavaSearch] ... found JAVA_HOME with value $JAVA_HOME" + + # PR 26: Allow specifying "$JAVA_HOME" relative to "$AppPackageFolder" + # which allows for bundling a custom version of Java inside your app! + if [[ $JAVA_HOME == /* ]] ; then + # if "$JAVA_HOME" starts with a Slash it's an absolute path + JAVACMD="$JAVA_HOME/bin/java" + stub_logger "[JavaSearch] ... parsing JAVA_HOME as absolute path to the executable '$JAVACMD'" + else + # otherwise it's a relative path to "$AppPackageFolder" + JAVACMD="$AppPackageFolder/$JAVA_HOME/bin/java" + stub_logger "[JavaSearch] ... parsing JAVA_HOME as relative path inside the App bundle to the executable '$JAVACMD'" + fi + JAVACMD_version=$(get_comparable_java_version $(get_java_version_from_cmd "${JAVACMD}")) +else + stub_logger "[JavaSearch] ... haven't found JAVA_HOME" +fi + + +# check for any other or a specific Java version +# also if $JAVA_HOME exists but isn't executable +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + + # add a warning in the syslog if JAVA_HOME is not executable or not found (#100) + if [ -n "$JAVA_HOME" ] ; then + stub_logger "[JavaSearch] ... but no 'java' executable was found at the JAVA_HOME location!" + fi + + stub_logger "[JavaSearch] Searching for JavaVirtualMachines on the system ..." + # reset variables + JAVACMD="" + JAVACMD_version="" + + # first check whether JVMVersion string is a valid requirement string + if [ ! -z "${JVMVersion}" ] && ! is_valid_requirement_pattern ${JVMVersion} ; then + MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMVersion}") + # log exit cause + stub_logger "[EXIT 4] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1${DialogWithIcon}" + # exit with error + exit 4 + fi + # then check whether JVMMaxVersion string is a valid requirement string + if [ ! -z "${JVMMaxVersion}" ] && ! is_valid_requirement_pattern ${JVMMaxVersion} ; then + MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMMaxVersion}") + # log exit cause + stub_logger "[EXIT 5] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1${DialogWithIcon}" + # exit with error + exit 5 + fi + + + # find installed JavaVirtualMachines (JDK + JRE) + allJVMs=() + + # read JDK's from '/usr/libexec/java_home --xml' command with PlistBuddy and a custom Dict iterator + # idea: https://stackoverflow.com/a/14085460/1128689 and https://scriptingosx.com/2018/07/parsing-dscl-output-in-scripts/ + javaXml=$(/usr/libexec/java_home --xml) + javaCounter=$(/usr/libexec/PlistBuddy -c "Print" /dev/stdin <<< $javaXml | grep "Dict" | wc -l | tr -d ' ') + + # iterate over all Dict entries + # but only if there are any JVMs at all (#93) + if [ "$javaCounter" -gt "0" ] ; then + for idx in $(seq 0 $((javaCounter - 1))) + do + version=$(/usr/libexec/PlistBuddy -c "print :$idx:JVMVersion" /dev/stdin <<< $javaXml) + path=$(/usr/libexec/PlistBuddy -c "print :$idx:JVMHomePath" /dev/stdin <<< $javaXml) + path+="/bin/java" + allJVMs+=("$version:$path") + done + # unset for loop variables + unset version path + fi + + # add SDKMAN! java versions (#95) + if [ -d ~/.sdkman/candidates/java/ ] ; then + for sdkjdk in ~/.sdkman/candidates/java/*/ + do + if [[ ${sdkjdk} =~ /current/$ ]] ; then + continue + fi + + sdkjdkcmd="${sdkjdk}bin/java" + version=$(get_java_version_from_cmd "${sdkjdkcmd}") + allJVMs+=("$version:$sdkjdkcmd") + done + # unset for loop variables + unset version + fi + + # add Apple JRE if available + if [ -x "${apple_jre_plugin}" ] ; then + allJVMs+=("$apple_jre_version:$apple_jre_plugin") + fi + + # add Oracle JRE if available + if [ -x "${oracle_jre_plugin}" ] ; then + allJVMs+=("$oracle_jre_version:$oracle_jre_plugin") + fi + + # debug output + for i in "${allJVMs[@]}" + do + stub_logger "[JavaSearch] ... found JVM: $i" + done + + + # determine JVMs matching the min/max version requirement + + stub_logger "[JavaSearch] Filtering the result list for JVMs matching the min/max version requirement ..." + + minC=$(get_comparable_java_version ${JVMVersion}) + maxC=$(get_comparable_java_version ${JVMMaxVersion}) + matchingJVMs=() + + for i in "${allJVMs[@]}" + do + # split JVM string at ':' delimiter to retain spaces in $path substring + IFS=: arr=($i) ; unset IFS + # [0] JVM version number + ver=${arr[0]} + # comparable JVM version number + comp=$(get_comparable_java_version $ver) + # [1] JVM path + path="${arr[1]}" + # construct string item for adding to the "matchingJVMs" array + item="$comp:$ver:$path" + + # pre-requisite: current version number needs to be greater than min version number + if [ "$comp" -ge "$minC" ] ; then + + # perform max version checks if max version requirement is present + if [ ! -z ${JVMMaxVersion} ] ; then + + # max version requirement ends with '*' modifier + if [[ ${JVMMaxVersion} == *\* ]] ; then + + # use the '*' modifier from the max version string as wildcard for a 'starts with' comparison + # and check whether the current version number starts with the max version wildcard string + if [[ ${ver} == ${JVMMaxVersion} ]]; then + matchingJVMs+=("$item") + + # or whether the current comparable version is lower than the comparable max version + elif [ "$comp" -le "$maxC" ] ; then + matchingJVMs+=("$item") + fi + + # max version requirement ends with '+' modifier -> always add this version if it's greater than $min + # because a max requirement with + modifier doesn't make sense + elif [[ ${JVMMaxVersion} == *+ ]] ; then + matchingJVMs+=("$item") + + # matches 6 zeros at the end of the max version string (e.g. for 1.8, 9) + # -> then the max version string should be treated like with a '*' modifier at the end + #elif [[ ${maxC} =~ ^[0-9]{2}0{6}$ ]] && [ "$comp" -le $(( ${maxC#0} + 999 )) ] ; then + # matchingJVMs+=("$item") + + # matches 3 zeros at the end of the max version string (e.g. for 9.1, 10.3) + # -> then the max version string should be treated like with a '*' modifier at the end + #elif [[ ${maxC} =~ ^[0-9]{5}0{3}$ ]] && [ "$comp" -le "${maxC}" ] ; then + # matchingJVMs+=("$item") + + # matches standard requirements without modifier + elif [ "$comp" -le "$maxC" ]; then + matchingJVMs+=("$item") + fi + + # no max version requirement: + + # min version requirement ends with '+' modifier + # -> always add the current version because it's greater than $min + elif [[ ${JVMVersion} == *+ ]] ; then + matchingJVMs+=("$item") + + # min version requirement ends with '*' modifier + # -> use the '*' modifier from the min version string as wildcard for a 'starts with' comparison + # and check whether the current version number starts with the min version wildcard string + elif [[ ${JVMVersion} == *\* ]] ; then + if [[ ${ver} == ${JVMVersion} ]] ; then + matchingJVMs+=("$item") + fi + + # compare the min version against the current version with an additional * wildcard for a 'starts with' comparison + # -> e.g. add 1.8.0_44 when the requirement is 1.8 + elif [[ ${ver} == ${JVMVersion}* ]] ; then + matchingJVMs+=("$item") + fi + fi + done + # unset for loop variables + unset arr ver comp path item + + # debug output + for i in "${matchingJVMs[@]}" + do + stub_logger "[JavaSearch] ... matches all requirements: $i" + done + + + # sort the matching JavaVirtualMachines by version number + # https://stackoverflow.com/a/11789688/1128689 + IFS=$'\n' matchingJVMs=($(sort -nr <<<"${matchingJVMs[*]}")) + unset IFS + + + # get the highest matching JVM + for ((i = 0; i < ${#matchingJVMs[@]}; i++)); + do + # split JVM string at ':' delimiter to retain spaces in $path substring + IFS=: arr=(${matchingJVMs[$i]}) ; unset IFS + # [0] comparable JVM version number + comp=${arr[0]} + # [1] JVM version number + ver=${arr[1]} + # [2] JVM path + path="${arr[2]}" + + # use current value as JAVACMD if it's executable + if [ -x "$path" ] ; then + JAVACMD="$path" + JAVACMD_version=$comp + break + fi + done + # unset for loop variables + unset arr comp ver path +fi + +# log the Java Command and the extracted version number +stub_logger "[JavaCommand] '$JAVACMD'" +stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" + + + +if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then + + # different error messages when a specific JVM was required + if [ ! -z "${JVMVersion}" ] ; then + # display human readable java version (#28) + java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). + + if [ ! -z "${JVMMaxVersion}" ] ; then + java_version_hr=$(extract_java_major_version ${JVMVersion}) + java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") + MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" + fi + + # log exit cause + stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" + + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\", \"${MSG_VISIT_ADOPTOPENJDK}\"} default button 1${DialogWithIcon}" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"https://www.java.com/download/\"" \ + -e "if response is \"${MSG_VISIT_ADOPTOPENJDK}\" then open location \"https://adoptopenjdk.net/releases.html\"" + # exit with error + exit 3 + + else + # log exit cause + stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\", \"${MSG_VISIT_ADOPTOPENJDK}\"} default button 1${DialogWithIcon}" \ + -e "set response to button returned of the result" \ + -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"https://www.java.com/download/\"" \ + -e "if response is \"${MSG_VISIT_ADOPTOPENJDK}\" then open location \"https://adoptopenjdk.net/releases.html\"" + # exit with error + exit 1 + fi +fi + + + +# MainClass check +############################################ + +if [ -z "${JVMMainClass}" ]; then + # log exit cause + stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" + # display error message with AppleScript + osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1${DialogWithIcon}" + # exit with error + exit 2 +fi + + + +# execute $JAVACMD and do some preparation +############################################ + +# enable drag&drop to the dock icon +export CFProcessPath="$0" + +# remove Apples ProcessSerialNumber from passthru arguments (#39) +if [[ "$*" == -psn* ]] ; then + ArgsPassthru=() +else + ArgsPassthru=("$@") +fi + +# change to Working Directory based upon Apple/Oracle Plist info +cd "${WorkingDirectory}" || exit 13 +stub_logger "[WorkingDirectory] ${WorkingDirectory}" + +# execute Java and set +# - classpath +# - splash image +# - dock icon +# - app name +# - JVM options / properties (-D) +# - JVM default options (-X) +# - main class +# - main class arguments +# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon +stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" ${JVMSplashFile:+ -splash:\"${ResourcesFolder}/${JVMSplashFile}\"} -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" +exec "${JAVACMD}" \ + -cp "${JVMClassPath}" \ + ${JVMSplashFile:+ -splash:"${ResourcesFolder}/${JVMSplashFile}"} \ + -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ + -Xdock:name="${CFBundleName}" \ + ${JVMOptionsArr:+"${JVMOptionsArr[@]}" }\ + ${JVMDefaultOptions:+$JVMDefaultOptions }\ + "${JVMMainClass}"\ + ${MainArgsArr:+ "${MainArgsArr[@]}"}\ + ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/universalJavaApplicationJREStub beast2-mcmc-2.6.7+dfsg/release/Mac/universalJavaApplicationJREStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/universalJavaApplicationJREStub 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/universalJavaApplicationJREStub 1970-01-01 00:00:00.000000000 +0000 @@ -1,572 +0,0 @@ -#!/bin/bash -################################################################################## -# # -# universalJavaApplicationStub # -# # -# A BASH based JavaApplicationStub for Java Apps on Mac OS X # -# that works with both Apple's and Oracle's plist format. # -# # -# Inspired by Ian Roberts stackoverflow answer # -# at http://stackoverflow.com/a/17546508/1128689 # -# # -# @author Tobias Fischer # -# @url https://github.com/tofi86/universalJavaApplicationStub # -# @date 2018-07-29 # -# @version 3.0.3 # -# # -################################################################################## -# # -# The MIT License (MIT) # -# # -# Copyright (c) 2014-2018 Tobias Fischer # -# # -# Permission is hereby granted, free of charge, to any person obtaining a copy # -# of this software and associated documentation files (the "Software"), to deal # -# in the Software without restriction, including without limitation the rights # -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # -# copies of the Software, and to permit persons to whom the Software is # -# furnished to do so, subject to the following conditions: # -# # -# The above copyright notice and this permission notice shall be included in all # -# copies or substantial portions of the Software. # -# # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # -# SOFTWARE. # -# # -################################################################################## - - - -# function 'stub_logger()' -# -# A logger which logs to the macOS Console.app using the 'syslog' command -# -# @param1 the log message -# @return void -################################################################################ -function stub_logger() { - syslog -s -k \ - Facility com.apple.console \ - Level Notice \ - Sender "$(basename "$0")" \ - Message "[$$][${CFBundleName:-$(basename "$0")}] $1" -} - - - -# set the directory abspath of the current -# shell script with symlinks being resolved -############################################ - -PRG=$0 -while [ -h "$PRG" ]; do - ls=$(ls -ld "$PRG") - link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) - if expr "$link" : '^/' 2> /dev/null >/dev/null; then - PRG="$link" - else - PRG="$(dirname "$PRG")/$link" - fi -done -PROGDIR=$(dirname "$PRG") -stub_logger "[StubDir] $PROGDIR" - - - -# set files and folders -############################################ - -# the absolute path of the app package -cd "$PROGDIR"/../../ || exit 11 -AppPackageFolder=$(pwd) - -# the base path of the app package -cd .. || exit 12 -AppPackageRoot=$(pwd) - -# set Apple's Java folder -AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java - -# set Apple's Resources folder -AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources - -# set Oracle's Java folder -OracleJavaFolder="${AppPackageFolder}"/Contents/Java - -# set Oracle's Resources folder -OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources - -# set path to Info.plist in bundle -InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist - -# set the default JVM Version to a null string -JVMVersion="" -JVMMaxVersion="" - - - -# function 'plist_get()' -# -# read a specific Plist key with 'PlistBuddy' utility -# -# @param1 the Plist key with leading colon ':' -# @return the value as String or Array -################################################################################ -plist_get(){ - /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null -} - -# function 'plist_get_java()' -# -# read a specific Plist key with 'PlistBuddy' utility -# in the 'Java' or 'JavaX' dictionary () -# -# @param1 the Plist :Java(X):Key with leading colon ':' -# @return the value as String or Array -################################################################################ -plist_get_java(){ - plist_get ${JavaKey:-":Java"}$1 -} - - - -# read Info.plist and extract JVM options -############################################ - -# read the program name from CFBundleName -CFBundleName=$(plist_get ':CFBundleName') - -# read the icon file name -CFBundleIconFile=$(plist_get ':CFBundleIconFile') - - -# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode -/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 -exitcode=$? -JavaKey=":Java" - -# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode -if [ $exitcode -ne 0 ]; then - /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 - exitcode=$? - JavaKey=":JavaX" -fi - - -# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) -if [ $exitcode -eq 0 ]; then - stub_logger "[PlistStyle] Apple" - - # set Java and Resources folder - JavaFolder="${AppleJavaFolder}" - ResourcesFolder="${AppleResourcesFolder}" - - APP_PACKAGE="${AppPackageFolder}" - JAVAROOT="${AppleJavaFolder}" - USER_HOME="$HOME" - - - # read the Java WorkingDirectory - JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) - # set Working Directory based upon PList value - if [[ ! -z ${JVMWorkDir} ]]; then - WorkingDirectory="${JVMWorkDir}" - else - # AppPackageRoot is the standard WorkingDirectory when the script is started - WorkingDirectory="${AppPackageRoot}" - fi - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - WorkingDirectory=$(eval echo "${WorkingDirectory}") - - - # read the MainClass name - JVMMainClass="$(plist_get_java ':MainClass')" - - # read the SplashFile name - JVMSplashFile=$(plist_get_java ':SplashFile') - - # read the JVM Properties as an array and retain spaces - IFS=$'\t\n' - JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) - unset IFS - # post processing of the array follows further below... - - # read the ClassPath in either Array or String style - JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) - if [[ $JVMClassPath_RAW == *Array* ]] ; then - JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) - else - JVMClassPath=${JVMClassPath_RAW} - fi - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - # read the JVM Options in either Array or String style - JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) - if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then - JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) - else - JVMDefaultOptions=${JVMDefaultOptions_RAW} - fi - - # read StartOnMainThread and add as -XstartOnFirstThread - JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') - if [ "${JVMStartOnMainThread}" == "true" ]; then - JVMDefaultOptions+=" -XstartOnFirstThread" - fi - - # read the JVM Arguments as an array and retain spaces - IFS=$'\t\n' - MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) - unset IFS - # post processing of the array follows further below... - - # read the Java version we want to find - JVMVersion=$(plist_get_java ':JVMVersion' | xargs) - # post processing of the version string follows below... - - -# read 'Info.plist' file in Oracle style -else - stub_logger "[PlistStyle] Oracle" - - # set Working Directory and Java and Resources folder - JavaFolder="${OracleJavaFolder}" - ResourcesFolder="${OracleResourcesFolder}" - WorkingDirectory="${OracleJavaFolder}" - - APP_ROOT="${AppPackageFolder}" - - # read the MainClass name - JVMMainClass="$(plist_get ':JVMMainClassName')" - - # read the SplashFile name - JVMSplashFile=$(plist_get ':JVMSplashFile') - - # read the JVM Options as an array and retain spaces - IFS=$'\t\n' - JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) - unset IFS - # post processing of the array follows further below... - - # read the ClassPath in either Array or String style - JVMClassPath_RAW=$(plist_get ':JVMClassPath') - if [[ $JVMClassPath_RAW == *Array* ]] ; then - JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - elif [[ ! -z ${JVMClassPath_RAW} ]] ; then - JVMClassPath=${JVMClassPath_RAW} - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - else - #default: fallback to OracleJavaFolder - JVMClassPath="${JavaFolder}/*" - # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) - fi - - # read the JVM Default Options - JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) - - # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) - IFS=$'\t\n' - MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) - unset IFS - # post processing of the array follows further below... - - # read the Java version we want to find - JVMVersion=$(plist_get ':JVMVersion' | xargs) - # post processing of the version string follows below... -fi - - - -# JVMVersion: post processing and optional splitting -if [[ ${JVMVersion} == *";"* ]]; then - minMaxArray=(${JVMVersion//;/ }) - JVMVersion=${minMaxArray[0]//+} - JVMMaxVersion=${minMaxArray[1]//+} -fi -stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" -stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" - -# MainArgs: replace occurences of $APP_ROOT with its content -MainArgsArr=() -for i in "${MainArgs[@]}" -do - MainArgsArr+=("$(eval echo "$i")") -done - -# JVMOptions: replace occurences of $APP_ROOT with its content -JVMOptionsArr=() -for i in "${JVMOptions[@]}" -do - JVMOptionsArr+=("$(eval echo "$i")") -done - - -# internationalized messages -############################################ - -LANG=$(defaults read -g AppleLocale) -stub_logger "[Language] $LANG" - -# French localization -if [[ $LANG == fr* ]] ; then - MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." - MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." - MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." - MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" - MSG_JAVA_VERSION_OR_LATER="ou ultérieur" - MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" - MSG_JAVA_VERSION_MAX="à %s" - MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." - MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." - MSG_LATER="Plus tard" - MSG_VISIT_JAVA_DOT_COM="Visiter java.com" - -# German localization -elif [[ $LANG == de* ]] ; then - MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." - MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" - MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." - MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" - MSG_JAVA_VERSION_OR_LATER="oder neuer" - MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" - MSG_JAVA_VERSION_MAX="bis %s" - MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." - MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." - MSG_LATER="Später" - MSG_VISIT_JAVA_DOT_COM="java.com öffnen" - -# Simplifyed Chinese localization -elif [[ $LANG == zh* ]] ; then - MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." - MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" - MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" - MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" - MSG_JAVA_VERSION_OR_LATER="及以上版本" - MSG_JAVA_VERSION_LATEST="(最新版本)" - MSG_JAVA_VERSION_MAX="最高为 %s" - MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" - MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" - MSG_LATER="稍后" - MSG_VISIT_JAVA_DOT_COM="访问 java.com" - -# English default localization -else - MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." - MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" - MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." - MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" - MSG_JAVA_VERSION_OR_LATER="or later" - MSG_JAVA_VERSION_LATEST="(latest update)" - MSG_JAVA_VERSION_MAX="up to %s" - MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." - MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." - MSG_LATER="Later" - MSG_VISIT_JAVA_DOT_COM="Visit java.com" -fi - - - -# function 'get_java_version_from_cmd()' -# -# returns Java version string from 'java -version' command -# works for both old (1.8) and new (9) version schema -# -# @param1 path to a java JVM executable -# @return the Java version number as displayed in 'java -version' command -################################################################################ -function get_java_version_from_cmd() { - # second sed command strips " and -ea from the version string - echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') -} - - -# function 'extract_java_major_version()' -# -# extract Java major version from a version string -# -# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') -# @return the major version (e.g. '7', '8' or '9', etc.) -################################################################################ -function extract_java_major_version() { - echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') -} - - -# function 'get_comparable_java_version()' -# -# return comparable version for a Java version number or requirement string -# -# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') -# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') -################################################################################ -function get_comparable_java_version() { - # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' - local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') - # splitting at '.' into an array - local arr=( ${cleaned//./ } ) - # echo a string with left padded version numbers - echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" -} - - -# function 'is_valid_requirement_pattern()' -# -# check whether the Java requirement is a valid requirement pattern -# -# supported requirements are for example: -# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] -# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6.0_45 requires Java 6u45 [1.6.0_45] -# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] -# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] -# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] -# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] -# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] -# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] -# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] -# - 9.1.3 requires Java 9.1.3 [9.1.3] -# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] -# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] -# - 10-ea requires Java 10 (early access release) -# -# unsupported requirement patterns are for example: -# - 1.2, 1.3, 1.9 Java 2, 3 are not supported -# - 1.9 Java 9 introduced a new versioning scheme -# - 6u45 known versioning syntax, but unsupported -# - 9-ea*, 9-ea+ early access releases paired with */+ -# - 9., 9.*, 9.+ version ending with a . -# - 9.1., 9.1.*, 9.1.+ version ending with a . -# - 9.3.5.6 4 part version number is unsupported -# -# @param1 a Java requirement string ('1.8+') -# @return boolean exit code: 0 (is valid), 1 (is not valid) -################################################################################ -function is_valid_requirement_pattern() { - local java_req=$1 - java8pattern='1\.[4-8](\.0)?(\.0_[0-9]+)?[*+]?' - java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' - # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) - if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then - return 0 - else - return 1 - fi -} - - - -# determine which JVM to use -############################################ - -JAVACMD="${AppPackageFolder}/../jre1.8.0_262/bin/java" - - -# log the Java Command and the extracted version number -stub_logger "[JavaCommand] '$JAVACMD'" -stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" - - - -if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then - - # different error messages when a specific JVM was required - if [ ! -z "${JVMVersion}" ] ; then - # display human readable java version (#28) - java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") - MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). - - if [ ! -z "${JVMMaxVersion}" ] ; then - java_version_hr=$(extract_java_major_version ${JVMVersion}) - java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") - MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" - fi - - # log exit cause - stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" - - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ - -e "set response to button returned of the result" \ - -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" - # exit with error - exit 3 - - else - # log exit cause - stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ - -e "set response to button returned of the result" \ - -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" - # exit with error - exit 1 - fi -fi - - - -# MainClass check -############################################ - -if [ -z "${JVMMainClass}" ]; then - # log exit cause - stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" - # exit with error - exit 2 -fi - - - -# execute $JAVACMD and do some preparation -############################################ - -# enable drag&drop to the dock icon -export CFProcessPath="$0" - -# remove Apples ProcessSerialNumber from passthru arguments (#39) -if [[ "$*" == -psn* ]] ; then - ArgsPassthru=() -else - ArgsPassthru=("$@") -fi - -# change to Working Directory based upon Apple/Oracle Plist info -cd "${WorkingDirectory}" || exit 13 -stub_logger "[WorkingDirectory] ${WorkingDirectory}" - -# execute Java and set -# - classpath -# - splash image -# - dock icon -# - app name -# - JVM options / properties (-D) -# - JVM default options (-X) -# - main class -# - main class arguments -# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon -stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" -exec "${JAVACMD}" \ - -cp "${JVMClassPath}" \ - -splash:"${ResourcesFolder}/${JVMSplashFile}" \ - -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ - -Xdock:name="${CFBundleName}" \ - ${JVMOptions:+"${JVMOptions[@]}" }\ - ${JVMDefaultOptions:+$JVMDefaultOptions }\ - "${JVMMainClass}"\ - ${MainArgsArr:+ "${MainArgsArr[@]}"}\ - ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/release/Mac/universalJavaApplicationStub beast2-mcmc-2.6.7+dfsg/release/Mac/universalJavaApplicationStub --- beast2-mcmc-2.6.6+dfsg/release/Mac/universalJavaApplicationStub 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/release/Mac/universalJavaApplicationStub 1970-01-01 00:00:00.000000000 +0000 @@ -1,774 +0,0 @@ -#!/bin/bash -################################################################################## -# # -# universalJavaApplicationStub # -# # -# A BASH based JavaApplicationStub for Java Apps on Mac OS X # -# that works with both Apple's and Oracle's plist format. # -# # -# Inspired by Ian Roberts stackoverflow answer # -# at http://stackoverflow.com/a/17546508/1128689 # -# # -# @author Tobias Fischer # -# @url https://github.com/tofi86/universalJavaApplicationStub # -# @date 2018-07-29 # -# @version 3.0.3 # -# # -################################################################################## -# # -# The MIT License (MIT) # -# # -# Copyright (c) 2014-2018 Tobias Fischer # -# # -# Permission is hereby granted, free of charge, to any person obtaining a copy # -# of this software and associated documentation files (the "Software"), to deal # -# in the Software without restriction, including without limitation the rights # -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # -# copies of the Software, and to permit persons to whom the Software is # -# furnished to do so, subject to the following conditions: # -# # -# The above copyright notice and this permission notice shall be included in all # -# copies or substantial portions of the Software. # -# # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # -# SOFTWARE. # -# # -################################################################################## - - - -# function 'stub_logger()' -# -# A logger which logs to the macOS Console.app using the 'syslog' command -# -# @param1 the log message -# @return void -################################################################################ -function stub_logger() { - syslog -s -k \ - Facility com.apple.console \ - Level Notice \ - Sender "$(basename "$0")" \ - Message "[$$][${CFBundleName:-$(basename "$0")}] $1" -} - - - -# set the directory abspath of the current -# shell script with symlinks being resolved -############################################ - -PRG=$0 -while [ -h "$PRG" ]; do - ls=$(ls -ld "$PRG") - link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null) - if expr "$link" : '^/' 2> /dev/null >/dev/null; then - PRG="$link" - else - PRG="$(dirname "$PRG")/$link" - fi -done -PROGDIR=$(dirname "$PRG") -stub_logger "[StubDir] $PROGDIR" - - - -# set files and folders -############################################ - -# the absolute path of the app package -cd "$PROGDIR"/../../ || exit 11 -AppPackageFolder=$(pwd) - -# the base path of the app package -cd .. || exit 12 -AppPackageRoot=$(pwd) - -# set Apple's Java folder -AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java - -# set Apple's Resources folder -AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources - -# set Oracle's Java folder -OracleJavaFolder="${AppPackageFolder}"/Contents/Java - -# set Oracle's Resources folder -OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources - -# set path to Info.plist in bundle -InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist - -# set the default JVM Version to a null string -JVMVersion="" -JVMMaxVersion="" - - - -# function 'plist_get()' -# -# read a specific Plist key with 'PlistBuddy' utility -# -# @param1 the Plist key with leading colon ':' -# @return the value as String or Array -################################################################################ -plist_get(){ - /usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null -} - -# function 'plist_get_java()' -# -# read a specific Plist key with 'PlistBuddy' utility -# in the 'Java' or 'JavaX' dictionary () -# -# @param1 the Plist :Java(X):Key with leading colon ':' -# @return the value as String or Array -################################################################################ -plist_get_java(){ - plist_get ${JavaKey:-":Java"}$1 -} - - - -# read Info.plist and extract JVM options -############################################ - -# read the program name from CFBundleName -CFBundleName=$(plist_get ':CFBundleName') - -# read the icon file name -CFBundleIconFile=$(plist_get ':CFBundleIconFile') - - -# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode -/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1 -exitcode=$? -JavaKey=":Java" - -# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode -if [ $exitcode -ne 0 ]; then - /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1 - exitcode=$? - JavaKey=":JavaX" -fi - - -# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present) -if [ $exitcode -eq 0 ]; then - stub_logger "[PlistStyle] Apple" - - # set Java and Resources folder - JavaFolder="${AppleJavaFolder}" - ResourcesFolder="${AppleResourcesFolder}" - - APP_PACKAGE="${AppPackageFolder}" - JAVAROOT="${AppleJavaFolder}" - USER_HOME="$HOME" - - - # read the Java WorkingDirectory - JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs) - # set Working Directory based upon PList value - if [[ ! -z ${JVMWorkDir} ]]; then - WorkingDirectory="${JVMWorkDir}" - else - # AppPackageRoot is the standard WorkingDirectory when the script is started - WorkingDirectory="${AppPackageRoot}" - fi - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - WorkingDirectory=$(eval echo "${WorkingDirectory}") - - - # read the MainClass name - JVMMainClass="$(plist_get_java ':MainClass')" - - # read the SplashFile name - JVMSplashFile=$(plist_get_java ':SplashFile') - - # read the JVM Properties as an array and retain spaces - IFS=$'\t\n' - JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) - unset IFS - # post processing of the array follows further below... - - # read the ClassPath in either Array or String style - JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) - if [[ $JVMClassPath_RAW == *Array* ]] ; then - JVMClassPath=.$(plist_get_java ':ClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) - else - JVMClassPath=${JVMClassPath_RAW} - fi - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - # read the JVM Options in either Array or String style - JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs) - if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then - JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep " " | sed 's/^ */ /g' | tr -d '\n' | xargs) - else - JVMDefaultOptions=${JVMDefaultOptions_RAW} - fi - - # read StartOnMainThread and add as -XstartOnFirstThread - JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread') - if [ "${JVMStartOnMainThread}" == "true" ]; then - JVMDefaultOptions+=" -XstartOnFirstThread" - fi - - # read the JVM Arguments as an array and retain spaces - IFS=$'\t\n' - MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments'))) - unset IFS - # post processing of the array follows further below... - - # read the Java version we want to find - JVMVersion=$(plist_get_java ':JVMVersion' | xargs) - # post processing of the version string follows below... - - -# read 'Info.plist' file in Oracle style -else - stub_logger "[PlistStyle] Oracle" - - # set Working Directory and Java and Resources folder - JavaFolder="${OracleJavaFolder}" - ResourcesFolder="${OracleResourcesFolder}" - WorkingDirectory="${OracleJavaFolder}" - - APP_ROOT="${AppPackageFolder}" - - # read the MainClass name - JVMMainClass="$(plist_get ':JVMMainClassName')" - - # read the SplashFile name - JVMSplashFile=$(plist_get ':JVMSplashFile') - - # read the JVM Options as an array and retain spaces - IFS=$'\t\n' - JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) - unset IFS - # post processing of the array follows further below... - - # read the ClassPath in either Array or String style - JVMClassPath_RAW=$(plist_get ':JVMClassPath') - if [[ $JVMClassPath_RAW == *Array* ]] ; then - JVMClassPath=.$(plist_get ':JVMClassPath' | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs) - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - elif [[ ! -z ${JVMClassPath_RAW} ]] ; then - JVMClassPath=${JVMClassPath_RAW} - # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME - JVMClassPath=$(eval echo "${JVMClassPath}") - - else - #default: fallback to OracleJavaFolder - JVMClassPath="${JavaFolder}/*" - # Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42) - fi - - # read the JVM Default Options - JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs) - - # read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details) - IFS=$'\t\n' - MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g'))) - unset IFS - # post processing of the array follows further below... - - # read the Java version we want to find - JVMVersion=$(plist_get ':JVMVersion' | xargs) - # post processing of the version string follows below... -fi - - - -# JVMVersion: post processing and optional splitting -if [[ ${JVMVersion} == *";"* ]]; then - minMaxArray=(${JVMVersion//;/ }) - JVMVersion=${minMaxArray[0]//+} - JVMMaxVersion=${minMaxArray[1]//+} -fi -stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}" -stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}" - -# MainArgs: replace occurences of $APP_ROOT with its content -MainArgsArr=() -for i in "${MainArgs[@]}" -do - MainArgsArr+=("$(eval echo "$i")") -done - -# JVMOptions: replace occurences of $APP_ROOT with its content -JVMOptionsArr=() -for i in "${JVMOptions[@]}" -do - JVMOptionsArr+=("$(eval echo "$i")") -done - - -# internationalized messages -############################################ - -LANG=$(defaults read -g AppleLocale) -stub_logger "[Language] $LANG" - -# French localization -if [[ $LANG == fr* ]] ; then - MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'." - MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée." - MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application." - MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s" - MSG_JAVA_VERSION_OR_LATER="ou ultérieur" - MSG_JAVA_VERSION_LATEST="(dernière mise à jour)" - MSG_JAVA_VERSION_MAX="à %s" - MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise." - MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..." - MSG_LATER="Plus tard" - MSG_VISIT_JAVA_DOT_COM="Visiter java.com" - -# German localization -elif [[ $LANG == de* ]] ; then - MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'." - MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!" - MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App." - MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s" - MSG_JAVA_VERSION_OR_LATER="oder neuer" - MSG_JAVA_VERSION_LATEST="(neuste Unterversion)" - MSG_JAVA_VERSION_MAX="bis %s" - MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist." - MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise." - MSG_LATER="Später" - MSG_VISIT_JAVA_DOT_COM="java.com öffnen" - -# Simplifyed Chinese localization -elif [[ $LANG == zh* ]] ; then - MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'." - MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!" - MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。" - MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!" - MSG_JAVA_VERSION_OR_LATER="及以上版本" - MSG_JAVA_VERSION_LATEST="(最新版本)" - MSG_JAVA_VERSION_MAX="最高为 %s" - MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本" - MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。" - MSG_LATER="稍后" - MSG_VISIT_JAVA_DOT_COM="访问 java.com" - -# English default localization -else - MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'." - MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!" - MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer." - MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s" - MSG_JAVA_VERSION_OR_LATER="or later" - MSG_JAVA_VERSION_LATEST="(latest update)" - MSG_JAVA_VERSION_MAX="up to %s" - MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version." - MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..." - MSG_LATER="Later" - MSG_VISIT_JAVA_DOT_COM="Visit java.com" -fi - - - -# function 'get_java_version_from_cmd()' -# -# returns Java version string from 'java -version' command -# works for both old (1.8) and new (9) version schema -# -# @param1 path to a java JVM executable -# @return the Java version number as displayed in 'java -version' command -################################################################################ -function get_java_version_from_cmd() { - # second sed command strips " and -ea from the version string - echo $("$1" -version 2>&1 | awk '/version/{print $3}' | sed -E 's/"//g;s/-ea//g') -} - - -# function 'extract_java_major_version()' -# -# extract Java major version from a version string -# -# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') -# @return the major version (e.g. '7', '8' or '9', etc.) -################################################################################ -function extract_java_major_version() { - echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/') -} - - -# function 'get_comparable_java_version()' -# -# return comparable version for a Java version number or requirement string -# -# @param1 a Java version number ('1.8.0_45') or requirement string ('1.8+') -# @return an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013') -################################################################################ -function get_comparable_java_version() { - # cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.' - local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g') - # splitting at '.' into an array - local arr=( ${cleaned//./ } ) - # echo a string with left padded version numbers - echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})" -} - - -# function 'is_valid_requirement_pattern()' -# -# check whether the Java requirement is a valid requirement pattern -# -# supported requirements are for example: -# - 1.6 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6* requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6+ requires Java 6 or higher [1.6, 1.6.0_45, 1.8, 9, etc.] -# - 1.6.0 requires Java 6 (any update) [1.6, 1.6.0_45, 1.6.0_88] -# - 1.6.0_45 requires Java 6u45 [1.6.0_45] -# - 1.6.0_45+ requires Java 6u45 or higher [1.6.0_45, 1.6.0_88, 1.8, etc.] -# - 9 requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] -# - 9* requires Java 9 (any update) [9.0.*, 9.1, 9.3, etc.] -# - 9+ requires Java 9 or higher [9.0, 9.1, 10, etc.] -# - 9.1 requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] -# - 9.1* requires Java 9.1 (any update) [9.1.*, 9.1.2, 9.1.13, etc.] -# - 9.1+ requires Java 9.1 or higher [9.1, 9.2, 10, etc.] -# - 9.1.3 requires Java 9.1.3 [9.1.3] -# - 9.1.3* requires Java 9.1.3 (any update) [9.1.3] -# - 9.1.3+ requires Java 9.1.3 or higher [9.1.3, 9.1.4, 9.2.*, 10, etc.] -# - 10-ea requires Java 10 (early access release) -# -# unsupported requirement patterns are for example: -# - 1.2, 1.3, 1.9 Java 2, 3 are not supported -# - 1.9 Java 9 introduced a new versioning scheme -# - 6u45 known versioning syntax, but unsupported -# - 9-ea*, 9-ea+ early access releases paired with */+ -# - 9., 9.*, 9.+ version ending with a . -# - 9.1., 9.1.*, 9.1.+ version ending with a . -# - 9.3.5.6 4 part version number is unsupported -# -# @param1 a Java requirement string ('1.8+') -# @return boolean exit code: 0 (is valid), 1 (is not valid) -################################################################################ -function is_valid_requirement_pattern() { - local java_req=$1 - java8pattern='1\.[4-8](\.0)?(\.0_[0-9]+)?[*+]?' - java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?' - # test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9) - if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then - return 0 - else - return 1 - fi -} - - - -# determine which JVM to use -############################################ - -# default Apple JRE plugin path (< 1.6) -apple_jre_plugin="/Library/Java/Home/bin/java" -apple_jre_version=$(get_java_version_from_cmd "${apple_jre_plugin}") -# default Oracle JRE plugin path (>= 1.7) -oracle_jre_plugin="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -oracle_jre_version=$(get_java_version_from_cmd "${oracle_jre_plugin}") - - -# first check system variable "$JAVA_HOME" -> has precedence over any other System JVM -stub_logger '[JavaSearch] Checking for $JAVA_HOME ...' -if [ -n "$JAVA_HOME" ] ; then - stub_logger "[JavaSearch] ... found JAVA_HOME with value $JAVA_HOME" - - # PR 26: Allow specifying "$JAVA_HOME" relative to "$AppPackageFolder" - # which allows for bundling a custom version of Java inside your app! - if [[ $JAVA_HOME == /* ]] ; then - # if "$JAVA_HOME" starts with a Slash it's an absolute path - JAVACMD="$JAVA_HOME/bin/java" - else - # otherwise it's a relative path to "$AppPackageFolder" - JAVACMD="$AppPackageFolder/$JAVA_HOME/bin/java" - fi - JAVACMD_version=$(get_comparable_java_version $(get_java_version_from_cmd "${JAVACMD}")) -else - stub_logger "[JavaSearch] ... didn't found JAVA_HOME" -fi - - -# check for any other or a specific Java version -# also if $JAVA_HOME exists but isn't executable -if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then - stub_logger "[JavaSearch] Checking for JavaVirtualMachines on the system ..." - # reset variables - JAVACMD="" - JAVACMD_version="" - - # first check whether JVMVersion string is a valid requirement string - if [ ! -z "${JVMVersion}" ] && ! is_valid_requirement_pattern ${JVMVersion} ; then - MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMVersion}") - # log exit cause - stub_logger "[EXIT 4] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" - # exit with error - exit 4 - fi - # then check whether JVMMaxVersion string is a valid requirement string - if [ ! -z "${JVMMaxVersion}" ] && ! is_valid_requirement_pattern ${JVMMaxVersion} ; then - MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMMaxVersion}") - # log exit cause - stub_logger "[EXIT 5] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" - # exit with error - exit 5 - fi - - - # find installed JavaVirtualMachines (JDK + JRE) - allJVMs=() - # read JDK's from '/usr/libexec/java_home -V' command - while read -r line; do - version=$(echo $line | awk -F $',' '{print $1;}') - path=$(echo $line | awk -F $'" ' '{print $2;}') - path+="/bin/java" - allJVMs+=("$version:$path") - done < <(/usr/libexec/java_home -V 2>&1 | grep '^[[:space:]]') - # unset while loop variables - unset version path - - # add Apple JRE if available - if [ -x "${apple_jre_plugin}" ] ; then - allJVMs+=("$apple_jre_version:$apple_jre_plugin") - fi - - # add Oracle JRE if available - if [ -x "${oracle_jre_plugin}" ] ; then - allJVMs+=("$oracle_jre_version:$oracle_jre_plugin") - fi - - # debug output - for i in "${allJVMs[@]}" - do - stub_logger "[JavaSearch] ... found JVM: $i" - done - - - # determine JVMs matching the min/max version requirement - minC=$(get_comparable_java_version ${JVMVersion}) - maxC=$(get_comparable_java_version ${JVMMaxVersion}) - matchingJVMs=() - - for i in "${allJVMs[@]}" - do - # split JVM string at ':' delimiter to retain spaces in $path substring - IFS=: arr=($i) ; unset IFS - # [0] JVM version number - ver=${arr[0]} - # comparable JVM version number - comp=$(get_comparable_java_version $ver) - # [1] JVM path - path="${arr[1]}" - # construct string item for adding to the "matchingJVMs" array - item="$comp:$ver:$path" - - # pre-requisite: current version number needs to be greater than min version number - if [ "$comp" -ge "$minC" ] ; then - - # perform max version checks if max version requirement is present - if [ ! -z ${JVMMaxVersion} ] ; then - - # max version requirement ends with '*' modifier - if [[ ${JVMMaxVersion} == *\* ]] ; then - - # use the '*' modifier from the max version string as wildcard for a 'starts with' comparison - # and check whether the current version number starts with the max version wildcard string - if [[ ${ver} == ${JVMMaxVersion} ]]; then - matchingJVMs+=("$item") - - # or whether the current comparable version is lower than the comparable max version - elif [ "$comp" -le "$maxC" ] ; then - matchingJVMs+=("$item") - fi - - # max version requirement ends with '+' modifier -> always add this version if it's greater than $min - # because a max requirement with + modifier doesn't make sense - elif [[ ${JVMMaxVersion} == *+ ]] ; then - matchingJVMs+=("$item") - - # matches 6 zeros at the end of the max version string (e.g. for 1.8, 9) - # -> then the max version string should be treated like with a '*' modifier at the end - #elif [[ ${maxC} =~ ^[0-9]{2}0{6}$ ]] && [ "$comp" -le $(( ${maxC#0} + 999 )) ] ; then - # matchingJVMs+=("$item") - - # matches 3 zeros at the end of the max version string (e.g. for 9.1, 10.3) - # -> then the max version string should be treated like with a '*' modifier at the end - #elif [[ ${maxC} =~ ^[0-9]{5}0{3}$ ]] && [ "$comp" -le "${maxC}" ] ; then - # matchingJVMs+=("$item") - - # matches standard requirements without modifier - elif [ "$comp" -le "$maxC" ]; then - matchingJVMs+=("$item") - fi - - # no max version requirement: - - # min version requirement ends with '+' modifier - # -> always add the current version because it's greater than $min - elif [[ ${JVMVersion} == *+ ]] ; then - matchingJVMs+=("$item") - - # min version requirement ends with '*' modifier - # -> use the '*' modifier from the min version string as wildcard for a 'starts with' comparison - # and check whether the current version number starts with the min version wildcard string - elif [[ ${JVMVersion} == *\* ]] ; then - if [[ ${ver} == ${JVMVersion} ]] ; then - matchingJVMs+=("$item") - fi - - # compare the min version against the current version with an additional * wildcard for a 'starts with' comparison - # -> e.g. add 1.8.0_44 when the requirement is 1.8 - elif [[ ${ver} == ${JVMVersion}* ]] ; then - matchingJVMs+=("$item") - fi - fi - done - # unset for loop variables - unset arr ver comp path item - - # debug output - for i in "${matchingJVMs[@]}" - do - stub_logger "[JavaSearch] ... ... matches all requirements: $i" - done - - - # sort the matching JavaVirtualMachines by version number - # https://stackoverflow.com/a/11789688/1128689 - IFS=$'\n' matchingJVMs=($(sort -nr <<<"${matchingJVMs[*]}")) - unset IFS - - - # get the highest matching JVM - for ((i = 0; i < ${#matchingJVMs[@]}; i++)); - do - # split JVM string at ':' delimiter to retain spaces in $path substring - IFS=: arr=(${matchingJVMs[$i]}) ; unset IFS - # [0] comparable JVM version number - comp=${arr[0]} - # [1] JVM version number - ver=${arr[1]} - # [2] JVM path - path="${arr[2]}" - - # use current value as JAVACMD if it's executable - if [ -x "$path" ] ; then - JAVACMD="$path" - JAVACMD_version=$comp - break - fi - done - # unset for loop variables - unset arr comp ver path -fi - -# log the Java Command and the extracted version number -stub_logger "[JavaCommand] '$JAVACMD'" -stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}" - - - -if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then - - # different error messages when a specific JVM was required - if [ ! -z "${JVMVersion}" ] ; then - # display human readable java version (#28) - java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/") - MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}"). - - if [ ! -z "${JVMMaxVersion}" ] ; then - java_version_hr=$(extract_java_major_version ${JVMVersion}) - java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/") - MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")" - fi - - # log exit cause - stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}" - - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\" buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ - -e "set response to button returned of the result" \ - -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" - # exit with error - exit 3 - - else - # log exit cause - stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \ - -e "set response to button returned of the result" \ - -e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\"" - # exit with error - exit 1 - fi -fi - - - -# MainClass check -############################################ - -if [ -z "${JVMMainClass}" ]; then - # log exit cause - stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}" - # display error message with AppleScript - osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" - # exit with error - exit 2 -fi - - - -# execute $JAVACMD and do some preparation -############################################ - -# enable drag&drop to the dock icon -export CFProcessPath="$0" - -# remove Apples ProcessSerialNumber from passthru arguments (#39) -if [[ "$*" == -psn* ]] ; then - ArgsPassthru=() -else - ArgsPassthru=("$@") -fi - -# change to Working Directory based upon Apple/Oracle Plist info -cd "${WorkingDirectory}" || exit 13 -stub_logger "[WorkingDirectory] ${WorkingDirectory}" - -# execute Java and set -# - classpath -# - splash image -# - dock icon -# - app name -# - JVM options / properties (-D) -# - JVM default options (-X) -# - main class -# - main class arguments -# - passthrough arguments from Terminal or Drag'n'Drop to Finder icon -stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" -exec "${JAVACMD}" \ - -cp "${JVMClassPath}" \ - -splash:"${ResourcesFolder}/${JVMSplashFile}" \ - -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ - -Xdock:name="${CFBundleName}" \ - ${JVMOptions:+"${JVMOptions[@]}" }\ - ${JVMDefaultOptions:+$JVMDefaultOptions }\ - "${JVMMainClass}"\ - ${MainArgsArr:+ "${MainArgsArr[@]}"}\ - ${ArgsPassthru:+ "${ArgsPassthru[@]}"} diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/BEASTVersion2.java beast2-mcmc-2.6.7+dfsg/src/beast/app/BEASTVersion2.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/BEASTVersion2.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/BEASTVersion2.java 2022-04-04 07:18:36.000000000 +0000 @@ -9,11 +9,11 @@ /** * Version string: assumed to be in format x.x.x */ - private static final String VERSION = "2.6.6"; + private static final String VERSION = "2.6.7"; - private static final String DATE_STRING = "2002-2021"; + private static final String DATE_STRING = "2002-2022"; - private static final boolean IS_PRERELEASE = false; + private static final boolean IS_PRERELEASE = true; // // private static final String BEAST2_WEBPAGE = "http://beast2.org/"; // diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/BEASTVersion.java beast2-mcmc-2.6.7+dfsg/src/beast/app/BEASTVersion.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/BEASTVersion.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/BEASTVersion.java 2022-04-04 07:18:36.000000000 +0000 @@ -19,11 +19,11 @@ /** * Version string: assumed to be in format x.x.x */ - private static final String VERSION = "2.6.6"; + private static final String VERSION = "2.6.7"; - private static final String DATE_STRING = "2002-2021"; + private static final String DATE_STRING = "2002-2022"; - private static final boolean IS_PRERELEASE = false; + private static final boolean IS_PRERELEASE = true; private static final String BEAST2_WEBPAGE = "http://beast2.org/"; diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/BeautiAlignmentProvider.java beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/BeautiAlignmentProvider.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/BeautiAlignmentProvider.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/BeautiAlignmentProvider.java 2022-04-04 07:18:36.000000000 +0000 @@ -9,14 +9,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.StringReader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import javax.swing.JComboBox; import javax.swing.JOptionPane; @@ -558,16 +551,50 @@ if (mayBeAminoacid) { switch (this.datatype) { case userdefined: - // make user choose - JComboBox jcb = new JComboBox<>(new String[]{"aminoacid", "nucleotide", "all are aminoacid", "all are nucleotide"}); - jcb.setEditable(true); + // make user choose + TreeMap allTypes = Alignment.getTypes(); + String[] dataNames = new String[allTypes.keySet().size() + 2]; + dataNames[0] = "aminoacid"; + dataNames[1] = "nucleotide"; + dataNames[2] = "all are aminoacid"; + dataNames[3] = "all are nucleotide"; + int i = 4; + for (String key: allTypes.keySet()) { + if (!key.equals("nucleotide") && !key.equals("aminoacid")) { + dataNames[i] = key; + i++; + } + } + JComboBox jcb = new JComboBox<>(dataNames); + jcb.setEditable(true); jcb.setSelectedItem(datatype); JOptionPane.showMessageDialog(null, jcb, "Choose the datatype of alignment " + alignment.getID(), JOptionPane.QUESTION_MESSAGE); - switch ((String) jcb.getSelectedItem()) { - case "aminoacid": datatype = "aminoacid"; totalCount = 20; break; - case "nucleotide": datatype = "nucleotide"; totalCount = 4; break; - case "all are aminoacid": datatype = "aminoacid"; this.datatype = dtype.aminoacid; totalCount = 20; break; - case "all are nucleotide": datatype = "nucleotide"; this.datatype = dtype.nucleotide; totalCount = 4; break; + // match selected data type + String selectedType = (String) jcb.getSelectedItem(); + switch (selectedType) { + case "aminoacid": + datatype = "aminoacid"; + totalCount = 20; + break; + case "nucleotide": + datatype = "nucleotide"; + totalCount = 4; + break; + case "all are aminoacid": + datatype = "aminoacid"; + this.datatype = dtype.aminoacid; + totalCount = 20; + break; + case "all are nucleotide": + datatype = "nucleotide"; + this.datatype = dtype.nucleotide; + totalCount = 4; + break; + default: + // catch all for other data types + datatype = selectedType; + totalCount = allTypes.get(selectedType).getStateCount(); + break; } break; case aminoacid: diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/BeautiDoc.java beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/BeautiDoc.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/BeautiDoc.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/BeautiDoc.java 2022-04-04 07:18:36.000000000 +0000 @@ -71,6 +71,7 @@ import beast.evolution.substitutionmodel.SubstitutionModel; import beast.evolution.tree.TraitSet; import beast.evolution.tree.Tree; +import beast.evolution.tree.TreeInterface; import beast.math.distributions.MRCAPrior; import beast.math.distributions.Normal; import beast.math.distributions.ParametricDistribution; @@ -166,7 +167,7 @@ InputEditorFactory inputEditorFactory; /** used to capture Stdout and Stderr **/ - static ByteArrayOutputStream baos = null; + static public ByteArrayOutputStream baos = null; public InputEditorFactory getInputEditorFactory() { @@ -414,7 +415,7 @@ // fireDocHasChanged(); } - void fireDocHasChanged() { + public void fireDocHasChanged() { for (BeautiDocListener listener : listeners) { try { listener.docHasChanged(); @@ -976,7 +977,7 @@ * * @ * */ - void connectModel() { + public void connectModel() { scrubAll(true, true); } @@ -1331,16 +1332,18 @@ } BEASTInterface likelihood = pluginmap.get("likelihood"); + Set treesSeen = new HashSet<>(); if (likelihood instanceof CompoundDistribution) { int i = 0; RealParameter firstClock = null; for (Distribution distr : ((CompoundDistribution) likelihood).pDistributions.get()) { if (distr instanceof GenericTreeLikelihood) { - GenericTreeLikelihood treeLikelihood = (GenericTreeLikelihood) distr; + GenericTreeLikelihood treeLikelihood = (GenericTreeLikelihood) distr; + TreeInterface currentTree = treeLikelihood.treeInput.get(); boolean needsEstimation = needsEstimationBySPTree; if (i > 0) { BranchRateModel.Base model = treeLikelihood.branchRateModelInput.get(); - needsEstimation = (model.meanRateInput.get() != firstClock) || firstClock.isEstimatedInput.get(); + needsEstimation = (model.meanRateInput.get() != firstClock && treesSeen.contains(currentTree)) || firstClock.isEstimatedInput.get(); } else { // TODO: this might not be a valid type conversion from TreeInterface to Tree Tree tree = (Tree) treeLikelihood.treeInput.get(); @@ -1366,6 +1369,7 @@ firstClock = clockRate; } } + treesSeen.add(currentTree); i++; } } @@ -2021,7 +2025,7 @@ return deepCopy; } // deepCopyPlugin - private static BEASTInterface getCopyValue(BEASTInterface value, Map copySet, PartitionContext oldContext, PartitionContext partitionContext, BeautiDoc doc) { + public static BEASTInterface getCopyValue(BEASTInterface value, Map copySet, PartitionContext oldContext, PartitionContext partitionContext, BeautiDoc doc) { if (copySet.containsKey(value.getID())) { value = copySet.get(value.getID()); return value; @@ -2247,7 +2251,7 @@ // methods for dealing with linking - void determineLinks() { + public void determineLinks() { if (!allowLinking) { return; } diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/GuessPatternDialog.java beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/GuessPatternDialog.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/beauti/GuessPatternDialog.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/beauti/GuessPatternDialog.java 2022-04-04 07:18:36.000000000 +0000 @@ -571,8 +571,13 @@ while (fin.ready()) { String[] strArray = fin.readLine().trim().split("\t"); // only add entries that are non-empty - if (strArray.length == 2) { - traitMap.put(strArray[0], strArray[1]); + if (strArray.length >= 2) { + String str = strArray[1]; + int k = 2; + while (k < strArray.length) { + str += "\t" + strArray[k++]; + } + traitMap.put(strArray[0], str); } } fin.close(); diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/seqgen/SimulatedAlignment.java beast2-mcmc-2.6.7+dfsg/src/beast/app/seqgen/SimulatedAlignment.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/seqgen/SimulatedAlignment.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/seqgen/SimulatedAlignment.java 2022-04-04 07:18:36.000000000 +0000 @@ -126,7 +126,24 @@ // } // seq.append(seq[m_sequenceLength-1] + ""); // } - String taxon = m_data.get().getTaxaNames().get(node.getNr()); + //String taxon = m_data.get().getTaxaNames().get(node.getNr()); + + + + // Find taxon with same name if tree is labelled + int taxonNum = node.getNr(); + if (node.getID() != null && !node.getID().isEmpty()) { + for (int i = 0; i < m_data.get().getTaxaNames().size(); i ++) { + if (m_data.get().getTaxaNames().get(i).equals(node.getID())) { + taxonNum=i; + break; + } + } + } + + String taxon = m_data.get().getTaxaNames().get(taxonNum); + + return new Sequence(taxon, seqString); } // intArray2Sequence diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/app/treeannotator/TreeAnnotator.java beast2-mcmc-2.6.7+dfsg/src/beast/app/treeannotator/TreeAnnotator.java --- beast2-mcmc-2.6.6+dfsg/src/beast/app/treeannotator/TreeAnnotator.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/app/treeannotator/TreeAnnotator.java 2022-04-04 07:18:36.000000000 +0000 @@ -1402,7 +1402,7 @@ new Arguments.Option[]{ //new Arguments.StringOption("target", new String[] { "maxclade", "maxtree" }, false, "an option of 'maxclade' or 'maxtree'"), new Arguments.StringOption("heights", new String[]{"keep", "median", "mean", "ca"}, false, - "an option of 'keep' (default), 'median', 'mean' or 'ca'"), + "one of 'ca' (default), 'median', 'mean' or 'keep'"), new Arguments.IntegerOption("burnin", 0, 99, "the percentage of states to be considered as 'burn-in'"), // allow -b as burnin option, just like other apps new Arguments.IntegerOption("b", 0, 99, "the percentage of states to be considered as 'burn-in'"), @@ -1454,11 +1454,15 @@ heights = HeightsSummary.MEAN_HEIGHTS; } else if (value.equalsIgnoreCase("median")) { heights = HeightsSummary.MEDIAN_HEIGHTS; - } else if (value.equalsIgnoreCase("ca")) { - heights = HeightsSummary.CA_HEIGHTS; - Log.info.println("Please cite: Heled and Bouckaert: Looking for trees in the forest:\n" + - "summary tree from posterior samples. BMC Evolutionary Biology 2013 13:221."); + } else if (value.equalsIgnoreCase("keep")) { + heights = HeightsSummary.KEEP_HEIGHTS; } + // Otherwise, use CA heights + } + + if (heights == HeightsSummary.CA_HEIGHTS) { + Log.info.println("Please cite: Heled and Bouckaert: Looking for trees in the forest:\n" + + "summary tree from posterior samples. BMC Evolutionary Biology 2013 13:221."); } int burnin = -1; @@ -1503,8 +1507,7 @@ inputFileName = args2[0]; break; default: { - Log.err.println("Unknown option: " + args2[2]); - Log.err.println(); + Log.err.println("\nCommand not understood.\n"); printUsage(arguments); System.exit(1); } diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/core/Logger.java beast2-mcmc-2.6.7+dfsg/src/beast/core/Logger.java --- beast2-mcmc-2.6.6+dfsg/src/beast/core/Logger.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/core/Logger.java 2022-04-04 07:18:36.000000000 +0000 @@ -70,7 +70,9 @@ final public Input modeInput = new Input<>("mode", "logging mode, one of " + Arrays.toString(LOGMODE.values()), LOGMODE.autodetect, LOGMODE.values()); final public Input sortModeInput = new Input<>("sort", "sort items to be logged, one of " + Arrays.toString(SORTMODE.values()), SORTMODE.none, SORTMODE.values()); final public Input sanitiseHeadersInput = new Input<>("sanitiseHeaders", "whether to remove any clutter introduced by Beauti" , false); + final public Input convertToASCIIInput = new Input<>("ascii", "whether to convert the log output to ASCII" , true); + final public Input> loggersInput = new Input<>("log", "Element in a log. This can be any plug in that is Loggable.", new ArrayList<>(), Validate.REQUIRED, Loggable.class); @@ -658,7 +660,11 @@ // Acquire log string and trim excess tab String logContent; try { - logContent = baos.toString("ASCII").trim(); + + // Convert to ASCII? + if (convertToASCIIInput.get()) logContent = baos.toString("ASCII").trim(); + else logContent = baos.toString().trim(); + } catch (UnsupportedEncodingException e) { throw new RuntimeException("ASCII string encoding not supported: required for logging!"); } diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/evolution/alignment/Alignment.java beast2-mcmc-2.6.7+dfsg/src/beast/evolution/alignment/Alignment.java --- beast2-mcmc-2.6.6+dfsg/src/beast/evolution/alignment/Alignment.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/evolution/alignment/Alignment.java 2022-04-04 07:18:36.000000000 +0000 @@ -56,7 +56,7 @@ /** * list of data type descriptions, obtained from DataType classes * */ - static TreeMap types = new TreeMap<>(); + static TreeMap types = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); static { findDataTypes(); @@ -86,6 +86,10 @@ return types.get(name); } + static public TreeMap getTypes() { + return types; + } + final public Input> sequenceInput = new Input<>("sequence", "sequence and meta data for particular taxon", new ArrayList<>(), Validate.OPTIONAL); @@ -272,7 +276,7 @@ DataType dataType; try { dataType = (DataType) BEASTClassLoader.forName(dataTypeName).newInstance(); - if (dataTypeInput.get().equals(dataType.getTypeDescription())) { + if (dataTypeInput.get().equalsIgnoreCase(dataType.getTypeDescription())) { m_dataType = dataType; break; } @@ -374,6 +378,23 @@ excludedPatterns = new HashSet<>(); for (int i = from; i < to; i += every) { int patternIndex_ = patternIndex[i]; + + if (patternWeight[patternIndex_] > 1) { + // when the pattern weight is 2 or larger, perhaps a site that is ascertained for + // accidentally made it into the alignment. Regardless, its contribution to the + // likelihood will be ignored by setting the weight to zero in the line after this + // sanity check, so warn the user about this possibility. + if (to-from == 1) { + int n = patternWeight[patternIndex_] - 1; + Log.warning("WARNING: found " + (n==1?"a site": n+ " sites") + " in the alignment (" + getID() + ") " + + "that are equal to the ascertainment site. These sites will be ignored in the likelihood " + + "calculation."); + } else { + Log.warning("WARNING: found multiple entries for a site that occurs multiple times and is ascertained " + + "for. This may indicate some sites should be removed. Regardless, these sites will be ignored in " + + "the likelihood calculation."); + } + } // reduce weight, so it does not confuse the tree likelihood patternWeight[patternIndex_] = 0; excludedPatterns.add(patternIndex_); diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/evolution/branchratemodel/RateStatistic.java beast2-mcmc-2.6.7+dfsg/src/beast/evolution/branchratemodel/RateStatistic.java --- beast2-mcmc-2.6.6+dfsg/src/beast/evolution/branchratemodel/RateStatistic.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/evolution/branchratemodel/RateStatistic.java 2022-04-04 07:18:36.000000000 +0000 @@ -48,7 +48,7 @@ final public Input likelihoodInput = new Input<>("treeLikelihood", "TreeLikelihood containing branch rate model that provides rates for a tree"); final public Input branchRateModelInput = new Input<>("branchratemodel", "model that provides rates for a tree", Validate.XOR, likelihoodInput); - final public Input treeInput = new Input<>("tree", "tree for which the rates apply"); + final public Input treeInput = new Input<>("tree", "tree for which the rates apply", Validate.REQUIRED); final public Input internalInput = new Input<>("internal", "consider internal nodes, default true", true); final public Input externalInput = new Input<>("external", "consider external nodes, default true", true); diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/evolution/operators/TipDatesRandomWalker.java beast2-mcmc-2.6.7+dfsg/src/beast/evolution/operators/TipDatesRandomWalker.java --- beast2-mcmc-2.6.6+dfsg/src/beast/evolution/operators/TipDatesRandomWalker.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/evolution/operators/TipDatesRandomWalker.java 2022-04-04 07:18:36.000000000 +0000 @@ -84,7 +84,12 @@ if (newValue > node.getParent().getHeight()) { // || newValue < 0.0) { if (reflectValue) { - newValue = reflectValue(newValue, 0.0, node.getParent().getHeight()); + double h = node.getParent().getHeight(); + // tips heights may become less than 0, so their parents can have height < 0 as well + // https://github.com/CompEvol/beast2/issues/995 + // so the range (0, h) may become empty + // therefore, set lower bound on range to min(0.0, node height) + newValue = reflectValue(newValue, Math.min(0.0, node.getHeight()), h); } else { return Double.NEGATIVE_INFINITY; } diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/evolution/tree/RandomTree.java beast2-mcmc-2.6.7+dfsg/src/beast/evolution/tree/RandomTree.java --- beast2-mcmc-2.6.6+dfsg/src/beast/evolution/tree/RandomTree.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/evolution/tree/RandomTree.java 2022-04-04 07:18:36.000000000 +0000 @@ -234,8 +234,8 @@ beastObjects.get(i).initAndValidate(); } try { - double tLow = distr.inverseCumulativeProbability(0.0) + distr.offsetInput.get(); - double tHi = distr.inverseCumulativeProbability(1.0) + distr.offsetInput.get(); + double tLow = distr.inverseCumulativeProbability(0.0); + double tHi = distr.inverseCumulativeProbability(1.0); bounds.lower = getDate(tLow); bounds.upper = getDate(tHi); if (bounds.lower > bounds.upper && tLow < tHi) { diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/math/distributions/Prior.java beast2-mcmc-2.6.7+dfsg/src/beast/math/distributions/Prior.java --- beast2-mcmc-2.6.6+dfsg/src/beast/math/distributions/Prior.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/math/distributions/Prior.java 2022-04-04 07:18:36.000000000 +0000 @@ -87,29 +87,45 @@ try { newx = dist.sample(1)[0]; - if (newx.length == x.getDimension()) { - if (x instanceof RealParameter) { - for (int i = 0; i < newx.length; i++) { - ((RealParameter) x).setValue(i, newx[i]); - } - } else if (x instanceof IntegerParameter) { - for (int i = 0; i < newx.length; i++) { - ((IntegerParameter) x).setValue(i, (int)Math.round(newx[i])); - } - } - } else if (newx.length == 1) { - // assume it is a multi dimensional distribution with iid components - for (int k = 0; k < x.getDimension(); k++) { - if (x instanceof RealParameter) { - ((RealParameter) x).setValue(k, newx[0]); - } else if (x instanceof IntegerParameter) { - ((IntegerParameter) x).setValue(k, (int)Math.round(newx[0])); - } - if (k < x.getDimension()-1) { - newx = dist.sample(1)[0]; - } - } + if (newx.length == x.getDimension()) { + if (x instanceof RealParameter) { + RealParameter p = (RealParameter) x; + for (int i = 0; i < newx.length; i++) { + while (p.getLower() > newx[i] || p.getUpper() < newx[i]) { + newx = dist.sample(1)[0]; + } + ((RealParameter) x).setValue(i, newx[i]); + } + } else if (x instanceof IntegerParameter) { + IntegerParameter p = (IntegerParameter) x; + for (int i = 0; i < newx.length; i++) { + while (p.getLower() > newx[i] || p.getUpper() < newx[i]) { + newx = dist.sample(1)[0]; + } + p.setValue(i, (int)Math.round(newx[i])); + } + } + } else if (newx.length == 1) { + // assume it is a multi dimensional distribution with iid components + for (int k = 0; k < x.getDimension(); k++) { + if (x instanceof RealParameter) { + RealParameter p = (RealParameter) x; + while (p.getLower() > newx[0] || p.getUpper() < newx[0]) { + newx = dist.sample(1)[0]; + } + p.setValue(k, newx[0]); + } else if (x instanceof IntegerParameter) { + IntegerParameter p = (IntegerParameter) x; + while (p.getLower() > newx[0] || p.getUpper() < newx[0]) { + newx = dist.sample(1)[0]; + } + p.setValue(k, (int)Math.round(newx[0])); + } + if (k < x.getDimension()-1) { + newx = dist.sample(1)[0]; + } } + } } catch (MathException e) { e.printStackTrace(); throw new RuntimeException("Failed to sample!"); diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/util/NexusParser.java beast2-mcmc-2.6.7+dfsg/src/beast/util/NexusParser.java --- beast2-mcmc-2.6.6+dfsg/src/beast/util/NexusParser.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/util/NexusParser.java 2022-04-04 07:18:36.000000000 +0000 @@ -760,7 +760,9 @@ // generic data type look up if nothing else works DataType dataType = Alignment.getDataTypeByName(dataTypeName); if (dataType != null) { - alignment.dataTypeInput.setValue(dataTypeName, alignment); + // robustly set data type for names with upper and lower case + String dataTypeNameRobust = Alignment.getDataTypeByName(dataTypeName).getTypeDescription(); + alignment.dataTypeInput.setValue(dataTypeNameRobust, alignment); totalCount = dataType.getStateCount(); } else { // set to integer as last resort diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/util/XMLParser.java beast2-mcmc-2.6.7+dfsg/src/beast/util/XMLParser.java --- beast2-mcmc-2.6.6+dfsg/src/beast/util/XMLParser.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/util/XMLParser.java 2022-04-04 07:18:36.000000000 +0000 @@ -963,7 +963,7 @@ } catch (InstantiationException e) { // we only get here when the class exists, but cannot be // created for instance because it is abstract - String msg = "Class " + clazzName + " exists but cannot to be instantiated.\n" + + String msg = "Class " + clazzName + " exists but cannot be instantiated.\n" + "Please check if the class has the zero-argument constructor."; throw new XMLParserException(node, msg, 1006); } catch (ClassNotFoundException e) { diff -Nru beast2-mcmc-2.6.6+dfsg/src/beast/util/XMLProducer.java beast2-mcmc-2.6.7+dfsg/src/beast/util/XMLProducer.java --- beast2-mcmc-2.6.6+dfsg/src/beast/util/XMLProducer.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/beast/util/XMLProducer.java 2022-04-04 07:18:36.000000000 +0000 @@ -157,6 +157,25 @@ xml = dedupName(xml); xml = sortTags(xml); + // remove double newlines introduced by XSL transformation + StringBuilder b = new StringBuilder(); + for (int i = 0; i < xml.length(); i++) { + char c = xml.charAt(i); + if (c == '\n') { + int j = 0; + while (i < xml.length()-1 && xml.charAt(i+1) == ' ') { + i++; + j++; + } + if (i < xml.length()-1 && xml.charAt(i+1) == '\n') { + i++; + } else { + i = i - j; + } + } + b.append(c); + } + xml = b.toString(); //insert newlines in alignments int k = xml.indexOf(" @@ -45,6 +45,7 @@ super.setUp(XML_FILES); } + // Note: some parameter names are hard-coded in XML, so no dot, e.g. "hky.kappa26" @Override protected List giveExpectations(int index_XML) throws Exception { List expList = new ArrayList(); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/SubstitutionModelTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/SubstitutionModelTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/SubstitutionModelTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/SubstitutionModelTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,11 +1,11 @@ package test.beast.beast2vs1; +import test.beast.beast2vs1.trace.Expectation; + import java.util.ArrayList; import java.util.List; -import test.beast.beast2vs1.trace.Expectation; - /** * @author Walter Xie */ @@ -67,15 +67,15 @@ addExpIntoList(expList, "prior", -8.24, 1.1349E-2); addExpIntoList(expList, "TreeHeight.firsthalf", 0.2523, 1.2987E-4); addExpIntoList(expList, "kappa.firsthalf", 4.8401, 1.184E-2); - addExpIntoList(expList, "freqParameter.firsthalf1", 0.289, 6.1115E-4); - addExpIntoList(expList, "freqParameter.firsthalf2", 0.3204, 6.8116E-4); - addExpIntoList(expList, "freqParameter.firsthalf3", 0.1081, 3.8843E-4); - addExpIntoList(expList, "freqParameter.firsthalf4", 0.2825, 5.1796E-4); + addExpIntoList(expList, "freqParameter.firsthalf.1", 0.289, 6.1115E-4); + addExpIntoList(expList, "freqParameter.firsthalf.2", 0.3204, 6.8116E-4); + addExpIntoList(expList, "freqParameter.firsthalf.3", 0.1081, 3.8843E-4); + addExpIntoList(expList, "freqParameter.firsthalf.4", 0.2825, 5.1796E-4); addExpIntoList(expList, "kappa.secondhalf", 5.22, 1.121E-2); - addExpIntoList(expList, "freqParameter.secondhalf1", 0.3368, 6.3272E-4); - addExpIntoList(expList, "freqParameter.secondhalf2", 0.2646, 4.8458E-4); - addExpIntoList(expList, "freqParameter.secondhalf3", 0.1018, 2.8896E-4); - addExpIntoList(expList, "freqParameter.secondhalf4", 0.2968, 5.2109E-4); + addExpIntoList(expList, "freqParameter.secondhalf.1", 0.3368, 6.3272E-4); + addExpIntoList(expList, "freqParameter.secondhalf.2", 0.2646, 4.8458E-4); + addExpIntoList(expList, "freqParameter.secondhalf.3", 0.1018, 2.8896E-4); + addExpIntoList(expList, "freqParameter.secondhalf.4", 0.2968, 5.2109E-4); addExpIntoList(expList, "likelihood", -5993.68, 8.1194E-2); addExpIntoList(expList, "treeLikelihood.firsthalf", -3049.7192, 6.5715E-2); addExpIntoList(expList, "treeLikelihood.secondhalf", -2943.9608, 5.2473E-2); @@ -88,15 +88,15 @@ addExpIntoList(expList, "prior", 0.8416, 0.2033); addExpIntoList(expList, "tree.height", 9.8986E-2, 3.709E-4); addExpIntoList(expList, "CP12.hky.kappa", 25.0699, 0.2541); - addExpIntoList(expList, "CP12.frequencies1", 0.3444, 8.2165E-4); - addExpIntoList(expList, "CP12.frequencies2", 0.2447, 6.885E-4); - addExpIntoList(expList, "CP12.frequencies3", 0.1444, 5.3526E-4); - addExpIntoList(expList, "CP12.frequencies4", 0.2666, 6.174E-4); + addExpIntoList(expList, "CP12.frequencies.1", 0.3444, 8.2165E-4); + addExpIntoList(expList, "CP12.frequencies.2", 0.2447, 6.885E-4); + addExpIntoList(expList, "CP12.frequencies.3", 0.1444, 5.3526E-4); + addExpIntoList(expList, "CP12.frequencies.4", 0.2666, 6.174E-4); addExpIntoList(expList, "CP3.hky.kappa", 82.9907, 1.9773); - addExpIntoList(expList, "CP3.frequencies1", 0.3197, 1.1763E-3); - addExpIntoList(expList, "CP3.frequencies2", 0.264, 9.0478E-4); - addExpIntoList(expList, "CP3.frequencies3", 0.1675, 8.6506E-4); - addExpIntoList(expList, "CP3.frequencies4", 0.2488, 1.059E-3); + addExpIntoList(expList, "CP3.frequencies.1", 0.3197, 1.1763E-3); + addExpIntoList(expList, "CP3.frequencies.2", 0.264, 9.0478E-4); + addExpIntoList(expList, "CP3.frequencies.3", 0.1675, 8.6506E-4); + addExpIntoList(expList, "CP3.frequencies.4", 0.2488, 1.059E-3); addExpIntoList(expList, "CP12.gammaShape", 6.4322E-2, 4.8796E-3); addExpIntoList(expList, "CP3.gammaShape", 8.5652E-2, 6.9946E-3); addExpIntoList(expList, "CP12.mutationRate", 0.9437, 1.195E-3); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TaxonOrderTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TaxonOrderTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TaxonOrderTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TaxonOrderTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,11 +1,11 @@ package test.beast.beast2vs1; +import test.beast.beast2vs1.trace.Expectation; + import java.util.ArrayList; import java.util.List; -import test.beast.beast2vs1.trace.Expectation; - public class TaxonOrderTest extends TestFramework { private final String[] XML_FILES = new String[]{"testStarBeast2.xml"}; @@ -20,6 +20,7 @@ super.setUp(XML_FILES); } + // Note: some parameter names are hard-coded in XML, so no dot, e.g. "hky.kappa26" @Override protected List giveExpectations(int index_XML) throws Exception { List expList = new ArrayList(); @@ -40,21 +41,21 @@ addExpIntoList(expList, "hky.kappa26",4.4936,0.0744); addExpIntoList(expList, "hky.kappa29",4.0749,0.0588); /* - addExpIntoList(expList, "popSize1",0.0040487,0.00027109); - addExpIntoList(expList, "popSize2",0.0062535,0.00026144); - addExpIntoList(expList, "popSize3",0.0023299,0.00015953); - addExpIntoList(expList, "popSize4",0.0029275,0.00023455); - addExpIntoList(expList, "popSize5",0.0021888,0.00022018); - addExpIntoList(expList, "popSize6",0.0042746,0.00018535); - addExpIntoList(expList, "popSize7",0.004097,0.00035926); - addExpIntoList(expList, "popSize8",0.0041803,0.00022475); - addExpIntoList(expList, "popSize9",0.0036424,0.00016521); - addExpIntoList(expList, "popSize10",0.0037575,0.00032465); - addExpIntoList(expList, "popSize11",0.0035904,0.00017545); - addExpIntoList(expList, "popSize12",0.0036104,0.00020949); - addExpIntoList(expList, "popSize13",0.0040485,0.00019889); - addExpIntoList(expList, "popSize14",0.0035229,0.00017978); - addExpIntoList(expList, "popSize15",0.005072,0.00017682); + addExpIntoList(expList, "popSize.1",0.0040487,0.00027109); + addExpIntoList(expList, "popSize.2",0.0062535,0.00026144); + addExpIntoList(expList, "popSize.3",0.0023299,0.00015953); + addExpIntoList(expList, "popSize.4",0.0029275,0.00023455); + addExpIntoList(expList, "popSize.5",0.0021888,0.00022018); + addExpIntoList(expList, "popSize.6",0.0042746,0.00018535); + addExpIntoList(expList, "popSize.7",0.004097,0.00035926); + addExpIntoList(expList, "popSize.8",0.0041803,0.00022475); + addExpIntoList(expList, "popSize.9",0.0036424,0.00016521); + addExpIntoList(expList, "popSize.10",0.0037575,0.00032465); + addExpIntoList(expList, "popSize.11",0.0035904,0.00017545); + addExpIntoList(expList, "popSize.12",0.0036104,0.00020949); + addExpIntoList(expList, "popSize.13",0.0040485,0.00019889); + addExpIntoList(expList, "popSize.14",0.0035229,0.00017978); + addExpIntoList(expList, "popSize.15",0.005072,0.00017682); */ addExpIntoList(expList, "TreeHeightSP",0.0118,0.00025562); addExpIntoList(expList, "TreeHeight26",0.0266,0.00010397); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TestFramework.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TestFramework.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TestFramework.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TestFramework.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,8 +1,5 @@ package test.beast.beast2vs1; -import java.io.File; -import java.util.List; - import beagle.BeagleFlag; import beast.core.Logger; import beast.util.Randomizer; @@ -11,9 +8,13 @@ import junit.framework.TestCase; import test.beast.beast2vs1.trace.Expectation; import test.beast.beast2vs1.trace.LogAnalyser; +import test.beast.beast2vs1.trace.TraceStatistics; + +import java.io.File; +import java.util.List; public abstract class TestFramework extends TestCase { - protected static long SEED = 128; + protected long SEED = 128; private String[] xmls; protected abstract List giveExpectations(int index_XML) throws Exception; @@ -29,24 +30,26 @@ logDir = System.getProperty("user.dir"); } - protected void setUp(String[] xmls) { // throws Exception { + protected void setUp(String[] xmls) throws InterruptedException { // throws Exception { this.xmls = new String[xmls.length]; for (int i = 0; i < xmls.length; i++) { this.xmls[i] = xmls[i]; } + Thread.sleep(1000); // ensure log file is processed between test suits } // protected abstract void analyse() throws Exception; public void analyse(int index_XML) throws Exception { // for (int i = 0; i < xmls.length; i++) { // if (giveExpectations(i).size() > 0) { + // quick fix to ensure log file names are different + SEED = SEED + index_XML; Randomizer.setSeed(SEED); Logger.FILE_MODE = Logger.LogFileMode.overwrite; long beagleFlags = BeagleFlag.PROCESSOR_CPU.getMask() | BeagleFlag.VECTOR_SSE.getMask(); System.setProperty("beagle.preferred.flags", Long.toString(beagleFlags)); - String fileName = dirName + xmls[index_XML]; System.out.println("Processing " + fileName); @@ -62,14 +65,22 @@ LogAnalyser logAnalyser = new LogAnalyser(logFile, giveExpectations(index_XML)); // burnIn = 0.1 * maxState for (Expectation expectation : logAnalyser.m_pExpectations.get()) { - Assert.assertTrue(xmls[index_XML] + ": Expected " + expectation.traceName.get() + " delta mean: " - + expectation.expValue.get() + " - " + expectation.getTraceStatistics().getMean() - + " <= delta stdErr: 2*(" + expectation.getStdError() + " + " - + expectation.getTraceStatistics().getStdErrorOfMean() + ")", expectation.isPassed()); - - if (checkESS) - Assert.assertTrue(xmls[index_XML] + ": has very low effective sample sizes (ESS) " - + expectation.getTraceStatistics().getESS(), expectation.isValid()); + TraceStatistics stats = expectation.getTraceStatistics(); + if (stats == null) { + System.err.println("Null trace at " + expectation.traceName.get() + + "\nPlease check log for " + xmls[index_XML] ); + } else { + double m = stats.getMean(); + double stderr = stats.getStdErrorOfMean(); + + Assert.assertTrue(xmls[index_XML] + ": Expected " + expectation.traceName.get() + " delta mean: " + + expectation.expValue.get() + " - " + m + " <= delta stdErr: 2*(" + expectation.getStdError() + + " + " + stderr + ")", expectation.isPassed()); + + if (checkESS) + Assert.assertTrue(xmls[index_XML] + ": has very low effective sample sizes (ESS) " + + stats.getESS(), expectation.isValid()); + } } System.out.println("\nSucceed " + fileName); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TipTimeTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TipTimeTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TipTimeTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TipTimeTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,11 +1,11 @@ package test.beast.beast2vs1; +import test.beast.beast2vs1.trace.Expectation; + import java.util.ArrayList; import java.util.List; -import test.beast.beast2vs1.trace.Expectation; - /** * @author Walter Xie */ @@ -64,10 +64,10 @@ addExpIntoList(expList, "tree.height", 68.2541, 8.7152E-2); addExpIntoList(expList, "popSize", 33.9172, 0.1266); addExpIntoList(expList, "hky.kappa", 17.2562, 7.7984E-2); - addExpIntoList(expList, "hky.frequencies1", 0.2838, 4.3904E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2116, 3.8223E-4); - addExpIntoList(expList, "hky.frequencies3", 0.2516, 4.0877E-4); - addExpIntoList(expList, "hky.frequencies4", 0.253, 4.1631E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.2838, 4.3904E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.2116, 3.8223E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.2516, 4.0877E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.253, 4.1631E-4); addExpIntoList(expList, "clockRate", 8.1277E-4, 1.405E-6); addExpIntoList(expList, "treeLikelihood", -3850.8083, 6.0429E-2); addExpIntoList(expList, "coalescent", -71.6925, 3.5705E-2); @@ -88,10 +88,10 @@ addExpIntoList(expList, "tree.height", 10.848, 5.6709E-2); addExpIntoList(expList, "popSize", 9.4786, 0.1178); addExpIntoList(expList, "hky.kappa", 8.906, 4.4495E-2); - addExpIntoList(expList, "hky.frequencies1", 0.3433, 4.5468E-4); - addExpIntoList(expList, "hky.frequencies2", 0.1857, 3.3512E-4); - addExpIntoList(expList, "hky.frequencies3", 0.2229, 4.1666E-4); - addExpIntoList(expList, "hky.frequencies4", 0.2481, 4.3418E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.3433, 4.5468E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.1857, 3.3512E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.2229, 4.1666E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.2481, 4.3418E-4); addExpIntoList(expList, "clockRate", 3.6834E-3, 2.8931E-5); // addExpIntoList(expList, "height(TREESPARROW_HENAN_1_2004)", 2005 - 1.502, 2.8594E-2); addExpIntoList(expList, "height(CHICKEN_HONGKONG_915_1997)", 2005 - 8.1493, 1.0676E-2); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TreePriorTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TreePriorTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TreePriorTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TreePriorTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,11 +1,11 @@ package test.beast.beast2vs1; +import test.beast.beast2vs1.trace.Expectation; + import java.util.ArrayList; import java.util.List; -import test.beast.beast2vs1.trace.Expectation; - /** * @author Walter Xie */ @@ -68,10 +68,10 @@ addExpIntoList(expList, "tree.height", 0.06318, 6.73E-05); addExpIntoList(expList, "popSize", 0.0979, 6.38E-04); addExpIntoList(expList, "hky.kappa", 26.262, 0.2217); - addExpIntoList(expList, "hky.frequencies1", 0.326, 6.04E-04); - addExpIntoList(expList, "hky.frequencies2", 0.258, 5.23E-04); - addExpIntoList(expList, "hky.frequencies3", 0.155, 4.03E-04); - addExpIntoList(expList, "hky.frequencies4", 0.261, 5.64E-04); + addExpIntoList(expList, "hky.frequencies.1", 0.326, 6.04E-04); + addExpIntoList(expList, "hky.frequencies.2", 0.258, 5.23E-04); + addExpIntoList(expList, "hky.frequencies.3", 0.155, 4.03E-04); + addExpIntoList(expList, "hky.frequencies.4", 0.261, 5.64E-04); addExpIntoList(expList, "treeLikelihood", -1816.764, 0.0556); addExpIntoList(expList, "coalescent", 7.242, 9.94E-03); break; @@ -82,10 +82,10 @@ addExpIntoList(expList, "tree.height", 6.35E-02, 6.61E-05); addExpIntoList(expList, "popSize", 0.132, 0.2987); addExpIntoList(expList, "hky.kappa", 33.139, 0.1812); - addExpIntoList(expList, "hky.frequencies1", 0.326, 5.70E-04); - addExpIntoList(expList, "hky.frequencies2", 0.257, 6.15E-04); - addExpIntoList(expList, "hky.frequencies3", 0.154, 4.17E-04); - addExpIntoList(expList, "hky.frequencies4", 0.262, 4.91E-04); + addExpIntoList(expList, "hky.frequencies.1", 0.326, 5.70E-04); + addExpIntoList(expList, "hky.frequencies.2", 0.257, 6.15E-04); + addExpIntoList(expList, "hky.frequencies.3", 0.154, 4.17E-04); + addExpIntoList(expList, "hky.frequencies.4", 0.262, 4.91E-04); addExpIntoList(expList, "treeLikelihood", -1816.698, 5.82E-02); addExpIntoList(expList, "coalescent", 6.948, 1.24E-02); break; @@ -98,10 +98,10 @@ addExpIntoList(expList, "popSize", 1.0231, 5.1484E-2); addExpIntoList(expList, "growthRate", 58.5276, 0.6012); addExpIntoList(expList, "hky.kappa", 26.301, 0.211); - addExpIntoList(expList, "hky.frequencies1", 0.3266, 5.9862E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2569, 5.3533E-4); - addExpIntoList(expList, "hky.frequencies3", 0.154, 4.0839E-4); - addExpIntoList(expList, "hky.frequencies4", 0.2625, 5.7627E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.3266, 5.9862E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.2569, 5.3533E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.154, 4.0839E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.2625, 5.7627E-4); addExpIntoList(expList, "treeLikelihood", -1816.7188, 4.9732E-2); addExpIntoList(expList, "coalescent", 9.4203, 1.31E-2); break; @@ -131,16 +131,16 @@ addExpIntoList(expList, "prior", -92.178, 7.5174E-2); addExpIntoList(expList, "siteModel.alpha", 5.4354E-2, 5.2519E-4); addExpIntoList(expList, "clock.rate", 9.4858E-4, 1.9706E-6); - addExpIntoList(expList, "skyline.popSize1", 67.8827, 2.2639); - addExpIntoList(expList, "skyline.popSize2", 25.4281, 0.3165); - addExpIntoList(expList, "skyline.popSize3", 31.9271, 0.3819); - addExpIntoList(expList, "skyline.popSize4", 41.6596, 0.3976); - addExpIntoList(expList, "skyline.popSize5", 33.5967, 0.3554); - addExpIntoList(expList, "skyline.groupSize1", 2.4686, 4.0465E-2); - addExpIntoList(expList, "skyline.groupSize2", 3.3671, 3.9454E-2); - addExpIntoList(expList, "skyline.groupSize3", 3.181, 3.3807E-2); // TODO diff bigger than 2*delta - addExpIntoList(expList, "skyline.groupSize4", 3.723, 5.0187E-2); - addExpIntoList(expList, "skyline.groupSize5", 3.2603, 5.9824E-2); + addExpIntoList(expList, "skyline.popSize.1", 67.8827, 2.2639); + addExpIntoList(expList, "skyline.popSize.2", 25.4281, 0.3165); + addExpIntoList(expList, "skyline.popSize.3", 31.9271, 0.3819); + addExpIntoList(expList, "skyline.popSize.4", 41.6596, 0.3976); + addExpIntoList(expList, "skyline.popSize.5", 33.5967, 0.3554); + addExpIntoList(expList, "skyline.groupSize.1", 2.4686, 4.0465E-2); + addExpIntoList(expList, "skyline.groupSize.2", 3.3671, 3.9454E-2); + addExpIntoList(expList, "skyline.groupSize.3", 3.181, 3.3807E-2); // TODO diff bigger than 2*delta + addExpIntoList(expList, "skyline.groupSize.4", 3.723, 5.0187E-2); + addExpIntoList(expList, "skyline.groupSize.5", 3.2603, 5.9824E-2); addExpIntoList(expList, "hky.kappa", 21.6911, 5.2142E-2); addExpIntoList(expList, "treeModel.rootHeight", 70.3393, 0.1057); addExpIntoList(expList, "likelihood", -3773.1854, 3.9474E-2); @@ -153,41 +153,46 @@ addExpIntoList(expList, "posterior", -1809.8121, 7.6417E-2); addExpIntoList(expList, "prior", 7.0426, 3.7042E-2); addExpIntoList(expList, "tree.height", 6.2187E-2, 6.4148E-5); - addExpIntoList(expList, "popSizes1", 0.2084, 4.4215E-3); - addExpIntoList(expList, "popSizes2", 0.1012, 1.1132E-3); - addExpIntoList(expList, "popSizes3", 5.0552E-2, 7.8572E-4); - addExpIntoList(expList, "groupSizes1", 1.7396, 8.2581E-3); + addExpIntoList(expList, "popSizes.1", 0.2084, 4.4215E-3); + addExpIntoList(expList, "popSizes.2", 0.1012, 1.1132E-3); + addExpIntoList(expList, "popSizes.3", 5.0552E-2, 7.8572E-4); + addExpIntoList(expList, "groupSizes.1", 1.7396, 8.2581E-3); //addExpIntoList(expList, "groupSizes2", 1.78, 8.3052E-3); // TODO diff bigger than 2*delta - addExpIntoList(expList, "groupSizes3", 1.4804, 7.7151E-3); + addExpIntoList(expList, "groupSizes.3", 1.4804, 7.7151E-3); addExpIntoList(expList, "hky.kappa", 26.0187, 0.2286); - addExpIntoList(expList, "hky.frequencies1", 0.3262, 7.0596E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2571, 5.876E-4); - addExpIntoList(expList, "hky.frequencies3", 0.1546, 4.8206E-4); - addExpIntoList(expList, "hky.frequencies4", 0.262, 5.9621E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.3262, 7.0596E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.2571, 5.876E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.1546, 4.8206E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.262, 5.9621E-4); addExpIntoList(expList, "treeLikelihood", -1816.8547, 6.3527E-2); addExpIntoList(expList, "skyline", 7.9513, 1.6384E-2); addExpIntoList(expList, "eml1", 5.059, 2.1669E-2); break; case 8: // testEBSP.xml -// BEAST 1 testEBSP.xml - addExpIntoList(expList, "posterior", -1826.2014, 0.1562); - addExpIntoList(expList, "prior", -9.4517, 0.1782); - addExpIntoList(expList, "tree.height", 6.3528E-2, 7.0709E-5); - addExpIntoList(expList, "popSizes1", 2435.0409, 132.4556); - addExpIntoList(expList, "popSizes2", 2195.7116, 156.2106); - addExpIntoList(expList, "popSizes3", 1065.3511, 119.8768); - addExpIntoList(expList, "indicators", 1.3275, 2.1211E-2); - addExpIntoList(expList, "indicators", 1.5219, 2.9634E-2); - addExpIntoList(expList, "indicators", 2.1505, 3.8185E-2); - addExpIntoList(expList, "hky.kappa", 26.4814, 0.2725); - addExpIntoList(expList, "hky.frequencies1", 0.3252, 7.7972E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2581, 5.685E-4); - addExpIntoList(expList, "hky.frequencies3", 0.1553, 4.3071E-4); - addExpIntoList(expList, "hky.frequencies4", 0.2614, 6.1733E-4); - addExpIntoList(expList, "treeLikelihood", -1816.7497, 5.4764E-2); - // this is clearly bunk (negative value for a positive parameter) - addExpIntoList(expList, "populationMean", -3.4472, 0.1802); + // all values below are from BEAST 1.8.4, testEBSP.xml + addExpIntoList(expList, "posterior", -3831.4728, 9.7013); + addExpIntoList(expList, "prior", 458.7546, 9.6924); + addExpIntoList(expList, "tree.26.height", 0.0275, 7.7632E-5); + addExpIntoList(expList, "tree.29.height", 0.0231, 6.589E-5); + addExpIntoList(expList, "tree.47.height", 0.0263, 6.5618E-5); + addExpIntoList(expList, "sum(indicators)", 0.4738, 0.0187); + addExpIntoList(expList, "populationMean", 0.0443, 0.0119); + addExpIntoList(expList, "treeLikelihood.26", -1264.9419, 0.0819); + addExpIntoList(expList, "treeLikelihood.29", -1246.7234, 0.0754); + addExpIntoList(expList, "treeLikelihood.47", -1778.562, 0.0951); + addExpIntoList(expList, "coalescent", 220.5613, 0.1462); + addExpIntoList(expList, "popSizes.1", 0.0172, 3.9108E-3); + addExpIntoList(expList, "popSizes.2", 0.0444, 0.0136); + addExpIntoList(expList, "popSizes.3", 0.0397, 0.0103); + addExpIntoList(expList, "indicators.1", 6.3871E-3, 1.7047E-3); + addExpIntoList(expList, "indicators.2", 0.0192, 9.1203E-3); + addExpIntoList(expList, "indicators.3", 9.4418E-3, 2.2312E-3); + addExpIntoList(expList, "hky.kappa.26", 4.4946, 0.038); + addExpIntoList(expList, "hky.frequencies.26.1", 0.4099, 8.0594E-4); + addExpIntoList(expList, "hky.frequencies.26.2", 0.2064, 6.2073E-4); + addExpIntoList(expList, "hky.frequencies.26.3", 0.1754, 5.6823E-4); + addExpIntoList(expList, "hky.frequencies.26.4", 0.2083, 6.139E-4); break; diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TreeTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TreeTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/TreeTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/TreeTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -1,11 +1,11 @@ package test.beast.beast2vs1; +import test.beast.beast2vs1.trace.Expectation; + import java.util.ArrayList; import java.util.List; -import test.beast.beast2vs1.trace.Expectation; - /** * @author Walter Xie */ @@ -40,10 +40,10 @@ addExpIntoList(expList, "mrcatime(human,chimp)", 2.0326E-2, 3.5906E-5); addExpIntoList(expList, "popSize", 9.7862E-2, 6.2387E-4); addExpIntoList(expList, "hky.kappa", 25.8288, 0.1962); - addExpIntoList(expList, "hky.frequencies1", 0.3262, 5.9501E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2569, 5.0647E-4); - addExpIntoList(expList, "hky.frequencies3", 0.1552, 4.4638E-4); - addExpIntoList(expList, "hky.frequencies4", 0.2617, 5.1085E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.3262, 5.9501E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.2569, 5.0647E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.1552, 4.4638E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.2617, 5.1085E-4); addExpIntoList(expList, "likelihood", -1816.6943, 5.8444E-2); addExpIntoList(expList, "coalescent", 7.2378, 9.1912E-3); break; @@ -56,10 +56,10 @@ addExpIntoList(expList, "mrcatime(human,chimp)", 1.7069E-2, 3.3455E-5); addExpIntoList(expList, "popSize", 0.1049, 6.4588E-4); addExpIntoList(expList, "hky.kappa", 26.7792, 0.1851); - addExpIntoList(expList, "hky.frequencies1", 0.328, 7.1121E-4); - addExpIntoList(expList, "hky.frequencies2", 0.2573, 5.4356E-4); - addExpIntoList(expList, "hky.frequencies3", 0.1548, 4.2604E-4); - addExpIntoList(expList, "hky.frequencies4", 0.2599, 6.0174E-4); + addExpIntoList(expList, "hky.frequencies.1", 0.328, 7.1121E-4); + addExpIntoList(expList, "hky.frequencies.2", 0.2573, 5.4356E-4); + addExpIntoList(expList, "hky.frequencies.3", 0.1548, 4.2604E-4); + addExpIntoList(expList, "hky.frequencies.4", 0.2599, 6.0174E-4); addExpIntoList(expList, "likelihood", -1828.7667, 6.527E-2); addExpIntoList(expList, "coalescent", 6.864, 9.7699E-3); break; diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/DivergenceDatingTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/DivergenceDatingTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/DivergenceDatingTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/DivergenceDatingTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -13,7 +13,7 @@ @Test public void DivergenceDatingTutorial() throws Exception { DivergenceDatingRunner runner = new DivergenceDatingRunner(org.fest.util.Files.temporaryFolder()); - runner.analyse(0); + runner.analyse(0); // SEED = SEED + index_XML; } // This is for debugging the test only @@ -28,7 +28,7 @@ class DivergenceDatingRunner extends TestFramework { - DivergenceDatingRunner(File file) { + DivergenceDatingRunner(File file) throws InterruptedException { super(); setUp(new String[]{"/x.xml"}); dirName = file.getPath(); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/RateTutorialTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/RateTutorialTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/RateTutorialTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/RateTutorialTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -29,7 +29,7 @@ class MEPRunner extends TestFramework { - MEPRunner(File file) { + MEPRunner(File file) throws InterruptedException { super(); setUp(new String[]{"/x.xml"}); dirName = file.getPath(); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/StarBeastTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/StarBeastTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/beast2vs1/tutorials/StarBeastTest.java 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/beast2vs1/tutorials/StarBeastTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -28,7 +28,7 @@ class StarBEASTRunner extends TestFramework { - StarBEASTRunner(File file) { + StarBEASTRunner(File file) throws InterruptedException { super(); setUp(new String[]{"/x.xml"}); dirName = file.getPath(); diff -Nru beast2-mcmc-2.6.6+dfsg/src/test/beast/core/DirectSimulatorTest.java beast2-mcmc-2.6.7+dfsg/src/test/beast/core/DirectSimulatorTest.java --- beast2-mcmc-2.6.6+dfsg/src/test/beast/core/DirectSimulatorTest.java 1970-01-01 00:00:00.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/src/test/beast/core/DirectSimulatorTest.java 2022-04-04 07:18:36.000000000 +0000 @@ -0,0 +1,90 @@ +package test.beast.core; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import beast.core.DirectSimulator; +import beast.core.Logger; +import beast.core.Logger.LogFileMode; +import beast.core.parameter.RealParameter; +import beast.math.distributions.Normal; +import beast.math.distributions.Prior; +import beast.util.LogAnalyser; +import junit.framework.TestCase; + +public class DirectSimulatorTest extends TestCase { + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + + @Test + public void testBoundedPrior() throws Exception { + RealParameter p = new RealParameter("0.0"); + p.setID("p"); + p.setUpper(0.0); + p.setLower(Double.NEGATIVE_INFINITY); + + Normal normal = new Normal(); + normal.initByName("mean", "0.0", "sigma", "1.0"); + Prior prior = new Prior(); + prior.initByName("x", p, "distr", normal); + + Logger logger = new Logger(); + Logger.FILE_MODE = LogFileMode.overwrite; + String tracefile = "/tmp/trace.log"; + logger.initByName("log", p, "fileName", tracefile); + + + DirectSimulator simulator = new DirectSimulator(); + simulator.initByName("distribution", prior, "logger", logger, "nSamples", 1000); + + simulator.run(); + + LogAnalyser trace = new LogAnalyser(tracefile); + double upper = trace.get95HPDup("p"); + assertEquals(true, upper <= 0); + + // clean up + // new File(tracefile).delete(); + System.err.println("done"); + + } + + @Test + public void testMultiDimensionalBoundedPrior() throws Exception { + RealParameter x = new RealParameter(); + x.initByName("dimension", 3, "value", "0.0", "upper", 0.0, "lower", Double.NEGATIVE_INFINITY); + x.setID("x"); + + Normal normal = new Normal(); + normal.initByName("mean", "0.0", "sigma", "1.0"); + Prior prior = new Prior(); + prior.initByName("x", x, "distr", normal); + + Logger logger = new Logger(); + Logger.FILE_MODE = LogFileMode.overwrite; + String tracefile = "/tmp/trace.log"; + logger.initByName("log", x, "fileName", tracefile); + + + DirectSimulator simulator = new DirectSimulator(); + simulator.initByName("distribution", prior, "logger", logger, "nSamples", 1000); + + simulator.run(); + + LogAnalyser trace = new LogAnalyser(tracefile); + double upper = trace.get95HPDup("x.1"); + assertEquals(true, upper <= 0); + upper = trace.get95HPDup("x.2"); + assertEquals(true, upper <= 0); + upper = trace.get95HPDup("x.3"); + assertEquals(true, upper <= 0); + + // clean up + // new File(tracefile).delete(); + System.err.println("done"); + + } +} diff -Nru beast2-mcmc-2.6.6+dfsg/version.xml beast2-mcmc-2.6.7+dfsg/version.xml --- beast2-mcmc-2.6.6+dfsg/version.xml 2021-08-11 20:11:54.000000000 +0000 +++ beast2-mcmc-2.6.7+dfsg/version.xml 2022-04-04 07:18:36.000000000 +0000 @@ -1 +1 @@ - +