Update changelog and rebuild docs
authorJim Procter <j.procter@dundee.ac.uk>
Fri, 17 Dec 2021 17:06:58 +0000 (17:06 +0000)
committerJim Procter <j.procter@dundee.ac.uk>
Fri, 17 Dec 2021 17:06:58 +0000 (17:06 +0000)
28 files changed:
docs/v_2_2_0/changelog.rst
website/docs/_sources/changelog.rst.txt
website/docs/_static/basic.css
website/docs/_static/doctools.js
website/docs/_static/jquery.js
website/docs/_static/pygments.css
website/docs/_static/searchtools.js
website/docs/_static/underscore.js
website/docs/advanced.html
website/docs/changelog.html
website/docs/citations.html
website/docs/client.html
website/docs/develop.html
website/docs/docker.html
website/docs/genindex.html
website/docs/getting_started.html
website/docs/included_tools.html
website/docs/index.html
website/docs/objects.inv
website/docs/search.html
website/docs/searchindex.js
website/docs/stats.html
website/docs/va.html
website/docs/war.html
website/download.jsp
website/getting_started.jsp
website/index.jsp
website/template_header.jsp

index 3600642..6346fc0 100644 (file)
@@ -2,6 +2,15 @@ Changelog
 =========
 
 
+.. _v2.2.1:
+
+Version 2.2.1 (Released 16th Dec 2021)
+--------------------------------------
+
+Patch release:
+
+* Log4j_ 1.2.x libraries replaced with Log4j2_ 2.16.0 to address security vulnerabilities
+
 .. _v2.2:
 
 Version 2.2 (Released 18 August 2017)
index 3600642..e7724c3 100644 (file)
@@ -2,6 +2,14 @@ Changelog
 =========
 
 
+.. _v2.2.1:
+
+Version 2.2.1 (Released 16th Dec 2021)
+--------------------------------------
+
+Patch release:
+* Log4j 1.2.x libraries replaced with Log4j2 2.16.0 to address security vulnerabilities
+
 .. _v2.2:
 
 Version 2.2 (Released 18 August 2017)
index dc88b5a..603f6a8 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -15,6 +15,12 @@ div.clearer {
     clear: both;
 }
 
+div.section::after {
+    display: block;
+    content: '';
+    clear: left;
+}
+
 /* -- relbar ---------------------------------------------------------------- */
 
 div.related {
@@ -81,10 +87,26 @@ div.sphinxsidebar input {
     font-size: 1em;
 }
 
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
 div.sphinxsidebar #searchbox input[type="text"] {
-    width: 170px;
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
 }
 
+
 img {
     border: 0;
     max-width: 100%;
@@ -108,7 +130,7 @@ ul.search li a {
     font-weight: bold;
 }
 
-ul.search li div.context {
+ul.search li p.context {
     color: #888;
     margin: 2px 0 0 30px;
     text-align: left;
@@ -199,6 +221,11 @@ table.modindextable td {
 
 /* -- general body styles --------------------------------------------------- */
 
+div.body {
+    min-width: 450px;
+    max-width: 800px;
+}
+
 div.body p, div.body dd, div.body li, div.body blockquote {
     -moz-hyphens: auto;
     -ms-hyphens: auto;
@@ -210,6 +237,16 @@ a.headerlink {
     visibility: hidden;
 }
 
+a.brackets:before,
+span.brackets > a:before{
+    content: "[";
+}
+
+a.brackets:after,
+span.brackets > a:after {
+    content: "]";
+}
+
 h1:hover > a.headerlink,
 h2:hover > a.headerlink,
 h3:hover > a.headerlink,
@@ -240,19 +277,25 @@ p.rubric {
     font-weight: bold;
 }
 
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
     clear: left;
     float: left;
     margin-right: 1em;
 }
 
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
     clear: right;
     float: right;
     margin-left: 1em;
 }
 
-img.align-center, .figure.align-center, object.align-center {
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+img.align-default, figure.align-default, .figure.align-default {
   display: block;
   margin-left: auto;
   margin-right: auto;
@@ -266,30 +309,41 @@ img.align-center, .figure.align-center, object.align-center {
     text-align: center;
 }
 
+.align-default {
+    text-align: center;
+}
+
 .align-right {
     text-align: right;
 }
 
 /* -- sidebars -------------------------------------------------------------- */
 
-div.sidebar {
+div.sidebar,
+aside.sidebar {
     margin: 0 0 0.5em 1em;
     border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
+    padding: 7px;
     background-color: #ffe;
     width: 40%;
     float: right;
+    clear: right;
+    overflow-x: auto;
 }
 
 p.sidebar-title {
     font-weight: bold;
 }
 
+div.admonition, div.topic, blockquote {
+    clear: left;
+}
+
 /* -- topics ---------------------------------------------------------------- */
 
 div.topic {
     border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
+    padding: 7px;
     margin: 10px 0 10px 0;
 }
 
@@ -311,10 +365,6 @@ div.admonition dt {
     font-weight: bold;
 }
 
-div.admonition dl {
-    margin-bottom: 0;
-}
-
 p.admonition-title {
     margin: 0px 10px 5px 0px;
     font-weight: bold;
@@ -325,13 +375,44 @@ div.body p.centered {
     margin-top: 25px;
 }
 
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+aside.sidebar > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+    margin-bottom: 0;
+}
+
+div.sidebar::after,
+aside.sidebar::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+    display: block;
+    content: '';
+    clear: both;
+}
+
 /* -- tables ---------------------------------------------------------------- */
 
 table.docutils {
+    margin-top: 10px;
+    margin-bottom: 10px;
     border: 0;
     border-collapse: collapse;
 }
 
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.align-default {
+    margin-left: auto;
+    margin-right: auto;
+}
+
 table caption span.caption-number {
     font-style: italic;
 }
@@ -365,22 +446,34 @@ table.citation td {
     border-bottom: none;
 }
 
+th > :first-child,
+td > :first-child {
+    margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+    margin-bottom: 0px;
+}
+
 /* -- figures --------------------------------------------------------------- */
 
-div.figure {
+div.figure, figure {
     margin: 0.5em;
     padding: 0.5em;
 }
 
-div.figure p.caption {
+div.figure p.caption, figcaption {
     padding: 0.3em;
 }
 
-div.figure p.caption span.caption-number {
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
     font-style: italic;
 }
 
-div.figure p.caption span.caption-text {
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
 }
 
 /* -- field list styles ----------------------------------------------------- */
@@ -398,6 +491,81 @@ table.field-list td, table.field-list th {
     margin: 0;
 }
 
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+    margin: 1em 0;
+}
+
+table.hlist td {
+    vertical-align: top;
+}
+
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+       font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+.sig-name {
+       font-size: 1.1em;
+}
+
+code.descname {
+    font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+    background-color: transparent;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.sig-param.n {
+       font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+       font-family: unset;
+}
+
+.sig.c   .k, .sig.c   .kt,
+.sig.cpp .k, .sig.cpp .kt {
+       color: #0033B3;
+}
+
+.sig.c   .m,
+.sig.cpp .m {
+       color: #1750EB;
+}
+
+.sig.c   .s, .sig.c   .sc,
+.sig.cpp .s, .sig.cpp .sc {
+       color: #067D17;
+}
+
+
 /* -- other body styles ----------------------------------------------------- */
 
 ol.arabic {
@@ -420,11 +588,78 @@ ol.upperroman {
     list-style: upper-roman;
 }
 
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+    margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+    margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+    margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+    margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+    margin-bottom: 0;
+}
+
+dl.footnote > dt,
+dl.citation > dt {
+    float: left;
+    margin-right: 0.5em;
+}
+
+dl.footnote > dd,
+dl.citation > dd {
+    margin-bottom: 0em;
+}
+
+dl.footnote > dd:after,
+dl.citation > dd:after {
+    content: "";
+    clear: both;
+}
+
+dl.field-list {
+    display: grid;
+    grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+    font-weight: bold;
+    word-break: break-word;
+    padding-left: 0.5em;
+    padding-right: 5px;
+}
+
+dl.field-list > dt:after {
+    content: ":";
+}
+
+dl.field-list > dd {
+    padding-left: 0.5em;
+    margin-top: 0em;
+    margin-left: 0em;
+    margin-bottom: 0em;
+}
+
 dl {
     margin-bottom: 15px;
 }
 
-dd p {
+dd > :first-child {
     margin-top: 0px;
 }
 
@@ -438,21 +673,22 @@ dd {
     margin-left: 30px;
 }
 
-dt:target, .highlighted {
-    background-color: #fbe54e;
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+    margin-bottom: 0;
 }
 
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
+dt:target, span.highlighted {
+    background-color: #fbe54e;
 }
 
-.optional {
-    font-size: 1.3em;
+rect.highlighted {
+    fill: #fbe54e;
 }
 
-.sig-paren {
-    font-size: larger;
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
 }
 
 .versionmodified {
@@ -493,6 +729,13 @@ dl.glossary dt {
     font-style: oblique;
 }
 
+.classifier:before {
+    font-style: normal;
+    margin: 0 0.5em;
+    content: ":";
+    display: inline-block;
+}
+
 abbr, acronym {
     border-bottom: dotted 1px;
     cursor: help;
@@ -505,6 +748,10 @@ pre {
     overflow-y: hidden;  /* fixes display issues on Chrome browsers */
 }
 
+pre, div[class*="highlight-"] {
+    clear: both;
+}
+
 span.pre {
     -moz-hyphens: none;
     -ms-hyphens: none;
@@ -512,22 +759,57 @@ span.pre {
     hyphens: none;
 }
 
+div[class*="highlight-"] {
+    margin: 1em 0;
+}
+
 td.linenos pre {
-    padding: 5px 0px;
     border: 0;
     background-color: transparent;
     color: #aaa;
 }
 
 table.highlighttable {
-    margin-left: 0.5em;
+    display: block;
+}
+
+table.highlighttable tbody {
+    display: block;
+}
+
+table.highlighttable tr {
+    display: flex;
 }
 
 table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
+    margin: 0;
+    padding: 0;
+}
+
+table.highlighttable td.linenos {
+    padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+    flex: 1;
+    overflow: hidden;
+}
+
+.highlight .hll {
+    display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+    margin: 0;
+}
+
+div.code-block-caption + div {
+    margin-top: 0;
 }
 
 div.code-block-caption {
+    margin-top: 1em;
     padding: 2px 5px;
     font-size: small;
 }
@@ -536,8 +818,14 @@ div.code-block-caption code {
     background-color: transparent;
 }
 
-div.code-block-caption + div > div.highlight > pre {
-    margin-top: 0;
+table.highlighttable td.linenos,
+span.linenos,
+div.highlight span.gp {  /* gp: Generic.Prompt */
+  user-select: none;
+  -webkit-user-select: text; /* Safari fallback only */
+  -webkit-user-select: none; /* Chrome/Safari */
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
 }
 
 div.code-block-caption span.caption-number {
@@ -549,21 +837,7 @@ div.code-block-caption span.caption-text {
 }
 
 div.literal-block-wrapper {
-    padding: 1em 1em 0;
-}
-
-div.literal-block-wrapper div.highlight {
-    margin: 0;
-}
-
-code.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-code.descclassname {
-    background-color: transparent;
+    margin: 1em 0;
 }
 
 code.xref, a code {
@@ -604,8 +878,7 @@ span.eqno {
 }
 
 span.eqno a.headerlink {
-    position: relative;
-    left: 0px;
+    position: absolute;
     z-index: 1;
 }
 
index 5654977..8cbf1b1 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -29,9 +29,14 @@ if (!window.console || !console.firebug) {
 
 /**
  * small helper function to urldecode strings
+ *
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
  */
 jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
+  if (!x) {
+    return x
+  }
+  return decodeURIComponent(x.replace(/\+/g, ' '));
 };
 
 /**
@@ -45,7 +50,7 @@ jQuery.urlencode = encodeURIComponent;
  * it will always return arrays of strings for the value parts.
  */
 jQuery.getQueryParameters = function(s) {
-  if (typeof s == 'undefined')
+  if (typeof s === 'undefined')
     s = document.location.search;
   var parts = s.substr(s.indexOf('?') + 1).split('&');
   var result = {};
@@ -66,29 +71,54 @@ jQuery.getQueryParameters = function(s) {
  * span elements with the given class name.
  */
 jQuery.fn.highlightText = function(text, className) {
-  function highlight(node) {
-    if (node.nodeType == 3) {
+  function highlight(node, addItems) {
+    if (node.nodeType === 3) {
       var val = node.nodeValue;
       var pos = val.toLowerCase().indexOf(text);
-      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span = document.createElement("span");
-        span.className = className;
+      if (pos >= 0 &&
+          !jQuery(node.parentNode).hasClass(className) &&
+          !jQuery(node.parentNode).hasClass("nohighlight")) {
+        var span;
+        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
+        if (isInSVG) {
+          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+        } else {
+          span = document.createElement("span");
+          span.className = className;
+        }
         span.appendChild(document.createTextNode(val.substr(pos, text.length)));
         node.parentNode.insertBefore(span, node.parentNode.insertBefore(
           document.createTextNode(val.substr(pos + text.length)),
           node.nextSibling));
         node.nodeValue = val.substr(0, pos);
+        if (isInSVG) {
+          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+          var bbox = node.parentElement.getBBox();
+          rect.x.baseVal.value = bbox.x;
+          rect.y.baseVal.value = bbox.y;
+          rect.width.baseVal.value = bbox.width;
+          rect.height.baseVal.value = bbox.height;
+          rect.setAttribute('class', className);
+          addItems.push({
+              "parent": node.parentNode,
+              "target": rect});
+        }
       }
     }
     else if (!jQuery(node).is("button, select, textarea")) {
       jQuery.each(node.childNodes, function() {
-        highlight(this);
+        highlight(this, addItems);
       });
     }
   }
-  return this.each(function() {
-    highlight(this);
+  var addItems = [];
+  var result = this.each(function() {
+    highlight(this, addItems);
   });
+  for (var i = 0; i < addItems.length; ++i) {
+    jQuery(addItems[i].parent).before(addItems[i].target);
+  }
+  return result;
 };
 
 /*
@@ -124,28 +154,30 @@ var Documentation = {
     this.fixFirefoxAnchorBug();
     this.highlightSearchWords();
     this.initIndexTable();
-    
+    if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
+      this.initOnKeyListeners();
+    }
   },
 
   /**
    * i18n support
    */
   TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
   LOCALE : 'unknown',
 
   // gettext and ngettext don't access this so that the functions
   // can safely bound to a different name (_ = Documentation.gettext)
   gettext : function(string) {
     var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated == 'undefined')
+    if (typeof translated === 'undefined')
       return string;
-    return (typeof translated == 'string') ? translated : translated[0];
+    return (typeof translated === 'string') ? translated : translated[0];
   },
 
   ngettext : function(singular, plural, n) {
     var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated == 'undefined')
+    if (typeof translated === 'undefined')
       return (n == 1) ? singular : plural;
     return translated[Documentation.PLURALEXPR(n)];
   },
@@ -180,7 +212,7 @@ var Documentation = {
    * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
    */
   fixFirefoxAnchorBug : function() {
-    if (document.location.hash)
+    if (document.location.hash && $.browser.mozilla)
       window.setTimeout(function() {
         document.location.href += '';
       }, 10);
@@ -216,7 +248,7 @@ var Documentation = {
       var src = $(this).attr('src');
       var idnum = $(this).attr('id').substr(7);
       $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) == 'minus.png')
+      if (src.substr(-9) === 'minus.png')
         $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
       else
         $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
@@ -248,7 +280,7 @@ var Documentation = {
     var path = document.location.pathname;
     var parts = path.split(/\//);
     $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this == '..')
+      if (this === '..')
         parts.pop();
     });
     var url = parts.join('/');
@@ -256,10 +288,12 @@ var Documentation = {
   },
 
   initOnKeyListeners: function() {
-    $(document).keyup(function(event) {
+    $(document).keydown(function(event) {
       var activeElementType = document.activeElement.tagName;
-      // don't navigate when in search box or textarea
-      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+      // don't navigate when in search box, textarea, dropdown or button
+      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
+          && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
+          && !event.shiftKey) {
         switch (event.keyCode) {
           case 37: // left
             var prevHref = $('link[rel="prev"]').prop('href');
@@ -267,12 +301,14 @@ var Documentation = {
               window.location.href = prevHref;
               return false;
             }
+            break;
           case 39: // right
             var nextHref = $('link[rel="next"]').prop('href');
             if (nextHref) {
               window.location.href = nextHref;
               return false;
             }
+            break;
         }
       }
     });
@@ -284,4 +320,4 @@ _ = Documentation.gettext;
 
 $(document).ready(function() {
   Documentation.init();
-});
\ No newline at end of file
+});
index f6a6a99..b061403 100644 (file)
@@ -1,4 +1,2 @@
-/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */
-!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,
-r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c||"false"!==c&&("null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var $=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,_=new RegExp("^(?:([+-])=|)("+$+")([a-z%]*)$","i"),aa=["Top","Right","Bottom","Left"],ba=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ca=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function da(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&_.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ea={};function fa(a){var b,c=a.ownerDocument,d=a.nodeName,e=ea[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ea[d]=e,e)}function ga(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;c<h;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==va()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===va()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ta:ua,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ta,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ta,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ta,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&qa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ra.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return wa(this,a,b,c,d)},one:function(a,b,c,d){return wa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ua),this.each(function(){r.event.remove(this,a,c,b)})}});var xa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/<script|<style|<link/i,za=/checked\s*(?:[^=]|=\s*.checked.)/i,Aa=/^true\/(.*)/,Ba=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;l<i;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;d<e;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Ma(a,b,f),(d<0||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)})},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);f<g;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Ya=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){Za||(Za=a.requestAnimationFrame?a.requestAnimationFrame(ab):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame(Za):a.clearInterval(Za),Za=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var hb,ib=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);
-if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i<h;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=oa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=r.trim(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||pa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Na(o.pixelPosition,function(a,c){if(c)return c=Ma(a,b),Ka.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
+/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
index 20c4814..691aeb8 100644 (file)
@@ -1,5 +1,10 @@
+pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
 .highlight .hll { background-color: #ffffcc }
-.highlight  { background: #eeffcc; }
+.highlight { background: #eeffcc; }
 .highlight .c { color: #408090; font-style: italic } /* Comment */
 .highlight .err { border: 1px solid #FF0000 } /* Error */
 .highlight .k { color: #007020; font-weight: bold } /* Keyword */
index c821573..002e9c4 100644 (file)
 /*
- * searchtools.js_t
+ * searchtools.js
  * ~~~~~~~~~~~~~~~~
  *
  * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
 
-
-/* Non-minified version JS is _stemmer.js if file is provided */ 
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
-  var step2list = {
-    ational: 'ate',
-    tional: 'tion',
-    enci: 'ence',
-    anci: 'ance',
-    izer: 'ize',
-    bli: 'ble',
-    alli: 'al',
-    entli: 'ent',
-    eli: 'e',
-    ousli: 'ous',
-    ization: 'ize',
-    ation: 'ate',
-    ator: 'ate',
-    alism: 'al',
-    iveness: 'ive',
-    fulness: 'ful',
-    ousness: 'ous',
-    aliti: 'al',
-    iviti: 'ive',
-    biliti: 'ble',
-    logi: 'log'
-  };
-
-  var step3list = {
-    icate: 'ic',
-    ative: '',
-    alize: 'al',
-    iciti: 'ic',
-    ical: 'ic',
-    ful: '',
-    ness: ''
+if (!Scorer) {
+  /**
+   * Simple result scoring code.
+   */
+  var Scorer = {
+    // Implement the following function to further tweak the score for each result
+    // The function takes a result array [filename, title, anchor, descr, score]
+    // and returns the new score.
+    /*
+    score: function(result) {
+      return result[4];
+    },
+    */
+
+    // query matches the full name of an object
+    objNameMatch: 11,
+    // or matches in the last dotted part of the object name
+    objPartialMatch: 6,
+    // Additive scores depending on the priority of the object
+    objPrio: {0:  15,   // used to be importantResults
+              1:  5,   // used to be objectResults
+              2: -5},  // used to be unimportantResults
+    //  Used when the priority is not in the mapping.
+    objPrioDefault: 0,
+
+    // query found in title
+    title: 15,
+    partialTitle: 7,
+    // query found in terms
+    term: 5,
+    partialTerm: 2
   };
-
-  var c = "[^aeiou]";          // consonant
-  var v = "[aeiouy]";          // vowel
-  var C = c + "[^aeiouy]*";    // consonant sequence
-  var V = v + "[aeiou]*";      // vowel sequence
-
-  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
-  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
-  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
-  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
-
-  this.stemWord = function (w) {
-    var stem;
-    var suffix;
-    var firstch;
-    var origword = w;
-
-    if (w.length < 3)
-      return w;
-
-    var re;
-    var re2;
-    var re3;
-    var re4;
-
-    firstch = w.substr(0,1);
-    if (firstch == "y")
-      w = firstch.toUpperCase() + w.substr(1);
-
-    // Step 1a
-    re = /^(.+?)(ss|i)es$/;
-    re2 = /^(.+?)([^s])s$/;
-
-    if (re.test(w))
-      w = w.replace(re,"$1$2");
-    else if (re2.test(w))
-      w = w.replace(re2,"$1$2");
-
-    // Step 1b
-    re = /^(.+?)eed$/;
-    re2 = /^(.+?)(ed|ing)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      re = new RegExp(mgr0);
-      if (re.test(fp[1])) {
-        re = /.$/;
-        w = w.replace(re,"");
-      }
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1];
-      re2 = new RegExp(s_v);
-      if (re2.test(stem)) {
-        w = stem;
-        re2 = /(at|bl|iz)$/;
-        re3 = new RegExp("([^aeiouylsz])\\1$");
-        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-        if (re2.test(w))
-          w = w + "e";
-        else if (re3.test(w)) {
-          re = /.$/;
-          w = w.replace(re,"");
-        }
-        else if (re4.test(w))
-          w = w + "e";
-      }
-    }
-
-    // Step 1c
-    re = /^(.+?)y$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(s_v);
-      if (re.test(stem))
-        w = stem + "i";
-    }
-
-    // Step 2
-    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step2list[suffix];
-    }
-
-    // Step 3
-    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step3list[suffix];
-    }
-
-    // Step 4
-    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
-    re2 = /^(.+?)(s|t)(ion)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      if (re.test(stem))
-        w = stem;
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1] + fp[2];
-      re2 = new RegExp(mgr1);
-      if (re2.test(stem))
-        w = stem;
-    }
-
-    // Step 5
-    re = /^(.+?)e$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      re2 = new RegExp(meq1);
-      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
-        w = stem;
-    }
-    re = /ll$/;
-    re2 = new RegExp(mgr1);
-    if (re.test(w) && re2.test(w)) {
-      re = /.$/;
-      w = w.replace(re,"");
-    }
-
-    // and turn initial Y back to y
-    if (firstch == "y")
-      w = firstch.toLowerCase() + w.substr(1);
-    return w;
-  }
 }
 
-
-
-/**
- * Simple result scoring code.
- */
-var Scorer = {
-  // Implement the following function to further tweak the score for each result
-  // The function takes a result array [filename, title, anchor, descr, score]
-  // and returns the new score.
-  /*
-  score: function(result) {
-    return result[4];
-  },
-  */
-
-  // query matches the full name of an object
-  objNameMatch: 11,
-  // or matches in the last dotted part of the object name
-  objPartialMatch: 6,
-  // Additive scores depending on the priority of the object
-  objPrio: {0:  15,   // used to be importantResults
-            1:  5,   // used to be objectResults
-            2: -5},  // used to be unimportantResults
-  //  Used when the priority is not in the mapping.
-  objPrioDefault: 0,
-
-  // query found in title
-  title: 15,
-  // query found in terms
-  term: 5
-};
-
-
-
-
-
-var splitChars = (function() {
-    var result = {};
-    var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
-         1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
-         2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
-         2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
-         3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
-         3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
-         4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
-         8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
-         11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
-         43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
-    var i, j, start, end;
-    for (i = 0; i < singles.length; i++) {
-        result[singles[i]] = true;
-    }
-    var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
-         [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
-         [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
-         [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
-         [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
-         [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
-         [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
-         [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
-         [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
-         [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
-         [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
-         [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
-         [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
-         [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
-         [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
-         [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
-         [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
-         [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
-         [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
-         [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
-         [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
-         [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
-         [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
-         [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
-         [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
-         [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
-         [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
-         [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
-         [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
-         [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
-         [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
-         [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
-         [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
-         [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
-         [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
-         [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
-         [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
-         [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
-         [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
-         [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
-         [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
-         [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
-         [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
-         [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
-         [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
-         [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
-         [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
-         [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
-         [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
-    for (i = 0; i < ranges.length; i++) {
-        start = ranges[i][0];
-        end = ranges[i][1];
-        for (j = start; j <= end; j++) {
-            result[j] = true;
-        }
-    }
-    return result;
-})();
-
-function splitQuery(query) {
-    var result = [];
-    var start = -1;
-    for (var i = 0; i < query.length; i++) {
-        if (splitChars[query.charCodeAt(i)]) {
-            if (start !== -1) {
-                result.push(query.slice(start, i));
-                start = -1;
-            }
-        } else if (start === -1) {
-            start = i;
-        }
-    }
-    if (start !== -1) {
-        result.push(query.slice(start));
-    }
-    return result;
+if (!splitQuery) {
+  function splitQuery(query) {
+    return query.split(/\s+/);
+  }
 }
 
-
-
-
 /**
  * Search Module
  */
@@ -335,6 +58,19 @@ var Search = {
   _queued_query : null,
   _pulse_status : -1,
 
+  htmlToText : function(htmlString) {
+      var virtualDocument = document.implementation.createHTMLDocument('virtual');
+      var htmlElement = $(htmlString, virtualDocument);
+      htmlElement.find('.headerlink').remove();
+      docContent = htmlElement.find('[role=main]')[0];
+      if(docContent === undefined) {
+          console.warn("Content block not found. Sphinx search tries to obtain it " +
+                       "via '[role=main]'. Could you check your theme or template.");
+          return "";
+      }
+      return docContent.textContent || docContent.innerText;
+  },
+
   init : function() {
       var params = $.getQueryParameters();
       if (params.q) {
@@ -399,7 +135,7 @@ var Search = {
     this.out = $('#search-results');
     this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
     this.dots = $('<span></span>').appendTo(this.title);
-    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
     this.output = $('<ul class="search"/>').appendTo(this.out);
 
     $('#search-progress').text(_('Preparing search...'));
@@ -417,7 +153,6 @@ var Search = {
    */
   query : function(query) {
     var i;
-    var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
 
     // stem the searchterms and add them to the correct list
     var stemmer = new Stemmer();
@@ -431,8 +166,7 @@ var Search = {
           objectterms.push(tmp[i].toLowerCase());
       }
 
-      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
-          tmp[i] === "") {
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
         // skip this "word"
         continue;
       }
@@ -514,8 +248,10 @@ var Search = {
       // results left, load the summary and display it
       if (results.length) {
         var item = results.pop();
-        var listItem = $('<li style="display:none"></li>');
-        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+        var listItem = $('<li></li>');
+        var requestUrl = "";
+        var linkUrl = "";
+        if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
           // dirhtml builder
           var dirname = item[0] + '/';
           if (dirname.match(/\/index\/$/)) {
@@ -523,41 +259,45 @@ var Search = {
           } else if (dirname == 'index/') {
             dirname = '';
           }
-          listItem.append($('<a/>').attr('href',
-            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
-            highlightstring + item[2]).html(item[1]));
+          requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
+          linkUrl = requestUrl;
+
         } else {
           // normal html builders
-          listItem.append($('<a/>').attr('href',
-            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
-            highlightstring + item[2]).html(item[1]));
+          requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+          linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
         }
+        listItem.append($('<a/>').attr('href',
+            linkUrl +
+            highlightstring + item[2]).html(item[1]));
         if (item[3]) {
           listItem.append($('<span> (' + item[3] + ')</span>'));
           Search.output.append(listItem);
-          listItem.slideDown(5, function() {
+          setTimeout(function() {
             displayNextItem();
-          });
+          }, 5);
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
-          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
+          $.ajax({url: requestUrl,
                   dataType: "text",
                   complete: function(jqxhr, textstatus) {
                     var data = jqxhr.responseText;
                     if (data !== '' && data !== undefined) {
-                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                      var summary = Search.makeSearchSummary(data, searchterms, hlterms);
+                      if (summary) {
+                        listItem.append(summary);
+                      }
                     }
                     Search.output.append(listItem);
-                    listItem.slideDown(5, function() {
+                    setTimeout(function() {
                       displayNextItem();
-                    });
+                    }, 5);
                   }});
         } else {
           // no source available, just display title
           Search.output.append(listItem);
-          listItem.slideDown(5, function() {
+          setTimeout(function() {
             displayNextItem();
-          });
+          }, 5);
         }
       }
       // search finished, update title and status message
@@ -588,20 +328,22 @@ var Search = {
     var results = [];
 
     for (var prefix in objects) {
-      for (var name in objects[prefix]) {
+      for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
+        var match = objects[prefix][iMatch];
+        var name = match[4];
         var fullname = (prefix ? prefix + '.' : '') + name;
-        if (fullname.toLowerCase().indexOf(object) > -1) {
+        var fullnameLower = fullname.toLowerCase()
+        if (fullnameLower.indexOf(object) > -1) {
           var score = 0;
-          var parts = fullname.split('.');
+          var parts = fullnameLower.split('.');
           // check for different match types: exact matches of full name or
           // "last name" (i.e. last dotted part)
-          if (fullname == object || parts[parts.length - 1] == object) {
+          if (fullnameLower == object || parts[parts.length - 1] == object) {
             score += Scorer.objNameMatch;
           // matches in last name
           } else if (parts[parts.length - 1].indexOf(object) > -1) {
             score += Scorer.objPartialMatch;
           }
-          var match = objects[prefix][name];
           var objname = objnames[match[1]][2];
           var title = titles[match[0]];
           // If more than one term searched for, we require other words to be
@@ -642,6 +384,13 @@ var Search = {
   },
 
   /**
+   * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
+   */
+  escapeRegExp : function(string) {
+    return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
+  },
+
+  /**
    * search for full-text terms in the index
    */
   performTermsSearch : function(searchterms, excluded, terms, titleterms) {
@@ -662,6 +411,20 @@ var Search = {
         {files: terms[word], score: Scorer.term},
         {files: titleterms[word], score: Scorer.title}
       ];
+      // add support for partial matches
+      if (word.length > 2) {
+        var word_regex = this.escapeRegExp(word);
+        for (var w in terms) {
+          if (w.match(word_regex) && !terms[word]) {
+            _o.push({files: terms[w], score: Scorer.partialTerm})
+          }
+        }
+        for (var w in titleterms) {
+          if (w.match(word_regex) && !titleterms[word]) {
+              _o.push({files: titleterms[w], score: Scorer.partialTitle})
+          }
+        }
+      }
 
       // no match but word was a required one
       if ($u.every(_o, function(o){return o.files === undefined;})) {
@@ -681,7 +444,7 @@ var Search = {
         for (j = 0; j < _files.length; j++) {
           file = _files[j];
           if (!(file in scoreMap))
-            scoreMap[file] = {}
+            scoreMap[file] = {};
           scoreMap[file][word] = o.score;
         }
       });
@@ -689,7 +452,7 @@ var Search = {
       // create the mapping
       for (j = 0; j < files.length; j++) {
         file = files[j];
-        if (file in fileMap)
+        if (file in fileMap && fileMap[file].indexOf(word) === -1)
           fileMap[file].push(word);
         else
           fileMap[file] = [word];
@@ -701,8 +464,12 @@ var Search = {
       var valid = true;
 
       // check if all requirements are matched
-      if (fileMap[file].length != searchterms.length)
-          continue;
+      var filteredTermCount = // as search terms with length < 3 are discarded: ignore
+        searchterms.filter(function(term){return term.length > 2}).length
+      if (
+        fileMap[file].length != searchterms.length &&
+        fileMap[file].length != filteredTermCount
+      ) continue;
 
       // ensure that none of the excluded terms is in the search result
       for (i = 0; i < excluded.length; i++) {
@@ -733,7 +500,11 @@ var Search = {
    * words. the first one is used to find the occurrence, the
    * latter for highlighting it.
    */
-  makeSearchSummary : function(text, keywords, hlwords) {
+  makeSearchSummary : function(htmlText, keywords, hlwords) {
+    var text = Search.htmlToText(htmlText);
+    if (text == "") {
+      return null;
+    }
     var textLower = text.toLowerCase();
     var start = 0;
     $.each(keywords, function() {
@@ -745,7 +516,7 @@ var Search = {
     var excerpt = ((start > 0) ? '...' : '') +
       $.trim(text.substr(start, 240)) +
       ((start + 240 - text.length) ? '...' : '');
-    var rv = $('<div class="context"></div>').text(excerpt);
+    var rv = $('<p class="context"></p>').text(excerpt);
     $.each(hlwords, function() {
       rv = rv.highlightText(this, 'highlighted');
     });
@@ -755,4 +526,4 @@ var Search = {
 
 $(document).ready(function() {
   Search.init();
-});
\ No newline at end of file
+});
index 5b55f32..cf177d4 100644 (file)
@@ -1,31 +1,6 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
-b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
-null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
-function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
-e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
-return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
-c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
-b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
-return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
-d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
-b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
-b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
-b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
-function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
-u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
-function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
-true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
+!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
+//     Underscore.js 1.13.1
+//     https://underscorejs.org
+//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),T=x("Function"),k=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof k&&(T=function(n){return"function"==typeof n||!1});var D=T,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),dn=V?fn(vn):x("Map"),gn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var $n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),u=0,o="__p+='";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?o+="'+\n((__t=("+e+"))==null?'':__t)+\n'":i&&(o+="';\n"+i+"\n__p+='"),r})),o+="';\n";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error("variable is not a bare identifier: "+a)}else o="with(obj||{}){\n"+o+"}\n",a="obj";o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{i=new Function(a,"_",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source="function("+a+"){\n"+o+"}",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));
\ No newline at end of file
index b11e77b..f9b09e9 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Advanced Usage &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="advanced-usage">
+  <section id="advanced-usage">
 <h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline">¶</a></h1>
 <p>JABAWS web services are WS-I basic profile compliant, which means they can be accessed using any programming language or system that can utilize standard SOAP web services. The Web Service Definition Language (WSDL) for each service is published on the JABAWS home page, and you can use this to automatically generate service bindings for your program. If you use Java you may wish to use our client package to access JABAWS. This package is based on the autogenerated source code produced by wsimport, which is the Java tool for creating web service bindings. In addition, this offers some additional methods that simplify working with JABAWS. For more information please refer to the data model javadoc.</p>
 <hr class="docutils" />
-<div class="section" id="valid-wsdl">
+<section id="valid-wsdl">
 <span id="jabaws-wsdl"></span><h2>Valid WSDL<a class="headerlink" href="#valid-wsdl" title="Permalink to this headline">¶</a></h2>
 <p><strong>Multiple sequence alignment services</strong></p>
 <ul class="simple">
-<li>ClustalOWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ClustalOWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ClustalOWS?wsdl</a></li>
-<li>ClustalWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl</a></li>
-<li>MuscleWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MuscleWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MuscleWS?wsdl</a></li>
-<li>MafftWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MafftWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MafftWS?wsdl</a></li>
-<li>TcoffeeWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/TcoffeeWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/TcoffeeWS?wsdl</a></li>
-<li>ProbconsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ProbconsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ProbconsWS?wsdl</a></li>
-<li>MSAprobsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MSAprobsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MSAprobsWS?wsdl</a></li>
-<li>GLprobsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/GLprobsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/GLprobsWS?wsdl</a></li>
+<li><p>ClustalOWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ClustalOWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ClustalOWS?wsdl</a></p></li>
+<li><p>ClustalWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl</a></p></li>
+<li><p>MuscleWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MuscleWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MuscleWS?wsdl</a></p></li>
+<li><p>MafftWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MafftWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MafftWS?wsdl</a></p></li>
+<li><p>TcoffeeWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/TcoffeeWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/TcoffeeWS?wsdl</a></p></li>
+<li><p>ProbconsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/ProbconsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/ProbconsWS?wsdl</a></p></li>
+<li><p>MSAprobsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/MSAprobsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/MSAprobsWS?wsdl</a></p></li>
+<li><p>GLprobsWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/GLprobsWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/GLprobsWS?wsdl</a></p></li>
 </ul>
 <p><strong>Protein disorder prediction services</strong></p>
 <ul class="simple">
-<li>IUPredWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/IUPredWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/IUPredWS?wsdl</a></li>
-<li>GlobPlotWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/GlobPlotWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/GlobPlotWS?wsdl</a></li>
-<li>DisemblWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/DisemblWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/DisemblWS?wsdl</a></li>
-<li>JronnWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/JronnWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/JronnWS?wsdl</a></li>
+<li><p>IUPredWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/IUPredWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/IUPredWS?wsdl</a></p></li>
+<li><p>GlobPlotWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/GlobPlotWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/GlobPlotWS?wsdl</a></p></li>
+<li><p>DisemblWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/DisemblWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/DisemblWS?wsdl</a></p></li>
+<li><p>JronnWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/JronnWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/JronnWS?wsdl</a></p></li>
 </ul>
 <p><strong>Amino acid conservation service</strong></p>
 <ul class="simple">
-<li>AAConWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/AAConWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/AAConWS?wsdl</a></li>
+<li><p>AAConWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/AAConWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/AAConWS?wsdl</a></p></li>
 </ul>
 <p><strong>RNA Secondary Structure Prediction</strong></p>
 <ul class="simple">
-<li>RNAalifoldWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/RNAalifoldWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/RNAalifoldWS?wsdl</a></li>
+<li><p>RNAalifoldWS - <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/RNAalifoldWS?wsdl">http://www.compbio.dundee.ac.uk/jabaws/RNAalifoldWS?wsdl</a></p></li>
 </ul>
 <p>Please replace <a class="reference external" href="http://www.compbio.dundee.ac.uk/">http://www.compbio.dundee.ac.uk/</a> with your JABAWS instance host name, and jabaws with your JABAWS context name to access your local version of JABAWS web services. For example <a class="reference external" href="http://localhost:8080/jabaws">http://localhost:8080/jabaws</a> would be a valid URL for the default Apache-Tomcat installation and jabaws.war file deployment.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="jabaws-configuration">
+</section>
+<section id="jabaws-configuration">
 <span id="jabaws-config"></span><h2>JABAWS Configuration<a class="headerlink" href="#jabaws-configuration" title="Permalink to this headline">¶</a></h2>
 <p>There are three parts of the system you can configure. The local and the cluster engines, and the paths to the individual executables for each engine. These settings are stored in configuration files within the web application directory (for an overview, then take a look at the <a class="reference external" href="advanced.html#jabaws_war_file_content">war file content table</a>).</p>
-<p>Initially, JABAWS is configured with only the local engine enabled, with job output written to directory called &#8220;jobsout&#8221; within the web application itself. This means that JABAWS will work out of the box, but may not be suitable for serving a whole lab or a university.</p>
+<p>Initially, JABAWS is configured with only the local engine enabled, with job output written to directory called “jobsout” within the web application itself. This means that JABAWS will work out of the box, but may not be suitable for serving a whole lab or a university.</p>
 <hr class="docutils" />
-<div class="section" id="local-engine-configuration">
+<section id="local-engine-configuration">
 <span id="jabaws-config-le"></span><h3>Local Engine Configuration<a class="headerlink" href="#local-engine-configuration" title="Permalink to this headline">¶</a></h3>
-<p>The Local execution engine configuration is defined in the properties file <code class="docutils literal"><span class="pre">conf/Engine.local.properties</span></code>. The supported configuration settings are:</p>
-<p><code class="docutils literal"><span class="pre">engine.local.enable=true</span></code> -  enable or disable local engine, valid values true | false</p>
-<p><code class="docutils literal"><span class="pre">local.tmp.directory=D:\\clusterengine\\testoutput</span></code> - a directory to use for temporary files storage, optional, defaults to java temporary directory</p>
-<p><code class="docutils literal"><span class="pre">engine.local.thread.number=4</span></code> - Number of threads for tasks execution (valid values between 1 and 2x cpu. Where x is a number of cores available in the system). Optional defaults to the number of cores for core number &lt;=4 and number of cores-1 for greater core numbers.</p>
-<p>If the local engine going to be heavily loaded (which is often the case if you do not have a cluster) it is a good idea to increase the amount of memory available for the web application server. If you are using Apache-Tomcat, then you can define its memory settings in the JAVA_OPTS environment variable. To specify which JVM to use for Apache-Tomcat, put the full path to the JRE installation in the JAVA_HOME environment variable. (We would recommend using Sun Java Virtual Machine (JVM) in preference to Open JDK). Below is an example of code which can be added to <code class="docutils literal"><span class="pre">&lt;tomcat_dir&gt;/bin/setenv.sh</span></code> script to define which JVM to use and a memory settings for Tomcat server. Tomcat server startup script (<code class="docutils literal"><span class="pre">catalina.sh</span></code>) will execute <code class="docutils literal"><span class="pre">setenv.sh</span></code> on each server start automatically.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">export</span> <span class="n">JAVA_HOME</span><span class="o">=/</span><span class="n">homes</span><span class="o">/</span><span class="n">ws</span><span class="o">-</span><span class="n">dev2</span><span class="o">/</span><span class="n">jdk1</span><span class="o">.</span><span class="mf">6.0</span><span class="n">_17</span><span class="o">/</span>
-<span class="n">export</span> <span class="n">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-server -Xincgc -Xms512m -Xmx1024m&quot;</span>
+<p>The Local execution engine configuration is defined in the properties file <code class="docutils literal notranslate"><span class="pre">conf/Engine.local.properties</span></code>. The supported configuration settings are:</p>
+<p><code class="docutils literal notranslate"><span class="pre">engine.local.enable=true</span></code> -  enable or disable local engine, valid values true | false</p>
+<p><code class="docutils literal notranslate"><span class="pre">local.tmp.directory=D:\\clusterengine\\testoutput</span></code> - a directory to use for temporary files storage, optional, defaults to java temporary directory</p>
+<p><code class="docutils literal notranslate"><span class="pre">engine.local.thread.number=4</span></code> - Number of threads for tasks execution (valid values between 1 and 2x cpu. Where x is a number of cores available in the system). Optional defaults to the number of cores for core number &lt;=4 and number of cores-1 for greater core numbers.</p>
+<p>If the local engine going to be heavily loaded (which is often the case if you do not have a cluster) it is a good idea to increase the amount of memory available for the web application server. If you are using Apache-Tomcat, then you can define its memory settings in the JAVA_OPTS environment variable. To specify which JVM to use for Apache-Tomcat, put the full path to the JRE installation in the JAVA_HOME environment variable. (We would recommend using Sun Java Virtual Machine (JVM) in preference to Open JDK). Below is an example of code which can be added to <code class="docutils literal notranslate"><span class="pre">&lt;tomcat_dir&gt;/bin/setenv.sh</span></code> script to define which JVM to use and a memory settings for Tomcat server. Tomcat server startup script (<code class="docutils literal notranslate"><span class="pre">catalina.sh</span></code>) will execute <code class="docutils literal notranslate"><span class="pre">setenv.sh</span></code> on each server start automatically.</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span> <span class="nv">JAVA_HOME</span><span class="o">=</span>/homes/ws-dev2/jdk1.6.0_17/
+<span class="nb">export</span> <span class="nv">JAVA_OPTS</span><span class="o">=</span><span class="s2">&quot;-server -Xincgc -Xms512m -Xmx1024m&quot;</span>
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="cluster-engine-configuration">
+</section>
+<section id="cluster-engine-configuration">
 <span id="jabaws-config-ce"></span><h3>Cluster Engine Configuration<a class="headerlink" href="#cluster-engine-configuration" title="Permalink to this headline">¶</a></h3>
 <p>Supported configuration settings:</p>
-<p><code class="docutils literal"><span class="pre">engine.cluster.enable=true</span></code> - enable or disable local engine true | false, defaults to false</p>
-<p><code class="docutils literal"><span class="pre">cluster.tmp.directory=/homes/clustengine/testoutput</span></code> - a directory to use for temporary files storage. The value must be an absolute path to the temporary directory. This is required. The value must be different from what is defined for local engine. This directory must be accessible from all cluster nodes.</p>
+<p><code class="docutils literal notranslate"><span class="pre">engine.cluster.enable=true</span></code> - enable or disable local engine true | false, defaults to false</p>
+<p><code class="docutils literal notranslate"><span class="pre">cluster.tmp.directory=/homes/clustengine/testoutput</span></code> - a directory to use for temporary files storage. The value must be an absolute path to the temporary directory. This is required. The value must be different from what is defined for local engine. This directory must be accessible from all cluster nodes.</p>
 <p>For the cluster engine to work, the SGE_ROOT and LD_LIBRARY_PATH environment variables have to be defined. They tell the cluster engine where to find DRMAA libraries. These variables should be defined when the web application server starts up, e.g.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">SGE_ROOT</span><span class="o">=/</span><span class="n">gridware</span><span class="o">/</span><span class="n">sge</span>
-<span class="n">LD_LIBRARY_PATH</span><span class="o">=/</span><span class="n">gridware</span><span class="o">/</span><span class="n">sge</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">lx24</span><span class="o">-</span><span class="n">amd64</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">SGE_ROOT</span><span class="o">=</span>/gridware/sge
+<span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span>/gridware/sge/lib/lx24-amd64
 </pre></div>
 </div>
 <p>Finally, do not forget to configure executables for the cluster execution, they may be the same as for the local execution but may be different. Please refer to the executable configuration section for further details.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="executable-configuration">
+</section>
+<section id="executable-configuration">
 <span id="jabaws-config-ec"></span><h3>Executable Configuration<a class="headerlink" href="#executable-configuration" title="Permalink to this headline">¶</a></h3>
 <p>All the executable programs are configured in conf/Executable.properties file. Each executable is configured with a number of options. They are:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">local</span><span class="o">.</span><span class="n">X</span><span class="o">.</span><span class="n">bin</span><span class="o">.</span><span class="n">windows</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">executable</span> <span class="n">under</span> <span class="n">windows</span> <span class="n">system</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">local</span><span class="o">.</span><span class="n">X</span><span class="o">.</span><span class="n">bin</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">executable</span> <span class="n">under</span> <span class="n">non</span><span class="o">-</span><span class="n">windows</span> <span class="n">system</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">cluster</span><span class="o">.</span><span class="n">X</span><span class="o">.</span><span class="n">bin</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">executable</span> <span class="n">on</span> <span class="n">the</span> <span class="n">cluster</span><span class="p">,</span> <span class="nb">all</span> <span class="n">cluster</span> <span class="n">nodes</span> <span class="n">must</span> <span class="n">see</span> <span class="n">it</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.</span><span class="n">bin</span><span class="o">.</span><span class="n">env</span><span class="o">=&lt;</span><span class="n">semicolon</span> <span class="n">separated</span> <span class="nb">list</span> <span class="n">of</span> <span class="n">environment</span> <span class="n">variables</span> <span class="k">for</span> <span class="n">executable</span><span class="p">,</span> <span class="n">use</span> <span class="nb">hash</span> <span class="n">symbol</span> <span class="k">as</span> <span class="n">name</span> <span class="n">value</span> <span class="n">separator</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.--</span><span class="n">aamatrix</span><span class="o">.</span><span class="n">path</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">directory</span> <span class="n">containing</span> <span class="n">substitution</span> <span class="n">matrices</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.</span><span class="n">presets</span><span class="o">.</span><span class="n">file</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">preset</span> <span class="n">configuration</span> <span class="n">file</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">file</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">parameters</span> <span class="n">configuration</span> <span class="n">file</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.</span><span class="n">limits</span><span class="o">.</span><span class="n">file</span><span class="o">=&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">the</span> <span class="n">limits</span> <span class="n">configuration</span> <span class="n">file</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
-<span class="n">X</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">settings</span><span class="o">=&lt;</span><span class="nb">list</span> <span class="n">of</span> <span class="n">the</span> <span class="n">cluster</span> <span class="n">specific</span> <span class="n">options</span><span class="p">,</span> <span class="n">optional</span><span class="o">&gt;</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>local.X.bin.windows<span class="o">=</span>&lt;path to executable under windows system, optional&gt;
+local.X.bin<span class="o">=</span>&lt;path to the executable under non-windows system, optional&gt;
+cluster.X.bin<span class="o">=</span>&lt;path to the executable on the cluster, all cluster nodes must see it, optional&gt;
+X.bin.env<span class="o">=</span>&lt;semicolon separated list of environment variables <span class="k">for</span> executable, use <span class="nb">hash</span> symbol as name value separator, optional&gt;
+X.--aamatrix.path<span class="o">=</span>&lt;path to the directory containing substitution matrices, optional&gt;
+X.presets.file<span class="o">=</span>&lt;path to the preset configuration file, optional&gt;
+X.parameters.file<span class="o">=</span>&lt;path to the parameters configuration file, optional&gt;
+X.limits.file<span class="o">=</span>&lt;path to the limits configuration file, optional&gt;
+X.cluster.settings<span class="o">=</span>&lt;list of the cluster specific options, optional&gt;
 </pre></div>
 </div>
 <p>Where X any of the bioinformatics tools available (e.g. clustalw, muscle, mafft, probcons, t-coffee, etc.).</p>
 <p>Default JABAWS configuration includes path to local executables to be run by the local engine only, all cluster related settings are commented out, but they are there for you as examples. Cluster engine is disabled by default. To configure executable for cluster execution uncomment the X.cluster settings and change them appropriately.</p>
-<p>By default limits are set well in excess of what you may want to offer to the users outside your lab, to make sure that the tasks are never rejected. The default limit is 100000 sequences of 100000 letters on average for all of the JABA web services. You can adjust the limits according to your needs by editing <code class="docutils literal"><span class="pre">conf/settings/&lt;X&gt;Limit.xml</span></code> files.
+<p>By default limits are set well in excess of what you may want to offer to the users outside your lab, to make sure that the tasks are never rejected. The default limit is 100000 sequences of 100000 letters on average for all of the JABA web services. You can adjust the limits according to your needs by editing <code class="docutils literal notranslate"><span class="pre">conf/settings/&lt;X&gt;Limit.xml</span></code> files.
 After you have completed the editing your configuration may look like this:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">local</span><span class="o">.</span><span class="n">mafft</span><span class="o">.</span><span class="n">bin</span><span class="o">=</span><span class="n">binaries</span><span class="o">/</span><span class="n">mafft</span>
-<span class="n">cluster</span><span class="o">.</span><span class="n">mafft</span><span class="o">.</span><span class="n">bin</span><span class="o">=/</span><span class="n">homes</span><span class="o">/</span><span class="n">cengine</span><span class="o">/</span><span class="n">mafft</span>
-<span class="n">mafft</span><span class="o">.</span><span class="n">bin</span><span class="o">.</span><span class="n">env</span><span class="o">=</span><span class="n">MAFFT_BINARIES</span><span class="c1">#/homes/cengine/mafft;FASTA_4_MAFFT#/bin/fasta34;</span>
-<span class="n">mafft</span><span class="o">.--</span><span class="n">aamatrix</span><span class="o">.</span><span class="n">path</span><span class="o">=</span><span class="n">binaries</span><span class="o">/</span><span class="n">matrices</span>
-<span class="n">mafft</span><span class="o">.</span><span class="n">presets</span><span class="o">.</span><span class="n">file</span><span class="o">=</span><span class="n">conf</span><span class="o">/</span><span class="n">settings</span><span class="o">/</span><span class="n">MafftPresets</span><span class="o">.</span><span class="n">xml</span>
-<span class="n">mafft</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">file</span><span class="o">=</span><span class="n">conf</span><span class="o">/</span><span class="n">settings</span><span class="o">/</span><span class="n">MafftParameters</span><span class="o">.</span><span class="n">xml</span>
-<span class="n">mafft</span><span class="o">.</span><span class="n">limits</span><span class="o">.</span><span class="n">file</span><span class="o">=</span><span class="n">conf</span><span class="o">/</span><span class="n">settings</span><span class="o">/</span><span class="n">MafftLimits</span><span class="o">.</span><span class="n">xml</span>
-<span class="n">mafft</span><span class="o">.</span><span class="n">cluster</span><span class="o">.</span><span class="n">settings</span><span class="o">=-</span><span class="n">q</span> <span class="n">bigmem</span><span class="o">.</span><span class="n">q</span> <span class="o">-</span><span class="n">l</span> <span class="n">h_cpu</span><span class="o">=</span><span class="mi">24</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span> <span class="o">-</span><span class="n">l</span> <span class="n">h_vmem</span><span class="o">=</span><span class="mi">6000</span><span class="n">M</span> <span class="o">-</span><span class="n">l</span> <span class="n">ram</span><span class="o">=</span><span class="mi">6000</span><span class="n">M</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>local.mafft.bin<span class="o">=</span>binaries/mafft
+cluster.mafft.bin<span class="o">=</span>/homes/cengine/mafft
+mafft.bin.env<span class="o">=</span>MAFFT_BINARIES#/homes/cengine/mafft<span class="p">;</span>FASTA_4_MAFFT#/bin/fasta34<span class="p">;</span>
+mafft.--aamatrix.path<span class="o">=</span>binaries/matrices
+mafft.presets.file<span class="o">=</span>conf/settings/MafftPresets.xml
+mafft.parameters.file<span class="o">=</span>conf/settings/MafftParameters.xml
+mafft.limits.file<span class="o">=</span>conf/settings/MafftLimits.xml
+mafft.cluster.settings<span class="o">=</span>-q bigmem.q -l <span class="nv">h_cpu</span><span class="o">=</span><span class="m">24</span>:00:00 -l <span class="nv">h_vmem</span><span class="o">=</span>6000M -l <span class="nv">ram</span><span class="o">=</span>6000M
 </pre></div>
 </div>
 <p>Please not that relative paths must only be specified for the files that reside inside web application directory, all other paths must be supplied as absolute!</p>
 <p>Furthermore, you should avoid using environment variables within the paths or options - since these will not be evaluated correctly. Instead, please explicitly specify the absolute path to anything normally evaluated from an environment variable at execution time.</p>
-<p>If you are using JABAWS to submit jobs to the cluster (with cluster engine enabled), executables must be available from all cluster nodes the task can be sent to, also paths to the executables on the cluster e.g. <code class="docutils literal"><span class="pre">cluster.&lt;exec_name&gt;.bin</span></code> must be absolute.</p>
+<p>If you are using JABAWS to submit jobs to the cluster (with cluster engine enabled), executables must be available from all cluster nodes the task can be sent to, also paths to the executables on the cluster e.g. <code class="docutils literal notranslate"><span class="pre">cluster.&lt;exec_name&gt;.bin</span></code> must be absolute.</p>
 <p>Executables can be located anywhere in your system, they do not have to reside on the server as long as the web application server can access and execute them.</p>
-<p>Cluster settings are treated as a black box, the system will just pass whatever is specified in this line directly to the cluster submission library. This is how DRMAA itself treats this settings. More exactly DRMAA <code class="docutils literal"><span class="pre">JobTemplate.setNativeSpecification()</span></code> function will be called.</p>
-<p>For further details and examples of configuration please refer to the <code class="docutils literal"><span class="pre">Executable.properties</span></code> file supplied with JABAWS.</p>
+<p>Cluster settings are treated as a black box, the system will just pass whatever is specified in this line directly to the cluster submission library. This is how DRMAA itself treats this settings. More exactly DRMAA <code class="docutils literal notranslate"><span class="pre">JobTemplate.setNativeSpecification()</span></code> function will be called.</p>
+<p>For further details and examples of configuration please refer to the <code class="docutils literal notranslate"><span class="pre">Executable.properties</span></code> file supplied with JABAWS.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="defining-environment-variables-for-executables">
+</section>
+<section id="defining-environment-variables-for-executables">
 <span id="jabaws-config-env-exe"></span><h3>Defining Environment Variables for Executables<a class="headerlink" href="#defining-environment-variables-for-executables" title="Permalink to this headline">¶</a></h3>
 <p>Environment variables can be defined in property</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">x</span><span class="o">.</span><span class="n">bin</span><span class="o">.</span><span class="n">env</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>x.bin.env
 </pre></div>
 </div>
 <p>Where x is one of thw executables supported by JABAWS. Several environment variables can be specified in the same line. For example.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">mafft</span><span class="o">.</span><span class="n">bin</span><span class="o">.</span><span class="n">env</span><span class="o">=</span><span class="n">MAFFT_BINARIES</span><span class="c1">#/homes/cengine/mafft;FASTA_4_MAFFT#/bin/fasta34;</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mafft.bin.env<span class="o">=</span>MAFFT_BINARIES#/homes/cengine/mafft<span class="p">;</span>FASTA_4_MAFFT#/bin/fasta34<span class="p">;</span>
 </pre></div>
 </div>
-<p>The example above defines two environment variables with names <code class="docutils literal"><span class="pre">MAFFT-BINARIES</span></code> and <code class="docutils literal"><span class="pre">FASTA_4_MAFFT</span></code> and values <code class="docutils literal"><span class="pre">/homes/cengine/mafft</span> <span class="pre">and</span> <span class="pre">/bin/fasta34</span></code> respectively. Semicolon is used as a separator between different environment variables whereas hash is used as a separator for name and value of the variable.</p>
+<p>The example above defines two environment variables with names <code class="docutils literal notranslate"><span class="pre">MAFFT-BINARIES</span></code> and <code class="docutils literal notranslate"><span class="pre">FASTA_4_MAFFT</span></code> and values <code class="docutils literal notranslate"><span class="pre">/homes/cengine/mafft</span> <span class="pre">and</span> <span class="pre">/bin/fasta34</span></code> respectively. Semicolon is used as a separator between different environment variables whereas hash is used as a separator for name and value of the variable.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="configure-jabaws-to-work-with-mafft">
+</section>
+<section id="configure-jabaws-to-work-with-mafft">
 <span id="jabaws-config-env-mafft"></span><h3>Configure JABAWS to Work with Mafft<a class="headerlink" href="#configure-jabaws-to-work-with-mafft" title="Permalink to this headline">¶</a></h3>
 <p>If you use default configuration you do not need to read any further. The default configuration will work for you without any changes, however, if you want to install Mafft yourself then there is a couple of more steps to do.</p>
 <p>Mafft executable needs to know the location of other files supplied with Mafft. In addition some Mafft functions depends on the fasta executable, which is not supplied with Mafft, but is a separate package. Mafft needs to know the location of fasta34 executable.</p>
-<p>To let Mafft know where the other files from its package are, change the value of MAFFT-BINARIES environment variables. To let Mafft know where is the fasta34 executable set the value of FASTA_4_MAFFT environment variable to point to a location of fasta34 program. The latter can be added to the PATH variable instead. If you are using executables supplied with JABAWS, the path to Mafft binaries would be like <code class="docutils literal"><span class="pre">&lt;relative</span> <span class="pre">path</span> <span class="pre">to</span> <span class="pre">web</span> <span class="pre">application</span> <span class="pre">directory&gt;/binaries/src/mafft/binaries</span></code> and the path to fasta34 binary would be <code class="docutils literal"><span class="pre">&lt;relative</span> <span class="pre">path</span> <span class="pre">to</span> <span class="pre">web</span> <span class="pre">application</span> <span class="pre">directory&gt;/binaries/src/fasta34/fasta34</span></code>. You can specify the location of Mafft binaries as well as fasta34 program elsewhere by providing an absolute path to them. All these settings are defined in <code class="docutils literal"><span class="pre">conf/Executable.properties</span></code> file.</p>
+<p>To let Mafft know where the other files from its package are, change the value of MAFFT-BINARIES environment variables. To let Mafft know where is the fasta34 executable set the value of FASTA_4_MAFFT environment variable to point to a location of fasta34 program. The latter can be added to the PATH variable instead. If you are using executables supplied with JABAWS, the path to Mafft binaries would be like <code class="docutils literal notranslate"><span class="pre">&lt;relative</span> <span class="pre">path</span> <span class="pre">to</span> <span class="pre">web</span> <span class="pre">application</span> <span class="pre">directory&gt;/binaries/src/mafft/binaries</span></code> and the path to fasta34 binary would be <code class="docutils literal notranslate"><span class="pre">&lt;relative</span> <span class="pre">path</span> <span class="pre">to</span> <span class="pre">web</span> <span class="pre">application</span> <span class="pre">directory&gt;/binaries/src/fasta34/fasta34</span></code>. You can specify the location of Mafft binaries as well as fasta34 program elsewhere by providing an absolute path to them. All these settings are defined in <code class="docutils literal notranslate"><span class="pre">conf/Executable.properties</span></code> file.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="limiting-the-size-of-the-job-accepted-by-jabaws">
+</section>
+<section id="limiting-the-size-of-the-job-accepted-by-jabaws">
 <span id="jabaws-config-env-limit"></span><h3>Limiting the size of the job accepted by JABAWS<a class="headerlink" href="#limiting-the-size-of-the-job-accepted-by-jabaws" title="Permalink to this headline">¶</a></h3>
 <p>JABAWS can be configured to reject excessively large tasks. This is useful if you operate JABAWS service for many users. By defining a maximum allowed task size you can provide an even service for all users and prevents waste of resources on the tasks too large to complete successfully. You can define the maximum number of sequences and the maximum average sequence length that JABAWS accepts for each JABA Web Service independently. Furthermore, you can define different limits for different presets of the same web service.</p>
-<p>By default limits are disabled. You can enable them by editing <code class="docutils literal"><span class="pre">conf/Executable.properties</span></code> file. You can adjust the limits according to your needs by editing <code class="docutils literal"><span class="pre">conf/settings/&lt;X&gt;Limit.xml</span></code> files.</p>
-</div>
-<div class="section" id="pre-compiled-binaries">
+<p>By default limits are disabled. You can enable them by editing <code class="docutils literal notranslate"><span class="pre">conf/Executable.properties</span></code> file. You can adjust the limits according to your needs by editing <code class="docutils literal notranslate"><span class="pre">conf/settings/&lt;X&gt;Limit.xml</span></code> files.</p>
+</section>
+<section id="pre-compiled-binaries">
 <span id="war-precompiled-bin"></span><h3>Pre-compiled binaries<a class="headerlink" href="#pre-compiled-binaries" title="Permalink to this headline">¶</a></h3>
 <p>JABAWS comes with pre-compiled x86 Linux binaries, thus on such systems JABAWS should work straight out of the box. If you are in any doubts or experience problems you may want to make sure that the binaries supplied work under your OS. The source code for these programs is also provided so you can <a class="reference external" href="advanced.html#recompiling-binaries-for-your-system">recompile the binaries</a> for your own architecture and exploit any optimizations that your system can provide.</p>
 <p>To check if the bundled binaries are working in your system execute each binary, without any command line options or input files. If you see an error message complaining about missing libraries or other problems, then you probably need to <a class="reference external" href="advanced.html#recompiling-binaries-for-your-system">recompile the binaries</a>.</p>
-<p>Alternately, if you have already got binaries on your system, then you can simply <a class="reference external" href="advanced.html#obtaining_or_reusing_binaries">reuse the existing binaries</a> by updating the paths in JABAWS&#8217;s <a class="reference external" href="advanced.html#jabaws-configuration">configuration files</a> so these are used instead. If you have a different version of an executable (e.g. an alignment program) which you prefer, you could use it as long as it supports all the functions JABAWS executable require. This could be the case with more recent executable. If the options supported by your chosen executable is different from the standard JABAWS executable, then you need to edit the <code class="docutils literal"><span class="pre">ExecutableNameParamaters.xml</span></code> configuration file.</p>
+<p>Alternately, if you have already got binaries on your system, then you can simply <a class="reference external" href="advanced.html#obtaining_or_reusing_binaries">reuse the existing binaries</a> by updating the paths in JABAWS’s <a class="reference external" href="advanced.html#jabaws-configuration">configuration files</a> so these are used instead. If you have a different version of an executable (e.g. an alignment program) which you prefer, you could use it as long as it supports all the functions JABAWS executable require. This could be the case with more recent executable. If the options supported by your chosen executable is different from the standard JABAWS executable, then you need to edit the <code class="docutils literal notranslate"><span class="pre">ExecutableNameParamaters.xml</span></code> configuration file.</p>
 <p>You can try all the JABAWS functionality with the JABAWS test client or have a look at <a class="reference external" href="war.html">deploying on Tomcat tips</a> if you experience any problems.</p>
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">You may want to enable logging for testing different executables as described in section &#8216;JABAWS Internal Logging&#8217;</p>
+<p class="admonition-title">Note</p>
+<p>You may want to enable logging for testing different executables as described in section ‘JABAWS Internal Logging’</p>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="recompiling-binaries-for-your-system">
+</section>
+<section id="recompiling-binaries-for-your-system">
 <span id="war-recompile-bin"></span><h3>Recompiling binaries for your system<a class="headerlink" href="#recompiling-binaries-for-your-system" title="Permalink to this headline">¶</a></h3>
-<p>If you have a fully equipped build environment on your (POSIX-like) system, then you should be able to recompile the programs from the source distributions which are included in the JABAWS war file. A script called &#8216;compilebin.sh&#8217; is provided to automate this task.</p>
+<p>If you have a fully equipped build environment on your (POSIX-like) system, then you should be able to recompile the programs from the source distributions which are included in the JABAWS war file. A script called ‘compilebin.sh’ is provided to automate this task.</p>
 <ol class="arabic">
-<li><p class="first">In a terminal window, change the working directory to <code class="docutils literal"><span class="pre">binaries/src</span></code></p>
-</li>
-<li><p class="first">Execute the compilebin.sh script:</p>
+<li><p>In a terminal window, change the working directory to <code class="docutils literal notranslate"><span class="pre">binaries/src</span></code></p></li>
+<li><p>Execute the compilebin.sh script:</p>
 <blockquote>
-<div><div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">chmod</span> <span class="o">+</span><span class="n">x</span> <span class="n">compilebin</span><span class="o">.</span><span class="n">sh</span><span class="p">;</span> <span class="n">compilebin</span><span class="o">.</span><span class="n">sh</span> <span class="o">&gt;</span> <span class="n">compilebin</span><span class="o">.</span><span class="n">out</span><span class="p">;</span>
+<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>chmod +x compilebin.sh<span class="p">;</span> compilebin.sh &gt; compilebin.out<span class="p">;</span>
 </pre></div>
 </div>
 </div></blockquote>
 </li>
-<li><p class="first">Then run:</p>
+<li><p>Then run:</p>
 <blockquote>
-<div><div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">chmod</span> <span class="o">+</span><span class="n">x</span> <span class="n">setexecflag</span><span class="o">.</span><span class="n">sh</span><span class="p">;</span> <span class="n">sh</span> <span class="n">setexecflag</span><span class="o">.</span><span class="n">sh</span>
+<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>chmod +x setexecflag.sh<span class="p">;</span> sh setexecflag.sh
 </pre></div>
 </div>
-<p>If any of the binaries was not recompiled, then a &#8216;file not found&#8217; error will be raised.</p>
+<p>If any of the binaries was not recompiled, then a ‘file not found’ error will be raised.</p>
 </div></blockquote>
 </li>
-<li><p class="first">Finally, restart your Tomcat server (or JABAWS application only), and <a class="reference external" href="advanced.html#testing-the-jabaws-server">test JABAWS</a> to check that it can use the new binaries.</p>
-</li>
+<li><p>Finally, restart your Tomcat server (or JABAWS application only), and <a class="reference external" href="advanced.html#testing-the-jabaws-server">test JABAWS</a> to check that it can use the new binaries.</p></li>
 </ol>
-<p>If you couldn&#8217;t compile everything, then it may be that your system does not have all the tools required for compiling the programs. At the very least check that you have gcc, g++ and make installed in your system. If not install these packages and repeat the compilation steps again. You should also review the compilebin.sh output - which was redirected to compilebin.out, and any errors output to the terminal.</p>
+<p>If you couldn’t compile everything, then it may be that your system does not have all the tools required for compiling the programs. At the very least check that you have gcc, g++ and make installed in your system. If not install these packages and repeat the compilation steps again. You should also review the compilebin.sh output - which was redirected to compilebin.out, and any errors output to the terminal.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="obtaining-or-reusing-binaries">
+</section>
+<section id="obtaining-or-reusing-binaries">
 <span id="war-reusing-bin"></span><h3>Obtaining or reusing binaries<a class="headerlink" href="#obtaining-or-reusing-binaries" title="Permalink to this headline">¶</a></h3>
-<p>You could search for pre-packaged compiled executable in your system package repository or alternately, download pre-compiled binaries from each alignment program&#8217;s home page. Then, either replace the executables supplied with the downloaded ones, or modify the paths defined in <code class="docutils literal"><span class="pre">executable.properties</span></code> as described below.
+<p>You could search for pre-packaged compiled executable in your system package repository or alternately, download pre-compiled binaries from each alignment program’s home page. Then, either replace the executables supplied with the downloaded ones, or modify the paths defined in <code class="docutils literal notranslate"><span class="pre">executable.properties</span></code> as described below.
 .. Below are some suggestions on where you may be able to get the binaries for your system.</p>
-<p>If you would like to use the binaries you already have, then you just need to let JABAWS know where they are. To do this, edit: <code class="docutils literal"><span class="pre">conf/Executable.properties</span></code></p>
-<p>When specifying paths to executables that already exist on your system, make sure you provide an absolute path, or one relative to the JABAWS directory inside webapps. For example, the default path for clustalw is defined as <code class="docutils literal"><span class="pre">local.clustalw.bin=binaries/src/clustalw/src/clustalw2</span></code> Alternatively, instead of changing <code class="docutils literal"><span class="pre">Executable.properties</span></code> you could also replace the executables bundled with JABAWS with the ones that you have, or make symbolic links to them. Then the default configuration will work for you. More information about the Executable.properties file is given in the JABAWS Configuration page.</p>
+<p>If you would like to use the binaries you already have, then you just need to let JABAWS know where they are. To do this, edit: <code class="docutils literal notranslate"><span class="pre">conf/Executable.properties</span></code></p>
+<p>When specifying paths to executables that already exist on your system, make sure you provide an absolute path, or one relative to the JABAWS directory inside webapps. For example, the default path for clustalw is defined as <code class="docutils literal notranslate"><span class="pre">local.clustalw.bin=binaries/src/clustalw/src/clustalw2</span></code> Alternatively, instead of changing <code class="docutils literal notranslate"><span class="pre">Executable.properties</span></code> you could also replace the executables bundled with JABAWS with the ones that you have, or make symbolic links to them. Then the default configuration will work for you. More information about the Executable.properties file is given in the JABAWS Configuration page.</p>
 <hr class="docutils" />
-</div>
-</div>
-<div class="section" id="load-balancing">
+</section>
+</section>
+<section id="load-balancing">
 <span id="jabaws-config-lb"></span><h2>Load balancing<a class="headerlink" href="#load-balancing" title="Permalink to this headline">¶</a></h2>
-<p>If your cluster is busy and has significant waiting times, you can achieve a faster response by allowing the server machine to calculate small tasks and then reserve the cluster for bigger jobs. This works especially well if your server is a powerful machine with many CPUs. To do this you need to enable and configure both the cluster and the local engines. Once this is done decide on the maximum size of a task to be run on the server locally. Then, edit &#8220;# LocalEngineExecutionLimit #&#8221; preset in <code class="docutils literal"><span class="pre">&lt;ServiceName&gt;Limits.xml</span></code> file accordingly. JABAWS server then will balance the load according to the following rule: If the task size is smaller than the maximum task size for local engine, and the local engine has idle threads, then it calculates task locally otherwise it submit the task to the cluster.</p>
+<p>If your cluster is busy and has significant waiting times, you can achieve a faster response by allowing the server machine to calculate small tasks and then reserve the cluster for bigger jobs. This works especially well if your server is a powerful machine with many CPUs. To do this you need to enable and configure both the cluster and the local engines. Once this is done decide on the maximum size of a task to be run on the server locally. Then, edit “# LocalEngineExecutionLimit #” preset in <code class="docutils literal notranslate"><span class="pre">&lt;ServiceName&gt;Limits.xml</span></code> file accordingly. JABAWS server then will balance the load according to the following rule: If the task size is smaller than the maximum task size for local engine, and the local engine has idle threads, then it calculates task locally otherwise it submit the task to the cluster.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="testing-the-jabaws-server">
+</section>
+<section id="testing-the-jabaws-server">
 <span id="war-testing"></span><h2>Testing the JABAWS Server<a class="headerlink" href="#testing-the-jabaws-server" title="Permalink to this headline">¶</a></h2>
-<p>Access <code class="docutils literal"><span class="pre">&lt;your_JABAWS_server_URL&gt;/ServiceStatus</span></code> to test all web services. Each time you access this URL, all services are tested. For production configuration we recommend prohibiting requests to this URL for non authenticated users to prevent excessive load on the server.</p>
-<p>Alternatively, you can use a command line client (part of the client only package) to test your JABAWS installation as described here. If you downloaded a JABAWS server package, you can use <code class="docutils literal"><span class="pre">&lt;your_jaba_context_name&gt;/WEB-INF/lib/jaba-client.jar</span></code> to test JABAWS installation as described here. If you downloaded the source code, then you could run a number of test suites defined in the build.xml Apache Ant file.</p>
-<p>First of all make sure that Tomcat server is started successfully. If this was the case, then you should see JABAWS home page when you navigate to your Tomcat JABAWS context path in your browser (e.g. at <code class="docutils literal"><span class="pre">http://myhost.compbio.ac.uk:8080/jabaws</span></code> =&gt; <code class="docutils literal"><span class="pre">&lt;jabaws_server&gt;</span></code>)</p>
+<p>Access <code class="docutils literal notranslate"><span class="pre">&lt;your_JABAWS_server_URL&gt;/ServiceStatus</span></code> to test all web services. Each time you access this URL, all services are tested. For production configuration we recommend prohibiting requests to this URL for non authenticated users to prevent excessive load on the server.</p>
+<p>Alternatively, you can use a command line client (part of the client only package) to test your JABAWS installation as described here. If you downloaded a JABAWS server package, you can use <code class="docutils literal notranslate"><span class="pre">&lt;your_jaba_context_name&gt;/WEB-INF/lib/jaba-client.jar</span></code> to test JABAWS installation as described here. If you downloaded the source code, then you could run a number of test suites defined in the build.xml Apache Ant file.</p>
+<p>First of all make sure that Tomcat server is started successfully. If this was the case, then you should see JABAWS home page when you navigate to your Tomcat JABAWS context path in your browser (e.g. at <code class="docutils literal notranslate"><span class="pre">http://myhost.compbio.ac.uk:8080/jabaws</span></code> =&gt; <code class="docutils literal notranslate"><span class="pre">&lt;jabaws_server&gt;</span></code>)</p>
 <p>If you see it, then it is time to make sure that web services are working too. The easiest way to do this is to access Services Status page available from the main JABAWS web page menu.</p>
 <p>If you need to monitor web service health automatically when the best option is to use service checker that responds with the standard HTTP status code. To access this checker use the following URL:</p>
 <p><strong>Using JABAWS service status checker</strong></p>
 <p>If you see it, then it is time to make sure that web services are working too. The easiest way to do this is to access Services Status page available from the main JABAWS web page menu.</p>
-<p>If you need to monitor web service health automatically when the best option is to use service checker that responds with the standard HTTP status code. To access this checker use the following URL: <code class="docutils literal"><span class="pre">&lt;jabaws-server&gt;/HttpCodeResponseServiceStatus</span></code> or alternatively <code class="docutils literal"><span class="pre">&lt;jabaws-server&gt;/man_serverwar.jsp</span></code></p>
-<p>This page returns code 200, and no page context if all services are operational, 503 if one of the services have problems. You can also check each web service individually by providing the name of the web service to check at the end of the service checker URL like this: <code class="docutils literal"><span class="pre">&lt;jabaws_server&gt;/HttpCodeResponseServiceStatus/ClustalWS</span></code></p>
+<p>If you need to monitor web service health automatically when the best option is to use service checker that responds with the standard HTTP status code. To access this checker use the following URL: <code class="docutils literal notranslate"><span class="pre">&lt;jabaws-server&gt;/HttpCodeResponseServiceStatus</span></code> or alternatively <code class="docutils literal notranslate"><span class="pre">&lt;jabaws-server&gt;/man_serverwar.jsp</span></code></p>
+<p>This page returns code 200, and no page context if all services are operational, 503 if one of the services have problems. You can also check each web service individually by providing the name of the web service to check at the end of the service checker URL like this: <code class="docutils literal notranslate"><span class="pre">&lt;jabaws_server&gt;/HttpCodeResponseServiceStatus/ClustalWS</span></code></p>
 <p>Upon request, the service status checker will examine the health of the ClustalWS web service only. If the service name is not valid, then the service checker will return code 400.</p>
 <p><strong>Using command line client</strong></p>
-<p>Alternatively, you should be able to use the test program which can be found in <code class="docutils literal"><span class="pre">&lt;webapplicationpath&gt;/WEB-INF/lib/jabaws-client.jar</span></code> file. To run the tests type:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">client</span><span class="o">.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=&lt;</span><span class="n">Your</span> <span class="n">web</span> <span class="n">application</span> <span class="n">server</span> <span class="n">host</span> <span class="n">name</span><span class="p">,</span> <span class="n">port</span> <span class="ow">and</span> <span class="n">JABAWS</span> <span class="n">context</span> <span class="n">path</span><span class="o">&gt;</span>
+<p>Alternatively, you should be able to use the test program which can be found in <code class="docutils literal notranslate"><span class="pre">&lt;webapplicationpath&gt;/WEB-INF/lib/jabaws-client.jar</span></code> file. To run the tests type:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-client.jar -h<span class="o">=</span>&lt;Your web application server host name, port and JABAWS context path&gt;
 </pre></div>
 </div>
 <p>For example to test all JABAWS web services on host myhost.compbio.ac.uk type:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">client</span><span class="o">.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">myhost</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-client.jar -h<span class="o">=</span>http://myhost.compbio.ac.uk:8080/jabaws
 </pre></div>
 </div>
 <p>You can choose a particular web server using -s option like this java -jar jabaws-client.jar -h=http://myhost.compbio.ac.uk:8080/jabaws -s=ClustalWS This command line assumes that java executable is in your path and jabaws-client.jar is located in the current directory.</p>
 <p>An example of the report testing tool produces for operating web service looks like this:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">Connecting</span> <span class="n">to</span> <span class="n">service</span> <span class="n">MuscleWS</span> <span class="n">on</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">myhost</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span> <span class="o">...</span> <span class="n">OK</span>
-<span class="n">Testing</span> <span class="n">alignment</span> <span class="k">with</span> <span class="n">default</span> <span class="n">parameters</span><span class="p">:</span>
-<span class="n">Queering</span> <span class="n">job</span> <span class="n">status</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Retrieving</span> <span class="n">results</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Testing</span> <span class="n">alignment</span> <span class="k">with</span> <span class="n">presets</span><span class="p">:</span>
-<span class="n">Aligning</span> <span class="k">with</span> <span class="n">preset</span> <span class="s1">&#39;Protein alignment(Fastest speed)&#39;</span><span class="o">...</span> <span class="n">OK</span>
-<span class="n">Aligning</span> <span class="k">with</span> <span class="n">preset</span> <span class="s1">&#39;Nucleotide alignment(Fastest speed)&#39;</span><span class="o">...</span> <span class="n">OK</span>
-<span class="n">Aligning</span> <span class="k">with</span> <span class="n">preset</span> <span class="s1">&#39;Huge alignments (speed-oriented)&#39;</span><span class="o">...</span> <span class="n">OK</span>
-<span class="n">Queering</span> <span class="n">presets</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Queering</span> <span class="n">Parameters</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Queering</span> <span class="n">Limits</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Queering</span> <span class="n">Local</span> <span class="n">Engine</span> <span class="n">Limits</span><span class="o">...</span><span class="n">OK</span>
-<span class="n">Check</span> <span class="ow">is</span> <span class="n">completed</span> <span class="n">service</span> <span class="n">MuscleWS</span> <span class="n">IS</span> <span class="n">WORKING</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Connecting to service MuscleWS on http://myhost.compbio.ac.uk:8080/jabaws ... OK
+Testing alignment with default parameters:
+Queering job status...OK
+Retrieving results...OK
+Testing alignment with presets:
+Aligning with preset <span class="s1">&#39;Protein alignment(Fastest speed)&#39;</span>... OK
+Aligning with preset <span class="s1">&#39;Nucleotide alignment(Fastest speed)&#39;</span>... OK
+Aligning with preset <span class="s1">&#39;Huge alignments (speed-oriented)&#39;</span>... OK
+Queering presets...OK
+Queering Parameters...OK
+Queering Limits...OK
+Queering Local Engine Limits...OK
+Check is completed service MuscleWS IS WORKING
 </pre></div>
 </div>
 <p>An example of the response of a web service which is deployed but is not operating is below:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">Connecting</span> <span class="n">to</span> <span class="n">service</span> <span class="n">ProbconsWS</span> <span class="n">on</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">ws</span> <span class="o">...</span> <span class="n">OK</span>
-<span class="n">Testing</span> <span class="n">alignment</span> <span class="k">with</span> <span class="n">default</span> <span class="n">parameters</span><span class="p">:</span><span class="n">FAILED</span>
-<span class="n">Service</span> <span class="n">ProbconsWS</span> <span class="n">IS</span> <span class="n">NOT</span> <span class="n">FUNCTIONAL</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Connecting to service ProbconsWS on http://localhost:8080/ws ... OK
+Testing alignment with default parameters:FAILED
+Service ProbconsWS IS NOT FUNCTIONAL
 </pre></div>
 </div>
 <p>If the web server did not respond the message looks like following:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">Connecting</span> <span class="n">to</span> <span class="n">service</span> <span class="n">TcoffeeWS</span> <span class="n">on</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">ws</span> <span class="o">...</span> <span class="n">FAILED</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Connecting to service TcoffeeWS on http://localhost:8080/ws ... FAILED
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="jabaws-internal-logging">
+</section>
+<section id="jabaws-internal-logging">
 <span id="war-logging"></span><h2>JABAWS internal logging<a class="headerlink" href="#jabaws-internal-logging" title="Permalink to this headline">¶</a></h2>
-<p>JABAWS can be configured to log what it is doing. This comes in handy if you would like to see who is using your web services or need to chase some problems. JABAWS uses log4j to do the logging, the example of log4j configuration is bundled with JABAWS war file. You will find it in the <code class="docutils literal"><span class="pre">/WEB-INF/classes/log4j.properties</span></code> file. All the lines in this file are commented out. The reason why the logging is disabled by default it simple, log4j has to know the exact location of where the log files are stored. This is not known up until the deployment time. To enable the logging you need to define logDir property in the log4j.properties and uncomment section of the file which corresponds to your need. More information is given in the log4j.properties file itself. Restart the Tomcat or the JABAWS web application to apply the settings.</p>
+<p>JABAWS can be configured to log what it is doing. This comes in handy if you would like to see who is using your web services or need to chase some problems. JABAWS uses log4j to do the logging, the example of log4j configuration is bundled with JABAWS war file. You will find it in the <code class="docutils literal notranslate"><span class="pre">/WEB-INF/classes/log4j.properties</span></code> file. All the lines in this file are commented out. The reason why the logging is disabled by default it simple, log4j has to know the exact location of where the log files are stored. This is not known up until the deployment time. To enable the logging you need to define logDir property in the log4j.properties and uncomment section of the file which corresponds to your need. More information is given in the log4j.properties file itself. Restart the Tomcat or the JABAWS web application to apply the settings.</p>
 <p>After you have done this, assuming that you did not change the log4j.properties file yourself, you should see the application log file called activity.log. The file called activity.log. The amount of information logged can be adjusted using different logging levels, it is reduced in the following order of log levels TRACE, DEBUG, INFO, WARN, ERROR, FATAL.</p>
 <p>If you would like to know who is using your services, you might want to enable Tomcat request logging.</p>
 <hr class="docutils" />
-<div class="section" id="jabaws-requests-logging">
+<section id="jabaws-requests-logging">
 <span id="war-logging-req"></span><h3>JABAWS requests logging<a class="headerlink" href="#jabaws-requests-logging" title="Permalink to this headline">¶</a></h3>
 <p>Enable Tomcat log valve. To do this uncomment the following section of &lt;tomcat_root&gt;/conf/server.xml configuration file.</p>
-<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt">&lt;Valve</span> <span class="na">className=</span><span class="s">&quot;org.apache.catalina.valves.AccessLogValve&quot;</span> <span class="na">directory=</span><span class="s">&quot;logs&quot;</span>
+<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;Valve</span> <span class="na">className=</span><span class="s">&quot;org.apache.catalina.valves.AccessLogValve&quot;</span> <span class="na">directory=</span><span class="s">&quot;logs&quot;</span>
           <span class="na">prefix=</span><span class="s">&quot;localhost_access_log.&quot;</span> <span class="na">suffix=</span><span class="s">&quot;.txt&quot;</span> <span class="na">pattern=</span><span class="s">&quot;common&quot;</span> <span class="na">resolveHosts=</span><span class="s">&quot;false&quot;</span><span class="nt">/&gt;</span>
 </pre></div>
 </div>
 <p>The following information will be logged:</p>
-<table border="1" class="docutils">
+<table class="docutils align-default">
 <colgroup>
-<col width="12%" />
-<col width="26%" />
-<col width="27%" />
-<col width="13%" />
-<col width="21%" />
+<col style="width: 12%" />
+<col style="width: 26%" />
+<col style="width: 27%" />
+<col style="width: 13%" />
+<col style="width: 21%" />
 </colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Remote IP</th>
-<th class="head" colspan="2">Date                       |  Method server_URL protocol</th>
-<th class="head">HTTP status</th>
-<th class="head">Response size in bytes</th>
+<thead>
+<tr class="row-odd"><th class="head"><p>Remote IP</p></th>
+<th class="head" colspan="2"><p>Date                       |  Method server_URL protocol</p></th>
+<th class="head"><p>HTTP status</p></th>
+<th class="head"><p>Response size in bytes</p></th>
 </tr>
 </thead>
-<tbody valign="top">
-<tr class="row-even"><td>10.31.11.159</td>
-<td>[10/Feb/2010:16:51:32 +0000]</td>
-<td>&#8220;POST /jws2/MafftWS HTTP/1.1&#8221;</td>
-<td>200</td>
-<td>2067</td>
+<tbody>
+<tr class="row-even"><td><p>10.31.11.159</p></td>
+<td><p>[10/Feb/2010:16:51:32 +0000]</p></td>
+<td><p>“POST /jws2/MafftWS HTTP/1.1”</p></td>
+<td><p>200</p></td>
+<td><p>2067</p></td>
 </tr>
 </tbody>
 </table>
 <p>Which can be processed in various programs for log analysis, such as WebAlizer, Analog, AWStats.</p>
 <hr class="docutils" />
-</div>
-</div>
-<div class="section" id="jabaws-and-google-analytics">
+</section>
+</section>
+<section id="jabaws-and-google-analytics">
 <span id="jabaws-config-ga"></span><h2>JABAWS and Google Analytics<a class="headerlink" href="#jabaws-and-google-analytics" title="Permalink to this headline">¶</a></h2>
 <p>JABAWS reports web services usage to our group Google Analytics (GA) account. JABAWS usage statistics are collected for funding and reporting purposes, and no private information is collected. The data sent by JABAWS is as follows:</p>
 <ol class="arabic simple">
-<li>The IP address of the JABAWS server machine (the server IP can anonymized see <code class="docutils literal"><span class="pre">conf/GA.properties</span></code> config file)</li>
-<li>The name of the web service that was called.</li>
-<li>A few details of the system such as JABAWS version, java version, user language, color depth, screen resolution and character encoding.</li>
+<li><p>The IP address of the JABAWS server machine (the server IP can anonymized see <code class="docutils literal notranslate"><span class="pre">conf/GA.properties</span></code> config file)</p></li>
+<li><p>The name of the web service that was called.</p></li>
+<li><p>A few details of the system such as JABAWS version, java version, user language, color depth, screen resolution and character encoding.</p></li>
 </ol>
-<p>Google Analytics can be disabled or adjusted by removing/editing <code class="docutils literal"><span class="pre">conf/GA.properties</span></code> Google Analytics (GA) settings file. We would appreciate it greatly if you could leave it on!</p>
+<p>Google Analytics can be disabled or adjusted by removing/editing <code class="docutils literal notranslate"><span class="pre">conf/GA.properties</span></code> Google Analytics (GA) settings file. We would appreciate it greatly if you could leave it on!</p>
 <p>All calls to GA are very lightweight, completed asynchronously, create very little overhead and do not influence the server response time or performance.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="jabaws-war-file-content">
+</section>
+<section id="jabaws-war-file-content">
 <span id="war-contents"></span><h2>JABAWS War File Content<a class="headerlink" href="#jabaws-war-file-content" title="Permalink to this headline">¶</a></h2>
-<table border="1" class="docutils">
+<table class="docutils align-default">
 <colgroup>
-<col width="12%" />
-<col width="88%" />
+<col style="width: 12%" />
+<col style="width: 88%" />
 </colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Directory</th>
-<th class="head">Content description</th>
+<thead>
+<tr class="row-odd"><th class="head"><p>Directory</p></th>
+<th class="head"><p>Content description</p></th>
 </tr>
 </thead>
-<tbody valign="top">
-<tr class="row-even"><td>conf/ contains</td>
-<td>configuration files such as Executable.properties, Engine.local.properties, Engine.cluster.properties</td>
+<tbody>
+<tr class="row-even"><td><p>conf/ contains</p></td>
+<td><p>configuration files such as Executable.properties, Engine.local.properties, Engine.cluster.properties</p></td>
 </tr>
-<tr class="row-odd"><td>conf/settings</td>
-<td>Contains individual executable description files. In particular XXXParameters.xml, XXXPresets.xml, XXXLimits.xml where XXX is the name of the executable</td>
+<tr class="row-odd"><td><p>conf/settings</p></td>
+<td><p>Contains individual executable description files. In particular XXXParameters.xml, XXXPresets.xml, XXXLimits.xml where XXX is the name of the executable</p></td>
 </tr>
-<tr class="row-even"><td>ExecutionStatistics</td>
-<td>The database for storing the execution statistics</td>
+<tr class="row-even"><td><p>ExecutionStatistics</p></td>
+<td><p>The database for storing the execution statistics</p></td>
 </tr>
-<tr class="row-odd"><td>statpages</td>
-<td>Web pages for usage statistics visialization and webservices status queries</td>
+<tr class="row-odd"><td><p>statpages</p></td>
+<td><p>Web pages for usage statistics visialization and webservices status queries</p></td>
 </tr>
-<tr class="row-even"><td>jobsout/</td>
-<td>Contains directories generated when running an individual executable. E.g. input and output files and some other task related data (optional)</td>
+<tr class="row-even"><td><p>jobsout/</p></td>
+<td><p>Contains directories generated when running an individual executable. E.g. input and output files and some other task related data (optional)</p></td>
 </tr>
-<tr class="row-odd"><td>binaries/</td>
-<td>Directory contains native executables - programs, windows binaries (optional)</td>
+<tr class="row-odd"><td><p>binaries/</p></td>
+<td><p>Directory contains native executables - programs, windows binaries (optional)</p></td>
 </tr>
-<tr class="row-even"><td>binaries/src</td>
-<td>Contains source of native executables and Linux i386 binaries</td>
+<tr class="row-even"><td><p>binaries/src</p></td>
+<td><p>Contains source of native executables and Linux i386 binaries</p></td>
 </tr>
-<tr class="row-odd"><td>binaries/windows</td>
-<td>Contains binaries for MS Windows operating system</td>
+<tr class="row-odd"><td><p>binaries/windows</p></td>
+<td><p>Contains binaries for MS Windows operating system</p></td>
 </tr>
-<tr class="row-even"><td>binaries/matrices</td>
-<td>Substitution matrices</td>
+<tr class="row-even"><td><p>binaries/matrices</p></td>
+<td><p>Substitution matrices</p></td>
 </tr>
-<tr class="row-odd"><td>WEB-INF</td>
-<td>Web application descriptor</td>
+<tr class="row-odd"><td><p>WEB-INF</p></td>
+<td><p>Web application descriptor</p></td>
 </tr>
-<tr class="row-even"><td>WEB-INF/lib</td>
-<td>Web application libraries</td>
+<tr class="row-even"><td><p>WEB-INF/lib</p></td>
+<td><p>Web application libraries</p></td>
 </tr>
-<tr class="row-odd"><td>WEB-INF/classes</td>
-<td>log4j.properties - log configuration file (optional)</td>
+<tr class="row-odd"><td><p>WEB-INF/classes</p></td>
+<td><p>log4j.properties - log configuration file (optional)</p></td>
 </tr>
-<tr class="row-even"><td>static</td>
-<td>Static content such as CSS, JavaScript and Image files</td>
+<tr class="row-even"><td><p>static</p></td>
+<td><p>Static content such as CSS, JavaScript and Image files</p></td>
 </tr>
 </tbody>
 </table>
-<table border="1" class="docutils">
+<table class="docutils align-default">
 <colgroup>
-<col width="12%" />
-<col width="88%" />
+<col style="width: 12%" />
+<col style="width: 88%" />
 </colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head"><strong>Help Pages</strong></th>
-<th class="head">&#160;</th>
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Help Pages</strong></p></th>
+<th class="head"></th>
 </tr>
 </thead>
-<tbody valign="top">
-<tr class="row-even"><td>/</td>
-<td>help pages, index.html is the starting page</td>
+<tbody>
+<tr class="row-even"><td><p>/</p></td>
+<td><p>help pages, index.html is the starting page</p></td>
 </tr>
-<tr class="row-odd"><td><a class="reference external" href="dm_javadoc/index.html">dm_javadoc</a></td>
-<td>JavaDoc for the JABAWS Data Model</td>
+<tr class="row-odd"><td><p><a class="reference external" href="dm_javadoc/index.html">dm_javadoc</a></p></td>
+<td><p>JavaDoc for the JABAWS Data Model</p></td>
 </tr>
-<tr class="row-even"><td><a class="reference external" href="full_javadoc/index.html">full_javadoc</a></td>
-<td>JavaDoc for the complete JABAWS</td>
+<tr class="row-even"><td><p><a class="reference external" href="full_javadoc/index.html">full_javadoc</a></p></td>
+<td><p>JavaDoc for the complete JABAWS</p></td>
 </tr>
-<tr class="row-odd"><td><a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/prog_docs/">prog_docs</a></td>
-<td>Documentation for programs that are included in JABAWS</td>
+<tr class="row-odd"><td><p><a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/prog_docs/">prog_docs</a></p></td>
+<td><p>Documentation for programs that are included in JABAWS</p></td>
 </tr>
 </tbody>
 </table>
-</div>
-</div>
+</section>
+</section>
 
 
            </div>
@@ -607,6 +610,7 @@ After you have completed the editing your configuration may look like this:</p>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 67fd3dc..4e03c18 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Changelog &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -89,7 +94,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
 <li class="toctree-l1"><a class="reference internal" href="stats.html">Usage Statistics</a></li>
 <li class="toctree-l1"><a class="reference internal" href="citations.html">Citations</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Changelog</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#version-2-2-1-released-16th-dec-2021">Version 2.2.1 (Released 16th Dec 2021)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#version-2-2-released-18-august-2017">Version 2.2 (Released 18 August 2017)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#version-2-1-released-1st-oct-2013">Version 2.1 (Released 1st Oct 2013)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#version-2-0-1-released-2nd-jul-2013">Version 2.0.1 (Released 2nd Jul 2013)</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="changelog">
+  <section id="changelog">
 <h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="version-2-2-released-18-august-2017">
+<section id="version-2-2-1-released-16th-dec-2021">
+<span id="v2-2-1"></span><h2>Version 2.2.1 (Released 16th Dec 2021)<a class="headerlink" href="#version-2-2-1-released-16th-dec-2021" title="Permalink to this headline">¶</a></h2>
+<p>Patch release:
+* Log4j 1.2.x libraries replaced with Log4j2 2.16.0 to address security vulnerabilities</p>
+</section>
+<section id="version-2-2-released-18-august-2017">
 <span id="v2-2"></span><h2>Version 2.2 (Released 18 August 2017)<a class="headerlink" href="#version-2-2-released-18-august-2017" title="Permalink to this headline">¶</a></h2>
 <p>The website and documentation were improved:</p>
 <ul class="simple">
-<li><a class="reference external" href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> is now used to generate our documentation pages.</li>
-<li>Documentation was updated to reflect the latest changes introduced in the project.</li>
-<li>Usage Statistics are now cached and refreshed every hour for improved website loading times.</li>
-<li>Service Status are now similarly cached and monitored every 10 minutes.</li>
-<li>We now provide a <a class="reference external" href="https://www.docker.com/">Docker</a> image which allows for JABAWS to be run in Docker containers.</li>
-<li>Downloading the JABAWS distributions no longer require &#8216;sign in&#8217; or &#8216;sign up&#8217; to a user account.</li>
-<li>The pre-configured JABAWS Amazon Machine Image (AMI), which allowed for JABAWS to be run in the Amazon EC2 cloud, is no longer provided due to very limited use by the scientific community peers.</li>
+<li><p><a class="reference external" href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> is now used to generate our documentation pages.</p></li>
+<li><p>Documentation was updated to reflect the latest changes introduced in the project.</p></li>
+<li><p>Usage Statistics are now cached and refreshed every hour for improved website loading times.</p></li>
+<li><p>Service Status are now similarly cached and monitored every 10 minutes.</p></li>
+<li><p>We now provide a <a class="reference external" href="https://www.docker.com/">Docker</a> image which allows for JABAWS to be run in Docker containers.</p></li>
+<li><p>Downloading the JABAWS distributions no longer require ‘sign in’ or ‘sign up’ to a user account.</p></li>
+<li><p>The pre-configured JABAWS Amazon Machine Image (AMI), which allowed for JABAWS to be run in the Amazon EC2 cloud, is no longer provided due to very limited use by the scientific community peers.</p></li>
 </ul>
 <p>The versions of several application programs provided by JABAWS were bumped to the latest available.</p>
 <ul class="simple">
-<li>Clustal Omega was updated to version 1.2.4</li>
-<li>ClustalW was updated to version 2.1</li>
-<li>Mafft was updated to version 7.3.10</li>
-<li>T-Coffee was updated to version 11.00.8cbe486</li>
-<li><a class="reference external" href="http://www.compbio.dundee.ac.uk/aacon/">AACon</a> was updated to version 1.1</li>
-<li>Protein secondary structure prediction with Jpred (version 3.0.3) was dropped from the list of provided services, as the use of the dedicated Jpred REST API (Jpred 4) is encouraged and recommended. This is the version that is currently provided within Jalview 2.9 or later.</li>
+<li><p>Clustal Omega was updated to version 1.2.4</p></li>
+<li><p>ClustalW was updated to version 2.1</p></li>
+<li><p>Mafft was updated to version 7.3.10</p></li>
+<li><p>T-Coffee was updated to version 11.00.8cbe486</p></li>
+<li><p><a class="reference external" href="http://www.compbio.dundee.ac.uk/aacon/">AACon</a> was updated to version 1.1</p></li>
+<li><p>Protein secondary structure prediction with Jpred (version 3.0.3) was dropped from the list of provided services, as the use of the dedicated Jpred REST API (Jpred 4) is encouraged and recommended. This is the version that is currently provided within Jalview 2.9 or later.</p></li>
 </ul>
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">JABAWS version 2.2 is fully backward compatible with JABAWS v1.0 and v2.0. This means all JABAWS 1.0, 2.0, 2.0.1 and 2.1 clients should also be able to use JABAWS 2.2 services.</p>
+<p class="admonition-title">Note</p>
+<p>JABAWS version 2.2 is fully backward compatible with JABAWS v1.0 and v2.0. This means all JABAWS 1.0, 2.0, 2.0.1 and 2.1 clients should also be able to use JABAWS 2.2 services.</p>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="version-2-1-released-1st-oct-2013">
+</section>
+<section id="version-2-1-released-1st-oct-2013">
 <span id="v2-1"></span><h2>Version 2.1 (Released 1st Oct 2013)<a class="headerlink" href="#version-2-1-released-1st-oct-2013" title="Permalink to this headline">¶</a></h2>
 <p>Several new web services are available in this version of JABAWS:</p>
 <ul class="simple">
-<li>Two multiple sequence aligners (MSAprobs and GLprobs), both services return the standard Alignment object</li>
-<li>RNAalifoldWS returns RNAStructScoreManager, which is the standard ScoreManager objects with several additional methods</li>
-<li>JpredWS returns the JpredAligment object, which is the standard alignment with additional methods for extracting Jpred predictions. These predictions are supplied as additional sequences in the aligment</li>
+<li><p>Two multiple sequence aligners (MSAprobs and GLprobs), both services return the standard Alignment object</p></li>
+<li><p>RNAalifoldWS returns RNAStructScoreManager, which is the standard ScoreManager objects with several additional methods</p></li>
+<li><p>JpredWS returns the JpredAligment object, which is the standard alignment with additional methods for extracting Jpred predictions. These predictions are supplied as additional sequences in the aligment</p></li>
 </ul>
 <p>Some bugs have been fixed and several improvements have been done:</p>
 <ul class="simple">
-<li>WS status servlet returns version and some additional information on each web service</li>
-<li>a bug with path to help in the client</li>
-<li>Fix two bug with the Google Analytics library: no-stop due to running thread</li>
-<li>GoogleAnalytics gets proper JABAWS version</li>
+<li><p>WS status servlet returns version and some additional information on each web service</p></li>
+<li><p>a bug with path to help in the client</p></li>
+<li><p>Fix two bug with the Google Analytics library: no-stop due to running thread</p></li>
+<li><p>GoogleAnalytics gets proper JABAWS version</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="version-2-0-1-released-2nd-jul-2013">
+</section>
+<section id="version-2-0-1-released-2nd-jul-2013">
 <span id="v2-0-1"></span><h2>Version 2.0.1 (Released 2nd Jul 2013)<a class="headerlink" href="#version-2-0-1-released-2nd-jul-2013" title="Permalink to this headline">¶</a></h2>
 <p>JABAWS 2.0.1 includes several bug fixes and minor updates for JABAWS Version 2.0. These are listed below:</p>
 <ul class="simple">
-<li>Disembl returned swapped strings for HOTLOOPS and REM465</li>
-<li>Jronn failed to process jobs with more than 3 sequences</li>
-<li>JABAWS could not deal with FASTA records with &#8216;&gt;&#8217; symbols in the record identificator</li>
-<li>Change of parameter description for AACon: parameters have been replaced with options for calculation methods. This allows a user to get several AACon&#8217;s conservation scores in one call</li>
-<li>JABAWS never cleaned up job directories. Now JABAWS deletes the job directory if it exist longer than a period defined in Engine.properties</li>
-<li>Default web security has been incompatible with Tomcat 7.0.31 and newer</li>
-<li>Documentation has been updated</li>
+<li><p>Disembl returned swapped strings for HOTLOOPS and REM465</p></li>
+<li><p>Jronn failed to process jobs with more than 3 sequences</p></li>
+<li><p>JABAWS could not deal with FASTA records with ‘&gt;’ symbols in the record identificator</p></li>
+<li><p>Change of parameter description for AACon: parameters have been replaced with options for calculation methods. This allows a user to get several AACon’s conservation scores in one call</p></li>
+<li><p>JABAWS never cleaned up job directories. Now JABAWS deletes the job directory if it exist longer than a period defined in Engine.properties</p></li>
+<li><p>Default web security has been incompatible with Tomcat 7.0.31 and newer</p></li>
+<li><p>Documentation has been updated</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="version-2-released-16th-dec-2011">
+</section>
+<section id="version-2-released-16th-dec-2011">
 <span id="v2-0"></span><h2>Version 2 (Released 16th Dec 2011)<a class="headerlink" href="#version-2-released-16th-dec-2011" title="Permalink to this headline">¶</a></h2>
 <p>Compared to JABAWS 1, JABAWS 2 offers a greater number and diversity of web services, Amazon EC2 integration and improved ease of use.</p>
 <p>It now contains:</p>
 <ul class="simple">
-<li>Updates for all multiple sequence alignment services</li>
-<li>Four new protein disorder prediction services</li>
-<li>Clustal Omega multiple sequence alignment web service</li>
-<li>Amino acid conservation service</li>
-<li>Web services execution statistics visualization</li>
-<li>Web services status check from a web page</li>
-<li>VirtualBox support was dropped in favour of VMware</li>
-<li>New WAR package for Mac users</li>
-<li>Amazon Machine Image (AMI) distributive to enable users to use JABAWS on the EC2 cloud</li>
-<li>Improved web services client API</li>
-<li>Simplified WAR package installation</li>
+<li><p>Updates for all multiple sequence alignment services</p></li>
+<li><p>Four new protein disorder prediction services</p></li>
+<li><p>Clustal Omega multiple sequence alignment web service</p></li>
+<li><p>Amino acid conservation service</p></li>
+<li><p>Web services execution statistics visualization</p></li>
+<li><p>Web services status check from a web page</p></li>
+<li><p>VirtualBox support was dropped in favour of VMware</p></li>
+<li><p>New WAR package for Mac users</p></li>
+<li><p>Amazon Machine Image (AMI) distributive to enable users to use JABAWS on the EC2 cloud</p></li>
+<li><p>Improved web services client API</p></li>
+<li><p>Simplified WAR package installation</p></li>
 </ul>
 <div class="admonition warning">
-<p class="first admonition-title">Warning</p>
-<p class="last">To access the analysis web services introduced in JABAWS 2.0, clients that were designed for JABAWS v1.0 must be updated.</p>
-</div>
-</div>
+<p class="admonition-title">Warning</p>
+<p>To access the analysis web services introduced in JABAWS 2.0, clients that were designed for JABAWS v1.0 must be updated.</p>
 </div>
+</section>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index f579a95..34b8bc9 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Citations &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="citations">
+  <section id="citations">
 <h1>Citations<a class="headerlink" href="#citations" title="Permalink to this headline">¶</a></h1>
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">It is important that you cite JABAWS when you use it. Citing us helps us funding the work we do and allow us to continue to improve the project further.</p>
+<p class="admonition-title">Note</p>
+<p>It is important that you cite JABAWS when you use it. Citing us helps us funding the work we do and allow us to continue to improve the project further.</p>
 </div>
 <p id="id1">Peter V. Troshin, James B. Procter and Geoffrey J. Barton - <strong>Java Bioinformatics Analysis Web Services for Multiple Sequence Alignment - JABAWS:MS</strong> Bioinformatics 2011. 27 (14): 2001-2002. doi: <a class="reference external" href="https://doi.org/10.1093/bioinformatics/btr304">10.1093/bioinformatics/btr304</a></p>
 <p>Peter V. Troshin, Alexander Sherstnev, James B. Procter, Daniel L. Barton, Fábio Madeira and Geoffrey J. Barton (2017) <strong>JABAWS 2.2 Distributed Web Services for Bioinformatics: Protein Disorder, Conservation and RNA Secondary Structure.</strong> <em>Paper in preparation.</em></p>
-</div>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 84b2274..16bf255 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Command Line Client (CLI) &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="command-line-client-cli">
+  <section id="command-line-client-cli">
 <h1>Command Line Client (CLI)<a class="headerlink" href="#command-line-client-cli" title="Permalink to this headline">¶</a></h1>
 <p>The JABAWS client is a Java application that lets you run the programs for which a JABAWS server provides web services. This command line application this is able to call any of the JABAWS web services on any instance of JABAWS Server available over the web. The basic client is useful if you would like to test or execute the programs provided by the JABAWS server in your own scripts, but you do not want to handle any web service specific details. The client is an open source software, so you can also use the source code to as an example how to manipulate with JABAWS web services in your own code. The JABA Web Services are <a class="reference external" href="http://www.ws-i.org/">WS-I</a> compliant. This means that you can access them from any language that has libraries or functions for consuming interoperable SOAP web services. More information on how to develop software that access JABAWS services is provided in the <a class="reference external" href="develop.html#accessing-jabaws-from-your-program">documentation pages</a>.</p>
 <p>The command line client comes as a part of <a class="reference external" href="../download.jsp#client">client package</a> which you are welcome to download. The command line client can be used to align sequences using any of JABAWS supported web services. The client is OS independent and supports most of the functions which can be accessed programmatically via <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/full_javadoc/index.html">JABAWS API</a>. Using this client you could align sequences using presets or custom parameters, please see examples of this below. Here is the list of options supported by the command line client.</p>
 <hr class="docutils" />
-<div class="section" id="installing">
+<section id="installing">
 <span id="client-installing"></span><h2>Installing<a class="headerlink" href="#installing" title="Permalink to this headline">¶</a></h2>
 <div class="admonition tip">
-<p class="first admonition-title">Tip</p>
-<p class="last">Check if you are running the recommended version of Java.</p>
+<p class="admonition-title">Tip</p>
+<p>Check if you are running the recommended version of Java.</p>
 </div>
 <p>You need Java 7 or higher installed in your machine to be able to run the JABAWS CLI client.
 Please see the <cite>Java</cite> web site for up to date instructions and downloads.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="usage">
+</section>
+<section id="usage">
 <span id="cli-usage"></span><h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="mf">2.2</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-full-client-2.2.0.jar
 </pre></div>
 </div>
-<div class="highlight-default"><div class="highlight"><pre><span></span>Usage:
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Usage:
 java -jar &lt;path_to_jar_file&gt; -h=host_and_context -s=serviceName ACTION [OPTIONS]
 -h=&lt;host_and_context&gt; - a full URL to the JABAWS web server including context path e.g. http://10.31.10.159:8080/ws
 -s=&lt;ServiceName&gt; - one of [MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS]
@@ -215,15 +220,15 @@ Please note that -r and -f options cannot be used together. Alignment is done wi
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="example-usage">
+</section>
+<section id="example-usage">
 <span id="cli-example"></span><h2>Example Usage<a class="headerlink" href="#example-usage" title="Permalink to this headline">¶</a></h2>
 <p>Align sequences from input.fasta file using Mafft web service with default settings, print alignment in Clustal format to console.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="mf">2.2</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">myhost</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span> <span class="o">-</span><span class="n">s</span><span class="o">=</span><span class="n">MafftWS</span> <span class="o">-</span><span class="n">i</span><span class="o">=</span><span class="n">d</span><span class="p">:</span>\<span class="nb">input</span><span class="o">.</span><span class="n">fasta</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-full-client-2.2.0.jar -h<span class="o">=</span>http://myhost.compbio.ac.uk:8080/jabaws -s<span class="o">=</span>MafftWS -i<span class="o">=</span>d:<span class="se">\i</span>nput.fasta
 </pre></div>
 </div>
 <p>Content of input.fasta file is show below (please note sequences has been trimmed for clarity)</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">&gt;</span><span class="n">Foobar</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;</span><span class="n">Foobar</span>
 <span class="n">MTADGPRELLQLRAAVRHRPQDFVAWL</span>
 <span class="o">&gt;</span><span class="n">Bar</span>
 <span class="n">MGDTTAGEMAVQRGLALHQ</span>
@@ -232,11 +237,11 @@ Please note that -r and -f options cannot be used together. Alignment is done wi
 </pre></div>
 </div>
 <p>Align as in above example, but write output alignment in a file out.clustal, using parameters defined in prm.in file</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="mf">2.2</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">myhost</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span>  <span class="o">-</span><span class="n">s</span><span class="o">=</span><span class="n">MafftWS</span> <span class="o">-</span><span class="n">i</span><span class="o">=</span><span class="n">d</span><span class="p">:</span>\<span class="nb">input</span><span class="o">.</span><span class="n">fasta</span> <span class="o">-</span><span class="n">o</span><span class="o">=</span><span class="n">d</span><span class="p">:</span>\<span class="n">out</span><span class="o">.</span><span class="n">clustal</span> <span class="o">-</span><span class="n">f</span><span class="o">=</span><span class="n">prm</span><span class="o">.</span><span class="ow">in</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-full-client-2.2.0.jar -h<span class="o">=</span>http://myhost.compbio.ac.uk:8080/jabaws  -s<span class="o">=</span>MafftWS -i<span class="o">=</span>d:<span class="se">\i</span>nput.fasta -o<span class="o">=</span>d:<span class="se">\o</span>ut.clustal -f<span class="o">=</span>prm.in
 </pre></div>
 </div>
 <p>The content of the prm.in file is shown below</p>
-<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">--</span><span class="n">nofft</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--</span><span class="n">nofft</span>
 <span class="o">--</span><span class="n">noscore</span>
 <span class="o">--</span><span class="n">fastaparttree</span>
 <span class="o">--</span><span class="n">retree</span><span class="o">=</span><span class="mi">10</span>
@@ -244,13 +249,13 @@ Please note that -r and -f options cannot be used together. Alignment is done wi
 </pre></div>
 </div>
 <p>The format of the file is the same for all JABAWS web services. Parameters are specified in exactly the same way as for native executables - alignment programs like Mafft etc. So parameters which you can use with command line version of an alignment program can be used with JABAWS. Most of the settings controlling alignment process are supported, but because any output has to be handled by JABAWS, settings controlling output are not allowed to be changed. For a list of parameters supported by a web service see the next example. In prm.in parameters are separated by the new line, and name of the parameter is separated from its value with an equals sign. This format is constant no matter which JABAWS web service is used.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="mf">2.2</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">myhost</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span> <span class="o">-</span><span class="n">s</span><span class="o">=</span><span class="n">MafftWS</span> <span class="o">-</span><span class="n">parameters</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-full-client-2.2.0.jar -h<span class="o">=</span>http://myhost.compbio.ac.uk:8080/jabaws -s<span class="o">=</span>MafftWS -parameters
 </pre></div>
 </div>
 <p>The same client can be used to access JABAWS on different hosts. Just point the client to the host you want to use by changing the value of -h key.</p>
-<p>For example you used <code class="docutils literal"><span class="pre">-h=http://myhost.compbio.ac.uk:8080/jabaws</span></code> server, now you want to use another server to <code class="docutils literal"><span class="pre">-h=http://mylabserver.myuni.edu</span></code>. This comes handy if your favorite server is off and you need to do the job yesterday.</p>
-</div>
-</div>
+<p>For example you used <code class="docutils literal notranslate"><span class="pre">-h=http://myhost.compbio.ac.uk:8080/jabaws</span></code> server, now you want to use another server to <code class="docutils literal notranslate"><span class="pre">-h=http://mylabserver.myuni.edu</span></code>. This comes handy if your favorite server is off and you need to do the job yesterday.</p>
+</section>
+</section>
 
 
            </div>
@@ -303,6 +308,7 @@ Please note that -r and -f options cannot be used together. Alignment is done wi
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 17bb6a5..6459087 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>For Developers &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="for-developers">
+  <section id="for-developers">
 <h1>For Developers<a class="headerlink" href="#for-developers" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="source-code">
+<section id="source-code">
 <span id="jabaws-source"></span><h2>Source Code<a class="headerlink" href="#source-code" title="Permalink to this headline">¶</a></h2>
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This is an open source project. If you want to contribute or report an issue have a look at our  <a class="reference external" href="https://source.jalview.org/crucible/changelog/jabaws">Git-tracker</a>.</p>
+<p class="admonition-title">Note</p>
+<p>This is an open source project. If you want to contribute or report an issue have a look at our  <a class="reference external" href="https://source.jalview.org/crucible/changelog/jabaws">Git-tracker</a>.</p>
 </div>
 <p>Publicly available Git repository: <a class="reference external" href="http://source.jalview.org/gitweb/?p=jabaws.git">http://source.jalview.org/gitweb/?p=jabaws.git</a></p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">source</span><span class="o">.</span><span class="n">jalview</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">git</span><span class="o">/</span><span class="n">jabaws</span><span class="o">.</span><span class="n">git</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git clone http://source.jalview.org/git/jabaws.git
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="the-api">
+</section>
+<section id="the-api">
 <span id="jabaws-api"></span><h2>The API<a class="headerlink" href="#the-api" title="Permalink to this headline">¶</a></h2>
 <p><a class="reference external" href="dm_javadoc/index.html">Data Model JavaDoc</a> - read this if your are coding against JABA Web Services</p>
 <p><a class="reference external" href="full_javadoc/index.html">Complete JavaDoc</a> - for developers who want to use JABAWS framework and use Engines and Executables directly</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="structure-of-the-project">
+</section>
+<section id="structure-of-the-project">
 <span id="jabaws-structure"></span><h2>Structure of the project<a class="headerlink" href="#structure-of-the-project" title="Permalink to this headline">¶</a></h2>
 <div class="line-block">
 <div class="line"><a class="reference internal" href="_images/folder-small.png"><img alt="folder" class="align-middle" src="_images/folder-small.png" style="width: 15px;" /></a> <em>binaries</em> contains native executables e.g. clustalw</div>
 <div class="line"><a class="reference internal" href="_images/folder-small.png"><img alt="folder" class="align-middle" src="_images/folder-small.png" style="width: 15px;" /></a> <em>testsrc</em> contains the JABAWS unit tests</div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="the-code-structure">
+</section>
+<section id="the-code-structure">
 <span id="jabaws-code"></span><h2>The code structure<a class="headerlink" href="#the-code-structure" title="Permalink to this headline">¶</a></h2>
 <a class="reference internal image-reference" href="_images/ws-structure.png"><img alt="_images/ws-structure.png" class="align-left" src="_images/ws-structure.png" style="width: 267.9px; height: 393.29999999999995px;" /></a>
 <p>Each source folder depends on the upper folders for compilation. For example, the datamodel is the top level folder so it has no other dependencies on other JABAWS code. The Engine level depends on the datamodel to compile etc. The web services folder is the bottom layer and depends on all the other source code.</p>
 <p>The second layer contains code for execution of the wrappers, which are the abstraction describing native executables. JABAWS can execute tasks locally that is on the same machine as JVM and on the cluster. Thus currently code on this layer contain two engines. This layer depends on the layer underneath, the data model layer, but is completely independent from the code above.</p>
 <p>The third layer consists of the wrappers for the native executables and classes to handle their configuration. It depends on the engines and the data model, but know nothing about the web services.</p>
 <p>Finally, the upper layer contains the web services, that depend on all the layers below.</p>
-<p>The layer isolation is archived though specially designed compilation task which is executed sequentially in several stages so that the first layer compiles before any other layers, second layer compiles after that and process continies before all the code is compiled. Any violation of the layer boundaries results in the compilation failure. Use Ant &#8220;Compile&#8221; or &#8220;Complile_with_debug&#8221; tasks to perform the staged compilation.</p>
+<p>The layer isolation is archived though specially designed compilation task which is executed sequentially in several stages so that the first layer compiles before any other layers, second layer compiles after that and process continies before all the code is compiled. Any violation of the layer boundaries results in the compilation failure. Use Ant “Compile” or “Complile_with_debug” tasks to perform the staged compilation.</p>
 <p>A client package contains only classes from data model layer and a simple web services client. Framework package is for anyone who want to use JABAWS framework for controlling native executables in local or cluster environments. Framework exclude the web services layer. Server package contains all the code.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="unit-testing">
+</section>
+<section id="unit-testing">
 <span id="jabaws-tests"></span><h2>Unit Testing<a class="headerlink" href="#unit-testing" title="Permalink to this headline">¶</a></h2>
 <p>JABAWS uses <a class="reference external" href="http://testng.org/doc/index.html">TestNG</a> framework for testing. The test results for the JABAWS package offered for download can be found at: <a class="reference external" href="http://www.compbio.dundee.ac.uk/user/www-jws2/tests/index.html">Test Results</a>
 JABAWS uses TestNG for testing. There is a TestNG plugin available for Eclipse which has functionality similar to JUnit. However, no plugins are necessary to run the test cases, as testng jar is supplied with JABAWS together with an ant tasks to run the test cases.</p>
 <p>Several testing groups are supported:</p>
 <ul class="simple">
-<li>All tests (&#8216;Test&#8217;)</li>
-<li>Cluster tests (&#8216;Run_cluster_dependent_test&#8217;)</li>
-<li>Cluster independent tests (&#8216;All_cluster_independent_tests&#8217;)</li>
-<li>Windows only tests (&#8216;All_cluster_independent_windows_only_tests&#8217;)</li>
-<li>Performance and stability tests (&#8216;Long_tests&#8217;)</li>
-<li>Re-run failed tests (&#8216;Rerun_failed_tests&#8217;)</li>
-<li>Run custom test (&#8216;CustomTest&#8217;)</li>
+<li><p>All tests (‘Test’)</p></li>
+<li><p>Cluster tests (‘Run_cluster_dependent_test’)</p></li>
+<li><p>Cluster independent tests (‘All_cluster_independent_tests’)</p></li>
+<li><p>Windows only tests (‘All_cluster_independent_windows_only_tests’)</p></li>
+<li><p>Performance and stability tests (‘Long_tests’)</p></li>
+<li><p>Re-run failed tests (‘Rerun_failed_tests’)</p></li>
+<li><p>Run custom test (‘CustomTest’)</p></li>
 </ul>
 <p>To run the tests you need to download all sources from repository. Once you have done that, enter into the command line mode, change directory to the project directory and type:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">ant</span> <span class="o">-</span><span class="n">f</span> <span class="n">build</span><span class="o">.</span><span class="n">xml</span> <span class="o">&lt;</span><span class="n">test</span> <span class="n">group</span> <span class="n">name</span><span class="o">&gt;</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ant -f build.xml &lt;<span class="nb">test</span> group name&gt;
 </pre></div>
 </div>
 <p>Make sure you have <a class="reference external" href="http://ant.apache.org/">Apache Ant</a> installed and path to ant executable is defined in your path environmental variable. Replace test group name with the one of the names given in the list above to run required group of tests e.g for running cluster only tests use the following command:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">ant</span> <span class="o">-</span><span class="n">f</span> <span class="n">build</span><span class="o">.</span><span class="n">xml</span> <span class="n">Run_cluster_dependent_test</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ant -f build.xml Run_cluster_dependent_test
 </pre></div>
 </div>
-<p>If you work under Linux you could use a simple script from the root folder of repository called <code class="docutils literal"><span class="pre">runtests.sh</span></code>. This script simply contains a collection of the test commands described above and paths to java home directory and an ant executable, which you can define once for your system and then reuse.</p>
-<p>A handy feature of TestNG is its ability to re-run failed tests. Failed test ant file is stored in <code class="docutils literal"><span class="pre">test-output/testng-failed.xml</span></code>. and is used in the ant task called <code class="docutils literal"><span class="pre">Rerun_failed_tests</span></code>. So re-running failed tests requires no more work than running any other test group and could be accomplished with the command:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">ant</span> <span class="o">-</span><span class="n">f</span> <span class="n">build</span><span class="o">.</span><span class="n">xml</span> <span class="n">Rerun_failed_tests</span>
+<p>If you work under Linux you could use a simple script from the root folder of repository called <code class="docutils literal notranslate"><span class="pre">runtests.sh</span></code>. This script simply contains a collection of the test commands described above and paths to java home directory and an ant executable, which you can define once for your system and then reuse.</p>
+<p>A handy feature of TestNG is its ability to re-run failed tests. Failed test ant file is stored in <code class="docutils literal notranslate"><span class="pre">test-output/testng-failed.xml</span></code>. and is used in the ant task called <code class="docutils literal notranslate"><span class="pre">Rerun_failed_tests</span></code>. So re-running failed tests requires no more work than running any other test group and could be accomplished with the command:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ant -f build.xml Rerun_failed_tests
 </pre></div>
 </div>
-<p>CustomTest runs the test defined in the project root directory file called <code class="docutils literal"><span class="pre">temp-testng-customsuite.xml</span></code>. This file is generated by TestNG plugin every time you run the test from Eclipse. Thus an easy way to run a test in a different environment is to run it from Eclipse first and then from ant using a custom test procedure.</p>
-<p>For cluster execution make sure that the property <code class="docutils literal"><span class="pre">LD_LIBRARY_PATH</span></code> defined in build.xml points to cluster engine LD libraries directory in your local system.</p>
+<p>CustomTest runs the test defined in the project root directory file called <code class="docutils literal notranslate"><span class="pre">temp-testng-customsuite.xml</span></code>. This file is generated by TestNG plugin every time you run the test from Eclipse. Thus an easy way to run a test in a different environment is to run it from Eclipse first and then from ant using a custom test procedure.</p>
+<p>For cluster execution make sure that the property <code class="docutils literal notranslate"><span class="pre">LD_LIBRARY_PATH</span></code> defined in build.xml points to cluster engine LD libraries directory in your local system.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="accessing-jabaws-from-your-program">
+</section>
+<section id="accessing-jabaws-from-your-program">
 <span id="jabaws-conn-services"></span><h2>Accessing JABAWS from your program<a class="headerlink" href="#accessing-jabaws-from-your-program" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="web-services-functions-overview">
+<section id="web-services-functions-overview">
 <span id="jabaws-conn-functions"></span><h3>Web services functions overview<a class="headerlink" href="#web-services-functions-overview" title="Permalink to this headline">¶</a></h3>
 <p>All JABAWS multiple sequence alignment web services comply to the same interface, thus the function described below are available from all the services.</p>
 <p>Functions for initiating the alignment</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">String</span> <span class="nb">id</span> <span class="o">=</span> <span class="n">align</span><span class="p">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="nb">list</span><span class="p">)</span>
-<span class="n">String</span> <span class="nb">id</span> <span class="o">=</span> <span class="n">customAlign</span><span class="p">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">sequenceList</span><span class="p">,</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">Option</span><span class="o">&gt;</span> <span class="n">optionList</span><span class="p">)</span>
-<span class="n">String</span> <span class="nb">id</span> <span class="o">=</span> <span class="n">presetAlign</span><span class="p">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">sequenceList</span><span class="p">,</span> <span class="n">Preset</span> <span class="n">preset</span><span class="p">)</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>String <span class="nv">id</span> <span class="o">=</span> align<span class="o">(</span>List&lt;FastaSequence&gt; list<span class="o">)</span>
+String <span class="nv">id</span> <span class="o">=</span> customAlign<span class="o">(</span>List&lt;FastaSequence&gt; sequenceList, List&lt;Option&gt; optionList<span class="o">)</span>
+String <span class="nv">id</span> <span class="o">=</span> presetAlign<span class="o">(</span>List&lt;FastaSequence&gt; sequenceList, Preset preset<span class="o">)</span>
 </pre></div>
 </div>
 <p>Functions pertaining to job monitoring and control</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">JobStatus</span> <span class="n">status</span> <span class="o">=</span> <span class="n">getJobStatus</span><span class="p">(</span><span class="n">String</span> <span class="nb">id</span><span class="p">)</span>
-<span class="n">Alignment</span> <span class="n">al</span> <span class="o">=</span> <span class="n">getResult</span><span class="p">(</span><span class="n">String</span> <span class="nb">id</span><span class="p">)</span>
-<span class="n">boolean</span> <span class="n">cancelled</span> <span class="o">=</span> <span class="n">cancelJob</span><span class="p">(</span><span class="n">String</span> <span class="nb">id</span><span class="p">)</span>
-<span class="n">ChunkHolder</span> <span class="n">chunk</span> <span class="o">=</span> <span class="n">pullExecStatistics</span><span class="p">(</span><span class="n">String</span> <span class="nb">id</span><span class="p">,</span> <span class="n">long</span> <span class="n">marker</span><span class="p">)</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>JobStatus <span class="nv">status</span> <span class="o">=</span> getJobStatus<span class="o">(</span>String id<span class="o">)</span>
+Alignment <span class="nv">al</span> <span class="o">=</span> getResult<span class="o">(</span>String id<span class="o">)</span>
+boolean <span class="nv">cancelled</span> <span class="o">=</span> cancelJob<span class="o">(</span>String id<span class="o">)</span>
+ChunkHolder <span class="nv">chunk</span> <span class="o">=</span> pullExecStatistics<span class="o">(</span>String id, long marker<span class="o">)</span>
 </pre></div>
 </div>
 <p>Functions relating to service features discovery</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">RunnerConfig</span> <span class="n">rc</span> <span class="o">=</span> <span class="n">getRunnerOptions</span><span class="p">()</span>
-<span class="n">Limit</span> <span class="n">limit</span> <span class="o">=</span> <span class="n">getLimit</span><span class="p">(</span><span class="n">String</span> <span class="n">name</span><span class="p">)</span>
-<span class="n">LimitsManager</span> <span class="n">lm</span> <span class="o">=</span> <span class="n">getLimits</span><span class="p">()</span>
-<span class="n">PresetManager</span> <span class="n">pm</span> <span class="o">=</span> <span class="n">getPresets</span><span class="p">()</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>RunnerConfig <span class="nv">rc</span> <span class="o">=</span> getRunnerOptions<span class="o">()</span>
+Limit <span class="nv">limit</span> <span class="o">=</span> getLimit<span class="o">(</span>String name<span class="o">)</span>
+LimitsManager <span class="nv">lm</span> <span class="o">=</span> getLimits<span class="o">()</span>
+PresetManager <span class="nv">pm</span> <span class="o">=</span> getPresets<span class="o">()</span>
 </pre></div>
 </div>
 <p>Please refer to a Data Model JavaDoc for a detailed description of each methods.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="structure-of-the-template-command-line-client">
+</section>
+<section id="structure-of-the-template-command-line-client">
 <span id="jabaws-conn-functions2"></span><h3>Structure of the template command line client<a class="headerlink" href="#structure-of-the-template-command-line-client" title="Permalink to this headline">¶</a></h3>
-<table border="1" class="docutils">
+<table class="docutils align-default">
 <colgroup>
-<col width="25%" />
-<col width="75%" />
+<col style="width: 25%" />
+<col style="width: 75%" />
 </colgroup>
-<thead valign="bottom">
-<tr class="row-odd"><th class="head">Packages</th>
-<th class="head">Classes and Interfaces</th>
+<thead>
+<tr class="row-odd"><th class="head"><p>Packages</p></th>
+<th class="head"><p>Classes and Interfaces</p></th>
 </tr>
 </thead>
-<tbody valign="top">
-<tr class="row-even"><td>compbio.data.msa</td>
-<td>MsaWS the interface for all multiple sequence alignment web services</td>
+<tbody>
+<tr class="row-even"><td><p>compbio.data.msa</p></td>
+<td><p>MsaWS the interface for all multiple sequence alignment web services</p></td>
 </tr>
-<tr class="row-odd"><td>compbio.data.sequence</td>
-<td>JABAWS data types</td>
+<tr class="row-odd"><td><p>compbio.data.sequence</p></td>
+<td><p>JABAWS data types</p></td>
 </tr>
-<tr class="row-even"><td>compbio.metadata</td>
-<td>JABAWS meta data types</td>
+<tr class="row-even"><td><p>compbio.metadata</p></td>
+<td><p>JABAWS meta data types</p></td>
 </tr>
-<tr class="row-odd"><td>compbio.ws.client</td>
-<td>JABAWS command line client</td>
+<tr class="row-odd"><td><p>compbio.ws.client</p></td>
+<td><p>JABAWS command line client</p></td>
 </tr>
 </tbody>
 </table>
 <p>Additional utility libraries that this client depend upon is the compbio-util-1.3.jar and compbio-annotation-1.0.jar.</p>
 <p>Please refer to a <a class="reference external" href="dm_javadoc/index.html">Data Model JavaDoc</a> for a detailed description of each class and its methods.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="connecting-to-jabaws">
+</section>
+<section id="connecting-to-jabaws">
 <span id="jabaws-conn-conn"></span><h3>Connecting to JABAWS<a class="headerlink" href="#connecting-to-jabaws" title="Permalink to this headline">¶</a></h3>
 <p>For a complete working example of JABAWS command line client please see compbio.ws.client.Jws2Client class. JABAWS command line client source code is available from the <a class="reference external" href="../download.jsp">download page</a>. Please note that for now all the examples are in Java, other languages will follow if there is sufficient demand.</p>
 <p>Download a binary JABAWS client. Add the client to the class path. The following code excerpt will connect your program to Clustal web service deployed in the University of Dundee.</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="o">;</span>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.net.URL</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="p">;</span>
 <span class="c1">// (...)</span>
-<span class="n">String</span> <span class="n">qualifiedName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="o">;</span>
-<span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl&quot;</span><span class="o">);</span>
-<span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="o">(,</span> <span class="s">&quot;ClustalWS&quot;</span><span class="o">);</span>
-<span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="o">.</span><span class="na">create</span><span class="o">(</span><span class="n">url</span><span class="o">,</span> <span class="n">qname</span><span class="o">);</span>
-<span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="o">.</span><span class="na">getPort</span><span class="o">(</span><span class="k">new</span> <span class="n">QName</span><span class="o">(</span><span class="n">qualifiedName</span><span class="o">,</span> <span class="s">&quot;ClustalWSPort&quot;</span><span class="o">),</span>
-<span class="n">MsaWS</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+<span class="n">String</span> <span class="n">qualifiedName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="p">;</span>
+<span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="p">(</span><span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl&quot;</span><span class="p">);</span>
+<span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="p">(,</span> <span class="s">&quot;ClustalWS&quot;</span><span class="p">);</span>
+<span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">qname</span><span class="p">);</span>
+<span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="p">.</span><span class="na">getPort</span><span class="p">(</span><span class="k">new</span> <span class="n">QName</span><span class="p">(</span><span class="n">qualifiedName</span><span class="p">,</span> <span class="s">&quot;ClustalWSPort&quot;</span><span class="p">),</span>
+<span class="n">MsaWS</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
 </pre></div>
 </div>
 <p>Line 1 makes a qualified name for JABA web services.</p>
@@ -364,77 +369,77 @@ JABAWS uses TestNG for testing. There is a TestNG plugin available for Eclipse w
 <p>Line 4 creates a service instance.</p>
 <p>Line 5 makes a connection to the server.</p>
 <p>A more generic connection method would look like this</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="o">;</span>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.net.URL</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="p">;</span>
 <span class="kn">import</span> <span class="nn">compbio.ws.client.Services</span>
 <span class="c1">// (...)</span>
-<span class="n">String</span> <span class="n">qualifiedServiceName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="o">;</span>
-<span class="n">String</span> <span class="n">host</span> <span class="o">=</span> <span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws&quot;</span><span class="o">;</span>
+<span class="n">String</span> <span class="n">qualifiedServiceName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="p">;</span>
+<span class="n">String</span> <span class="n">host</span> <span class="o">=</span> <span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws&quot;</span><span class="p">;</span>
 <span class="c1">// In real life the service name can come from args</span>
-<span class="n">Services</span> <span class="n">clustal</span> <span class="o">=</span> <span class="n">Services</span><span class="o">.</span><span class="na">ClustalWS</span><span class="o">;</span>
-<span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="n">host</span> <span class="o">+</span> <span class="s">&quot;/&quot;</span> <span class="o">+</span> <span class="n">clustal</span><span class="o">.</span><span class="na">toString</span><span class="o">()</span> <span class="o">+</span> <span class="s">&quot;?wsdl&quot;</span><span class="o">);</span>
-<span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="o">(</span><span class="n">qualifiedServiceName</span><span class="o">,</span> <span class="n">clustal</span><span class="o">.</span><span class="na">toString</span><span class="o">());</span>
-<span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="o">.</span><span class="na">create</span><span class="o">(</span><span class="n">url</span><span class="o">,</span> <span class="n">qname</span><span class="o">);</span>
-<span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="o">.</span><span class="na">getPort</span><span class="o">(</span><span class="k">new</span> <span class="n">QName</span><span class="o">(</span><span class="n">qualifiedServiceName</span><span class="o">,</span> <span class="n">clustal</span> <span class="o">+</span> <span class="s">&quot;Port&quot;</span><span class="o">),</span> <span class="n">MsaWS</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+<span class="n">Services</span> <span class="n">clustal</span> <span class="o">=</span> <span class="n">Services</span><span class="p">.</span><span class="na">ClustalWS</span><span class="p">;</span>
+<span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="p">(</span><span class="n">host</span> <span class="o">+</span> <span class="s">&quot;/&quot;</span> <span class="o">+</span> <span class="n">clustal</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span> <span class="o">+</span> <span class="s">&quot;?wsdl&quot;</span><span class="p">);</span>
+<span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="p">(</span><span class="n">qualifiedServiceName</span><span class="p">,</span> <span class="n">clustal</span><span class="p">.</span><span class="na">toString</span><span class="p">());</span>
+<span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">qname</span><span class="p">);</span>
+<span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="p">.</span><span class="na">getPort</span><span class="p">(</span><span class="k">new</span> <span class="n">QName</span><span class="p">(</span><span class="n">qualifiedServiceName</span><span class="p">,</span> <span class="n">clustal</span> <span class="o">+</span> <span class="s">&quot;Port&quot;</span><span class="p">),</span> <span class="n">MsaWS</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
 </pre></div>
 </div>
 <p>Where Services is enumeration of JABAWS web services. All JABAWS multiple sequence alignment methods confirm to MsaWS specification, thus from the caller point of view all JABAWS web services can be represented by MsaWS interface. The full documentation of MsaWS functions is available from the <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws/full_javadoc/index.html">JavaDoc</a>.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="aligning-sequences">
+</section>
+<section id="aligning-sequences">
 <span id="jabaws-conn-aln"></span><h3>Aligning Sequences<a class="headerlink" href="#aligning-sequences" title="Permalink to this headline">¶</a></h3>
-<p>Given that <em>msaws</em> is web service proxy, created as described in &#8220;Connecting to JABAWS&#8221; section, the actual alignment can be obtained as follows:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">fastalist</span> <span class="o">=</span> <span class="n">SequenceUtil</span><span class="o">.</span><span class="n">readFasta</span><span class="p">(</span><span class="n">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">));</span>
-<span class="n">String</span> <span class="n">jobId</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="n">fastalist</span><span class="p">);</span>
-<span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">getResult</span><span class="p">(</span><span class="n">jobId</span><span class="p">);</span>
-<span class="n">Line</span> <span class="n">one</span> <span class="n">loads</span> <span class="n">FASTA</span> <span class="n">sequence</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">file</span><span class="o">.</span>
+<p>Given that <em>msaws</em> is web service proxy, created as described in “Connecting to JABAWS” section, the actual alignment can be obtained as follows:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>List&lt;FastaSequence&gt; <span class="nv">fastalist</span> <span class="o">=</span> SequenceUtil.readFasta<span class="o">(</span>new FileInputStream<span class="o">(</span>file<span class="o">))</span><span class="p">;</span>
+String <span class="nv">jobId</span> <span class="o">=</span> msaws.align<span class="o">(</span>fastalist<span class="o">)</span><span class="p">;</span>
+Alignment <span class="nv">alignment</span> <span class="o">=</span> msaws.getResult<span class="o">(</span>jobId<span class="o">)</span><span class="p">;</span>
+Line one loads FASTA sequence from the file.
 </pre></div>
 </div>
 <p>Line two submits them to web service represented by msaws proxy.</p>
 <p>Line three retrieves the alignment from a web service. This line will block the execution until the result is available. Use this with caution. In general, you should make sure that the calculation has been completed before attempting retrieving results. This is to avoid keeping the connection to the server on hold for a prolonged periods of time. While this may be ok with your local server, our public server (www.compbio.dundee.ac.uk/jabaws) will not let you hold the connection for longer than 10 minutes. This is done to prevent excessive load on the server. The next section describes how to check the status of the calculation.
 Methods and classes mentioned in the excerpt are available from the JABAWS client library.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="checking-the-status-of-the-calculation">
+</section>
+<section id="checking-the-status-of-the-calculation">
 <span id="jabaws-conn-status"></span><h3>Checking the status of the calculation<a class="headerlink" href="#checking-the-status-of-the-calculation" title="Permalink to this headline">¶</a></h3>
 <p>You may have noticed that there was no pause between submitting the job and retrieving of the results. This is because getResult(jobId) method block the processing until the calculation is completed. However, taking into account that the connection holds server resources, our public server (www.compbio.dundee.ac.uk/jabaws) is configured to reset the connection after 10 minutes of waiting. To work around the connection reset you are encouraged to check whether the calculation has been completed before accessing the results. You can do it like this:</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="k">while</span> <span class="o">(</span><span class="n">msaws</span><span class="o">.</span><span class="na">getJobStatus</span><span class="o">(</span><span class="n">jobId</span><span class="o">)</span> <span class="o">!=</span> <span class="n">JobStatus</span><span class="o">.</span><span class="na">FINISHED</span><span class="o">)</span> <span class="o">{</span>
-    <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">2000</span><span class="o">);</span> <span class="c1">// wait two  seconds, then recheck the status</span>
-<span class="o">}</span>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="k">while</span> <span class="p">(</span><span class="n">msaws</span><span class="p">.</span><span class="na">getJobStatus</span><span class="p">(</span><span class="n">jobId</span><span class="p">)</span> <span class="o">!=</span> <span class="n">JobStatus</span><span class="p">.</span><span class="na">FINISHED</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span> <span class="c1">// wait two  seconds, then recheck the status</span>
+<span class="p">}</span>
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="aligning-with-presets">
+</section>
+<section id="aligning-with-presets">
 <span id="jabaws-conn-aln-presets"></span><h3>Aligning with presets<a class="headerlink" href="#aligning-with-presets" title="Permalink to this headline">¶</a></h3>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">PresetManager</span> <span class="n">presetman</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">getPresets</span><span class="p">();</span>
-<span class="n">Preset</span> <span class="n">preset</span> <span class="o">=</span> <span class="n">presetman</span><span class="o">.</span><span class="n">getPresetByName</span><span class="p">(</span><span class="n">presetName</span><span class="p">);</span>
-<span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">fastalist</span> <span class="o">=</span> <span class="n">SequenceUtil</span><span class="o">.</span><span class="n">readFasta</span><span class="p">(</span><span class="n">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">));</span>
-<span class="n">String</span> <span class="n">jobId</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">presetAlign</span><span class="p">(</span><span class="n">fastalist</span><span class="p">,</span> <span class="n">preset</span><span class="p">);</span>
-<span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">getResult</span><span class="p">(</span><span class="n">jobId</span><span class="p">);</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>PresetManager <span class="nv">presetman</span> <span class="o">=</span> msaws.getPresets<span class="o">()</span><span class="p">;</span>
+Preset <span class="nv">preset</span> <span class="o">=</span> presetman.getPresetByName<span class="o">(</span>presetName<span class="o">)</span><span class="p">;</span>
+List&lt;FastaSequence&gt; <span class="nv">fastalist</span> <span class="o">=</span> SequenceUtil.readFasta<span class="o">(</span>new FileInputStream<span class="o">(</span>file<span class="o">))</span><span class="p">;</span>
+String <span class="nv">jobId</span> <span class="o">=</span> msaws.presetAlign<span class="o">(</span>fastalist, preset<span class="o">)</span><span class="p">;</span>
+Alignment <span class="nv">alignment</span> <span class="o">=</span> msaws.getResult<span class="o">(</span>jobId<span class="o">)</span><span class="p">;</span>
 </pre></div>
 </div>
 <p>Line one obtains the lists of presets supported by a web service.</p>
 <p>Line two return a particular Preset by its name.</p>
 <p>Lines three to five are doing the same job as in the <a class="reference external" href="develop.html#aligning-sequences">first aligning sequences example</a>.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="aligning-with-custom-parameters">
+</section>
+<section id="aligning-with-custom-parameters">
 <span id="jabaws-conn-aln-params"></span><h3>Aligning with custom parameters<a class="headerlink" href="#aligning-with-custom-parameters" title="Permalink to this headline">¶</a></h3>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">RunnerConfig</span> <span class="n">options</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">getRunnerOptions</span><span class="p">();</span>
-<span class="n">Argument</span> <span class="n">matrix</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">getArgument</span><span class="p">(</span><span class="s2">&quot;MATRIX&quot;</span><span class="p">);</span>
-<span class="n">matrix</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="s2">&quot;PAM300&quot;</span><span class="p">);</span>
-<span class="n">Argument</span> <span class="n">gapopenpenalty</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">getArgument</span><span class="p">(</span><span class="s2">&quot;GAPOPEN&quot;</span><span class="p">);</span>
-<span class="n">gapopenpenalty</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="s2">&quot;20&quot;</span><span class="p">);</span>
-<span class="n">List</span><span class="o">&lt;</span><span class="n">Argument</span><span class="o">&gt;</span> <span class="n">arguments</span> <span class="o">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Argument</span><span class="o">&gt;</span><span class="p">();</span>
-<span class="n">arguments</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">matrix</span><span class="p">);</span> <span class="n">arguments</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">gapopenpenalty</span><span class="p">);</span>
-<span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">fastalist</span> <span class="o">=</span> <span class="n">SequenceUtil</span><span class="o">.</span><span class="n">readFasta</span><span class="p">(</span><span class="n">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">file</span><span class="p">));</span>
-<span class="n">String</span> <span class="n">jobId</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">customAlign</span><span class="p">(</span><span class="n">fastalist</span><span class="p">,</span> <span class="n">arguments</span><span class="p">);</span>
-<span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="n">getResult</span><span class="p">(</span><span class="n">jobId</span><span class="p">);</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>RunnerConfig <span class="nv">options</span> <span class="o">=</span> msaws.getRunnerOptions<span class="o">()</span><span class="p">;</span>
+Argument <span class="nv">matrix</span> <span class="o">=</span> options.getArgument<span class="o">(</span><span class="s2">&quot;MATRIX&quot;</span><span class="o">)</span><span class="p">;</span>
+matrix.setValue<span class="o">(</span><span class="s2">&quot;PAM300&quot;</span><span class="o">)</span><span class="p">;</span>
+Argument <span class="nv">gapopenpenalty</span> <span class="o">=</span> options.getArgument<span class="o">(</span><span class="s2">&quot;GAPOPEN&quot;</span><span class="o">)</span><span class="p">;</span>
+gapopenpenalty.setValue<span class="o">(</span><span class="s2">&quot;20&quot;</span><span class="o">)</span><span class="p">;</span>
+List&lt;Argument&gt; <span class="nv">arguments</span> <span class="o">=</span> new ArrayList&lt;Argument&gt;<span class="o">()</span><span class="p">;</span>
+arguments.add<span class="o">(</span>matrix<span class="o">)</span><span class="p">;</span> arguments.add<span class="o">(</span>gapopenpenalty<span class="o">)</span><span class="p">;</span>
+List&lt;FastaSequence&gt; <span class="nv">fastalist</span> <span class="o">=</span> SequenceUtil.readFasta<span class="o">(</span>new FileInputStream<span class="o">(</span>file<span class="o">))</span><span class="p">;</span>
+String <span class="nv">jobId</span> <span class="o">=</span> msaws.customAlign<span class="o">(</span>fastalist, arguments<span class="o">)</span><span class="p">;</span>
+Alignment <span class="nv">alignment</span> <span class="o">=</span> msaws.getResult<span class="o">(</span>jobId<span class="o">)</span><span class="p">;</span>
 </pre></div>
 </div>
-<p>Line one obtains the <code class="docutils literal"><span class="pre">RunnerConfig</span></code> object that holds information on supported parameters and their values</p>
+<p>Line one obtains the <code class="docutils literal notranslate"><span class="pre">RunnerConfig</span></code> object that holds information on supported parameters and their values</p>
 <p>Line two retrieve a particular parameter from the holder by its name.</p>
 <p>Lines three sets a value to this parameter which will be used in the calculation.</p>
 <p>Line four and five do the same but for another parameter.</p>
@@ -442,44 +447,44 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
 <p>Line seven puts the parameters into that list.</p>
 <p>Line eight and ten is the same as in previous examples.</p>
 <p>Line nine submit an alignment request with the sequences and the parameters.</p>
-<p>The names of all the parameters supported by a web service e.g. &#8220;PAM300&#8221; can be obtained using <code class="docutils literal"><span class="pre">options.getArguments()</span></code> method. Further details on the methods available from <code class="docutils literal"><span class="pre">RunnerConfig</span></code> object are available from the JavaDoc.</p>
+<p>The names of all the parameters supported by a web service e.g. “PAM300” can be obtained using <code class="docutils literal notranslate"><span class="pre">options.getArguments()</span></code> method. Further details on the methods available from <code class="docutils literal notranslate"><span class="pre">RunnerConfig</span></code> object are available from the JavaDoc.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="writing-alignments-to-a-file">
+</section>
+<section id="writing-alignments-to-a-file">
 <span id="jabaws-conn-aln-file"></span><h3>Writing alignments to a file<a class="headerlink" href="#writing-alignments-to-a-file" title="Permalink to this headline">¶</a></h3>
 <p>There is a utility method in the client library that does exactly that.</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">align</span><span class="o">(...)</span>
-<span class="n">FileOutputStream</span> <span class="n">outStream</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileOutputStream</span><span class="o">(</span><span class="n">file</span><span class="o">);</span>
-<span class="n">ClustalAlignmentUtil</span><span class="o">.</span><span class="na">writeClustalAlignment</span><span class="o">(</span><span class="n">outStream</span><span class="o">,</span> <span class="n">align</span><span class="o">);</span>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">align</span><span class="p">(...)</span>
+<span class="n">FileOutputStream</span> <span class="n">outStream</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileOutputStream</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
+<span class="n">ClustalAlignmentUtil</span><span class="p">.</span><span class="na">writeClustalAlignment</span><span class="p">(</span><span class="n">outStream</span><span class="p">,</span> <span class="n">align</span><span class="p">);</span>
 </pre></div>
 </div>
 <hr class="docutils" />
-</div>
-<div class="section" id="a-complete-client-example">
+</section>
+<section id="a-complete-client-example">
 <span id="jabaws-conn-aln-example"></span><h3>A complete client example<a class="headerlink" href="#a-complete-client-example" title="Permalink to this headline">¶</a></h3>
 <p>Finally, a complete example of the program that connects to JABAWS Clustal service and aligns sequences using one of the Clustal web service presets. All you need for this to work is a <a class="reference external" href="../download.jsp#client">JABAWS CLI client</a>. Please make sure that the client is in the Java class path before running this example.</p>
-<div class="highlight-java"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.io.ByteArrayInputStream</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.io.FileNotFoundException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.net.URL</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">java.util.List</span><span class="o">;</span>
-
-<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="o">;</span>
-
-<span class="kn">import</span> <span class="nn">compbio.data.msa.MsaWS</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.data.sequence.Alignment</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.data.sequence.FastaSequence</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.data.sequence.SequenceUtil</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.JobSubmissionException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.LimitExceededException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.Preset</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.PresetManager</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.ResultNotAvailableException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.UnsupportedRuntimeException</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">compbio.metadata.WrongParameterException</span><span class="o">;</span>
-
-<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Example</span> <span class="o">{</span>
+<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">java.io.ByteArrayInputStream</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.io.FileNotFoundException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.net.URL</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.List</span><span class="p">;</span>
+
+<span class="kn">import</span> <span class="nn">javax.xml.namespace.QName</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">javax.xml.ws.Service</span><span class="p">;</span>
+
+<span class="kn">import</span> <span class="nn">compbio.data.msa.MsaWS</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.data.sequence.Alignment</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.data.sequence.FastaSequence</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.data.sequence.SequenceUtil</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.JobSubmissionException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.LimitExceededException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.Preset</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.PresetManager</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.ResultNotAvailableException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.UnsupportedRuntimeException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">compbio.metadata.WrongParameterException</span><span class="p">;</span>
+
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Example</span> <span class="p">{</span>
 
   <span class="cm">/*</span>
 <span class="cm">   * Input sequences for alignment</span>
@@ -513,17 +518,17 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
             <span class="o">+</span> <span class="s">&quot;LRGWGGGGRPEVFALRPAPVQVNWLAYPGTSGAPWMDYVLGDAFALPPALEPFYSEHVLRLQGAF&quot;</span>
             <span class="o">+</span> <span class="s">&quot;QPSDTSRVVAEPPSRTQCGLPEQGVVLCCFNNSYKLNPQSMARMLAVLREVPDSVLWLLSGPGEA&quot;</span>
             <span class="o">+</span> <span class="s">&quot;DARLRAFAHAQGVDAQRLVFMPKLPHPQYLARYRHADLFLDTHPYNAHTTASDALWTGCPVLTTP&quot;</span>
-            <span class="o">+</span> <span class="s">&quot;GETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRESI&quot;</span><span class="o">;</span>
+            <span class="o">+</span> <span class="s">&quot;GETFAARVAGSLNHHLGLDEMNVADDAAFVAKAVALASDPAALTALHARVDVLRRESI&quot;</span><span class="p">;</span>
 
-  <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">UnsupportedRuntimeException</span><span class="o">,</span>
-            <span class="n">LimitExceededException</span><span class="o">,</span> <span class="n">JobSubmissionException</span><span class="o">,</span>
-            <span class="n">WrongParameterException</span><span class="o">,</span> <span class="n">FileNotFoundException</span><span class="o">,</span> <span class="n">IOException</span><span class="o">,</span>
-            <span class="n">ResultNotAvailableException</span><span class="o">,</span> <span class="n">InterruptedException</span> <span class="o">{</span>
+  <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">UnsupportedRuntimeException</span><span class="p">,</span>
+            <span class="n">LimitExceededException</span><span class="p">,</span> <span class="n">JobSubmissionException</span><span class="p">,</span>
+            <span class="n">WrongParameterException</span><span class="p">,</span> <span class="n">FileNotFoundException</span><span class="p">,</span> <span class="n">IOException</span><span class="p">,</span>
+            <span class="n">ResultNotAvailableException</span><span class="p">,</span> <span class="n">InterruptedException</span> <span class="p">{</span>
 
-            <span class="n">String</span> <span class="n">qualifiedServiceName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="o">;</span>
+            <span class="n">String</span> <span class="n">qualifiedServiceName</span> <span class="o">=</span> <span class="s">&quot;http://msa.data.compbio/01/01/2010/&quot;</span><span class="p">;</span>
 
             <span class="cm">/* Make a URL pointing to web service WSDL */</span>
-            <span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="o">(</span><span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl&quot;</span><span class="o">);</span>
+            <span class="n">URL</span> <span class="n">url</span> <span class="o">=</span> <span class="k">new</span> <span class="n">URL</span><span class="p">(</span><span class="s">&quot;http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl&quot;</span><span class="p">);</span>
 
             <span class="cm">/*</span>
 <span class="cm">             * If you are making a client that connects to different web services</span>
@@ -532,38 +537,38 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
             <span class="c1">// URL url = new URL(host + &quot;/&quot; + Services.ClustalWS.toString() +</span>
             <span class="c1">// &quot;?wsdl&quot;);</span>
 
-    <span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="o">(</span><span class="n">qualifiedServiceName</span><span class="o">,</span> <span class="s">&quot;ClustalWS&quot;</span><span class="o">);</span>
-    <span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="o">.</span><span class="na">create</span><span class="o">(</span><span class="n">url</span><span class="o">,</span> <span class="n">qname</span><span class="o">);</span>
+    <span class="n">QName</span> <span class="n">qname</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QName</span><span class="p">(</span><span class="n">qualifiedServiceName</span><span class="p">,</span> <span class="s">&quot;ClustalWS&quot;</span><span class="p">);</span>
+    <span class="n">Service</span> <span class="n">serv</span> <span class="o">=</span> <span class="n">Service</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">qname</span><span class="p">);</span>
     <span class="cm">/*</span>
 <span class="cm">     * Multiple sequence alignment interface for Clustal web service</span>
 <span class="cm">     * instance</span>
 <span class="cm">     */</span>
-    <span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="o">.</span><span class="na">getPort</span><span class="o">(</span><span class="k">new</span> <span class="n">QName</span><span class="o">(</span><span class="n">qualifiedServiceName</span><span class="o">,</span> <span class="s">&quot;ClustalWS&quot;</span>
-                    <span class="o">+</span> <span class="s">&quot;Port&quot;</span><span class="o">),</span> <span class="n">MsaWS</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+    <span class="n">MsaWS</span> <span class="n">msaws</span> <span class="o">=</span> <span class="n">serv</span><span class="p">.</span><span class="na">getPort</span><span class="p">(</span><span class="k">new</span> <span class="n">QName</span><span class="p">(</span><span class="n">qualifiedServiceName</span><span class="p">,</span> <span class="s">&quot;ClustalWS&quot;</span>
+                    <span class="o">+</span> <span class="s">&quot;Port&quot;</span><span class="p">),</span> <span class="n">MsaWS</span><span class="p">.</span><span class="na">class</span><span class="p">);</span>
 
     <span class="cm">/* Get the list of available presets */</span>
-    <span class="n">PresetManager</span> <span class="n">presetman</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="na">getPresets</span><span class="o">();</span>
+    <span class="n">PresetManager</span> <span class="n">presetman</span> <span class="o">=</span> <span class="n">msaws</span><span class="p">.</span><span class="na">getPresets</span><span class="p">();</span>
 
     <span class="cm">/* Get the Preset object by preset name */</span>
     <span class="n">Preset</span> <span class="n">preset</span> <span class="o">=</span> <span class="n">presetman</span>
-                    <span class="o">.</span><span class="na">getPresetByName</span><span class="o">(</span><span class="s">&quot;Disable gap weighting (Speed-oriented)&quot;</span><span class="o">);</span>
+                    <span class="p">.</span><span class="na">getPresetByName</span><span class="p">(</span><span class="s">&quot;Disable gap weighting (Speed-oriented)&quot;</span><span class="p">);</span>
 
     <span class="cm">/*</span>
 <span class="cm">     * Load sequences in FASTA format from the file You can use something</span>
 <span class="cm">     * like new FileInputStream(&lt;filename&gt;) to load sequence from the file</span>
 <span class="cm">     */</span>
     <span class="n">List</span><span class="o">&lt;</span><span class="n">FastaSequence</span><span class="o">&gt;</span> <span class="n">fastalist</span> <span class="o">=</span> <span class="n">SequenceUtil</span>
-                    <span class="o">.</span><span class="na">readFasta</span><span class="o">(</span><span class="k">new</span> <span class="n">ByteArrayInputStream</span><span class="o">(</span><span class="n">input</span><span class="o">.</span><span class="na">getBytes</span><span class="o">()));</span>
+                    <span class="p">.</span><span class="na">readFasta</span><span class="p">(</span><span class="k">new</span> <span class="n">ByteArrayInputStream</span><span class="p">(</span><span class="n">input</span><span class="p">.</span><span class="na">getBytes</span><span class="p">()));</span>
 
     <span class="cm">/*</span>
 <span class="cm">     * Submit loaded sequences for an alignment using preset. The job</span>
 <span class="cm">     * identifier is returned by this method, you can retrieve the results</span>
 <span class="cm">     * with it sometime later.</span>
 <span class="cm">     */</span>
-    <span class="n">String</span> <span class="n">jobId</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="na">presetAlign</span><span class="o">(</span><span class="n">fastalist</span><span class="o">,</span> <span class="n">preset</span><span class="o">);</span>
+    <span class="n">String</span> <span class="n">jobId</span> <span class="o">=</span> <span class="n">msaws</span><span class="p">.</span><span class="na">presetAlign</span><span class="p">(</span><span class="n">fastalist</span><span class="p">,</span> <span class="n">preset</span><span class="p">);</span>
 
     <span class="cm">/* This method will block for the duration of the calculation */</span>
-    <span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">msaws</span><span class="o">.</span><span class="na">getResult</span><span class="o">(</span><span class="n">jobId</span><span class="o">);</span>
+    <span class="n">Alignment</span> <span class="n">alignment</span> <span class="o">=</span> <span class="n">msaws</span><span class="p">.</span><span class="na">getResult</span><span class="p">(</span><span class="n">jobId</span><span class="p">);</span>
 
     <span class="cm">/*</span>
 <span class="cm">     * This is a better way of obtaining results, it does not involve</span>
@@ -577,7 +582,7 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
     <span class="c1">// }</span>
 
     <span class="cm">/* Output the alignment to standard out */</span>
-    <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">alignment</span><span class="o">);</span>
+    <span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">alignment</span><span class="p">);</span>
 
     <span class="c1">// Alternatively, you can record retrieved alignment into the file in</span>
     <span class="c1">// ClustalW format</span>
@@ -585,89 +590,73 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
     <span class="c1">// ClustalAlignmentUtil.writeClustalAlignment(new FileOutputStream(</span>
     <span class="c1">// &quot;output.al&quot;), alignment);</span>
 
-  <span class="o">}</span>
-<span class="o">}</span>
+  <span class="p">}</span>
+<span class="p">}</span>
 </pre></div>
 </div>
 <p>For a more detailed description of all available types and their functions please refer to the <a class="reference external" href="dm_javadoc/index.html">Data Model JavaDoc</a>.</p>
 <hr class="docutils" />
-</div>
-</div>
-<div class="section" id="adding-new-web-services">
+</section>
+</section>
+<section id="adding-new-web-services">
 <span id="jabaws-new-services"></span><h2>Adding new web-services<a class="headerlink" href="#adding-new-web-services" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="brief-guide">
+<section id="brief-guide">
 <span id="jabaws-new-guide"></span><h3>Brief Guide<a class="headerlink" href="#brief-guide" title="Permalink to this headline">¶</a></h3>
 <ol class="arabic">
-<li><p class="first">Add a new executable which you&#8217;d like to wrap as a JABAWS web service to the binaries folder. If it has the source code and can be recompiled for different platforms include it under <code class="docutils literal"><span class="pre">binaries/src</span></code>. Edit <code class="docutils literal"><span class="pre">setexecutableflag.sh</span></code> and <code class="docutils literal"><span class="pre">compilebin.sh</span></code> scripts in <code class="docutils literal"><span class="pre">binaries/src</span></code> accordingly.</p>
-</li>
-<li><p class="first">Make sure that all the dependencies of the software being installed are satisfied. If there are other binaries they should be included as well. Keep the dependent binaries in a subfolder for the main executable. Update <code class="docutils literal"><span class="pre">compilebin.sh</span></code> and <code class="docutils literal"><span class="pre">setexecflag.sh</span></code> scripts accordingly.</p>
-</li>
-<li><p class="first">Make sure that the new executable does not have any hard links to its dependencies, e.g. is able to run from any installation folder and does not contain any hard coded paths.</p>
-</li>
-<li><p class="first">Describe executable in <code class="docutils literal"><span class="pre">conf/Exectuable.properties</span></code> file. The lowercase name of the wrapper should be included in the name of the property for example Clustal properties all include clustal as a part of the name e.g. <code class="docutils literal"><span class="pre">local.clustalw.bin</span></code>. The same property for MAFFT will be called <code class="docutils literal"><span class="pre">local.mafft.bin</span></code>. For more help please refer to the Executable.properties file.</p>
-</li>
-<li><p class="first">Describe the executable supported parameters in the <code class="docutils literal"><span class="pre">&lt;ExecutableName&gt;Parameters.xml</span></code>, presets in the <code class="docutils literal"><span class="pre">&lt;ExecutableName&gt;Presets.xml</span></code> and the execution limits in the <code class="docutils literal"><span class="pre">&lt;ExecutableName&gt;Limit.xml</span></code>. By convention these files are stored in <code class="docutils literal"><span class="pre">conf/settings</span></code>. All of these are optional. If the executable does not support parameters you do not have to mention the <code class="docutils literal"><span class="pre">XXXParameter.xml</span></code> file in the <code class="docutils literal"><span class="pre">Executable.properties</span></code> file at all. The same is true for Presets and Limits.</p>
-</li>
-<li><p class="first">Create a Java wrapper class for your executable. Create it within runner source directory. Examples of other wrappers can be found in <code class="docutils literal"><span class="pre">compbio.runner.msa</span></code> or in other <code class="docutils literal"><span class="pre">compbio.runner.*</span></code> packages. Wrapper should extend <code class="docutils literal"><span class="pre">SkeletalExecutable&lt;T&gt;</span></code> and implement <code class="docutils literal"><span class="pre">PipedExecutable&lt;T&gt;</span></code> if you need to pass the input or collect the results from the standard in/out. Please see Mafft code as example. Wrapper should expend <code class="docutils literal"><span class="pre">SkeletalExecutable&lt;T&gt;</span></code> if input/output can be set as a parameter for an executable. Please see the ClustalW code as example.</p>
-</li>
-<li><p class="first">Create a testcase suit for your wrapper in <code class="docutils literal"><span class="pre">testsrc</span></code> and run the test cases.</p>
-</li>
-<li><p class="first">Create parser for the output files of your executable. Suggested location <code class="docutils literal"><span class="pre">compbio.data.sequence.SequenceUtil</span></code>.</p>
-</li>
-<li><p class="first">Test the parser.</p>
-</li>
-<li><p class="first">Decide which web services interfaces your executable is going to match. For example if the executable output can be represented as SequenceAnnotation then SequenceAnnotation interface might be appropriate. For multiple sequence alignment an Msa interface should be used.</p>
-</li>
-<li><p class="first">If you find a web interface that matches your returning data type, then implement a web service which confirms to it within a webservices source folder.</p>
-</li>
-<li><p class="first">Register web service in <code class="docutils literal"><span class="pre">WEB-INF/web.xml</span></code> and <code class="docutils literal"><span class="pre">WEB-INF/sun-jaxws.xml</span></code>.</p>
-</li>
-<li><p class="first">Add generated wsdl to wsbuild.xml ant script to generate the stubs.</p>
-</li>
-<li><p class="first">Run build-server task in wsbuild file. Watch for errors. If the task fails that means that JAXB cannot serialize some of your new data structures. Add appropriate annotations to your data types. Also check that:</p>
+<li><p>Add a new executable which you’d like to wrap as a JABAWS web service to the binaries folder. If it has the source code and can be recompiled for different platforms include it under <code class="docutils literal notranslate"><span class="pre">binaries/src</span></code>. Edit <code class="docutils literal notranslate"><span class="pre">setexecutableflag.sh</span></code> and <code class="docutils literal notranslate"><span class="pre">compilebin.sh</span></code> scripts in <code class="docutils literal notranslate"><span class="pre">binaries/src</span></code> accordingly.</p></li>
+<li><p>Make sure that all the dependencies of the software being installed are satisfied. If there are other binaries they should be included as well. Keep the dependent binaries in a subfolder for the main executable. Update <code class="docutils literal notranslate"><span class="pre">compilebin.sh</span></code> and <code class="docutils literal notranslate"><span class="pre">setexecflag.sh</span></code> scripts accordingly.</p></li>
+<li><p>Make sure that the new executable does not have any hard links to its dependencies, e.g. is able to run from any installation folder and does not contain any hard coded paths.</p></li>
+<li><p>Describe executable in <code class="docutils literal notranslate"><span class="pre">conf/Exectuable.properties</span></code> file. The lowercase name of the wrapper should be included in the name of the property for example Clustal properties all include clustal as a part of the name e.g. <code class="docutils literal notranslate"><span class="pre">local.clustalw.bin</span></code>. The same property for MAFFT will be called <code class="docutils literal notranslate"><span class="pre">local.mafft.bin</span></code>. For more help please refer to the Executable.properties file.</p></li>
+<li><p>Describe the executable supported parameters in the <code class="docutils literal notranslate"><span class="pre">&lt;ExecutableName&gt;Parameters.xml</span></code>, presets in the <code class="docutils literal notranslate"><span class="pre">&lt;ExecutableName&gt;Presets.xml</span></code> and the execution limits in the <code class="docutils literal notranslate"><span class="pre">&lt;ExecutableName&gt;Limit.xml</span></code>. By convention these files are stored in <code class="docutils literal notranslate"><span class="pre">conf/settings</span></code>. All of these are optional. If the executable does not support parameters you do not have to mention the <code class="docutils literal notranslate"><span class="pre">XXXParameter.xml</span></code> file in the <code class="docutils literal notranslate"><span class="pre">Executable.properties</span></code> file at all. The same is true for Presets and Limits.</p></li>
+<li><p>Create a Java wrapper class for your executable. Create it within runner source directory. Examples of other wrappers can be found in <code class="docutils literal notranslate"><span class="pre">compbio.runner.msa</span></code> or in other <code class="docutils literal notranslate"><span class="pre">compbio.runner.*</span></code> packages. Wrapper should extend <code class="docutils literal notranslate"><span class="pre">SkeletalExecutable&lt;T&gt;</span></code> and implement <code class="docutils literal notranslate"><span class="pre">PipedExecutable&lt;T&gt;</span></code> if you need to pass the input or collect the results from the standard in/out. Please see Mafft code as example. Wrapper should expend <code class="docutils literal notranslate"><span class="pre">SkeletalExecutable&lt;T&gt;</span></code> if input/output can be set as a parameter for an executable. Please see the ClustalW code as example.</p></li>
+<li><p>Create a testcase suit for your wrapper in <code class="docutils literal notranslate"><span class="pre">testsrc</span></code> and run the test cases.</p></li>
+<li><p>Create parser for the output files of your executable. Suggested location <code class="docutils literal notranslate"><span class="pre">compbio.data.sequence.SequenceUtil</span></code>.</p></li>
+<li><p>Test the parser.</p></li>
+<li><p>Decide which web services interfaces your executable is going to match. For example if the executable output can be represented as SequenceAnnotation then SequenceAnnotation interface might be appropriate. For multiple sequence alignment an Msa interface should be used.</p></li>
+<li><p>If you find a web interface that matches your returning data type, then implement a web service which confirms to it within a webservices source folder.</p></li>
+<li><p>Register web service in <code class="docutils literal notranslate"><span class="pre">WEB-INF/web.xml</span></code> and <code class="docutils literal notranslate"><span class="pre">WEB-INF/sun-jaxws.xml</span></code>.</p></li>
+<li><p>Add generated wsdl to wsbuild.xml ant script to generate the stubs.</p></li>
+<li><p>Run build-server task in wsbuild file. Watch for errors. If the task fails that means that JAXB cannot serialize some of your new data structures. Add appropriate annotations to your data types. Also check that:</p>
 <blockquote>
 <div><ul class="simple">
-<li>you do not have interfaces to serialize, since JAXB cannot serialize them</li>
-<li>you have a default no args constructor (can be private if you do not need it)</li>
-<li>JAXB cannot serialize Java Map class, use a custom data structure instead</li>
-<li>Enum cannot be serialized as its abstract class (do not confuse with enum which is fine)</li>
-<li>Fields serialization leaves a little more space for manoeuvre. If you do this then you may accept and return interfaces, e.g. List, Map; abstract classes etc, from your methods</li>
+<li><p>you do not have interfaces to serialize, since JAXB cannot serialize them</p></li>
+<li><p>you have a default no args constructor (can be private if you do not need it)</p></li>
+<li><p>JAXB cannot serialize Java Map class, use a custom data structure instead</p></li>
+<li><p>Enum cannot be serialized as its abstract class (do not confuse with enum which is fine)</p></li>
+<li><p>Fields serialization leaves a little more space for manoeuvre. If you do this then you may accept and return interfaces, e.g. List, Map; abstract classes etc, from your methods</p></li>
 </ul>
 </div></blockquote>
 <p>If you have the data on the server side, but nothing is coming through to the client, this is a JAXB serialization problem. They tend to be very silent and thus hard to debug. Check your data structure can be serialized!</p>
 </li>
-<li><p class="first">Modify the client to work with your new web service. Update Services enumeration to include new service and ensure that all the methods of this enumeration take into account the new service. Update the client help text (<code class="docutils literal"><span class="pre">client_help.txt</span></code>) and insert it into the Constraints class.</p>
-</li>
-<li><p class="first">Test the web service with the client.</p>
-</li>
-<li><p class="first">Test on the cluster.</p>
-</li>
+<li><p>Modify the client to work with your new web service. Update Services enumeration to include new service and ensure that all the methods of this enumeration take into account the new service. Update the client help text (<code class="docutils literal notranslate"><span class="pre">client_help.txt</span></code>) and insert it into the Constraints class.</p></li>
+<li><p>Test the web service with the client.</p></li>
+<li><p>Test on the cluster.</p></li>
 </ol>
 <hr class="docutils" />
-</div>
-<div class="section" id="building-web-services-artifacts">
+</section>
+<section id="building-web-services-artifacts">
 <span id="jabaws-artifacts"></span><h3>Building web services artifacts<a class="headerlink" href="#building-web-services-artifacts" title="Permalink to this headline">¶</a></h3>
 <p>JABAWS are the standard <a class="reference external" href="http://jax-ws.java.net/">JAX-WS</a> SOAP web services, which are <a class="reference external" href="http://www.ws-i.org/">WS-I</a> basic profile compatible. This means that you could use whatever tool your language has to work with web services. Below is how you can generate portable artifacts to work with JABAWS from Java. However if programming in Java, we recommend using our client library as it provides a handful of useful methods in addition to plain data types.</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span>wsimport -keep http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wsimport -keep http://www.compbio.dundee.ac.uk/jabaws/ClustalWS?wsdl
 </pre></div>
 </div>
-<p>Server side artifacts should be rebuild whenever the data model, meta model or MSA interface were changed. To do that run build-server task from wsbuild.xml ant build file. WSDL files will be generated in <code class="docutils literal"><span class="pre">webservices/compbio/ws/server/resource</span></code> directory. It is not necessary to edit them if any of the JABAWS clients are used. JABAWS are the standard JAX-WS web services, which are WS-I basic profile compatible.</p>
+<p>Server side artifacts should be rebuild whenever the data model, meta model or MSA interface were changed. To do that run build-server task from wsbuild.xml ant build file. WSDL files will be generated in <code class="docutils literal notranslate"><span class="pre">webservices/compbio/ws/server/resource</span></code> directory. It is not necessary to edit them if any of the JABAWS clients are used. JABAWS are the standard JAX-WS web services, which are WS-I basic profile compatible.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="preparing-distributives">
+</section>
+<section id="preparing-distributives">
 <span id="jabaws-distributives"></span><h3>Preparing Distributives<a class="headerlink" href="#preparing-distributives" title="Permalink to this headline">¶</a></h3>
 <p>There are a number of ant tasks aimed for preparing distributives for download. Currently a few types of JABAWS packages are offered:</p>
 <ol class="arabic simple">
-<li>Client only (contains classes required to access JABA Web Services)</li>
-<li>Platform specific JABAWS (windows and other)</li>
-<li>JABAWS with and without binaries</li>
-<li>JABAWS framework and complete project</li>
+<li><p>Client only (contains classes required to access JABA Web Services)</p></li>
+<li><p>Platform specific JABAWS (windows and other)</p></li>
+<li><p>JABAWS with and without binaries</p></li>
+<li><p>JABAWS framework and complete project</p></li>
 </ol>
-<p>The easiest way to build all distributives is to call <code class="docutils literal"><span class="pre">build-all</span></code> ant task. There are more tasks defined in build.xml than described here. They are mostly self explanatory.</p>
+<p>The easiest way to build all distributives is to call <code class="docutils literal notranslate"><span class="pre">build-all</span></code> ant task. There are more tasks defined in build.xml than described here. They are mostly self explanatory.</p>
 <p>If you made any changes to the data model and would like to generate a complete JABAWS distro make sure you have rebuilt jaxws artifact as described below.</p>
-</div>
-</div>
-</div>
+</section>
+</section>
+</section>
 
 
            </div>
@@ -720,6 +709,7 @@ Methods and classes mentioned in the excerpt are available from the JABAWS clien
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index d1b6809..e3e9f04 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Docker Container &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="docker-container">
+  <section id="docker-container">
 <h1>Docker Container<a class="headerlink" href="#docker-container" title="Permalink to this headline">¶</a></h1>
 <p>An alternative to running the JABAWS Virtual Appliance (VA) or the JABAWS Web Application aRchive (WAR) in your local machine, is to use <a class="reference external" href="https://www.docker.com/">Docker</a> to handle all the requirements to deploy JABAWS in Tomcat. We provide a <a class="reference external" href="http://www.compbio.dundee.ac.uk/jabaws22/archive/docker/Dockerfile">Dockerfile</a>, which Docker uses to build an exact image of the required system, (i.e. Apache Tomcat server with the JABAWS WAR deployed).</p>
 <hr class="docutils" />
-<div class="section" id="installing-docker">
+<section id="installing-docker">
 <span id="docker-installing"></span><h2>Installing Docker<a class="headerlink" href="#installing-docker" title="Permalink to this headline">¶</a></h2>
 <p>In order to run JABAWS using <a class="reference external" href="https://www.docker.com/">Docker</a>, you need docker installed and running in your system. Installation instructions are provided in the <a class="reference external" href="https://docs.docker.com/engine/installation/">Docker documentation pages</a>.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="running-jabaws-with-docker">
+</section>
+<section id="running-jabaws-with-docker">
 <span id="jabaws-docker"></span><h2>Running JABAWS with Docker<a class="headerlink" href="#running-jabaws-with-docker" title="Permalink to this headline">¶</a></h2>
 <p>Once you have docker installed and running in your machine:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">docker</span> <span class="n">build</span> <span class="o">-</span><span class="n">t</span> <span class="n">jabaws</span><span class="p">:</span><span class="mf">2.2</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">compbio</span><span class="o">.</span><span class="n">dundee</span><span class="o">.</span><span class="n">ac</span><span class="o">.</span><span class="n">uk</span><span class="o">/</span><span class="n">jabaws22</span><span class="o">/</span><span class="n">archive</span><span class="o">/</span><span class="n">docker</span><span class="o">/</span><span class="n">Dockerfile</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>docker build -t jabaws:2.2 http://www.compbio.dundee.ac.uk/jabaws22/archive/docker/Dockerfile
 </pre></div>
 </div>
 <p>This will download the required Docker contexts (Tomcat, etc.) and setup JABAWS. Once the setup is finished you can run the JABAWS container with:</p>
-<div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">docker</span> <span class="n">run</span> <span class="o">--</span><span class="n">rm</span> <span class="o">-</span><span class="n">it</span> <span class="o">-</span><span class="n">p</span> <span class="mi">8080</span><span class="p">:</span><span class="mi">8080</span> <span class="n">jabaws</span><span class="p">:</span><span class="mf">2.2</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>docker run --rm -it -p <span class="m">8080</span>:8080 jabaws:2.2
 </pre></div>
 </div>
-<p>This will launch Tomcat and deploy JABAWS. By accessing <code class="docutils literal"><span class="pre">localhost:8080/jabaws/</span></code> you can verify whether the JABAWS is running properly.
+<p>This will launch Tomcat and deploy JABAWS. By accessing <code class="docutils literal notranslate"><span class="pre">localhost:8080/jabaws/</span></code> you can verify whether the JABAWS is running properly.
 You can then use your Docker JABAWS container to power your analysis using <a class="reference external" href="getting_started.html#jalview-and-the-jabaws-public-server">Jalview</a> or the <a class="reference external" href="getting_started.html#command-line-client-cli">JABAWS CLI</a>.</p>
 <hr class="docutils" />
-</div>
-</div>
+</section>
+</section>
 
 
            </div>
@@ -247,6 +252,7 @@ You can then use your Docker JABAWS container to power your analysis using <a cl
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index e8eff2b..b9ac791 100644 (file)
@@ -1,6 +1,5 @@
 
 
-
 <!DOCTYPE html>
 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -89,7 +92,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 06b1f5d..64a39e9 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Getting Started &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#jabaws-benefits">JABAWS Benefits</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="getting-started">
+  <section id="getting-started">
 <h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
 <p><em>JABAWS</em> is a collection of web services for bioinformatics, and currently provides services that make it easy to access well-known multiple sequence alignment and protein disorder prediction programs (see the list of <a class="reference external" href="included_tools.html">currently supported programs</a>). Future versions of JABAWS will incorporate other tools.</p>
 <p>JABAWS consists of a server and a client, but unlike most bioinformatics web-service systems, you can download and run both parts on your own computer! If you want a server just for yourself, then download and install the <a class="reference external" href="va.html">JABAWS Virtual Appliance (VA)</a>. It requires no configuration and is simple to install. If you want to install JABAWS for your lab or institution then download the <a class="reference external" href="war.html">JABAWS Web Application aRchive (WAR)</a>. It is slightly more complicated to configure but is very straightforward too. Finally, if you want to script against any version of JABAWS or are interested in writing your own client, the <a class="reference external" href="client.html">JABAWS Command Line Interface (CLI)</a> client is what you need.</p>
 <p>The public server based on JABAWS 2.1 at the <a class="reference external" href="http://www.compbio.dundee.ac.uk/">University of Dundee</a> has been in production since October 2013 and serviced over 442,000 jobs for users worldwide.</p>
 <p><strong>New:</strong> You can now run JABAWS with <a class="reference external" href="https://www.docker.com/">Docker</a>. <a class="reference external" href="docker.html">Click here to learn more</a>.</p>
 <hr class="docutils" />
-<div class="section" id="jabaws-benefits">
+<section id="jabaws-benefits">
 <span id="benefits"></span><h2>JABAWS Benefits<a class="headerlink" href="#jabaws-benefits" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li>Can be deployed on most operating systems, as a VMware or compatible Virtual Appliance, as well as a Tomcat Java Web Application.</li>
-<li>Comes complete with sources and binaries for all the bioinformatics programs that it runs.</li>
-<li>Can operate as a stand alone server or one that submits jobs to a cluster via <cite>DRMAA</cite>.</li>
-<li>Easy to access from <a class="reference external" href="http://www.jalview.org/">Jalview</a> using its graphical client, or using the JABAWS command line client.</li>
-<li>Clients can submit jobs to any JABAWS servers that they might want to access, such as the one running on your local computer, your lab&#8217;s server, or the publicly available services at the <a class="reference external" href="http://www.compbio.dundee.ac.uk/">University of Dundee</a>.</li>
-<li>Local or intranet installation eliminates any security concerns you might have about sending sensitive data over the internet.</li>
-<li>Wide range of configuration options to control size of jobs accepted by a server, and the command line options available for the program run by a service.</li>
+<li><p>Can be deployed on most operating systems, as a VMware or compatible Virtual Appliance, as well as a Tomcat Java Web Application.</p></li>
+<li><p>Comes complete with sources and binaries for all the bioinformatics programs that it runs.</p></li>
+<li><p>Can operate as a stand alone server or one that submits jobs to a cluster via <cite>DRMAA</cite>.</p></li>
+<li><p>Easy to access from <a class="reference external" href="http://www.jalview.org/">Jalview</a> using its graphical client, or using the JABAWS command line client.</p></li>
+<li><p>Clients can submit jobs to any JABAWS servers that they might want to access, such as the one running on your local computer, your lab’s server, or the publicly available services at the <a class="reference external" href="http://www.compbio.dundee.ac.uk/">University of Dundee</a>.</p></li>
+<li><p>Local or intranet installation eliminates any security concerns you might have about sending sensitive data over the internet.</p></li>
+<li><p>Wide range of configuration options to control size of jobs accepted by a server, and the command line options available for the program run by a service.</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="jabaws-distributions">
+</section>
+<section id="jabaws-distributions">
 <span id="distributions"></span><h2>JABAWS Distributions<a class="headerlink" href="#jabaws-distributions" title="Permalink to this headline">¶</a></h2>
 <div class="admonition tip">
-<p class="first admonition-title">Tip</p>
-<p class="last">To help you choose the JABAWS distribution that better suits your needs read on the quickstart guides below.</p>
+<p class="admonition-title">Tip</p>
+<p>To help you choose the JABAWS distribution that better suits your needs read on the quickstart guides below.</p>
 </div>
-<p><strong>I want to use JABAWS for...</strong></p>
+<p><strong>I want to use JABAWS for…</strong></p>
 <ul class="simple">
-<li><a class="reference internal" href="#jabaws-jalview-public"><span class="std std-ref">Jalview and the JABAWS Public Server</span></a> - Running JABAWS services through Jalview on the JABAWS <em>public</em> server</li>
-<li><a class="reference internal" href="#jabaws-cli"><span class="std std-ref">Command Line Client (CLI)</span></a> - Accessing a <em>public</em> or <em>private</em> JABAWS server using the JABAWS client</li>
-<li><a class="reference internal" href="#jabaws-war"><span class="std std-ref">Web Application aRchive (WAR)</span></a> - Running JABAWS for my group, lab, or organization on the <em>local</em> infrastructure</li>
-<li><a class="reference internal" href="#jabaws-va"><span class="std std-ref">Virtual Appliance (VA)</span></a> - Running JABAWS services through Jalview or the CLI client on a <em>private</em> virtual machine server</li>
+<li><p><a class="reference internal" href="#jabaws-jalview-public"><span class="std std-ref">Jalview and the JABAWS Public Server</span></a> - Running JABAWS services through Jalview on the JABAWS <em>public</em> server</p></li>
+<li><p><a class="reference internal" href="#jabaws-cli"><span class="std std-ref">Command Line Client (CLI)</span></a> - Accessing a <em>public</em> or <em>private</em> JABAWS server using the JABAWS client</p></li>
+<li><p><a class="reference internal" href="#jabaws-war"><span class="std std-ref">Web Application aRchive (WAR)</span></a> - Running JABAWS for my group, lab, or organization on the <em>local</em> infrastructure</p></li>
+<li><p><a class="reference internal" href="#jabaws-va"><span class="std std-ref">Virtual Appliance (VA)</span></a> - Running JABAWS services through Jalview or the CLI client on a <em>private</em> virtual machine server</p></li>
 </ul>
 <hr class="docutils" />
-<div class="section" id="jalview-and-the-jabaws-public-server">
+<section id="jalview-and-the-jabaws-public-server">
 <span id="jabaws-jalview-public"></span><h3>Jalview and the JABAWS Public Server<a class="headerlink" href="#jalview-and-the-jabaws-public-server" title="Permalink to this headline">¶</a></h3>
-<p><a class="reference external" href="http://www.jalview.org/">Jalview</a>, a multiple sequence alignment and analysis application, is a good example of a graphical JABAWS client. This client uses the same functionality as the <a class="reference external" href="client.html">JABAWS Command Line Interface (CLI)</a> client, but instead allows JABAWS services to be accessed in a more user-friendly manner, through a graphical user interface. In this way, this is the easiest way to run JABAWS web services. Simply launch <a class="reference external" href="http://www.jalview.org/">Jalview</a> and run any of the methods provided under the &#8216;Web Service&#8217; menu. Jalview uses the public JABAWS server by default. If you are concerned about privacy or want to run sensitive analysis on your own hardware, you can either setup a local <a class="reference external" href="va.html">JABAWS Virtual Appliance (VA)</a> or configure the <a class="reference external" href="war.html">JABAWS Web Application aRchive (WAR)</a> in your infrastructure.</p>
+<p><a class="reference external" href="http://www.jalview.org/">Jalview</a>, a multiple sequence alignment and analysis application, is a good example of a graphical JABAWS client. This client uses the same functionality as the <a class="reference external" href="client.html">JABAWS Command Line Interface (CLI)</a> client, but instead allows JABAWS services to be accessed in a more user-friendly manner, through a graphical user interface. In this way, this is the easiest way to run JABAWS web services. Simply launch <a class="reference external" href="http://www.jalview.org/">Jalview</a> and run any of the methods provided under the ‘Web Service’ menu. Jalview uses the public JABAWS server by default. If you are concerned about privacy or want to run sensitive analysis on your own hardware, you can either setup a local <a class="reference external" href="va.html">JABAWS Virtual Appliance (VA)</a> or configure the <a class="reference external" href="war.html">JABAWS Web Application aRchive (WAR)</a> in your infrastructure.</p>
 <a class="reference internal image-reference" href="_images/aligment.png"><img alt="_images/aligment.png" class="align-left" src="_images/aligment.png" style="width: 608.0px; height: 318.0px;" /></a>
 <hr class="docutils" />
-</div>
-<div class="section" id="command-line-client-cli">
+</section>
+<section id="command-line-client-cli">
 <span id="jabaws-cli"></span><h3>Command Line Client (CLI)<a class="headerlink" href="#command-line-client-cli" title="Permalink to this headline">¶</a></h3>
-<p>This is a single Java archive which contains the JABAWS command line interface (CLI) client. It allows anyone who wants to connect to the JABAWS web-services running at the University of Dundee&#8217;s Public Server, or to run a local private JABAWS server from their own software. You can read more about how to use JABAWS command line (CLI) client given in the <a class="reference external" href="client.html">CLI documentation pages</a>, but a brief instructions are given below:</p>
+<p>This is a single Java archive which contains the JABAWS command line interface (CLI) client. It allows anyone who wants to connect to the JABAWS web-services running at the University of Dundee’s Public Server, or to run a local private JABAWS server from their own software. You can read more about how to use JABAWS command line (CLI) client given in the <a class="reference external" href="client.html">CLI documentation pages</a>, but a brief instructions are given below:</p>
 <ol class="arabic">
-<li><p class="first">Download the <a class="reference external" href="../download.jsp#client">Client Jar file</a></p>
-</li>
-<li><p class="first">Download and install <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html">Java</a> (version 1.7)</p>
-</li>
-<li><p class="first">Provided that you have the Java ready to run, you can get command line help by changing to the directory where you downloaded the client jar, and typing:</p>
+<li><p>Download the <a class="reference external" href="../download.jsp#client">Client Jar file</a></p></li>
+<li><p>Download and install <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html">Java</a> (version 1.7)</p></li>
+<li><p>Provided that you have the Java ready to run, you can get command line help by changing to the directory where you downloaded the client jar, and typing:</p>
 <blockquote>
-<div><div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="n">jabaws</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="mf">2.2</span><span class="o">.</span><span class="mf">0.</span><span class="n">jar</span>
+<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar jabaws-full-client-2.2.0.jar
 </pre></div>
 </div>
 </div></blockquote>
 </ol>
 <p>The JABA Web Services are WS-I compliant. This means that you can access them from any language that has libraries or functions for consuming interoperable SOAP web services. More information on how to develop software that access JABAWS services is provided in the <a class="reference external" href="develop.html#accessing-jabaws-from-your-program">documentation pages</a>.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="web-application-archive-war">
+</section>
+<section id="web-application-archive-war">
 <span id="jabaws-war"></span><h3>Web Application aRchive (WAR)<a class="headerlink" href="#web-application-archive-war" title="Permalink to this headline">¶</a></h3>
 <p>The JABAWS Web Application aRchive (WAR) is for anyone who wants to run JABAWS for their group, lab or organization, or wants to enable their local JABAWS server to use the cluster or perform very large tasks. Complete documentation is provided in the <a class="reference external" href="war.html">WAR documentation pages</a>, but brief instructions are given below:</p>
 <ol class="arabic">
-<li><p class="first">Download the <a class="reference external" href="../download.jsp#war">JABAWS WAR file</a></p>
-</li>
-<li><p class="first">Download and install <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a></p>
+<li><p>Download the <a class="reference external" href="../download.jsp#war">JABAWS WAR file</a></p></li>
+<li><p>Download and install <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a></p>
 <blockquote>
 <div><p>You will need at least Tomcat version 5.5 of (we would recommend version 8.5) and at least <cite>Java</cite> 1.7 (i.e. JAVA 7).</p>
 </div></blockquote>
 </li>
-<li><p class="first">Drop the JABAWS WAR file into <code class="docutils literal"><span class="pre">tomcat/webapps</span></code> directory.</p>
-</li>
-<li><p class="first">(Re)start the Tomcat.</p>
-</li>
-<li><p class="first">Once the tomcat has started, it should automatically unpack the WAR into the webapps directory (if it doesn&#8217;t, simply unpack the WAR archive).</p>
-</li>
-<li><p class="first">If you are on Mac or other unix-like architecture with GNU compilers available or you&#8217;d like to get a maximum performance</p>
+<li><p>Drop the JABAWS WAR file into <code class="docutils literal notranslate"><span class="pre">tomcat/webapps</span></code> directory.</p></li>
+<li><p>(Re)start the Tomcat.</p></li>
+<li><p>Once the tomcat has started, it should automatically unpack the WAR into the webapps directory (if it doesn’t, simply unpack the WAR archive).</p></li>
+<li><p>If you are on Mac or other unix-like architecture with GNU compilers available or you’d like to get a maximum performance</p>
 <blockquote>
-<div><p><code class="docutils literal"><span class="pre">cd</span></code> to <code class="docutils literal"><span class="pre">webapps/jabaws/binaries/src/</span></code> and execute <code class="docutils literal"><span class="pre">./compilebin.sh</span></code> script to compile all binaries JABAWS depends on.</p>
+<div><p><code class="docutils literal notranslate"><span class="pre">cd</span></code> to <code class="docutils literal notranslate"><span class="pre">webapps/jabaws/binaries/src/</span></code> and execute <code class="docutils literal notranslate"><span class="pre">./compilebin.sh</span></code> script to compile all binaries JABAWS depends on.</p>
 </div></blockquote>
 </li>
 </ol>
 <p><strong>Testing</strong></p>
 <p>You can test that your JABAWS server is working in several ways.</p>
 <ol class="arabic">
-<li><p class="first">Visit Services Status page available from the JABAWS main page using your web browser.</p>
-</li>
-<li><p class="first">If you are working on the command line, then use the command line client shipped with the JABAWS war to test it by running:</p>
+<li><p>Visit Services Status page available from the JABAWS main page using your web browser.</p></li>
+<li><p>If you are working on the command line, then use the command line client shipped with the JABAWS war to test it by running:</p>
 <blockquote>
 <div><blockquote>
-<div><div class="code bash highlight-default"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">jar</span> <span class="o">&lt;</span><span class="n">Path</span> <span class="n">to</span> <span class="n">tomcat</span> <span class="n">WebApp</span> <span class="n">directory</span><span class="o">&gt;/</span><span class="n">jabaws</span><span class="o">/</span><span class="n">WEB</span><span class="o">-</span><span class="n">INF</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">jabaws</span><span class="o">-</span><span class="n">client</span><span class="o">.</span><span class="n">jar</span> <span class="o">-</span><span class="n">h</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">8080</span><span class="o">/</span><span class="n">jabaws</span>
+<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>java -jar &lt;Path to tomcat WebApp directory&gt;/jabaws/WEB-INF/lib/jabaws-client.jar -h<span class="o">=</span>http://localhost:8080/jabaws
 </pre></div>
 </div>
 </div></blockquote>
-<p>In this example we assumed that your JABAWS server URL is <code class="docutils literal"><span class="pre">http://localhost:8080</span></code> and JABAWS context path is <em>jabaws</em></p>
+<p>In this example we assumed that your JABAWS server URL is <code class="docutils literal notranslate"><span class="pre">http://localhost:8080</span></code> and JABAWS context path is <em>jabaws</em></p>
 </div></blockquote>
 </li>
-<li><p class="first">Alternately, you can point Jalview at your new server:</p>
+<li><p>Alternately, you can point Jalview at your new server:</p>
 <blockquote>
 <div><ol class="arabic simple">
-<li>Launch the desktop version of <a class="reference external" href="http://www.jalview.org/">Jalview</a></li>
-<li>Open the Jalview desktop&#8217;s preferences panel (from the Tools-&gt;Preferences menu option), elect the Webservices panel and press the New Service URL button.</li>
-<li>Enter the URL for the tomcat server, including the context path for the JABAWS web app (e.g. <a class="reference external" href="http://localhost:8080/jabaws">http://localhost:8080/jabaws</a>).</li>
+<li><p>Launch the desktop version of <a class="reference external" href="http://www.jalview.org/">Jalview</a></p></li>
+<li><p>Open the Jalview desktop’s preferences panel (from the Tools-&gt;Preferences menu option), elect the Webservices panel and press the New Service URL button.</p></li>
+<li><p>Enter the URL for the tomcat server, including the context path for the JABAWS web app (e.g. <a class="reference external" href="http://localhost:8080/jabaws">http://localhost:8080/jabaws</a>).</p></li>
 </ol>
 </div></blockquote>
 </li>
 </ol>
 <hr class="docutils" />
-</div>
-<div class="section" id="virtual-appliance-va">
+</section>
+<section id="virtual-appliance-va">
 <span id="jabaws-va"></span><h3>Virtual Appliance (VA)<a class="headerlink" href="#virtual-appliance-va" title="Permalink to this headline">¶</a></h3>
 <p>The Virtual Appliance (VA) package allows you to run a JABAWS server installed on <a class="reference external" href="https://www.turnkeylinux.org/tomcat">TurnKey Linux</a> as a virtual machine on your laptop or desktop computer. A complete guide to the JABAWS VA is given in the <a class="reference external" href="va.html">VA documentation pages</a>, but for the impatient, brief instructions are given below:</p>
 <p>If you work on Windows, Linux or Unix:</p>
 <ol class="arabic simple">
-<li>Download <a class="reference external" href="../download.jsp#va">JABAWS Virtual Appliance</a></li>
-<li>Download and install <a class="reference external" href="http://www.vmware.com/products/player">VMWare Player</a></li>
-<li>Unpack the JABAWS virtual appliance and open it with VMware Player</li>
+<li><p>Download <a class="reference external" href="../download.jsp#va">JABAWS Virtual Appliance</a></p></li>
+<li><p>Download and install <a class="reference external" href="http://www.vmware.com/products/player">VMWare Player</a></p></li>
+<li><p>Unpack the JABAWS virtual appliance and open it with VMware Player</p></li>
 </ol>
 <p>If you work on Mac do the same using <a class="reference external" href="http://www.vmware.com/products/fusion/overview.html">VMware Fusion</a>.</p>
 <p><strong>Testing</strong></p>
 <p>To check that your JABAWS virtual appliance is working visit the Services Status page available from the main JABAWS menu. For this enter the JABAWS URL for your new server into a web browser. This is shown once the appliance is booted up.</p>
 <p>Alternatively you can use Jalview to complete the testing.</p>
 <ol class="arabic simple">
-<li>Launch the desktop version of <a class="reference external" href="http://www.jalview.org/">Jalview</a></li>
-<li>Open the Jalview desktop&#8217;s preferences panel (from the Tools-&gt;Preferences menu option), select the <code class="docutils literal"><span class="pre">Webservices</span></code> panel and press the <code class="docutils literal"><span class="pre">New</span> <span class="pre">Service</span> <span class="pre">URL</span></code> button.</li>
-<li>Enter the JABAWS URL for your new server. This is shown once the appliance is booted up.</li>
+<li><p>Launch the desktop version of <a class="reference external" href="http://www.jalview.org/">Jalview</a></p></li>
+<li><p>Open the Jalview desktop’s preferences panel (from the Tools-&gt;Preferences menu option), select the <code class="docutils literal notranslate"><span class="pre">Webservices</span></code> panel and press the <code class="docutils literal notranslate"><span class="pre">New</span> <span class="pre">Service</span> <span class="pre">URL</span></code> button.</p></li>
+<li><p>Enter the JABAWS URL for your new server. This is shown once the appliance is booted up.</p></li>
 </ol>
-</div>
-</div>
-</div>
+</section>
+</section>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index a7ba7a5..320b46e 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Included Tools &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Included Tools</a><ul>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="included-tools">
+  <section id="included-tools">
 <h1>Included Tools<a class="headerlink" href="#included-tools" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="multiple-sequence-alignment">
+<section id="multiple-sequence-alignment">
 <span id="msa"></span><h2>Multiple Sequence Alignment<a class="headerlink" href="#multiple-sequence-alignment" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li><a class="reference external" href="http://www.clustal.org/omega">Clustal Omega</a> (version 1.2.4)</li>
-<li><a class="reference external" href="http://www.clustal.org/clustal2">ClustalW</a> (version 2.1)</li>
-<li><a class="reference external" href="http://align.bmr.kyushu-u.ac.jp/mafft/software/">Mafft</a> (version 7.310)</li>
-<li><a class="reference external" href="http://www.drive5.com/muscle">Muscle</a> (version 3.8.31)</li>
-<li><a class="reference external" href="http://www.tcoffee.org/Projects_home_page/t_coffee_home_page.html">T-coffee</a> (version 11.00.8cbe486)</li>
-<li><a class="reference external" href="http://probcons.stanford.edu/">Probcons</a> (version 1.12)</li>
-<li><a class="reference external" href="http://msaprobs.sourceforge.net/">MSAProbs</a> (version 0.9.7)</li>
-<li><a class="reference external" href="http://sourceforge.net/projects/glprobs/">GLProbs</a> (version 0.9.7)</li>
+<li><p><a class="reference external" href="http://www.clustal.org/omega">Clustal Omega</a> (version 1.2.4)</p></li>
+<li><p><a class="reference external" href="http://www.clustal.org/clustal2">ClustalW</a> (version 2.1)</p></li>
+<li><p><a class="reference external" href="http://align.bmr.kyushu-u.ac.jp/mafft/software/">Mafft</a> (version 7.310)</p></li>
+<li><p><a class="reference external" href="http://www.drive5.com/muscle">Muscle</a> (version 3.8.31)</p></li>
+<li><p><a class="reference external" href="http://www.tcoffee.org/Projects_home_page/t_coffee_home_page.html">T-coffee</a> (version 11.00.8cbe486)</p></li>
+<li><p><a class="reference external" href="http://probcons.stanford.edu/">Probcons</a> (version 1.12)</p></li>
+<li><p><a class="reference external" href="http://msaprobs.sourceforge.net/">MSAProbs</a> (version 0.9.7)</p></li>
+<li><p><a class="reference external" href="http://sourceforge.net/projects/glprobs/">GLProbs</a> (version 0.9.7)</p></li>
 </ul>
-</div>
-<div class="section" id="protein-disorder-prediction">
+</section>
+<section id="protein-disorder-prediction">
 <span id="pdis"></span><h2>Protein Disorder Prediction<a class="headerlink" href="#protein-disorder-prediction" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li><a class="reference external" href="http://dis.embl.de/">DisEMBL</a> (version 1.5)</li>
-<li><a class="reference external" href="http://iupred.enzim.hu">IUPred</a> (version 1.0)</li>
-<li>Jronn - Java implementation of <a class="reference external" href="http://www.strubi.ox.ac.uk/RONN">Ronn</a> (version 3.1)</li>
-<li><a class="reference external" href="http://globplot.embl.de/">GlobPlot</a> (version 2.3)</li>
+<li><p><a class="reference external" href="http://dis.embl.de/">DisEMBL</a> (version 1.5)</p></li>
+<li><p><a class="reference external" href="http://iupred.enzim.hu">IUPred</a> (version 1.0)</p></li>
+<li><p>Jronn - Java implementation of <a class="reference external" href="http://www.strubi.ox.ac.uk/RONN">Ronn</a> (version 3.1)</p></li>
+<li><p><a class="reference external" href="http://globplot.embl.de/">GlobPlot</a> (version 2.3)</p></li>
 </ul>
-</div>
-<div class="section" id="amino-acid-conservation">
+</section>
+<section id="amino-acid-conservation">
 <span id="aac"></span><h2>Amino Acid Conservation<a class="headerlink" href="#amino-acid-conservation" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li><a class="reference external" href="http://www.compbio.dundee.ac.uk/aacon">AACon</a> (version 1.1)</li>
+<li><p><a class="reference external" href="http://www.compbio.dundee.ac.uk/aacon">AACon</a> (version 1.1)</p></li>
 </ul>
-</div>
-<div class="section" id="rna-secondary-structure">
+</section>
+<section id="rna-secondary-structure">
 <span id="rnass"></span><h2>RNA Secondary Structure<a class="headerlink" href="#rna-secondary-structure" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
-<li>RNAalifold from <a class="reference external" href="http://www.tbi.univie.ac.at/RNA">ViennaRNA</a> (version 2.0)</li>
+<li><p>RNAalifold from <a class="reference external" href="http://www.tbi.univie.ac.at/RNA">ViennaRNA</a> (version 2.0)</p></li>
 </ul>
-</div>
-</div>
+</section>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 2761ad9..7b19fb3 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Welcome to JABAWS’s documentation! &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -89,7 +94,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
     
       <li><a href="#">Docs</a> &raquo;</li>
         
-      <li>Welcome to JABAWS&#8217;s documentation!</li>
+      <li>Welcome to JABAWS’s documentation!</li>
     
     
       <li class="wy-breadcrumbs-aside">
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="welcome-to-jabaws-s-documentation">
-<h1>Welcome to JABAWS&#8217;s documentation!<a class="headerlink" href="#welcome-to-jabaws-s-documentation" title="Permalink to this headline">¶</a></h1>
+  <section id="welcome-to-jabaws-s-documentation">
+<h1>Welcome to JABAWS’s documentation!<a class="headerlink" href="#welcome-to-jabaws-s-documentation" title="Permalink to this headline">¶</a></h1>
 <p>JABAWS documentation is also available in <em>pdf</em>. <a class="reference external" href="./jabaws_manual.pdf">Download it here</a>!</p>
 <div class="toctree-wrapper compound">
-<p class="caption"><span class="caption-text">Contents:</span></p>
+<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="getting_started.html#jabaws-benefits">JABAWS Benefits</a></li>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="citations.html">Citations</a></li>
 <li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="changelog.html#version-2-2-1-released-16th-dec-2021">Version 2.2.1 (Released 16th Dec 2021)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="changelog.html#version-2-2-released-18-august-2017">Version 2.2 (Released 18 August 2017)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="changelog.html#version-2-1-released-1st-oct-2013">Version 2.1 (Released 1st Oct 2013)</a></li>
 <li class="toctree-l2"><a class="reference internal" href="changelog.html#version-2-0-1-released-2nd-jul-2013">Version 2.0.1 (Released 2nd Jul 2013)</a></li>
 </div>
 <hr class="docutils" />
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This is an open source project. If you want to contribute or report an issue have a look at our  <a class="reference external" href="https://source.jalview.org/crucible/changelog/jabaws">Git-tracker</a>.</p>
-</div>
+<p class="admonition-title">Note</p>
+<p>This is an open source project. If you want to contribute or report an issue have a look at our  <a class="reference external" href="https://source.jalview.org/crucible/changelog/jabaws">Git-tracker</a>.</p>
 </div>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 38005b2..e606d1d 100644 (file)
Binary files a/website/docs/objects.inv and b/website/docs/objects.inv differ
index 1064a23..9fc5825 100644 (file)
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -88,7 +92,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 62ce46d..eb04089 100644 (file)
@@ -1 +1 @@
-Search.setIndex({docnames:["advanced","changelog","citations","client","develop","docker","getting_started","included_tools","index","stats","va","war"],envversion:51,filenames:["advanced.rst","changelog.rst","citations.rst","client.rst","develop.rst","docker.rst","getting_started.rst","included_tools.rst","index.rst","stats.rst","va.rst","war.rst"],objects:{},objnames:{},objtypes:{},terms:{"0_17":0,"168h":9,"16th":8,"1st":8,"2nd":8,"378m":10,"512m":10,"6000m":0,"8cbe486":[1,7],"abstract":4,"boolean":4,"byte":[0,9],"case":[0,4,9,10],"class":[0,4],"default":[0,1,3,4,6,9,10],"enum":4,"export":0,"f\u00e1bio":2,"final":[0,4,6],"function":[0,3,6,8,11],"import":[2,4],"long":[0,4],"new":[0,1,3,6,8,10,11],"public":[4,8,11],"return":[0,1,4],"static":[0,4],"throw":4,"true":[0,4,9,11],"try":[0,11],"void":4,"while":4,Adding:8,DNS:10,For:[0,3,6,8,9,10,11],NOT:0,PBS:11,That:10,The:[0,1,3,6,8,9,10,11],Then:0,There:[0,4,9],These:[0,1,11],Use:4,Using:[0,3],aacon:[1,7],aaconw:[0,3],aamatrix:0,abandon:9,abil:4,abl:[0,1,3,4,9,10,11],about:[0,4,6,10,11],abov:[0,3,4,9,10,11],absolut:0,accept:[4,6,8,9],access:[0,1,3,5,6,8,10,11],accesslogvalv:0,accomplish:4,accord:0,accordingli:[0,4],account:[0,1,4],achiev:0,acid:[0,1,8],action:3,activ:0,actual:4,add:[4,10,11],added:[0,11],addit:[0,1,4],address:[0,10],adjust:0,admin:[9,10],administr:9,advanc:[8,10],advantag:10,after:[0,4,9,10,11],again:0,against:[4,6],aim:4,alexand:2,alig:1,align:[0,1,2,3,6,8,10,11],all:[0,1,3,4,5,6,9,10,11],all_cluster_independent_test:4,all_cluster_independent_windows_only_test:4,allow:[0,1,2,3,6,9,10,11],allowlink:9,alon:6,alreadi:[0,11],also:[0,1,3,4,8,9,10],altern:[0,4,5,6,11],amazon:1,amd64:0,ami:1,amino:[0,1,8],amount:[0,9,10],analog:0,analysi:[0,1,2,5,6],analyt:[1,8],ani:[0,3,4,6,10,11],annot:4,anonym:0,anoth:[3,4,11],ant:[0,4],antiresourcelock:[9,11],anyon:[4,6],anyth:0,anywher:0,apach:[0,4,5,6,9,11],aparamet:3,apart:10,api:[1,3,8],app:6,appli:0,applianc:[5,8,9],applic:[0,1,3,5,8,10],appreci:0,appropri:[0,4],aptrvrskgplrvgfvsngfgahptglltvalfealqrrqpdlqmhlfatsgddgstlrtrlaqa:4,architectur:[0,6,11],archiv:[4,5,8,10],arg:4,argument:4,around:4,arraylist:4,artifact:8,ask:10,assum:[0,6,11],asynchron:[0,9],attempt:4,august:8,authent:[0,9],auto:10,autogener:0,autom:0,automat:[0,6,9,11],avail:[0,1,3,4,6,8,9,10,11],averag:0,avoid:[0,4,11],awstat:0,backward:1,balanc:8,bar:[3,4],barton:2,base:[0,6,9,10,11],basic:[0,3,4,11],batch:11,bear:10,becaus:[3,4,10],been:[1,3,4,6,9,10],befor:4,being:4,below:[0,1,3,4,6,9,10,11],benefit:8,besid:4,best:[0,10],better:[4,6,11],between:[0,4],bigger:0,bigmem:0,bin:[0,4],binari:[4,6,8,11],bind:0,bioinformat:[0,2,6,10],bit:10,black:0,block:4,boot:[6,10],both:[0,1,3,6,11],bottom:[4,9],boundari:4,box:[0,10],bridg:10,brief:[6,8],browser:[0,6],btr304:2,bug:1,build:[0,5,8,11],bump:1,bundl:0,busi:0,button:6,bytearrayinputstream:4,cach:1,calcul:[0,1,8,9,10],call:[0,1,3,4,11],caller:4,can:[0,3,4,5,6,9,10,11],cancel:[4,9],canceljob:4,cannot:[3,4,10],capac:11,catalina:[0,9,11],caution:4,cengin:0,chang:[0,1,3,4,6,9,10],changelog:8,charact:0,chase:0,check:[0,1,3,6,8,10,11],checker:0,chmod:0,choos:[0,6,10],chosen:0,chunk:4,chunkhold:4,citat:8,cite:2,clariti:3,classnam:0,clean:1,cli:[4,5,8],click:[6,10],client:[0,1,8,10],client_help:4,clone:4,cloud:1,clustal:[1,3,4,7,9],clustalalignmentutil:4,clustalow:[0,3],clustalw2:0,clustalw:[0,1,3,4,7],clustalwsport:4,clustengin:0,cluster:[4,6,8,9,11],clusterengin:0,code:[0,3,8,11],coffe:[0,1,7],collect:[0,4,6,9],collector:9,color:0,column:9,come:[0,3,4,6,9,11],command:[0,8,10],comment:0,commerci:10,common:0,commun:[1,10],compar:1,compat:[1,4,6,11],compbio:[0,3,4,5],compil:[4,6,8,11],compilebin:[0,4,6],complain:0,complet:[0,6,8,9,11],compli:4,compliant:[0,3,6,11],complic:6,complil:4,complile_with_debug:4,compon:9,comput:[6,10],concern:6,condor:11,conf:[0,4,9,11],config:0,configur:[1,4,6,8,11],confirm:4,confus:4,connect:[0,6,8,10],conserv:[0,1,2,8],consid:9,consist:[4,6],consol:[3,10],constant:3,constraint:4,construct:4,constructor:4,consult:[9,11],consum:[3,6],contain:[0,1,4,6,8,9],content:[3,8,11],context:[0,3,5,6,9,11],contini:4,continu:2,contribut:[4,8],control:[3,4,6],convent:4,copi:[9,10],core:[0,10,11],correctli:0,correspond:0,could:[0,1,3,4,11],couldn:0,coupl:0,cours:10,cpu:[0,10],crawler:9,creat:[0,4,9,10],credenti:10,css:0,current:[0,1,4,6,11],custom:[3,8],customalign:4,customsuit:4,customtest:4,dai:9,daniel:2,darlrafahaqgvdaqrlvfmpklphpqylaryrhadlfldthpynahttasdalwtgcpvlttp:4,data:[0,4,6,10],databas:[0,4,9],datamodel:4,date:[0,3,9,11],deal:[1,10],dealt:11,debian:10,debug:[0,4],dec:8,decid:[0,4],dedic:1,defin:[1,3,4,8,9],definit:0,delet:1,demand:4,depend:[0,4,6,9,11],deploi:[0,4,5,6,9,10,11],deploy:[0,11],depth:0,describ:[0,4,9,11],descript:[0,1,4,9],descriptor:[0,11],design:[1,4],desktop:6,detail:[0,3,4,8,11],dev2:0,develop:[3,6,8],dhcp:10,did:0,differ:[0,3,4,10,11],directli:[0,4,10],directori:[0,1,4,6,8,11],disabl:[0,4,9],discoveri:4,disembl:[1,7],disemblw:[0,3],disk:[10,11],disord:[0,1,2,6,8],displai:[4,9,10],distribut:[0,1,2,8,10,11],distro:4,divers:1,dm_javadoc:0,doc:4,docker:[1,6,8],dockerfil:5,document:[0,1,3,4,5,6,11],doe:[0,4,9,10],doesn:6,doi:2,doing:[0,4],done:[0,1,3,4,9],doubt:0,download:[0,1,3,4,5,6,8],dpaaltalharvdvlrresgvfemdgfaddfgallqalarrhgwlgi:4,drive:10,drmaa:[0,6,11],drop:[1,6,11],due:[1,9],dunde:[0,4,5,6],durat:4,dure:9,each:[0,1,4,9],eas:1,easi:[4,6],easier:10,easiest:[0,4,6],ec2:1,eclips:4,edit:[0,4,10],edu:3,eight:4,either:[0,3,6],elect:6,elimin:6,elsewher:0,empti:9,enabl:[0,1,6,9,10,11],encod:[0,9,11],encourag:[1,4],end:0,engin:[1,4,8,9,11],ensur:4,enter:[4,6],enumer:4,env:0,environ:[4,8,10,11],environment:4,equal:3,equip:0,error:[0,4,9],especi:0,etc:[0,3,4,5],evalu:0,even:0,everi:[1,4,9],everyth:0,exact:[0,5],exactli:[0,3,4],examin:0,exampl:[0,6,8,9,11],excerpt:4,excess:[0,4],exclud:[4,9],exec_nam:0,exectu:4,execut:[1,3,4,6,8,11],executablenam:4,executablenameparamat:0,executionstatist:[0,4],exist:[0,1,10],expand:10,expend:4,experi:[0,11],explanatori:4,explicit:11,explicitli:0,exploit:0,extend:4,extract:1,fail:[0,1,4,11],failur:[4,9],fals:[0,9,11],fasta34:0,fasta:[0,1,3,4],fasta_4_mafft:0,fastalist:4,fastaparttre:3,fastasequ:4,faster:[0,10],fastest:0,fatal:0,favorit:3,favour:1,featur:4,feb:0,februari:9,femdgfaddfgallqalarrhgwlgi:4,few:[0,4,9],field:4,file:[3,6,8,9,10,11],fileinputstream:4,filenam:4,filenotfoundexcept:4,fileoutputstream:4,find:[0,4],fine:[4,10],finish:[4,5,9],first:[0,4,9,10],five:4,fix:1,flag:[4,11],flexibl:11,folder:[4,10,11],follow:[0,4,9,11],foo:4,foobar:3,foofriend:3,forget:0,format:[3,4],found:[0,4,9,11],four:[1,4],framework:4,free:10,freeli:10,friend:4,friendli:6,from:[0,1,3,6,7,8,9,10,11],full:[0,3,4,6],full_javadoc:0,fulli:[0,1],fund:[0,2],further:[0,2,4,9],furthermor:0,fusion:[6,10],futur:6,gap:4,gapopen:4,gapopenpenalti:4,gcc:0,gener:[0,1,4,9,11],geoffrei:2,get:[0,1,4,8],getargu:4,getbyt:4,getfaarvagslnhhlgldemnvaddaafvakavalasdpaaltalharvdvlrresi:4,getjobstatu:4,getlimit:4,getport:4,getpreset:4,getpresetbynam:4,getresult:4,getrunneropt:4,git:[4,8],gitweb:4,give:11,given:[0,4,6,11],globplot:7,globplotw:[0,3],globu:11,glprob:[1,7],glprobsw:0,gnu:[6,10],going:[0,4],good:[0,6],googl:[1,8],googleanalyt:1,got:0,graphic:6,greater:[0,1],greatli:0,grid:11,gridwai:11,gridwar:0,group:[0,4,6,11],guid:[6,8],h_cpu:0,h_vmem:0,hand:4,handi:[0,3,4],handl:[3,4,5,11],hard:[4,10],hardwar:6,has:[0,1,3,4,6,9,10,11],hash:0,have:[0,1,4,5,6,8,9,10,11],health:0,heavi:10,heavili:[0,10],help:[0,1,2,4,6,9,10],here:[0,3,4,6,8,9,11],hierarchi:4,higher:3,hold:4,holder:4,home:[0,4],host:[0,3,4,10,11],host_and_context:3,hotloop:1,hour:[1,9],how:[0,3,4,6],howev:[0,4,10,11],hptglltvalfealqrrqpdlqmhlfatsgddgstlrtrlaqastlhdvtalghlatakhirhhg:4,html:0,http:[0,3,4,5,6,10,11],httpcoderesponseservicestatu:0,huge:0,i386:0,idea:0,identif:1,identifi:4,idl:[0,4],idllfdlrgwggggrpevfalrpapvqvnwlaypgtsgapwmdyvlgdafalppalepfysehvl:4,ignor:3,imag:[0,1,5,10],impati:6,implement:[4,7,11],improv:[1,2],includ:[0,1,3,4,6,8],incompat:1,incomplet:9,incorpor:6,increas:0,independ:[0,3,4,11],index:0,indic:[9,10],individu:[0,9],inf:[0,4,6],influenc:0,info:[0,10],inform:[0,1,3,4,6,9,10,11],infrastructur:6,initi:[0,4,9],input:[0,3,4,9],inputfil:3,inputs:9,insert:4,insid:0,instal:[0,1,4,6,8],instanc:[0,3,4,11],instead:[0,4,6],institut:6,instruct:[3,5,6],integr:1,interest:6,interfac:[4,6],intern:8,internet:[6,10],interoper:[3,6],interruptedexcept:4,intranet:6,introduc:1,involv:4,ioexcept:4,ipv4:10,ipv6:10,iscancel:9,iscollect:9,isfinish:9,isol:4,issu:[4,8],its:[0,3,4,6,11],itself:0,iupr:7,iupredw:[0,3],jaba:[0,3,4,6,9,11],jabaw:[1,2,3,11],jabaws22:5,jabaws_serv:0,jabawsadmin1:10,jabawsadmin2:10,jalview:[1,4,5,8,10],jame:2,jan:9,januari:9,jar:[0,3,4,6],java:[0,2,3,4,6,7,10,11],java_hom:0,java_opt:0,javadoc:[0,4],javascript:0,javax:4,jax:4,jaxb:4,jaxw:4,jdk1:0,jdk:0,jessi:10,job:[1,3,4,6,8,11],jobid:[4,9],jobsout:[0,4],jobstatu:4,jobsubmissionexcept:4,jobtempl:0,jpred:1,jpredalig:1,jpredw:1,jre:0,jronn:[1,7],jronnw:[0,3],jsp:0,jul:8,junit:4,just:[0,3,6,10,11],jvm:[0,4],jws2:0,jws2client:4,keep:[4,10,11],kei:[3,9],keyboard:10,know:[0,4,11],known:[0,6],lab:[0,6,11],languag:[0,3,4,6],laptop:6,larg:[0,6,10],larger:10,last:9,later:[1,4,9],latest:1,latter:0,launch:[5,6],layer:4,ld_library_path:[0,4],learn:6,least:[0,6],leav:[0,4],length:0,let:[0,3,4,9,10,11],letter:0,level:[0,4],lfldthpynahttasdalwtgcpvlttpgetfaarvagslnhhlgldemnvaddaafvakavala:4,lib:[0,6],librari:[0,1,3,4,6,11],life:4,lightweight:0,like:[0,3,4,6,10],limit:[1,3,4,8,10,11],limitexceededexcept:4,limitsmanag:4,line:[0,8,10],link:[0,4,9],linux:[0,4,6,10,11],list:[0,1,3,4,6,8],littl:[0,4],llnwrrrlcdwraldvlsaqvraavaqgvgavepfaflsedasaaeqlacartraqaiaasvrpl:4,load:[1,4,8],local:[4,5,6,8,9,10,11],localengineexecutionlimit:0,localhost:[0,5,6,9,11],localhost_access_log:0,locat:[0,4,9,10],log4j:0,log:[8,9],logdir:0,login:[9,10],long_test:4,longer:[1,4],look:[0,4,8],lowercas:4,lrgwggggrpevfalrpapvqvnwlaypgtsgapwmdyvlgdafalppalepfysehvlrlqgaf:4,lsf:11,lx24:0,mac:[1,6,10,11],machin:[0,1,3,4,5,6,10,11],made:[4,9],madeira:2,mafft:[1,3,4,7,8],mafft_binari:0,mafftlimit:0,mafftparamet:0,mafftpreset:0,mafftw:[0,3],mai:[0,4,9,10,11],main:[0,4,6,9],make:[0,4,6,9,10,11],man_serverwar:0,manag:11,mani:[0,11],manipul:3,manner:6,manoeuvr:4,manual:[10,11],map:4,marker:4,match:4,matric:0,matrix:4,matter:3,maximum:[0,6,9],maxruntim:9,mayb:9,mean:[0,1,3,4,6,9,10],memori:[0,10,11],mention:4,menu:[0,6,10],messag:[0,10],meta:4,metadata:4,method:[0,1,4,6],mgdttagemavqrglalhq:3,mgdttagemavqrglalhqqrhaeaavllqqasdaapehpgialwlhaledagqaeaaaaytrah:4,might:[0,4,6,10,11],mind:10,minimum:10,minor:1,minut:[1,4,9],miss:0,mode:4,model:[0,4],modifi:[0,4],monitor:[0,1,4],month:9,monthli:9,more:[0,1,3,4,6,9,10,11],most:[3,6,9,10],mostli:4,move:10,msa:4,msaprob:[1,7],msaprobsw:0,msaw:4,mtadgprellqlraav:3,mtadgprellqlraavrhrpqdfvawl:3,mtadgprellqlraavrhrpqdfvawlmladaelgmgdttagemavqrglalhpghpeavarlgr:4,mtadgprellqlraavrhrpqdvawlmladaelgmgdttagemavqrglalhpghpeavarlgrv:4,multi:9,multipl:[0,1,2,4,6,8],muscl:[0,7],musclew:[0,3],must:[0,1,11],myhost:[0,3],mylabserv:3,mysql:10,myuni:3,name:[0,3,4,9,10,11],namespac:4,nat:10,nativ:[0,3,4],natur:9,navig:[0,9],necessari:[4,11],necessarili:9,need:[0,3,4,5,6,9,10,11],net:4,network:10,never:[0,1,9],newer:1,next:[3,4],nine:4,node:[0,11],nofft:3,non:0,none:10,normal:0,noscor:3,note:[3,4,9],noth:[4,10],notic:4,now:[1,3,4,6],nput:3,nucleotid:0,number:[0,1,4,9,11],object:[1,4],obtain:[4,8],obvious:11,oct:8,octob:6,off:3,offer:[0,1,4,10],offici:11,often:0,older:11,omega:[1,7],onc:[0,4,5,6,10],one:[0,1,3,4,6,9,10,11],ones:0,onli:[0,3,4,9,10,11],open:[0,3,4,6,8,10],oper:[0,6,10,11],oppos:9,optim:0,option:[0,1,3,4,6,9,10],optionlist:4,oracl:[10,11],order:[0,5,9],org:[0,4],organ:6,orient:[0,4],other:[0,3,4,6,9,10,11],otherwis:[0,11],our:[0,1,4,8],out:[0,3,4,9,11],output:[0,3,4],outputfil:3,outsid:[0,9,10],outstream:4,over:[3,6,10],overhead:0,overload:11,overview:[0,8],ovf:10,own:[0,3,6],packag:[0,1,3,4,6],page:[0,1,3,4,5,6,9,10],pam300:4,panel:6,paper:2,parallel:[10,11],paramet:[0,1,3,8],parameterinputfil:3,parser:4,part:[0,3,4,6,9],parti:11,particular:[0,4,9,11],pass:[0,4],password:[9,10],path:[0,1,3,4,6,11],path_to_jar_fil:3,pattern:0,paus:4,pbspro:11,pdf:8,peer:1,per:9,perfectli:11,perform:[0,4,6],period:[1,4,9],pertain:4,peter:[2,9],pipedexecut:4,plai:10,plain:[4,9],platform:[4,10,11],player:[6,10],pleas:[0,3,4,9,10,11],plugin:4,point:[0,3,4,6,9,10,11],port:[0,4],portabl:4,posix:0,possibl:[9,10,11],post:0,power:[0,5,10],powerpc:11,pqsmarmlavlrevpdsvlwllsgpgeadarlrafahaqgvdaqrlvfmpklphpqylaryrhad:4,pre:[1,4,8,10,11],preconfigur:10,predict:[0,1,6,8],prefer:[0,6,10],prefix:0,prepar:[2,8,10],preprocess:9,present:9,preset:[0,3,8],presetalign:4,presetman:4,presetmanag:4,presetnam:[3,4],press:6,prevent:[0,4,11],previou:4,print:3,println:4,privaci:6,privat:[0,4,6,10,11],privileg:[8,11],prm:3,probabl:0,probcon:[0,7],probconsw:[0,3],problem:[0,4],procedur:[4,11],procerror:9,process:[0,1,3,4,9],procoutput:9,procter:2,produc:[0,9],product:[0,6,10],profil:[0,4],prog_doc:0,program:[0,1,3,6,8,10,11],programmat:3,prohibit:0,project:[1,2,8],prolong:4,proper:1,properli:5,properti:[0,1,4,9],protein:[0,1,2,6,8],protocol:0,provid:[0,1,3,4,5,6,10],proxi:4,publicli:[4,6],publish:0,pullexecstatist:4,purpos:0,put:[0,4,11],pvlttpgetfaarvagslnhhlgldemnvaddaafvakavalasdpaaltalharvdvlrresgv:4,qllpeepyitaqllnavaqgvgavepfaflsedasaaesvrplaptrvrskgplrvgfvsngfga:4,qname:4,qpsdtsrvvaeppsrtqcglpeqgvvlccfnnsyklnpqsmarmlavlrevpdsvlwllsgpgea:4,qualifi:4,qualifiednam:4,qualifiedservicenam:4,queer:0,queri:0,quickstart:6,rais:0,ram:[0,10],rang:6,rather:10,read:[0,4,6,11],readfasta:4,readi:6,real:4,reason:0,rebuild:4,rebuilt:4,recent:0,recheck:4,recommend:[0,1,3,4,6,10,11],recompil:[4,8,11],reconfigur:10,record:[1,4,9],redirect:0,reduc:[0,11],refer:[0,4,10],reflect:1,refresh:1,refus:11,regist:4,reject:0,rel:0,relat:[0,4],releas:8,rem465:1,remot:0,remov:[0,11],repeat:0,replac:[0,1,4,9],report:[0,4,8],repositori:[0,4],repres:4,request:[4,8,9,11],requir:[0,1,4,5,6,10,11],rerun_failed_test:4,reserv:0,reset:4,resid:[0,11],resili:11,resolut:0,resolvehost:0,resourc:[0,4,10],respect:[0,9],respond:0,respons:0,rest:[1,11],restart:[0,9,11],restructuredtext:4,result:[0,4,9],resultnotavailableexcept:4,results:9,retre:3,retriev:[0,4,9],reus:[4,8],review:0,right:11,rlqgafqpsdtsrvvaeppsrtqcglpeqgvvlccfnnsyklnpqsmarmlavlrevpdsvlwl:4,rna:[0,2,8],rnaalifold:7,rnaalifoldw:[0,1],rnastructscoremanag:1,role:9,rolenam:9,ronn:7,root:[4,10,11],rout:10,row:9,rule:0,run:[0,1,3,4,6,8,9,10,11],run_cluster_dependent_test:4,runner:4,runnerconfig:[4,9],runtest:4,runtim:[9,11],rwtqqrhaeaavllqqasdaapehpgialwlghaledhqllpeepyitaqldvlsaqvraavaqg:4,sai:10,same:[0,3,4,6,9,10,11],satisfi:4,scientif:1,score:1,scoremanag:1,screen:[0,10],screenshot:9,script:[0,3,4,6,11],search:0,second:[4,9],secondari:[0,1,2,8],section:[0,4,9],secur:[1,6],see:[0,3,4,6,9,10],select:6,self:4,semicolon:0,send:[6,11],sensit:6,sent:0,separ:[0,3,11],sequenc:[0,1,2,3,6,8],sequenceannot:4,sequencelist:4,sequenceutil:4,sequenti:4,serial:4,serv:[0,4,11],server:[3,4,5,8,10,11],server_url:0,servic:[0,1,2,3,6,8,9,10,11],servicenam:[0,3],servicestatu:0,servlet:[1,11],set:[0,3,4,9,10,11],setenv:0,setexecflag:[0,4],setexecutableflag:4,setnativespecif:0,setup:[5,6],setvalu:4,seven:4,sever:[0,1,4,6],sftp:10,sge:0,sge_root:0,sgpgeadarlrafahaqgvdaqrlvfmpklphpqylaryrhadlfldthpynahttasdalwtgc:4,share:11,shell:10,sherstnev:2,ship:6,shot:10,should:[0,1,4,6,9,10,11],show:[3,9],shown:[3,6],side:4,sign:[1,3],signific:0,silent:4,similar:[4,10],similarli:[1,10],simpl:[0,4,6],simplest:9,simpli:[0,4,6,10,11],simplifi:[0,1],sinc:[0,4,6,11],singl:[6,10,11],site:[3,11],six:4,size:[6,8,9],skeletalexecut:4,sleep:4,slightli:6,small:[0,11],smaller:0,soap:[0,3,4,6],softwar:[3,4,6],some:[0,1,4],someth:4,sometim:[4,9,11],soon:9,sourc:[0,3,6,8,11],space:[4,11],special:4,specif:[0,3,4,11],specifi:[0,3,9],speed:[0,4],sphinx:1,split:4,src:[0,4,6],ssh:10,stabil:4,stage:4,stand:6,standalon:10,standard:[0,1,4,9],standlon:10,start:[0,8,9,10],startup:0,stat:9,statist:[0,1,4,8],statpag:[0,4],statu:[0,1,6,8],step:0,still:11,stlhdvtalghlatakhirhhgidllfdlrgwggggrpevfalrpapvqvnwlaypgtsgapwmd:4,stop:1,storag:0,store:[0,4],stori:9,straight:0,straightforward:6,stream:9,string:[1,4],structur:[0,1,2,8],stub:4,subfold:4,submiss:0,submit:[0,4,6,9],substitut:0,successfulli:0,suffici:[4,10,11],suffix:0,suggest:[0,4],suit:[0,4,6,10],suitabl:0,summari:9,sun:[0,4,11],suppli:[0,1,4,11],support:[0,1,3,4,6,10,11],sure:[0,4,9,11],swap:1,symbol:[0,1,9],system:[4,5,6,8,9,10,11],tabl:[0,9],take:[0,4,10],task:[0,4,6,10,11],tcoffeew:[0,3],tell:0,temp:4,templat:8,temporari:[0,4,9],ten:4,tend:4,termin:0,test:[3,6,8,10,11],testcas:4,testng:4,testoutput:0,testsrc:4,text:[4,9],than:[0,1,4,10,11],thei:[0,4,6,10],them:[0,3,4,6,10,11],thi:[0,1,3,4,5,6,8,9,10,11],thin:4,third:[4,11],though:4,thread:[0,1,4,11],three:[0,4],through:[4,6],thu:[0,4],thw:0,time:[0,1,4,9,10],timestamp:9,tip:0,titl:9,tmp:0,togeth:[3,4],tomcat:[0,1,5,6,8,10,11],tomcat_dir:0,tomcat_root:[0,9],tomcatroot:11,too:[0,6,11],tool:[0,4,6,8,10],top:4,tostr:4,total:9,trace:0,tracker:[4,8],treat:0,trim:3,troshin:2,troubleshoot:8,tune:10,turnkei:[6,10],tvalfealqrrqpdlqmhlfatsgddgstlrtrlaqastlhdvtalghlatakhirhhgidllfd:4,two:[0,1,4,11],txt:[0,4,9],type:[0,4,6],uncom:0,undeploi:11,undeploy:11,under:[0,4,6],underneath:4,uniqu:9,unit:8,univers:[0,4,6],unix:[6,9],unless:10,unlik:[6,10],unpack:[6,10,11],unsupportedruntimeexcept:4,until:[0,4],updat:[0,1,4],upon:[0,4],upper:4,url:[0,3,4,6,10,11],us_intl:10,usag:[1,8],use:[0,1,2,3,4,5,6,9,10,11],used:[0,1,3,4,10,11],useful:[0,3,4],user:[0,1,6,9,10,11],usernam:9,uses:[0,4,5,6,10,11],using:[0,3,4,5,6,9,11],utf:[9,11],util:[0,4],valid:8,valu:[0,3,4],valv:0,variabl:[4,8],variou:0,veri:[0,1,4,6],verifi:5,version:[0,3,6,7,8,9,10,11],vgavepfaflsedasaaeqlacartraqaiaasvrplaptrvrskgplrvgfvsngfgahptgl:4,via:[3,6,10],viennarna:7,view:[4,8],violat:4,virtial:10,virtual:[0,5,8,9],virtualbox:[1,10],visial:0,visit:6,visual:[1,9],visualis:9,vm_ip:10,vmdk:10,vmware:[1,6,10],vmx:10,vrwtqqrhaeaavllqqasdaapehpgialwlghaledagqaeaaaaaytrahqllpeepyitaq:4,vwmare:10,wai:[0,3,4,6,9,10],wait:[0,4],want:[0,3,4,6,8,10],war:[1,4,5,8,9,10],warn:0,wast:0,watch:4,web:[0,1,2,3,5,8,10],webal:0,webapp:[0,6,11],webapplicationpath:0,webmean:10,webservic:[0,4,6],websit:[1,4],weight:4,welcom:3,well:[0,4,6,11],were:[1,4,9,11],what:[0,6,10],whatev:[0,4],when:[0,2,9,10],whenev:4,where:[0,3,4,6,9,10],wherea:0,whether:[4,5,9,10],which:[0,1,3,4,5,6,9,10,11],who:[0,4,6,10],whole:[0,9],whose:9,why:0,wide:6,window:[0,4,6,10,11],wish:0,within:[0,1,4,9],without:[0,4,10,11],work:[2,4,6,8,10,11],worldwid:6,would:[0,3,4,6,10],wrap:4,wrapper:4,write:[3,6,8],writeclustalalign:4,written:0,wrongparameterexcept:4,wsbuild:4,wsdl:[4,8],wsimport:[0,4],www:[0,4,5,11],x86:[0,11],xincgc:0,xml:[0,4,9,11],xms512m:0,xmx1024m:0,xxx:0,xxxlimit:0,xxxparamet:[0,4],xxxpreset:0,yesterdai:3,you:[0,2,3,4,5,6,8,9,10,11],your:[3,5,6,8,9,10,11],your_jaba_context_nam:0,your_jabaws_server_url:0,yourself:[0,6],yvlgdafalppalepfysehvlrlqgafqpsdtsrvvaeppsrtqcglpeqgvvlccfnnsykln:4,zip:11},titles:["Advanced Usage","Changelog","Citations","Command Line Client (CLI)","For Developers","Docker Container","Getting Started","Included Tools","Welcome to JABAWS&#8217;s documentation!","Usage Statistics","Virtual Appliance (VA)","Web Application Archive (WAR)"],titleterms:{"16th":1,"1st":1,"2nd":1,"function":4,"new":4,"public":6,Adding:4,For:4,The:4,accept:0,access:[4,9],acid:7,advanc:0,align:[4,7],amino:7,analyt:0,api:4,applianc:[6,10],applic:[6,9,11],archiv:[6,11],artifact:4,august:1,balanc:0,benefit:6,binari:0,brief:4,build:4,calcul:4,changelog:1,check:4,citat:2,cli:[3,6],client:[3,4,6],cluster:0,code:4,command:[3,4,6],compil:0,complet:4,configur:[0,9,10],connect:4,conserv:7,contain:5,content:[0,9],custom:4,dec:1,defin:0,detail:9,develop:4,directori:9,disord:7,distribut:[4,6],docker:5,document:8,engin:0,environ:0,exampl:[3,4],execut:[0,9],file:[0,4],from:4,get:6,googl:0,guid:4,includ:7,instal:[3,5,10,11],intern:0,jabaw:[0,4,5,6,8,9,10],jalview:6,job:[0,9],jul:1,limit:0,line:[3,4,6],list:9,load:0,local:0,log:0,mafft:0,multipl:7,obtain:0,oct:1,overview:4,paramet:4,pre:0,predict:7,prepar:4,preset:4,privileg:9,program:4,project:4,protein:7,recompil:0,releas:1,request:0,reus:0,rna:7,run:5,secondari:7,sequenc:[4,7],server:[0,6,9],servic:4,size:0,sourc:4,start:6,statist:9,statu:4,structur:[4,7],system:0,templat:4,test:[0,4],tomcat:9,tool:7,troubleshoot:11,unit:4,usag:[0,3,9,10,11],valid:0,variabl:0,version:1,view:9,virtual:[6,10],war:[0,6,11],web:[4,6,9,11],welcom:8,work:0,write:4,wsdl:0,your:[0,4]}})
\ No newline at end of file
+Search.setIndex({docnames:["advanced","changelog","citations","client","develop","docker","getting_started","included_tools","index","stats","va","war"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["advanced.rst","changelog.rst","citations.rst","client.rst","develop.rst","docker.rst","getting_started.rst","included_tools.rst","index.rst","stats.rst","va.rst","war.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[3,4,6,7,8,9,11],"00":[0,1,7],"000":6,"0000":0,"01":4,"0_17":0,"1":[0,4,6,7,8,9,10,11],"10":[0,1,2,3,4,9],"1000":4,"100000":0,"1093":2,"11":[0,1,7],"12":[7,10],"12320":10,"12321":10,"14":[2,10],"149":10,"159":[0,3],"16":[0,1,10],"168h":9,"16th":8,"172":10,"18":8,"1st":8,"2":[2,3,4,5,6,7,8,10,11],"20":[4,10],"200":0,"2000":4,"2001":2,"2002":2,"2010":[0,4],"2011":[2,8,9],"2013":[6,8],"2017":[2,8],"2021":8,"2067":0,"232":10,"24":[0,9],"27":2,"2nd":8,"2x":0,"3":[1,4,7,10],"31":[0,1,3,7],"310":7,"32":0,"378m":10,"4":[0,1,4,7,10,11],"400":0,"442":6,"5":[4,6,7,11],"503":0,"51":0,"512":10,"512m":10,"6":[0,9,11],"60":9,"6000m":0,"64":10,"7":[1,3,6,7,9,10,11],"8":[6,7,9,10,11],"8080":[0,3,5,6,11],"8cbe486":[1,7],"9":[1,7],"abstract":4,"boolean":4,"byte":[0,9],"case":[0,4,9,10],"class":[0,4],"default":[0,1,3,4,6,9,10],"do":[0,2,3,4,6,10,11],"enum":4,"export":0,"f\u00e1bio":2,"final":[0,4,6],"function":[0,3,6,8,11],"import":[2,4],"long":[0,4],"new":[0,1,3,6,8,10,11],"public":[4,8,11],"return":[0,1,4],"static":[0,4],"throw":4,"true":[0,4,9,11],"try":[0,11],"void":4,"while":4,A:[0,6,8],At:[0,4],By:[0,4,5,10],For:[0,3,6,8,9,10,11],IS:0,If:[0,4,6,8,9,10,11],In:[0,3,4,5,6,9,10,11],It:[1,2,4,6,9,10],NOT:0,That:10,The:[0,1,3,6,8,9,10,11],Then:0,There:[0,4,9],These:[0,1,11],To:[0,1,4,6,10,11],aacon:[1,7],aaconw:[0,3],aamatrix:0,abandon:9,abil:4,abl:[0,1,3,4,9,10,11],about:[0,4,6,10,11],abov:[0,3,4,9,10,11],absolut:0,ac:[0,3,4,5,11],accept:[4,6,8,9],access:[0,1,3,5,6,8,10,11],accesslogvalv:0,accomplish:4,accord:0,accordingli:[0,4],account:[0,1,4],achiev:0,acid:[0,1,8],action:3,activ:0,actual:4,ad:[0,8,11],add:[4,10,11],addit:[0,1,4],address:[0,1,10],adjust:0,admin:[9,10],administr:9,advanc:[8,10],advantag:10,after:[0,4,9,10,11],again:0,against:[4,6],aim:4,al:4,alexand:2,alig:1,align:[0,1,2,3,6,8,10,11],all:[0,1,3,4,5,6,9,10,11],all_cluster_independent_test:4,all_cluster_independent_windows_only_test:4,allow:[0,1,2,3,6,9,10,11],allowlink:9,alon:6,alreadi:[0,11],also:[0,1,3,4,8,9,10],altern:[0,4,5,6,11],amazon:1,amd64:0,ami:1,amino:[0,1,8],amount:[0,9,10],an:[0,3,4,5,8,9,10,11],analog:0,analysi:[0,1,2,5,6],analyt:[1,8],ani:[0,3,4,6,10,11],annot:4,anonym:0,anoth:[3,4,11],ant:[0,4],antiresourcelock:[9,11],anyon:[4,6],anyth:0,anywher:0,apach:[0,4,5,6,9,11],aparamet:3,apart:10,api:[1,3,8],app:6,appli:0,applianc:[5,8,9],applic:[0,1,3,5,8,10],appreci:0,appropri:[0,4],aptrvrskgplrvgfvsngfgahptglltvalfealqrrqpdlqmhlfatsgddgstlrtrlaqa:4,ar:[0,1,3,4,5,6,9,10,11],architectur:[0,6,11],archiv:[4,5,8,10],arg:4,argument:4,around:4,arraylist:4,artifact:8,ask:10,assum:[0,6,11],asynchron:[0,9],attempt:4,august:8,authent:[0,9],auto:10,autogener:0,autom:0,automat:[0,6,9,11],avail:[0,1,3,4,6,8,9,10,11],averag:0,avoid:[0,4,11],awstat:0,b:2,backward:1,balanc:8,bar:[3,4],barton:2,base:[0,6,9,10,11],basic:[0,3,4,11],batch:11,bear:10,becaus:[3,4,10],been:[1,3,4,6,9,10],befor:4,being:4,below:[0,1,3,4,6,9,10,11],benefit:8,besid:4,best:[0,10],better:[4,6,11],between:[0,4],bigger:0,bigmem:0,bin:[0,4],binari:[4,6,8,11],bind:0,bioinformat:[0,2,6,10],bit:10,black:0,block:4,boot:[6,10],both:[0,1,3,6,11],bottom:[4,9],boundari:4,box:[0,10],bridg:10,brief:[6,8],browser:[0,6],btr304:2,bug:1,build:[0,5,8,11],bump:1,bundl:0,busi:0,button:6,bytearrayinputstream:4,cach:1,calcul:[0,1,8,9,10],call:[0,1,3,4,11],caller:4,can:[0,3,4,5,6,9,10,11],cancel:[4,9],canceljob:4,cannot:[3,4,10],capac:11,catalina:[0,9,11],caution:4,cd:6,cengin:0,chang:[0,1,3,4,6,9,10],changelog:8,charact:0,chase:0,check:[0,1,3,6,8,10,11],checker:0,chmod:0,choos:[0,6,10],chosen:0,chunk:4,chunkhold:4,citat:8,cite:2,clariti:3,classnam:0,clean:1,cli:[4,5,8],click:[6,10],client:[0,1,8,10],client_help:4,clone:4,cloud:1,clustal:[1,3,4,7,9],clustalalignmentutil:4,clustalow:[0,3],clustalw2:0,clustalw:[0,1,3,4,7],clustalwsport:4,clustengin:0,cluster:[4,6,8,9,11],clusterengin:0,code:[0,3,8,11],coffe:[0,1,7],collect:[0,4,6,9],collector:9,color:0,column:9,come:[0,3,4,6,9,11],command:[0,8,10],comment:0,commerci:10,common:0,commun:[1,10],compar:1,compat:[1,4,6,11],compbio:[0,3,4,5],compil:[4,6,8,11],compilebin:[0,4,6],complain:0,complet:[0,6,8,9,11],compli:4,compliant:[0,3,6,11],complic:6,complil:4,complile_with_debug:4,compon:9,comput:[6,10],concern:6,condor:11,conf:[0,4,9,11],config:0,configur:[1,4,6,8,11],confirm:4,confus:4,connect:[0,6,8,10],conserv:[0,1,2,8],consid:9,consist:[4,6],consol:[3,10],constant:3,constraint:4,construct:4,constructor:4,consult:[9,11],consum:[3,6],contain:[0,1,4,6,8,9],content:[3,11],context:[0,3,5,6,9,11],contini:4,continu:2,contribut:[4,8],control:[3,4,6],convent:4,copi:[9,10],core:[0,10,11],correctli:0,correspond:0,could:[0,1,3,4,11],couldn:0,coupl:0,cours:10,cpu:[0,10],crawler:9,creat:[0,4,9,10],credenti:10,css:0,current:[0,1,4,6,11],custom:[3,8],customalign:4,customsuit:4,customtest:4,d:[0,3,4,6],dai:9,daniel:2,darlrafahaqgvdaqrlvfmpklphpqylaryrhadlfldthpynahttasdalwtgcpvlttp:4,data:[0,4,6,10],databas:[0,4,9],datamodel:4,date:[0,3,9,11],deal:[1,10],dealt:11,debian:10,debug:[0,4],dec:8,decid:[0,4],dedic:1,defin:[1,3,4,8,9],definit:0,delet:1,demand:4,depend:[0,4,6,9,11],deploi:[0,4,5,6,9,10,11],deploy:[0,11],depth:0,describ:[0,4,9,11],descript:[0,1,4,9],descriptor:[0,11],design:[1,4],desktop:6,detail:[0,3,4,8,11],dev2:0,develop:[3,6,8],dhcp:10,did:0,differ:[0,3,4,10,11],directli:[0,4,10],directori:[0,1,4,6,8,11],disabl:[0,4,9],discoveri:4,disembl:[1,7],disemblw:[0,3],disk:[10,11],disord:[0,1,2,6,8],displai:[4,9,10],distribut:[0,1,2,8,10,11],distro:4,divers:1,dm_javadoc:0,dn:10,doc:4,docker:[1,6,8],dockerfil:5,document:[0,1,3,4,5,6,11],doe:[0,4,9,10],doesn:6,doi:2,done:[0,1,3,4,9],doubt:0,download:[0,1,3,4,5,6,8],dpaaltalharvdvlrresgvfemdgfaddfgallqalarrhgwlgi:4,drive:10,drmaa:[0,6,11],drop:[1,6,11],due:[1,9],dunde:[0,4,5,6],durat:4,dure:9,e:[0,3,4,5,6,9,10,11],each:[0,1,4,9],eas:1,easi:[4,6],easier:10,easiest:[0,4,6],ec2:1,eclips:4,edit:[0,4,10],edu:3,eight:4,either:[0,3,6],elect:6,elimin:6,elsewher:0,empti:9,enabl:[0,1,6,9,10,11],encod:[0,9,11],encourag:[1,4],end:0,engin:[1,4,8,9,11],ensur:4,enter:[4,6],enumer:4,env:0,environ:[4,8,10,11],environment:4,equal:3,equip:0,error:[0,4,9],especi:0,etc:[0,3,4,5],evalu:0,even:0,everi:[1,4,9],everyth:0,exact:[0,5],exactli:[0,3,4],examin:0,exampl:[0,6,8,9,11],excerpt:4,excess:[0,4],exclud:[4,9],exec_nam:0,exectu:4,execut:[1,3,4,6,8,11],executablenam:4,executablenameparamat:0,executionstatist:[0,4],exist:[0,1,10],expand:10,expend:4,experi:[0,11],explanatori:4,explicit:11,explicitli:0,exploit:0,extend:4,extract:1,f:[3,4],fail:[0,1,4,11],failur:[4,9],fals:[0,9,11],fasta34:0,fasta:[0,1,3,4],fasta_4_mafft:0,fastalist:4,fastaparttre:3,fastasequ:4,faster:[0,10],fastest:0,fatal:0,favorit:3,favour:1,featur:4,feb:0,februari:9,femdgfaddfgallqalarrhgwlgi:4,few:[0,4,9],field:4,file:[3,6,8,9,10,11],fileinputstream:4,filenam:4,filenotfoundexcept:4,fileoutputstream:4,find:[0,4],fine:[4,10],finish:[4,5,9],first:[0,4,9,10],five:4,fix:1,flag:[4,11],flexibl:11,folder:[4,10,11],follow:[0,4,9,11],foo:4,foobar:3,foofriend:3,forget:0,format:[3,4],found:[0,4,9,11],four:[1,4],framework:4,free:10,freeli:10,friend:4,friendli:6,from:[0,1,3,6,7,8,9,10,11],full:[0,3,4,6],full_javadoc:0,fulli:[0,1],fund:[0,2],further:[0,2,4,9],furthermor:0,fusion:[6,10],futur:6,g:[0,3,4,6,10,11],ga:0,gap:4,gapopen:4,gapopenpenalti:4,gb:10,gcc:0,gener:[0,1,4,9,11],geoffrei:2,get:[0,1,4,8],getargu:4,getbyt:4,getfaarvagslnhhlgldemnvaddaafvakavalasdpaaltalharvdvlrresi:4,getjobstatu:4,getlimit:4,getport:4,getpreset:4,getpresetbynam:4,getresult:4,getrunneropt:4,git:[4,8],gitweb:4,give:11,given:[0,4,6,11],globplot:7,globplotw:[0,3],globu:11,glprob:[1,7],glprobsw:0,gnu:[6,10],go:[0,4,10],good:[0,6],googl:[1,8],googleanalyt:1,got:0,graphic:6,greater:[0,1],greatli:0,grid:11,gridwai:11,gridwar:0,group:[0,4,6,11],guid:[6,8],h:[0,3,6],h_cpu:0,h_vmem:0,ha:[0,1,3,4,6,9,10,11],hand:4,handi:[0,3,4],handl:[3,4,5,11],hard:[4,10],hardwar:6,hash:0,have:[0,1,4,5,6,8,9,10,11],health:0,heavi:10,heavili:[0,10],help:[0,1,2,4,6,9,10],here:[0,3,4,6,8,9,11],hierarchi:4,higher:3,hold:4,holder:4,home:[0,4],host:[0,3,4,10,11],host_and_context:3,hotloop:1,hour:[1,9],how:[0,3,4,6],howev:[0,4,10,11],hptglltvalfealqrrqpdlqmhlfatsgddgstlrtrlaqastlhdvtalghlatakhirhhg:4,html:0,http:[0,3,4,5,6,10,11],httpcoderesponseservicestatu:0,huge:0,i386:0,i:[0,3,4,5,6,9],id:[4,9],idea:0,identif:1,identifi:4,idl:[0,4],idllfdlrgwggggrpevfalrpapvqvnwlaypgtsgapwmdyvlgdafalppalepfysehvl:4,ignor:3,imag:[0,1,5,10],impati:6,implement:[4,7,11],improv:[1,2],includ:[0,1,3,4,6,8],incompat:1,incomplet:9,incorpor:6,increas:0,independ:[0,3,4,11],index:0,indic:[9,10],individu:[0,9],inf:[0,4,6],influenc:0,info:[0,10],inform:[0,1,3,4,6,9,10,11],infrastructur:6,initi:[0,4,9],input:[0,3,4,9],inputfil:3,inputs:9,insert:4,insid:0,instal:[0,1,4,6,8],instanc:[0,3,4,11],instead:[0,4,6],institut:6,instruct:[3,5,6],integr:1,interest:6,interfac:[4,6],intern:8,internet:[6,10],interoper:[3,6],interruptedexcept:4,intranet:6,introduc:1,involv:4,io:4,ioexcept:4,ip:[0,10],ipv4:10,ipv6:10,iscancel:9,iscollect:9,isfinish:9,isol:4,issu:[4,8],its:[0,3,4,6,11],itself:0,iupr:7,iupredw:[0,3],j:2,jaba:[0,3,4,6,9,11],jabaw:[1,2,3,11],jabaws22:5,jabaws_serv:0,jabawsadmin1:10,jabawsadmin2:10,jalview:[1,4,5,8,10],jame:2,jan:9,januari:9,jar:[0,3,4,6],java:[0,2,3,4,6,7,10,11],java_hom:0,java_opt:0,javadoc:[0,4],javascript:0,javax:4,jax:4,jaxb:4,jaxw:4,jdk1:0,jdk:0,jessi:10,job:[1,3,4,6,8,11],jobid:[4,9],jobsout:[0,4],jobstatu:4,jobsubmissionexcept:4,jobtempl:0,jpred:1,jpredalig:1,jpredw:1,jre:0,jronn:[1,7],jronnw:[0,3],jsp:0,jul:8,junit:4,just:[0,3,6,10,11],jvm:[0,4],jws2:0,jws2client:4,keep:[4,10,11],kei:[3,9],keyboard:10,know:[0,4,11],known:[0,6],l:[0,2],lab:[0,6,11],languag:[0,3,4,6],laptop:6,larg:[0,6,10],larger:10,last:9,later:[1,4,9],latest:1,latter:0,launch:[5,6],layer:4,ld:4,ld_library_path:[0,4],learn:6,least:[0,6],leav:[0,4],length:0,let:[0,3,4,9,10,11],letter:0,level:[0,4],lfldthpynahttasdalwtgcpvlttpgetfaarvagslnhhlgldemnvaddaafvakavala:4,lib:[0,6],librari:[0,1,3,4,6,11],life:4,lightweight:0,like:[0,3,4,6,10],limit:[1,3,4,8,10,11],limitexceededexcept:4,limitsmanag:4,line:[0,8,10],link:[0,4,9],linux:[0,4,6,10,11],list:[0,1,3,4,6,8],littl:[0,4],llnwrrrlcdwraldvlsaqvraavaqgvgavepfaflsedasaaeqlacartraqaiaasvrpl:4,lm:4,load:[1,4,8],local:[4,5,6,8,9,10,11],localengineexecutionlimit:0,localhost:[0,5,6,9,11],localhost_access_log:0,locat:[0,4,9,10],log4j2:1,log4j:[0,1],log:[8,9],logdir:0,login:[9,10],long_test:4,longer:[1,4],look:[0,4,8],lowercas:4,lrgwggggrpevfalrpapvqvnwlaypgtsgapwmdyvlgdafalppalepfysehvlrlqgaf:4,lsf:11,lx24:0,mac:[1,6,10,11],machin:[0,1,3,4,5,6,10,11],made:[4,9],madeira:2,mafft:[1,3,4,7,8],mafft_binari:0,mafftlimit:0,mafftparamet:0,mafftpreset:0,mafftw:[0,3],mai:[0,4,9,10,11],main:[0,4,6,9],make:[0,4,6,9,10,11],man_serverwar:0,manag:11,mani:[0,11],manipul:3,manner:6,manoeuvr:4,manual:[10,11],map:4,marker:4,match:4,matric:0,matrix:4,matter:3,maximum:[0,6,9],maxruntim:9,mayb:9,mb:10,mean:[0,1,3,4,6,9,10],memori:[0,10,11],mention:4,menu:[0,6,10],messag:[0,10],meta:4,metadata:4,method:[0,1,4,6],mgdttagemavqrglalhq:3,mgdttagemavqrglalhqqrhaeaavllqqasdaapehpgialwlhaledagqaeaaaaytrah:4,might:[0,4,6,10,11],mind:10,minimum:10,minor:1,minut:[1,4,9],miss:0,mode:4,model:[0,4],modifi:[0,4],monitor:[0,1,4],month:9,monthli:9,more:[0,1,3,4,6,9,10,11],most:[3,6,9,10],mostli:4,move:10,ms:[0,2,11],msa:4,msaprob:[1,7],msaprobsw:0,msaw:4,mtadgprellqlraav:3,mtadgprellqlraavrhrpqdfvawl:3,mtadgprellqlraavrhrpqdfvawlmladaelgmgdttagemavqrglalhpghpeavarlgr:4,mtadgprellqlraavrhrpqdvawlmladaelgmgdttagemavqrglalhpghpeavarlgrv:4,multi:9,multipl:[0,1,2,4,6,8],muscl:[0,7],musclew:[0,3],must:[0,1,11],my:6,myhost:[0,3],mylabserv:3,mysql:10,myuni:3,n:4,name:[0,3,4,9,10,11],namespac:4,nat:10,nativ:[0,3,4],natur:9,navig:[0,9],necessari:[4,11],necessarili:9,need:[0,3,4,5,6,9,10,11],net:4,network:10,never:[0,1,9],newer:1,next:[3,4],nine:4,node:[0,11],nofft:3,non:0,none:10,normal:0,noscor:3,note:[3,4,9],noth:[4,10],notic:4,now:[1,3,4,6],nucleotid:0,number:[0,1,4,9,11],o:3,object:[1,4],obtain:[4,8],obvious:11,oct:8,octob:6,off:3,offer:[0,1,4,10],offici:11,often:0,ok:[0,4],older:11,omega:[1,7],onc:[0,4,5,6,10],one:[0,1,3,4,6,9,10,11],ones:0,onli:[0,3,4,9,10,11],op:3,open:[0,3,4,6,8,10],oper:[0,6,10,11],oppos:9,optim:0,option:[0,1,3,4,6,9,10],optionlist:4,oracl:[10,11],order:[0,5,9],org:[0,4],organ:6,orient:[0,4],os:[0,3,10],other:[0,3,4,6,9,10,11],otherwis:[0,11],our:[0,1,4,8],out:[0,3,4,9,11],output:[0,3,4],outputfil:3,outsid:[0,9,10],outstream:4,over:[3,6,10],overhead:0,overload:11,overview:[0,8],ovf:10,own:[0,3,6],p:[4,5],packag:[0,1,3,4,6],page:[0,1,3,4,5,6,9,10],pam300:4,panel:6,paper:2,parallel:[10,11],paramet:[0,1,3,8],parameterinputfil:3,parser:4,part:[0,3,4,6,9],parti:11,particular:[0,4,9,11],pass:[0,4],password:[9,10],patch:1,path:[0,1,3,4,6,11],path_to_jar_fil:3,pattern:0,paus:4,pb:11,pbspro:11,pdf:8,peer:1,per:9,perfectli:11,perform:[0,4,6],period:[1,4,9],pertain:4,peter:[2,9],pipedexecut:4,plai:10,plain:[4,9],platform:[4,10,11],player:[6,10],pleas:[0,3,4,9,10,11],plugin:4,pm:4,point:[0,3,4,6,9,10,11],port:[0,4],portabl:4,posix:0,possibl:[9,10,11],post:0,power:[0,5,10],powerpc:11,pqsmarmlavlrevpdsvlwllsgpgeadarlrafahaqgvdaqrlvfmpklphpqylaryrhad:4,pre:[1,4,8,10,11],preconfigur:10,predict:[0,1,6,8],prefer:[0,6,10],prefix:0,prepar:[2,8,10],preprocess:9,present:9,preset:[0,3,8],presetalign:4,presetman:4,presetmanag:4,presetnam:[3,4],press:6,prevent:[0,4,11],previou:4,print:3,println:4,privaci:6,privat:[0,4,6,10,11],privileg:[8,11],prm:3,probabl:0,probcon:[0,7],probconsw:[0,3],problem:[0,4],procedur:[4,11],procerror:9,process:[0,1,3,4,9],procoutput:9,procter:2,produc:[0,9],product:[0,6,10],profil:[0,4],prog_doc:0,program:[0,1,3,6,8,10,11],programmat:3,prohibit:0,project:[1,2,8],prolong:4,proper:1,properli:5,properti:[0,1,4,9],protein:[0,1,2,6,8],protocol:0,provid:[0,1,3,4,5,6,10],proxi:4,publicli:[4,6],publish:0,pullexecstatist:4,purpos:0,put:[0,4,11],pvlttpgetfaarvagslnhhlgldemnvaddaafvakavalasdpaaltalharvdvlrresgv:4,q:0,qllpeepyitaqllnavaqgvgavepfaflsedasaaesvrplaptrvrskgplrvgfvsngfga:4,qname:4,qpsdtsrvvaeppsrtqcglpeqgvvlccfnnsyklnpqsmarmlavlrevpdsvlwllsgpgea:4,qualifi:4,qualifiednam:4,qualifiedservicenam:4,queer:0,queri:0,quickstart:6,r:[3,4],rais:0,ram:[0,10],rang:6,rather:10,rc:4,re:[4,6],read:[0,4,6,11],readfasta:4,readi:6,real:4,reason:0,rebuild:4,rebuilt:4,recent:0,recheck:4,recommend:[0,1,3,4,6,10,11],recompil:[4,8,11],reconfigur:10,record:[1,4,9],redirect:0,reduc:[0,11],refer:[0,4,10],reflect:1,refresh:1,refus:11,regist:4,reject:0,rel:0,relat:[0,4],releas:8,rem465:1,remot:0,remov:[0,11],repeat:0,replac:[0,1,4,9],report:[0,4,8],repositori:[0,4],repres:4,request:[4,8,9,11],requir:[0,1,4,5,6,10,11],rerun_failed_test:4,reserv:0,reset:4,resid:[0,11],resili:11,resolut:0,resolvehost:0,resourc:[0,4,10],respect:[0,9],respond:0,respons:0,rest:[1,11],restart:[0,9,11],restructuredtext:4,result:[0,4,9],resultnotavailableexcept:4,results:9,retre:3,retriev:[0,4,9],reus:[4,8],review:0,right:11,rlqgafqpsdtsrvvaeppsrtqcglpeqgvvlccfnnsyklnpqsmarmlavlrevpdsvlwl:4,rm:5,rna:[0,2,8],rnaalifold:7,rnaalifoldw:[0,1],rnastructscoremanag:1,role:9,rolenam:9,ronn:7,root:[4,10,11],rout:10,row:9,rule:0,run:[0,1,3,4,6,8,9,10,11],run_cluster_dependent_test:4,runner:4,runnerconfig:[4,9],runtest:4,runtim:[9,11],rwtqqrhaeaavllqqasdaapehpgialwlghaledhqllpeepyitaqldvlsaqvraavaqg:4,s:[0,1,3,6,9,11],sai:10,same:[0,3,4,6,9,10,11],satisfi:4,scientif:1,score:1,scoremanag:1,screen:[0,10],screenshot:9,script:[0,3,4,6,11],search:0,second:[4,9],secondari:[0,1,2,8],section:[0,4,9],secur:[1,6],see:[0,3,4,6,9,10],select:6,self:4,semicolon:0,send:[6,11],sensit:6,sent:0,separ:[0,3,11],sequenc:[0,1,2,3,6,8],sequenceannot:4,sequencelist:4,sequenceutil:4,sequenti:4,serial:4,serv:[0,4,11],server:[3,4,5,8,10,11],server_url:0,servic:[0,1,2,3,6,8,9,10,11],servicenam:[0,3],servicestatu:0,servlet:[1,11],set:[0,3,4,9,10,11],setenv:0,setexecflag:[0,4],setexecutableflag:4,setnativespecif:0,setup:[5,6],setvalu:4,seven:4,sever:[0,1,4,6],sftp:10,sge:0,sge_root:0,sgpgeadarlrafahaqgvdaqrlvfmpklphpqylaryrhadlfldthpynahttasdalwtgc:4,sh:[0,4,6],share:11,shell:10,sherstnev:2,ship:6,shot:10,should:[0,1,4,6,9,10,11],show:[3,9],shown:[3,6],side:4,sign:[1,3],signific:0,silent:4,similar:[4,10],similarli:[1,10],simpl:[0,4,6],simplest:9,simpli:[0,4,6,10,11],simplifi:[0,1],sinc:[0,4,6,11],singl:[6,10,11],site:[3,11],six:4,size:[6,8,9],skeletalexecut:4,sleep:4,slightli:6,small:[0,11],smaller:0,so:[0,3,4,9,10,11],soap:[0,3,4,6],softwar:[3,4,6],some:[0,1,4],someth:4,sometim:[4,9,11],soon:9,sourc:[0,3,6,8,11],space:[4,11],special:4,specif:[0,3,4,11],specifi:[0,3,9],speed:[0,4],sphinx:1,split:4,src:[0,4,6],ssh:10,stabil:4,stage:4,stand:6,standalon:10,standard:[0,1,4,9],standlon:10,start:[0,8,9,10],startup:0,stat:9,statist:[0,1,4,8],statpag:[0,4],statu:[0,1,6,8],step:0,still:11,stlhdvtalghlatakhirhhgidllfdlrgwggggrpevfalrpapvqvnwlaypgtsgapwmd:4,stop:1,storag:0,store:[0,4],stori:9,straight:0,straightforward:6,stream:9,string:[1,4],structur:[0,1,2,8],stub:4,subfold:4,submiss:0,submit:[0,4,6,9],substitut:0,successfulli:0,suffici:[4,10,11],suffix:0,suggest:[0,4],suit:[0,4,6,10],suitabl:0,summari:9,sun:[0,4,11],suppli:[0,1,4,11],support:[0,1,3,4,6,10,11],sure:[0,4,9,11],swap:1,symbol:[0,1,9],system:[4,5,6,8,9,10,11],t:[0,1,4,5,6,7],tabl:[0,9],take:[0,4,10],task:[0,4,6,10,11],tcoffeew:[0,3],tell:0,temp:4,templat:8,temporari:[0,4,9],ten:4,tend:4,termin:0,test:[3,6,8,10,11],testcas:4,testng:4,testoutput:0,testsrc:4,text:[4,9],than:[0,1,4,10,11],thei:[0,4,6,10],them:[0,3,4,6,10,11],thi:[0,1,3,4,5,6,8,9,10,11],thin:4,third:[4,11],though:4,thread:[0,1,4,11],three:[0,4],through:[4,6],thu:[0,4],thw:0,time:[0,1,4,9,10],timestamp:9,tip:0,titl:9,tmp:0,togeth:[3,4],tomcat:[0,1,5,6,8,10,11],tomcat_dir:0,tomcat_root:[0,9],tomcatroot:11,too:[0,6,11],tool:[0,4,6,8,10],top:4,tostr:4,total:9,trace:0,tracker:[4,8],treat:0,trim:3,troshin:2,troubleshoot:8,tune:10,turnkei:[6,10],tvalfealqrrqpdlqmhlfatsgddgstlrtrlaqastlhdvtalghlatakhirhhgidllfd:4,two:[0,1,4,11],txt:[0,4,9],type:[0,4,6],uk:[0,3,4,5,11],uncom:0,undeploi:11,undeploy:11,under:[0,4,6],underneath:4,uniqu:9,unit:8,univers:[0,4,6],unix:[6,9],unless:10,unlik:[6,10],unpack:[6,10,11],unsupportedruntimeexcept:4,until:[0,4],up:[0,1,3,4,6,9,10,11],updat:[0,1,4],upon:[0,4],upper:4,url:[0,3,4,6,10,11],us:[0,1,2,3,4,5,6,9,10,11],us_intl:10,usag:[1,8],user:[0,1,6,9,10,11],usernam:9,utf:[9,11],util:[0,4],v1:[1,11],v2:1,v:[2,10,11],va:[5,8,9],valid:8,valu:[0,3,4],valv:0,variabl:[4,8],variou:0,veri:[0,1,4,6],verifi:5,version:[0,3,6,7,8,9,10,11],vgavepfaflsedasaaeqlacartraqaiaasvrplaptrvrskgplrvgfvsngfgahptgl:4,via:[3,6,10],viennarna:7,view:[4,8],violat:4,virtial:10,virtual:[0,5,8,9],virtualbox:[1,10],visial:0,visit:6,visual:[1,9],visualis:9,vm:8,vm_ip:10,vmdk:10,vmware:[1,6,10],vmx:10,vrwtqqrhaeaavllqqasdaapehpgialwlghaledagqaeaaaaaytrahqllpeepyitaq:4,vulner:1,vwmare:10,wa:[0,1,4,9],wai:[0,3,4,6,9,10],wait:[0,4],want:[0,3,4,6,8,10],war:[1,4,5,8,9,10],warn:0,wast:0,watch:4,we:[0,1,2,4,5,6,10,11],web:[0,1,2,3,5,8,10],webal:0,webapp:[0,6,11],webapplicationpath:0,webmean:10,webservic:[0,4,6],websit:[1,4],weight:4,welcom:3,well:[0,4,6,11],were:[1,4,9,11],what:[0,6,10],whatev:[0,4],when:[0,2,9,10],whenev:4,where:[0,3,4,6,9,10],wherea:0,whether:[4,5,9,10],which:[0,1,3,4,5,6,9,10,11],who:[0,4,6,10],whole:[0,9],whose:9,why:0,wide:6,window:[0,4,6,10,11],wish:0,within:[0,1,4,9],without:[0,4,10,11],work:[2,4,6,8,10,11],worldwid:6,would:[0,3,4,6,10],wrap:4,wrapper:4,write:[3,6,8],writeclustalalign:4,written:0,wrongparameterexcept:4,ws:[0,1,3,4,6],wsbuild:4,wsdl:[4,8],wsimport:[0,4],www:[0,4,5,11],x86:[0,11],x:[0,1,10],xincgc:0,xml:[0,4,9,11],xms512m:0,xmx1024m:0,xxx:0,xxxlimit:0,xxxparamet:[0,4],xxxpreset:0,yesterdai:3,you:[0,2,3,4,5,6,8,9,10,11],your:[3,5,6,8,9,10,11],your_jaba_context_nam:0,your_jabaws_server_url:0,yourself:[0,6],yvlgdafalppalepfysehvlrlqgafqpsdtsrvvaeppsrtqcglpeqgvvlccfnnsykln:4,zip:11},titles:["Advanced Usage","Changelog","Citations","Command Line Client (CLI)","For Developers","Docker Container","Getting Started","Included Tools","Welcome to JABAWS\u2019s documentation!","Usage Statistics","Virtual Appliance (VA)","Web Application Archive (WAR)"],titleterms:{"0":1,"1":1,"16th":1,"18":1,"1st":1,"2":1,"2011":1,"2013":1,"2017":1,"2021":1,"2nd":1,"function":4,"new":4,"public":6,A:4,For:4,The:4,accept:0,access:[4,9],acid:7,ad:4,advanc:0,align:[4,7],amino:7,analyt:0,api:4,applianc:[6,10],applic:[6,9,11],archiv:[6,11],artifact:4,august:1,balanc:0,benefit:6,binari:0,brief:4,build:4,calcul:4,changelog:1,check:4,citat:2,cli:[3,6],client:[3,4,6],cluster:0,code:4,command:[3,4,6],compil:0,complet:4,configur:[0,9,10],connect:4,conserv:7,contain:5,content:[0,8,9],custom:4,dec:1,defin:0,detail:9,develop:4,directori:9,disord:7,distribut:[4,6],docker:5,document:8,engin:0,environ:0,exampl:[3,4],execut:[0,9],file:[0,4],from:4,get:6,googl:0,guid:4,includ:7,instal:[3,5,10,11],intern:0,jabaw:[0,4,5,6,8,9,10],jalview:6,job:[0,9],jul:1,limit:0,line:[3,4,6],list:9,load:0,local:0,log:0,mafft:0,multipl:7,obtain:0,oct:1,overview:4,paramet:4,pre:0,predict:7,prepar:4,preset:4,privileg:9,program:4,project:4,protein:7,recompil:0,releas:1,request:0,reus:0,rna:7,run:5,s:8,secondari:7,sequenc:[4,7],server:[0,6,9],servic:4,size:0,sourc:4,start:6,statist:9,statu:4,structur:[4,7],system:0,templat:4,test:[0,4],tomcat:9,tool:7,troubleshoot:11,unit:4,usag:[0,3,9,10,11],va:[6,10],valid:0,variabl:0,version:1,view:9,virtual:[6,10],vm:10,war:[0,6,11],web:[4,6,9,11],welcom:8,work:0,write:4,wsdl:0,your:[0,4]}})
\ No newline at end of file
index 6276852..1705422 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Usage Statistics &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="usage-statistics">
+  <section id="usage-statistics">
 <h1>Usage Statistics<a class="headerlink" href="#usage-statistics" title="Permalink to this headline">¶</a></h1>
 <p>JABAWS comes with a web application for visualizing usage statistics. The screenshot below shows the main page of this application. The individual month is linked to detailed usage statistics (described later). Please note, that the links to the detailed monthly statistics are only available for authenticated users in the role admin. There is a link at the bottom of the page that lets you login, if you have not done so.</p>
 <p>If you are using JABAWS VA (Virtual Appliance) then the username is <em>jabaws</em> and password is not defined, i.e. empty.</p>
 <p>The table contains the number of jobs processed by JABAWS per month, for the whole period when the statistics was collected.</p>
 <p>For each month the table contains the following information.</p>
 <ul class="simple">
-<li>Month - the period of time for which statistics is displayed. For example Jan 2011 means period of time from the first of January to the first of February</li>
-<li>Total - the total number of jobs accepted by JABAWS</li>
-<li>Incomplete - the number of jobs for which the result file was not found or was empty excluding cancelled</li>
-<li>Cancelled - the number of jobs cancelled by the user</li>
-<li>Abandoned - the number of jobs which result(s) were not collected</li>
+<li><p>Month - the period of time for which statistics is displayed. For example Jan 2011 means period of time from the first of January to the first of February</p></li>
+<li><p>Total - the total number of jobs accepted by JABAWS</p></li>
+<li><p>Incomplete - the number of jobs for which the result file was not found or was empty excluding cancelled</p></li>
+<li><p>Cancelled - the number of jobs cancelled by the user</p></li>
+<li><p>Abandoned - the number of jobs which result(s) were not collected</p></li>
 </ul>
 <p>The summary for each column is displayed in the last row of the table.</p>
 <hr class="docutils" />
-<div class="section" id="detailed-view">
+<section id="detailed-view">
 <span id="stat-details"></span><h2>Detailed View<a class="headerlink" href="#detailed-view" title="Permalink to this headline">¶</a></h2>
 <p>Detailed execution statistics for each month is available for authenticated users only.</p>
 <a class="reference internal image-reference" href="_images/usage_statistics_month.gif"><img alt="_images/usage_statistics_month.gif" class="align-left" src="_images/usage_statistics_month.gif" style="width: 670.0px; height: 902.0px;" /></a>
 <p>Each table contains the number of jobs processed by JABAWS during the period of time specified in the title:</p>
 <ul class="simple">
-<li>The &#8220;All Jobs&#8221; table contains the summary of all jobs</li>
-<li>&#8220;Local Jobs&#8221; table - contains the summary of the jobs calculated by the local engine</li>
-<li>&#8220;Cluster Jobs&#8221; table - contains the summary of the jobs calculated by the cluster</li>
+<li><p>The “All Jobs” table contains the summary of all jobs</p></li>
+<li><p>“Local Jobs” table - contains the summary of the jobs calculated by the local engine</p></li>
+<li><p>“Cluster Jobs” table - contains the summary of the jobs calculated by the cluster</p></li>
 </ul>
 <p>Each table contains the following information for each web service:</p>
 <ul class="simple">
-<li>Total - the total number of jobs accepted by a particular JABA service</li>
-<li>Incomplete - the number of jobs for which the result file was not found or was empty excluding cancelled</li>
-<li>Cancelled - the number of jobs cancelled by the user</li>
-<li>Abandoned - the number of jobs which result(s) were not collected</li>
+<li><p>Total - the total number of jobs accepted by a particular JABA service</p></li>
+<li><p>Incomplete - the number of jobs for which the result file was not found or was empty excluding cancelled</p></li>
+<li><p>Cancelled - the number of jobs cancelled by the user</p></li>
+<li><p>Abandoned - the number of jobs which result(s) were not collected</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="job-list">
+</section>
+<section id="job-list">
 <span id="stat-jobs"></span><h2>Job List<a class="headerlink" href="#job-list" title="Permalink to this headline">¶</a></h2>
 <p>Please note that if you deployed JABAWS WAR, in order to be able to navigate to the job directory from this view, the application server may need to be configured. Please see the <a class="reference external" href="stats.html#configuring-jabaws-execution-statistics">Configuring JABAWS execution statistics</a> section for further details.</p>
 <a class="reference internal image-reference" href="_images/usage_statistics_details.gif"><img alt="_images/usage_statistics_details.gif" class="align-left" src="_images/usage_statistics_details.gif" style="width: 917.0px; height: 198.0px;" /></a>
 <p>Columns:</p>
 <ul class="simple">
-<li>JobID - the JABAWS job id, unique for every job</li>
-<li>Cluster JobID - cluster job id</li>
-<li>InputSize - input size in bytes</li>
-<li>ResultSize - result size in bytes</li>
-<li>Runtime (s) - job&#8217;s runtime in seconds</li>
-<li>Start time (s)- job&#8217;s start time and date</li>
-<li>Finish time (s)- job&#8217;s finish time and date</li>
-<li>isCancelled - whether the job was cancelled</li>
-<li>isCollected - whether the job was collected. False for the jobs that has been initiated but which results has never been retrieved</li>
-<li>isFinished - whether the job has finished. This does not necessarily mean that the job has produced the result. The job can sometime finish in failure</li>
+<li><p>JobID - the JABAWS job id, unique for every job</p></li>
+<li><p>Cluster JobID - cluster job id</p></li>
+<li><p>InputSize - input size in bytes</p></li>
+<li><p>ResultSize - result size in bytes</p></li>
+<li><p>Runtime (s) - job’s runtime in seconds</p></li>
+<li><p>Start time (s)- job’s start time and date</p></li>
+<li><p>Finish time (s)- job’s finish time and date</p></li>
+<li><p>isCancelled - whether the job was cancelled</p></li>
+<li><p>isCollected - whether the job was collected. False for the jobs that has been initiated but which results has never been retrieved</p></li>
+<li><p>isFinished - whether the job has finished. This does not necessarily mean that the job has produced the result. The job can sometime finish in failure</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="job-directory-contents">
+</section>
+<section id="job-directory-contents">
 <span id="stat-dir-contents"></span><h2>Job Directory Contents<a class="headerlink" href="#job-directory-contents" title="Permalink to this headline">¶</a></h2>
 <a class="reference internal image-reference" href="_images/usage_statistics_job_details.gif"><img alt="_images/usage_statistics_job_details.gif" class="align-left" src="_images/usage_statistics_job_details.gif" style="width: 644.4px; height: 378.0px;" /></a>
 <p>STARTED and FINISHED files contain Unix timestamp - when the job was started and completed respectively. STARTED is replaced by SUBMITTED if the job has been submitted to the cluster, as opposed to executed locally, on the server.</p>
 <p>input.txt file contains input into the process.</p>
 <p>There are maybe other files depending on the nature of the job, but the one described above will be present in most cases. In this example, stat.log file stories the execution statistics generated by (clustal executable in this example) process.</p>
 <p>If you have deployed JABAWS WAR file or made changes to JABAWS configuration you may need to make a few changes to the Tomcat configuration to be able to see the content of the job directory. Please see the <a class="reference external" href="stats.html#configuring-jabaws-execution-statistics">Configuring JABAWS execution statistics</a> section for further details.</p>
-</div>
-<div class="section" id="configuring-jabaws-execution-statistics">
+</section>
+<section id="configuring-jabaws-execution-statistics">
 <span id="stat-config"></span><h2>Configuring JABAWS execution statistics<a class="headerlink" href="#configuring-jabaws-execution-statistics" title="Permalink to this headline">¶</a></h2>
 <p>JABAWS execution statistics is a multi-component system. First is a crawler whose job is to collect and preprocess the statistics from the job temporary directories and record the collected statistics into the database. The second part of the system is a web application whose job is to visualise the statistics from the database.</p>
-<p>It is possible to enable/disable the statistics collector by changing the following properties in the <code class="docutils literal"><span class="pre">conf/Cluster.engine.properties</span></code> and <code class="docutils literal"><span class="pre">conf/Local.engine.properties</span></code> files.</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Enable/disable cluster statistics collector true = enable, false = disable</span>
+<p>It is possible to enable/disable the statistics collector by changing the following properties in the <code class="docutils literal notranslate"><span class="pre">conf/Cluster.engine.properties</span></code> and <code class="docutils literal notranslate"><span class="pre">conf/Local.engine.properties</span></code> files.</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Enable/disable cluster statistics collector true = enable, false = disable</span>
 cluster.stat.collector.enable<span class="o">=</span><span class="nb">false</span>
 <span class="c1"># Maximum amount of time the job is considered be running in hours. Optional defaults to 7 days (168h)</span>
 cluster.stat.maxruntime<span class="o">=</span><span class="m">24</span>
 </pre></div>
 </div>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># Enable/disable cluster statistics collector true = enable, false = disable</span>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Enable/disable cluster statistics collector true = enable, false = disable</span>
 local.stat.collector.enable<span class="o">=</span><span class="nb">true</span>
 <span class="c1"># Maximum amount of time the job is considered to be running in hours. Optional defaults to 24 hours</span>
 local.stat.maxruntime<span class="o">=</span><span class="m">6</span>
 </pre></div>
 </div>
 <p>If the statistics collector is enabled then the crawler starts automatically soon after (10 minutes for local engine, and 60 minutes for cluster engine) the JABAWS web application and will be collecting the execution statistics every 24 hours after the start.</p>
-<p>The details of the job are only available if the job temporary directory is located within a JABAWS web application. If not, the system administrator can create a symbolic link pointing to the temporary job directories outside of a web application and configure the application server to allow navigation to the links. For the Tomcat application server the context configuration file should be created and copied to the <code class="docutils literal"><span class="pre">&lt;TOMCAT_ROOT&gt;/conf/Catalina/localhost</span></code> directory. The name of the file should be the same as the web application context name, for example <em>jabaws.xml</em> for jabaws. Where the <code class="docutils literal"><span class="pre">TOMCAT_ROOT</span></code> is the location of the Tomcat web application server. Here is an example of such a file:</p>
-<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<p>The details of the job are only available if the job temporary directory is located within a JABAWS web application. If not, the system administrator can create a symbolic link pointing to the temporary job directories outside of a web application and configure the application server to allow navigation to the links. For the Tomcat application server the context configuration file should be created and copied to the <code class="docutils literal notranslate"><span class="pre">&lt;TOMCAT_ROOT&gt;/conf/Catalina/localhost</span></code> directory. The name of the file should be the same as the web application context name, for example <em>jabaws.xml</em> for jabaws. Where the <code class="docutils literal notranslate"><span class="pre">TOMCAT_ROOT</span></code> is the location of the Tomcat web application server. Here is an example of such a file:</p>
+<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
 <span class="nt">&lt;Context</span> <span class="na">antiResourceLocking=</span><span class="s">&quot;false&quot;</span> <span class="na">privileged=</span><span class="s">&quot;true&quot;</span> <span class="na">allowLinking=</span><span class="s">&quot;true&quot;</span><span class="nt">/&gt;</span>
 </pre></div>
 </div>
-<p>The key option here is this: <code class="docutils literal"><span class="pre">allowLinking=&quot;true&quot;</span></code>. Please also make sure that you have defined the user in role <em>admin</em> as described <a class="reference external" href="stats.htmll#configuring-a-privileged-access-for-tomcat-web-application-server">below</a>.</p>
-</div>
-<div class="section" id="configuring-a-privileged-access-for-tomcat-web-application-server">
+<p>The key option here is this: <code class="docutils literal notranslate"><span class="pre">allowLinking=&quot;true&quot;</span></code>. Please also make sure that you have defined the user in role <em>admin</em> as described <a class="reference external" href="stats.htmll#configuring-a-privileged-access-for-tomcat-web-application-server">below</a>.</p>
+</section>
+<section id="configuring-a-privileged-access-for-tomcat-web-application-server">
 <span id="stat-tomcat-users"></span><h2>Configuring a privileged access for Tomcat web application server<a class="headerlink" href="#configuring-a-privileged-access-for-tomcat-web-application-server" title="Permalink to this headline">¶</a></h2>
 <p>Access to configuration files, detailed job execution statistics and job directories are allowed only for authenticated users in role <em>admin</em>.</p>
-<p>If you use Tomcat, then the simplest way to set up privileged access is to use a plain text configuration file <code class="docutils literal"><span class="pre">conf/tomcat-user.xml</span></code>. Here is an example of such configuration file defining user &#8220;peter&#8221; in role <em>admin</em>.</p>
-<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt">&lt;tomcat-users&gt;</span>
+<p>If you use Tomcat, then the simplest way to set up privileged access is to use a plain text configuration file <code class="docutils literal notranslate"><span class="pre">conf/tomcat-user.xml</span></code>. Here is an example of such configuration file defining user “peter” in role <em>admin</em>.</p>
+<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;tomcat-users&gt;</span>
 <span class="nt">&lt;role</span> <span class="na">rolename=</span><span class="s">&quot;admin&quot;</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;user</span> <span class="na">username=</span><span class="s">&quot;peter&quot;</span> <span class="na">password=</span><span class="s">&quot;your password here &quot;</span> <span class="na">roles=</span><span class="s">&quot;admin&quot;</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/tomcat-users&gt;</span>
 </pre></div>
 </div>
 <p>For more information on users and roles please consult Apache-Tomcat help pages.</p>
-</div>
-</div>
+</section>
+</section>
 
 
            </div>
@@ -330,6 +335,7 @@ local.stat.maxruntime<span class="o">=</span><span class="m">6</span>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 273ea4a..e7046ba 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Virtual Appliance (VA) &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="virtual-appliance-va">
+  <section id="virtual-appliance-va">
 <h1>Virtual Appliance (VA)<a class="headerlink" href="#virtual-appliance-va" title="Permalink to this headline">¶</a></h1>
-<p>The JABAWS Virtual Appliance is a way to run a JABAWS server locally, without the need to connect to the internet or configure JABAWS. What the appliance provides is a &#8216;virtual server machine&#8217; (or more simply - <em>virtual machine</em> or <em>VM</em>), running an installation of the JABAWS Web Application Archive (WAR) on <a class="reference external" href="https://www.turnkeylinux.org/tomcat">TurnKey Linux</a> 12.1 (Standlone Tomcat). Once this has started up, it displays a message indicating the IP address of the JABAWS server, allowing any JABAWS client (such as Jalview or the JABAWS command line client) to connect to it.</p>
-<p>You can run the appliance with freely available program such as <a class="reference external" href="http://www.vmware.com/products/player">VMware Player</a>, but you will need to install it first. We have tested the JABAWS appliance with VMware Player v 3.1.2 on Windows and Linux, and VMware Fusion on Mac. However, you are not limited to these virtualization systems and can use the JABAWS Appliance with any other virtualization platform. You can use <a class="reference external" href="https://code.vmware.com/web/dp/tool/ovf/4.1.0">VMware OVF</a> tool to prepare JABAWS image for a different virtualization platform e.g. <a class="reference external" href="https://www.virtualbox.org/">VirtualBox</a>. <a class="reference external" href="https://www.virtualbox.org/">VirtualBox</a> can also use the <code class="docutils literal"><span class="pre">jabaws*.vmdk</span></code> directly as an <em>existing preconfigured virtual hard disk file</em>, when creating a new Linux 2.4 / 3.x / 4.x 64-bit VM.</p>
+<p>The JABAWS Virtual Appliance is a way to run a JABAWS server locally, without the need to connect to the internet or configure JABAWS. What the appliance provides is a ‘virtual server machine’ (or more simply - <em>virtual machine</em> or <em>VM</em>), running an installation of the JABAWS Web Application Archive (WAR) on <a class="reference external" href="https://www.turnkeylinux.org/tomcat">TurnKey Linux</a> 12.1 (Standlone Tomcat). Once this has started up, it displays a message indicating the IP address of the JABAWS server, allowing any JABAWS client (such as Jalview or the JABAWS command line client) to connect to it.</p>
+<p>You can run the appliance with freely available program such as <a class="reference external" href="http://www.vmware.com/products/player">VMware Player</a>, but you will need to install it first. We have tested the JABAWS appliance with VMware Player v 3.1.2 on Windows and Linux, and VMware Fusion on Mac. However, you are not limited to these virtualization systems and can use the JABAWS Appliance with any other virtualization platform. You can use <a class="reference external" href="https://code.vmware.com/web/dp/tool/ovf/4.1.0">VMware OVF</a> tool to prepare JABAWS image for a different virtualization platform e.g. <a class="reference external" href="https://www.virtualbox.org/">VirtualBox</a>. <a class="reference external" href="https://www.virtualbox.org/">VirtualBox</a> can also use the <code class="docutils literal notranslate"><span class="pre">jabaws*.vmdk</span></code> directly as an <em>existing preconfigured virtual hard disk file</em>, when creating a new Linux 2.4 / 3.x / 4.x 64-bit VM.</p>
 <div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The appliance best suits users who would like to use the JABAWS web-services locally. This might be because they do not want to access systems over an internet, or just want to keep their data private. It is also the recommended option for users who want to install JABAWS on Windows, which does not support all the bioinformatics programs that JABAWS can run.</p>
+<p class="admonition-title">Note</p>
+<p>The appliance best suits users who would like to use the JABAWS web-services locally. This might be because they do not want to access systems over an internet, or just want to keep their data private. It is also the recommended option for users who want to install JABAWS on Windows, which does not support all the bioinformatics programs that JABAWS can run.</p>
 </div>
 <p>For servers that will be used heavily, we recommend that a JABAWS Server WAR distribution is deployed, rather than the Virtual Appliance version of JABAWS. This is because the JABAWS appliance is pre-configured to use only 1 CPU and 512M of memory (where the minimum amount of memory required for a JABAWS server is about 378M), which is unlikely to be sufficient for heavy computation. It is possible to reconfigure the virtual appliance so it uses more computation resources, but for most production environments, the JABAWS WAR distribution will be easier to deploy and fine tune to take advantage of the available resources.</p>
 <hr class="docutils" />
-<div class="section" id="installing">
+<section id="installing">
 <span id="va-installing"></span><h2>Installing<a class="headerlink" href="#installing" title="Permalink to this headline">¶</a></h2>
 <div class="admonition tip">
-<p class="first admonition-title">Tip</p>
-<p class="last">Check if you are running the recommended version of VWMare.</p>
+<p class="admonition-title">Tip</p>
+<p>Check if you are running the recommended version of VWMare.</p>
 </div>
 <p>The free <a class="reference external" href="http://www.vmware.com/products/player">VMware Player</a> can be used to run the JABAWS services from the Windows and Linux host operating systems. <a class="reference external" href="http://www.vmware.com/products/fusion/overview.html">VMware Fusion</a>, a commercial VMware product, offers virtual machine support for Mac.</p>
-<p>To run the JABAWS server on VMware player, unpack the JABAWS VM into one of the folders on your local hard drive. Open VMware Player, click &#8220;Open Virtual Machine&#8221; and point the Player to the location of the JABAWS, then choose the <code class="docutils literal"><span class="pre">jabaws*.vmx</span></code> file to open an appliance.</p>
-<p>When you play the machine for the first time the Player might ask you whether &#8220;This virtual machine may have been moved or copied.&#8221;, say that you have copied it. That is all.</p>
+<p>To run the JABAWS server on VMware player, unpack the JABAWS VM into one of the folders on your local hard drive. Open VMware Player, click “Open Virtual Machine” and point the Player to the location of the JABAWS, then choose the <code class="docutils literal notranslate"><span class="pre">jabaws*.vmx</span></code> file to open an appliance.</p>
+<p>When you play the machine for the first time the Player might ask you whether “This virtual machine may have been moved or copied.”, say that you have copied it. That is all.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="usage">
+</section>
+<section id="usage">
 <span id="va-usage"></span><h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
 <p>By default, the JABAWS virtual appliance is configured with 512M of memory and 1 CPU, but you are free to change these settings. If you have more than one CPU or CPU core on your computer you can make them available for the JABAWS virtual machine by editing virtual machine settings. Please bear in mind that more CPU power will not make a single calculation go faster, but it will enable the VM to do calculations in parallel. Similarly, you can add more memory to the virtual machine. More memory lets your VM deal with larger tasks, e.g. work with large alignments.</p>
 <a class="reference internal image-reference" href="_images/VMware_cpu.png"><img alt="_images/VMware_cpu.png" class="align-left" src="_images/VMware_cpu.png" style="width: 672.6px; height: 253.64999999999998px;" /></a>
 <p>The VMware Player screen shot above displays JABAWS VM CPU settings.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="configuration">
+</section>
+<section id="configuration">
 <span id="va-config"></span><h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="vm-configuration">
+<section id="vm-configuration">
 <span id="va-vm-config"></span><h3>VM configuration<a class="headerlink" href="#vm-configuration" title="Permalink to this headline">¶</a></h3>
 <p><strong>VMware info</strong></p>
 <ul class="simple">
-<li>CPUs : 1</li>
-<li>RAM : 512 MB</li>
-<li>Networking : Host only (the VM has no access to the outside network, nothing from the outside network can access the VM)</li>
-<li>Hard disk : 20 GB (expanding)</li>
-<li>VMware tools : Installed</li>
+<li><p>CPUs : 1</p></li>
+<li><p>RAM : 512 MB</p></li>
+<li><p>Networking : Host only (the VM has no access to the outside network, nothing from the outside network can access the VM)</p></li>
+<li><p>Hard disk : 20 GB (expanding)</p></li>
+<li><p>VMware tools : Installed</p></li>
 </ul>
 <p><strong>OS information</strong></p>
 <ul class="simple">
-<li>OS : TurnKey Linux (v. 14.1, Standalone Tomcat) based on Debian GNU/Linux 8 (Jessie)</li>
-<li>Installation : Oracle Java 7, Tomcat 7, JABAWS v. 2.2</li>
-<li>IPv4 address : dhcp</li>
-<li>IPv6 address : auto</li>
-<li>DNS name : none</li>
-<li>Name server : dhcp</li>
-<li>Route : dhcp</li>
-<li>Keyboard : US_intl</li>
+<li><p>OS : TurnKey Linux (v. 14.1, Standalone Tomcat) based on Debian GNU/Linux 8 (Jessie)</p></li>
+<li><p>Installation : Oracle Java 7, Tomcat 7, JABAWS v. 2.2</p></li>
+<li><p>IPv4 address : dhcp</p></li>
+<li><p>IPv6 address : auto</p></li>
+<li><p>DNS name : none</p></li>
+<li><p>Name server : dhcp</p></li>
+<li><p>Route : dhcp</p></li>
+<li><p>Keyboard : US_intl</p></li>
 </ul>
 <p><strong>Login credentials</strong></p>
 <ul class="simple">
-<li>Root password: JabawsAdmin1</li>
-<li>MySQL password: JabawsAdmin1</li>
-<li>Tomcat admin password: JabawsAdmin2</li>
+<li><p>Root password: JabawsAdmin1</p></li>
+<li><p>MySQL password: JabawsAdmin1</p></li>
+<li><p>Tomcat admin password: JabawsAdmin2</p></li>
 </ul>
 <p><strong>Services available at the virtial machine IP (e.g. VM_IP = 172.16.232.149)</strong></p>
 <ul class="simple">
-<li>Tomcat Web Server: <a class="reference external" href="http://VM_IP">http://VM_IP</a> (e.g. <a class="reference external" href="http://172.16.232.149">http://172.16.232.149</a>)</li>
-<li>Jabaws URL: <a class="reference external" href="http://VM_IP/jabaws">http://VM_IP/jabaws</a> (e.g. <a class="reference external" href="http://172.16.232.149/jabaws">http://172.16.232.149/jabaws</a>)</li>
-<li>Web Shell: <a class="reference external" href="https://VM_IP:12320/">https://VM_IP:12320/</a> (e.g. <a class="reference external" href="https://172.16.232.149:12320">https://172.16.232.149:12320</a>)</li>
-<li>Webmean: <a class="reference external" href="https://VM_IP:12321/">https://VM_IP:12321/</a> (e.g. <a class="reference external" href="https://172.16.232.149:12321">https://172.16.232.149:12321</a>)</li>
-<li>SSH/SFTP: <a class="reference external" href="mailto:root&#37;&#52;&#48;VM_IP">root<span>&#64;</span>VM_IP</a> (e.g. ssh <a class="reference external" href="mailto:root&#37;&#52;&#48;172&#46;16&#46;232&#46;149">root<span>&#64;</span>172<span>&#46;</span>16<span>&#46;</span>232<span>&#46;</span>149</a>)</li>
+<li><p>Tomcat Web Server: <a class="reference external" href="http://VM_IP">http://VM_IP</a> (e.g. <a class="reference external" href="http://172.16.232.149">http://172.16.232.149</a>)</p></li>
+<li><p>Jabaws URL: <a class="reference external" href="http://VM_IP/jabaws">http://VM_IP/jabaws</a> (e.g. <a class="reference external" href="http://172.16.232.149/jabaws">http://172.16.232.149/jabaws</a>)</p></li>
+<li><p>Web Shell: <a class="reference external" href="https://VM_IP:12320/">https://VM_IP:12320/</a> (e.g. <a class="reference external" href="https://172.16.232.149:12320">https://172.16.232.149:12320</a>)</p></li>
+<li><p>Webmean: <a class="reference external" href="https://VM_IP:12321/">https://VM_IP:12321/</a> (e.g. <a class="reference external" href="https://172.16.232.149:12321">https://172.16.232.149:12321</a>)</p></li>
+<li><p>SSH/SFTP: <a class="reference external" href="mailto:root&#37;&#52;&#48;VM_IP">root<span>&#64;</span>VM_IP</a> (e.g. ssh <a class="reference external" href="mailto:root&#37;&#52;&#48;172&#46;16&#46;232&#46;149">root<span>&#64;</span>172<span>&#46;</span>16<span>&#46;</span>232<span>&#46;</span>149</a>)</p></li>
 </ul>
 <hr class="docutils" />
-</div>
-<div class="section" id="jabaws-configuration">
+</section>
+<section id="jabaws-configuration">
 <span id="va-jabaws-config"></span><h3>JABAWS configuration<a class="headerlink" href="#jabaws-configuration" title="Permalink to this headline">¶</a></h3>
 <p>After booting the JABAWS VM, you should see similar screen, however, the IP address of your VM may be different. To enable Jalview to work with your JABAWS appliance you need to go to Jalview-&gt;Tools-&gt;Preferences-&gt;Web Services -&gt; New Service URL, and add JABAWS URL into the box provided. For more information please refer to <a class="reference external" href="http://www.jalview.org/help/html/webServices/JABAWS.html">Jalview help pages</a>.</p>
 <a class="reference internal image-reference" href="_images/vm_welcome_screen.png"><img alt="_images/vm_welcome_screen.png" class="align-left" src="_images/vm_welcome_screen.png" style="width: 697.3px; height: 437.95px;" /></a>
 <p>If you click on Advanced Menu, you will see the configuration console, similar to the one below.</p>
 <a class="reference internal image-reference" href="_images/VMware_booted.png"><img alt="_images/VMware_booted.png" class="align-left" src="_images/VMware_booted.png" style="width: 698.25px; height: 437.95px;" /></a>
 <p>By default the JABAWS VM is configured to use host-only networking. This means that the host can communicate with the VM via a network, but no other machines can. Similarly, the VM cannot communicate with any other computers apart from the host. If you want to connect to the Internet from the VM, configure your VM to use NAT network. However, you will not be able to connect to the VM from the host in such case. If you want to be able to connect to your VM and let VM connect to the internet at the same time you would have to use a Bridged network. In such a case you would have to configure the VM IP address manually (unless of course your network has a DHCP server to do that).</p>
-</div>
-</div>
-</div>
+</section>
+</section>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index 7a95950..ab9ea9d 100644 (file)
@@ -5,7 +5,8 @@
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
-  
+  <meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Web Application Archive (WAR) &mdash; JABAWS 2.2 documentation</title>
   
 
   
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
 
   
         <link rel="index" title="Index"
@@ -90,7 +95,7 @@
               
             
             
-              <p class="caption"><span class="caption-text">Contents:</span></p>
+              <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
 <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
 <li class="toctree-l1"><a class="reference internal" href="included_tools.html">Included Tools</a></li>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="web-application-archive-war">
+  <section id="web-application-archive-war">
 <h1>Web Application Archive (WAR)<a class="headerlink" href="#web-application-archive-war" title="Permalink to this headline">¶</a></h1>
 <p>JABAWS Web Application aRchive can run on any host operating system that supports <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html">Java</a> and <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a>. JABAWS requires a Java web application server compliant with version 2.4 of the Java Servlet specification, and a <a class="reference external" href="http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html">Java</a> 7 runtime environment. We recommend using an official Oracle Java 7 runtime environment, and <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a> web application server version 8.5, but older Tomcat versions above 5.5 will work too.</p>
 <div class="admonition danger">
-<p class="first admonition-title">Danger</p>
-<p class="last">The JABAWS WAR is not generally compatible with older Mac systems based on the PowerPC architecture, since Java 1.7 is not available to run JABAWS.</p>
+<p class="admonition-title">Danger</p>
+<p>The JABAWS WAR is not generally compatible with older Mac systems based on the PowerPC architecture, since Java 1.7 is not available to run JABAWS.</p>
 </div>
 <p>However JABAWS depends on a number of third party programs which are not available for all operating systems. In particular, not all web services are currently available for MS Windows platform. JABAWS comes with pre-compiled MS Windows and Linux x86 binaries, as well as the source code and build scripts necessary to recompile them.</p>
 <p>To run JABAWS on the cluster you must have shared disk space accessible from all cluster nodes.</p>
 <hr class="docutils" />
-<div class="section" id="installing">
+<section id="installing">
 <span id="war-installing"></span><h2>Installing<a class="headerlink" href="#installing" title="Permalink to this headline">¶</a></h2>
 <div class="admonition tip">
-<p class="first admonition-title">Tip</p>
-<p class="last">Check if you are running the recommended versions of Java and Apache-Tomcat.</p>
+<p class="admonition-title">Tip</p>
+<p>Check if you are running the recommended versions of Java and Apache-Tomcat.</p>
 </div>
-<p>JABAWS is distributed as a web application archive (WAR). To deploy JABAWS in <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a> - simply drop the war file into the webapps directory of a running Tomcat, and it will do the rest. If you used this deployment procedure, do not remove the Jabaws WAR file, otherwise Tomcat will undeploy your application! The context path for your deployed application will be the same as the name of the war file. For example, assuming the Tomcat server is running on the <code class="docutils literal"><span class="pre">localhost:8080</span></code> and <em>jaba.war</em> file is put into the <code class="docutils literal"><span class="pre">&lt;tomcat</span> <span class="pre">server</span> <span class="pre">root&gt;/webapps</span></code> directory, the deployed application from the jabaws.war file then can be accessed by this URL <code class="docutils literal"><span class="pre">http://localhost:8080/jabaws</span></code>.</p>
-<p>For any other web application server, please follow your server&#8217;s specific deployment procedure for &#8216;WAR&#8217; files. If you install JABAWS on a MS Windows machine, then at this point your JABAWS installation will already be up and running, and you can try its services out as described here in the <a class="reference external" href="advanced.html#testing-the-jabaws-server">documentation</a>. If you install JABAWS on Linux you will need to compile the binaries for your system and set an executable flag for binaries (<a class="reference external" href="advanced.html#pre-compiled-binaries">more details here</a> and <a class="reference external" href="advanced.html#recompiling-binaries-for-your-system">here</a>).</p>
+<p>JABAWS is distributed as a web application archive (WAR). To deploy JABAWS in <a class="reference external" href="http://tomcat.apache.org/download-80.cgi">Apache-Tomcat</a> - simply drop the war file into the webapps directory of a running Tomcat, and it will do the rest. If you used this deployment procedure, do not remove the Jabaws WAR file, otherwise Tomcat will undeploy your application! The context path for your deployed application will be the same as the name of the war file. For example, assuming the Tomcat server is running on the <code class="docutils literal notranslate"><span class="pre">localhost:8080</span></code> and <em>jaba.war</em> file is put into the <code class="docutils literal notranslate"><span class="pre">&lt;tomcat</span> <span class="pre">server</span> <span class="pre">root&gt;/webapps</span></code> directory, the deployed application from the jabaws.war file then can be accessed by this URL <code class="docutils literal notranslate"><span class="pre">http://localhost:8080/jabaws</span></code>.</p>
+<p>For any other web application server, please follow your server’s specific deployment procedure for ‘WAR’ files. If you install JABAWS on a MS Windows machine, then at this point your JABAWS installation will already be up and running, and you can try its services out as described here in the <a class="reference external" href="advanced.html#testing-the-jabaws-server">documentation</a>. If you install JABAWS on Linux you will need to compile the binaries for your system and set an executable flag for binaries (<a class="reference external" href="advanced.html#pre-compiled-binaries">more details here</a> and <a class="reference external" href="advanced.html#recompiling-binaries-for-your-system">here</a>).</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="usage">
+</section>
+<section id="usage">
 <span id="war-usage"></span><h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
 <p><strong>Running many JABAWS instances on the same server</strong></p>
 <p>JABAWS is supplied as a Web Application aRchive which can be dealt with as any other web applications. So it is perfectly possible to run two JABAWS instances from the same server. Just make two different contexts on your application server and unpack JABAWS in both of them. For example if your server name is <a class="reference external" href="http://www.align.ac.uk">http://www.align.ac.uk</a>, and the context names are public and private. Than one group of users could be given a URL <a class="reference external" href="http://www.align.ac.uk/public">http://www.align.ac.uk/public</a> and another <a class="reference external" href="http://www.align.ac.uk/private">http://www.align.ac.uk/private</a>. These contexts will be served by two independent JABAWS instances, and could be configured differently. If you keep local engine enabled, make sure you reduce the number of threads local engine is allowed to use to avoid overloading the server. Alternatively two completely separate web application server instances (e.g. Apache-Tomcat) could be used. This will give you a better resilience and more flexibility in memory settings.</p>
 <p><strong>JABAWS supported cluster batch management systems</strong></p>
 <p>JABAWS uses <a class="reference external" href="http://www.drmaa.org/">DRMAA</a> v1.0 library to send and manage jobs on the cluster. DRMAA supports many different cluster job management systems. Namely Sun Grid Engine, Condor, PBS, GridWay, Globus 2/4, PBSPro, LSF. For up to date information please consult DRMAA web site. We found that DRMAA implementation differ from platform to platform and were trying to use only the basic functions. We have only tested JABAWS on Sun Grid Engine v 6.2. Please let use know if you have any experience of running JABAWS on other platforms.</p>
 <hr class="docutils" />
-</div>
-<div class="section" id="troubleshooting">
+</section>
+<section id="troubleshooting">
 <span id="war-troubleshooting"></span><h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h2>
 <p><strong>If Apache-Tomcat fails to deploy jabaws.war file:</strong></p>
 <ul class="simple">
-<li>Make sure Tomcat has sufficient access rights to read your war file.</li>
-<li>Restart the Tomcat, sometimes it will not restart after the new war file is added without restart</li>
-<li>If Tomcat still refuses to unpack the war file, unpack it manually into web application folder (the war file is just a zip archive). Restart the Tomcat.</li>
+<li><p>Make sure Tomcat has sufficient access rights to read your war file.</p></li>
+<li><p>Restart the Tomcat, sometimes it will not restart after the new war file is added without restart</p></li>
+<li><p>If Tomcat still refuses to unpack the war file, unpack it manually into web application folder (the war file is just a zip archive). Restart the Tomcat.</p></li>
 </ul>
 <p><strong>If Tomcat undeployes your application:</strong></p>
-<p>If the war file is automatically removed by Tomcat use an explicit application descriptor. Add a context descriptor file into <code class="docutils literal"><span class="pre">&lt;tomcatRoot&gt;conf/Catalina/localhost</span></code> directory. Name your context file the same as your application folder e.g. if your JABAWS resides in <code class="docutils literal"><span class="pre">webapps/jabaws</span></code> folder, then call the context file jabaws.xml. Below is an example of content this file might have.</p>
-<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<p>If the war file is automatically removed by Tomcat use an explicit application descriptor. Add a context descriptor file into <code class="docutils literal notranslate"><span class="pre">&lt;tomcatRoot&gt;conf/Catalina/localhost</span></code> directory. Name your context file the same as your application folder e.g. if your JABAWS resides in <code class="docutils literal notranslate"><span class="pre">webapps/jabaws</span></code> folder, then call the context file jabaws.xml. Below is an example of content this file might have.</p>
+<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
 <span class="nt">&lt;Context</span> <span class="na">antiResourceLocking=</span><span class="s">&quot;false&quot;</span> <span class="na">privileged=</span><span class="s">&quot;true&quot;</span> <span class="nt">/&gt;</span>
 </pre></div>
 </div>
 <p>This should be sufficient to prevent Tomcat from removing your JABAWS from WEBAPPS. For more information about the Tomcat deployer read this documentation on the Apache-Tomcat web site.</p>
-</div>
-</div>
+</section>
+</section>
 
 
            </div>
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
+      <script type="text/javascript" src="_static/documentation_options.js"></script>
       <script type="text/javascript" src="_static/jquery.js"></script>
       <script type="text/javascript" src="_static/underscore.js"></script>
       <script type="text/javascript" src="_static/doctools.js"></script>
index ba4d6e9..d5654f9 100644 (file)
                 </p>
                 <ul>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-min-client-2.2.0.jar'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-min-client-2.2.1.jar'>
                             <i class="fa fa-download" aria-hidden="true"></i> CLI jar file with binaries</a> (with log4j)</li>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-min-client-nolog-2.2.0.jar'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-min-client-nolog-2.2.1.jar'>
                             <i class="fa fa-download" aria-hidden="true"></i> CLI jar file with binaries</a> (without log4j)</li>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-client-src-2.2.0.jar'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-client-src-2.2.1.jar'>
                             <i class="fa fa-download" aria-hidden="true"></i> CLI client source only</a></li>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-full-client-2.2.0.jar'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-full-client-2.2.1.jar'>
                             <i class="fa fa-download" aria-hidden="true"></i> CLI full client</a></li>
                 </ul>
                 <p class="justify">
                 </p>
                 <ul>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-va-2.2.tar.gz'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-va-2.2.1.tar.gz'>
                             <i class="fa fa-download" aria-hidden="true"></i> JABAWS Virtual Appliance</a></li>
                 </ul>
                 <p class="justify">
                         <%--<a href='${pageContext.request.contextPath}/archive/jabaws-project-2.2.0.tar.gz'>--%>
                             <%--<i class="fa fa-download" aria-hidden="true"></i> download</a> <mark>(92M)</mark></li>--%>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-project-2.2.tar.gz'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-project-2.2.1.tar.gz'>
                             <i class="fa fa-download" aria-hidden="true"></i> The complete project</a></li>
                     <li>
-                        <a href='${pageContext.request.contextPath}/archive/jabaws-src-2.2.0.jar'>
+                        <a href='${pageContext.request.contextPath}/archive/jabaws-src-2.2.1.jar'>
                             <i class="fa fa-download" aria-hidden="true"></i> JABAWS source</a></li>
                     <li>
                         <a href='${pageContext.request.contextPath}/archive/jabaws-binaries.zip'>
index 9f6f0a0..161b006 100644 (file)
                         (version 1.7)</li>
                     <li>Provided that you have the Java ready to run, you can get command line help by changing to
                         the directory where you downloaded the client jar, and typing:<br/>
-                        <pre><code class="bash">java -jar jabaws-full-client-2.2.0.jar</code></pre>
+                        <pre><code class="bash">java -jar jabaws-full-client-2.2.1.jar</code></pre>
                     </li>
                 </ol>
                 <p class="justify">
index 2e27946..a1567bc 100644 (file)
@@ -15,7 +15,7 @@
     <div class="col-md-12">
         <div class="panel panel-default">
             <div class="panel panel-heading">
-                <h1 class="panel-title">Welcome to the JABAWS 2.2 website</h1>
+                <h1 class="panel-title">Welcome to the JABAWS 2.2.1 website</h1>
             </div>
             <div class="panel-body">
                 <div class="row">
                     <a href="${pageContext.request.contextPath}/getting_started.jsp#client">JABAWS CLI</a>, or
                     <a href="${pageContext.request.contextPath}/docs/develop.html#accessing-jabaws-from-your-program">with your own program</a>.
                     The latest versions of Jalview (version 2.9 or later) are fully compatible
-                    with JABAWS 2.2 and are configured to use the public JABAWS server by default.
+                    with JABAWS 2.2.1 and are configured to use the public JABAWS server by default.
                 </p>
                 <ul>
                     <li>The JABAWS public web services address is <strong><a href="http://www.compbio.dundee.ac.uk/jabaws">http://www.compbio.dundee.ac.uk/jabaws</a></strong> </li>
     <div class="col-md-12">
         <div class="panel panel-default">
             <div class="panel panel-heading">
-                <h1 class="panel-title">New in JABAWS 2.2</h1>
+                <h1 class="panel-title">New in JABAWS 2.2.1</h1>
             </div>
             <div class="panel-body">
-                <p class="justify">
-                    The current JABAWS version is 2.2 released on 18 August 2017. Among the new developments in JABAWS 2.2 are:
+                               <p class="justify">Version 2.2.1 was released on 16th December
+                                       2021. It is JABAWS 2.2, minimally patched to address the widely
+                                       publicised Log4Shell vulnerability.</p>
+                               <p class="justify">
+                    
+                    The JABAWS 2.2 series was first released on 18 August 2017. Among the new developments in JABAWS 2.2 are:
                                 </p>
                     <ul>
                         <li>Several programs included in JABAWS, including Clustal Omega, ClustalW, Mafft and T-coffee, were updated.
index dcfda0e..2dc858f 100644 (file)
@@ -18,7 +18,7 @@
     <meta name="description" content="Java Bioinformatics Analyses Web Services (JABAWS) at the Barton Group -
                                         Bioinformatics Research Group in the Division of Computational Biology,
                                         School of Life Sciences, University of Dundee, UK.">
-    <meta name="author" content="Fabio Madeira (v2.2)">
+    <meta name="author" content="Fabio Madeira (v2.2.1)">
 
     <title>JABAWS | Java Bioinformatics Analyses Web Services (JABAWS) | ${param.title}</title>