.pageAPI {
  padding-top: 10px;
}

h3 {
  font-size: 1.25rem !important;
}

li.raises>p:first-of-type {
  display: inline;
}

/* override just-the-docs labels (use for labelled arguments in OCaml) */
code .label {
  color: #f7931c;
  background-color: transparent;
  text-transform: none;
  padding: 0;
  margin: 0;
}

.pageAPI>.wrap {
  position: relative;
  margin: 0 auto;
  padding: 0 25px 0 25px;
  z-index: 2;
}

/* Overload padding for pages with Navigation side bar */

.pageAPI>.wrap {
  padding: 0 25px 0 55px;
}

@media (min-width: 768px) {
  .pageAPI>.wrap {
    padding: 0 25px 0 260px;
  }
}

@media (min-width: 1280px) {
  .pageAPI>.wrap {
    padding: 0 25px 0 280px;
  }
}

/* 1260 + navigation margins (25*2) + navigation 210px*/

@media (min-width: 1810px) {
  .pageAPI>.wrap {
    max-width: 1260px;
    margin: 0 auto;
    padding: 0 25px;
  }
}

.navigation {
  display: block;
  top: 64px;
  padding: 10px;
  width: 100%;
  min-height: 20px;
  position: fixed;
  background-color: white;
  z-index: 40;
  font-size: 20px;
  font-weight: bold;
}

@media (min-width: 768px) {
  .navigation {
    font-size: 20px;
    top: 60px;
    padding-left: 15px;
  }
}

@media (min-width: 1280px) {
  .navigation {
    font-size: 24px;
    top: 65px;
    padding-left: 40px;
  }
}

.navigation a {
  color: #484848;
}

.menu-button {
  display: block;
  text-align: center;
  background: none;
  cursor: pointer;
  border-right: 2px solid #f7931c;
  padding: 10px;
}

@media (min-width: 768px) {
  .menu-button {
    padding: 0;
    margin-bottom: -128px;
    /* compensate absolute footer */
    border-radius: 0;
  }
}

.nav-check {
  display: none;
}

.api-menu {
  display: block;
  overflow-y: auto;
  overflow-x: visible;
  height: 100%;
  width: 0;
  margin-top: 20px;
  padding-bottom: 148px;
  /* compensate absolute footer */
}

@media (min-width: 768px) {
  .api-menu {
    padding: 45px 15px 148px 15px;
    width: 100%;
    min-width: 190px;
  }
}

@media (min-width: 1280px) {
  .api-menu {
    min-width: 210px;
    padding-left: 40px;
  }
}

.nav-check:checked~.api-menu {
  padding: 30px 15px 0 25px;
  width: 100%;
  min-width: 210px;
}

.api-menu li,
.api-menu ul {
  text-align: left;
  margin-left: 0;
  padding-left: 0;
}

.api-menu ul {
  margin-top: 10px;
}

.api-menu li {
  list-style-type: none;
}

@media (min-width: 768px) {
  .api-menu {
    font-size: 18px;
  }
}

@media (min-width: 1280px) {
  .api-menu {
    font-size: 20px;
  }
}

.api-menu a {
  color: #484848;
}

.api-menu .selected {
  color: #f7931c;
}

.check-zone {
  height: 100vh;
}

.sideMenu {
  position: fixed;
  height: 100vh;
  display: inline-flex;
  padding-top: 65px;
  background: white;
  z-index: 20;
}

.sideMenu label:after {
  content: "COMPONENTS";
  font-weight: bolder;
  display: inline-block;
  position: relative;
  font-size: 1.1em;
  writing-mode: vertical-rl;
  text-orientation: sideways;
  padding-top: 60px;
  width: 20px;
  color: #f16521;
}

.nav-check-deactivator {
  display: none;
}

@media (min-width: 768px) {
  .sideMenu {
    z-index: 10;
  }

  .sideMenu label:after {
    display: none;
  }

  .nav-check-deactivator {
    display: block;
    position: fixed;
    background: transparent;
    height: 100vh;
    width: 6px;
    z-index: 4;
    left: 230px;
  }
}

@media (min-width: 1280px) {
  .nav-check-deactivator {
    left: 250px;
  }
}

/* START OF ODOC */


/* Copyright (c) 2016 The odoc contributors. All rights reserved.
   Distributed under the ISC license, see terms at the end of the file.
   %%NAME%% %%VERSION%% */

:root {
  --main-background: #FFFFFF;

  --color: #484848;
  --source-color: grey;
  --anchor-hover: #6d071a;
  --anchor-color: #d5d5d5;
  --xref-shadow: #cc6666;
  --xref-unresolved: #cc6666;
  --header-shadow: #ddd;
  --by-name-version-color: #aaa;
  --by-name-nav-link-color: #222;
  --target-background: #fdeee6;
  --target-shadow: #ffdec3;
  --pre-border-color: #eee;
  --code-background: #f2ebc0;
  --link-color: #5f2832;

  --toc-color: #1F2D3D;
  --toc-before-color: #777;
  --toc-background: #f6f8fa;
  --toc-list-border: #ccc;

  --spec-summary-border-color: #c60d2f;
  --spec-summary-background: var(--code-background);
  --spec-summary-hover-background: #ebeff2;
  --spec-details-after-background: rgba(0, 4, 15, 0.05);
  --spec-details-after-shadow: rgba(204, 204, 204, 0.53);
}

/* Reset a few things. */

html {
  scroll-padding-top: 120px;
}

body.odoc-src {
  margin-right: calc(10vw + 20ex);
}

/* Text alignements, this should be forbidden. */

.left {
  text-align: left;
}

.right {
  text-align: right;
}

.center {
  text-align: center;
}

/* Links and anchors */

a {
  text-decoration: none;
}

code a,
pre a,
tt a {
  color: var(--link-color);
}

/* Linked highlight */
*:target {
  background-color: var(--target-background) !important;
  box-shadow: 0 0px 0 1px var(--target-shadow) !important;
  border-radius: 1px;
}

*:hover>a.anchor {
  visibility: visible;
}

a.anchor:before {
  content: "#";
}

a.anchor:hover {
  box-shadow: none;
  text-decoration: none;
  color: var(--anchor-hover);
}

.anchor {
  visibility: hidden;
  margin-left: -1em;
  font-weight: normal;
  font-style: normal;
  padding-right: 0.1em;
  padding-left: 0.4em;
  padding-top: 0px;
  margin-top: 0px;
  /* To remain selectable */
  color: var(--anchor-color);
}

.spec>a.anchor {
  margin-left: -2.3em;
  padding-right: 0.9em;
}

.xref-unresolved {
  color: var(--xref-unresolved);
}

.xref-unresolved:hover {
  box-shadow: 0 1px 0 0 var(--xref-shadow);
}

/* Source links float inside preformated text or headings. */
a.source_link {
  float: right;
  color: var(--source-color);
  font-size: initial;
}

/* Disable anchor headings generated by jekyll-anchor-headings (odoc already has one) */
a.anchor-heading {
  display: none;
}

/* Comment delimiters, hidden but accessible to screen readers and
   selected for copy/pasting */

/* Taken from bootstrap */
/* See also https://stackoverflow.com/a/27769435/4220738 */
.comment-delim {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Preformatted and code */

tt,
code,
pre {
  font-family: monospace;
  font-weight: 400;
}

pre {
  padding: 0.1em;
  border: 1px solid var(--pre-border-color);
  border-radius: 5px;
  overflow-x: auto;
}

p code,
li code {
  border-radius: 3px;
  padding: 0 0.3ex;
  color: #458;
}

:not(pre, figure) code {
  background-color: transparent;
}

a code {
  color: var(--link-color);
}

code {
  white-space: pre-wrap;
}

/* Code blocks (e.g. Examples) */

pre code {
  font-size: 0.893rem;
}

/* Code lexemes */

.keyword {
  font-weight: 500;
  color: #309100;
}

.arrow {
  white-space: nowrap
}

/* Module member specification */

.spec {
  background-color: var(--spec-summary-background);
  border-radius: 3px;
  border-left: 4px solid var(--spec-summary-border-color);
  border-right: 5px solid transparent;
  padding: 0.35em 0.7em;
}

li:not(:last-child)>.def-doc {
  margin-bottom: 15px;
}

/* Spacing between items */
div.odoc-spec,
.odoc-include {
  margin-bottom: 2em;
}

.spec.type .variant p,
.spec.type .record p {
  margin: 5px;
}

.spec.type .variant,
.spec.type .record {
  margin-left: 2ch;
  list-style: none;
  /* display: flex;
  flex-wrap: wrap;
  row-gap: 4px; */
}

.spec.type .record>code,
.spec.type .variant>code {
  min-width: 40%;
}

.spec.type>ol {
  margin-top: 0;
  margin-bottom: 0;
}

.spec.type .record>.def-doc,
.spec.type .variant>.def-doc {
  min-width: 50%;
  padding: 0.25em 0.5em;
  margin-left: 10%;
  border-radius: 3px;
  flex-grow: 1;
  background: var(--main-background);
  box-shadow: 2px 2px 4px lightgrey;
}

div.def {
  margin-top: 0;
  text-indent: -2ex;
  padding-left: 2ex;
}

div.def-doc>*:first-child {
  margin-top: 0;
}

/* Records and variants FIXME */

div.def table {
  text-indent: 0em;
  padding: 0;
  margin-left: -2ex;
}

td.def {
  padding-left: 2ex;
}

td.def-doc *:first-child {
  margin-top: 0em;
}

/* Lists of @tags */

.at-tags {
  list-style-type: none;
  margin-left: -3ex;
}

.at-tags li {
  padding-left: 3ex;
  text-indent: -3ex;
}

.at-tags .at-tag {
  text-transform: capitalize
}

/* Alert emoji */

.alert::before,
.deprecated::before {
  content: '⚠️ ';
}

/* Lists of modules */

.modules {
  list-style-type: none;
  margin-left: -3ex;
}

.modules li {
  padding-left: 3ex;
  text-indent: -3ex;
  margin-top: 5px
}

.modules .synopsis {
  padding-left: 1ch;
}

/* Odig package index */

.packages {
  list-style-type: none;
  margin-left: -3ex;
}

.packages li {
  padding-left: 3ex;
  text-indent: -3ex
}

.packages li a.anchor {
  padding-right: 0.5ch;
  padding-left: 3ch;
}

.packages .version {
  font-size: 10px;
  color: var(--by-name-version-color);
}

.packages .synopsis {
  padding-left: 1ch
}

.by-name nav a {
  text-transform: uppercase;
  font-size: 18px;
  margin-right: 1ex;
  color: var(--by-name-nav-link-color, );
  display: inline-block;
}

.by-tag nav a {
  margin-right: 1ex;
  color: var(--by-name-nav-link-color);
  display: inline-block;
}

.by-tag ol {
  list-style-type: none;
}

.by-tag ol.tags li {
  margin-left: 1ch;
  display: inline-block
}

.by-tag td:first-child {
  text-transform: uppercase;
}

/* Odig package page */

.package nav {
  display: inline;
  font-size: 14px;
  font-weight: normal;
}

.package .version {
  font-size: 14px;
}

.package.info {
  margin: 0;
}

.package.info td:first-child {
  font-style: italic;
  padding-right: 2ex;
}

.package.info ul {
  list-style-type: none;
  display: inline;
  margin: 0;
}

.package.info li {
  display: inline-block;
  margin: 0;
  margin-right: 1ex;
}

#info-authors li,
#info-maintainers li {
  display: block;
}

/* Sidebar and TOC */

.odoc-toc:before {
  display: block;
  content: "Contents";
  text-transform: uppercase;
  font-size: 1em;
  margin: 1.414em 0 0.5em;
  font-weight: 500;
  color: var(--toc-before-color);
  line-height: 1.2;
}

.odoc-toc {
  position: fixed;
  top: 0px;
  bottom: 0px;
  left: 0px;
  max-width: 30ex;
  min-width: 26ex;
  width: 20%;
  background: var(--toc-background);
  overflow: auto;
  color: var(--toc-color);
  padding-left: 2ex;
  padding-right: 2ex;
}

.odoc-toc ul li a {
  font-size: 0.95em;
  color: var(--color);
  font-weight: 400;
  line-height: 1.6em;
  display: block;
}

.odoc-toc ul li a:hover {
  box-shadow: none;
}

/* First level titles */

.odoc-toc>ul>li>a {
  font-weight: 500;
}

.odoc-toc li ul {
  margin: 0px;
}

.odoc-toc ul {
  list-style-type: none;
}

.odoc-toc ul li {
  margin: 0;
}

.odoc-toc>ul>li {
  margin-bottom: 0.3em;
}

.odoc-toc ul li li {
  border-left: 1px solid var(--toc-list-border);
  margin-left: 5px;
  padding-left: 12px;
}

/* Tables */

.table-wrapper {
  box-shadow: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
  min-width: 0;
}

.odoc-table {
  margin: 1em;
}

.odoc-table td,
.odoc-table th,
.odoc-table tr:last-of-type td,
.odoc-table tr:last-of-type th {
  padding: 0.3em 0.5em;
  min-width: 0;
  border: 1px solid black;
}

.odoc-table th {
  font-weight: bold;
}

.odoc-table p:only-child {
  margin: 0;
}

/* Mobile adjustements. */

@media only screen and (max-width: 110ex) {
  .odoc-toc {
    position: static;
    width: auto;
    min-width: unset;
    max-width: unset;
    border: none;
    padding: 0.2em 1em;
    border-radius: 5px;
    margin-bottom: 2em;
  }
}

/* Print adjustements. */

@media print {
  body {
    color: black;
    background: white;
  }

  body nav:first-child {
    visibility: hidden;
  }
}

/* Source code. */

.source_container {
  display: flex;
}

.source_line_column {
  padding-right: 0.5em;
  text-align: right;
  background: #eee8d5;
}

.source_line {
  padding: 0 1em;
}

.source_code {
  flex-grow: 1;
  background: #fdf6e3;
  padding: 0 0.3em;
  color: #657b83;
}

/* Source directories */

.odoc-directory::before {
  content: "📁";
  margin: 0.3em;
  font-size: 1.3em;
}

.odoc-file::before {
  content: "📄";
  margin: 0.3em;
  font-size: 1.3em;
}

.odoc-folder-list {
  list-style: none;
}

/* Details */

details {
  border: 1px solid #f7931c;
  border-radius: 5px;
  padding: 1em 1em;
  margin-bottom: 1em;
}

details:hover {
  color: #242424 !important;
  background-color: #f9f9f9 !important;
}

details summary:focus,
details:hover summary {
  color: #f16521;
}

details.empty:hover,
details.empty summary,
details.empty summary:hover {
  color: #484848 !important;
  background-color: transparent !important;
}

details summary {
  cursor: pointer;
  padding: 10px 20px 10px 35px !important;
  margin-bottom: 20px;
}

details.empty summary {
  cursor: auto;
}

details summary::before {
  list-style: inside;
  margin-top: 5px;
  margin-left: 30px;
  font-size: 100%;
}

details[open] summary::before {
  margin-top: 12px;
  margin-left: 25px;
  font-size: 65%;
}

details[open].empty summary::before,
details.empty summary::before {
  display: none;
}

.hljs {
  display: block;
  background: var(--code-background);
  padding: 0.5em;
  color: var(--color);
  overflow-x: auto;
}

.hljs-comment,
.hljs-meta {
  color: #969896;
}

.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
  color: #df5000;
}

.hljs-keyword,
.hljs-selector-tag {
  color: #309100;
}

.hljs-type,
.hljs-class .hljs-title {
  color: #458;
  font-weight: 500;
}

.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.type-var,
.hljs-attribute {
  color: #0086b3;
}

.hljs-section,
.hljs-name {
  color: #63a35c;
}

.hljs-tag {
  color: #333333;
}

.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
  color: #795da3;
}

.hljs-addition {
  color: #55a532;
  background-color: #eaffea;
}

.hljs-deletion {
  color: #bd2c00;
  background-color: #ffecec;
}

.hljs-link {
  text-decoration: underline;
}


.VAL,
.TYPE,
.LET,
.REC,
.IN,
.OPEN,
.NONREC,
.MODULE,
.METHOD,
.LETOP,
.INHERIT,
.INCLUDE,
.FUNCTOR,
.EXTERNAL,
.CONSTRAINT,
.ASSERT,
.AND,
.END,
.CLASS,
.STRUCT,
.SIG {
  color: #859900;
  ;
}

.WITH,
.WHILE,
.WHEN,
.VIRTUAL,
.TRY,
.TO,
.THEN,
.PRIVATE,
.OF,
.NEW,
.MUTABLE,
.MATCH,
.LAZY,
.IF,
.FUNCTION,
.FUN,
.FOR,
.EXCEPTION,
.ELSE,
.TO,
.DOWNTO,
.DO,
.DONE,
.BEGIN,
.AS {
  color: #cb4b16;
}

.TRUE,
.FALSE {
  color: #b58900;
}

.failwith,
.INT,
.SEMISEMI,
.LIDENT {
  color: #2aa198;
}

.STRING,
.CHAR,
.UIDENT {
  color: #b58900;
}

.DOCSTRING {
  color: #268bd2;
}

.COMMENT {
  color: #93a1a1;
}

span .constructor {
  color: #567bc3;
}

:root {
  --search-bar-height: 25px;
  --search-padding-top: 1rem;
  --search-results-border: #505050;
  --search-results-shadow: #404040;
  --search-snake: #82aaff;
  --search-hover: var(--code-background);
  --li-code-background: #f6f8fa;
  --li-code-color: #6d071a;
}

.odoc-search {
  position: sticky;
  top: 0;
  background: var(--main-background);
  /* This amounts to fit-content when the search is not active, but when you
  have the search results displayed, you do not want the height of the search
  container to change.  */
  height: calc(var(--search-bar-height) + var(--search-padding-top));
  width: 100%;
  padding-top: var(--search-padding-top);
  z-index: 1;
  grid-row: 1;
  grid-column-start: 1;
  grid-column-end: 3;
}


.odoc-search .search-inner {
  width: 100%;
  position: relative;
  left: 0;
  display: grid;
  /* The second column is for the search snake, which has 0 width */
  grid-template-columns: 1fr 0fr;
  grid-row-gap: 1rem;
  /* The second row is for the search results. It has a width, but only */
  grid-template-rows: min-content 0px;
  background: transparent;
}

.odoc-search .search-bar {
  position: relative;
  z-index: 2;
  font-size: 1em;
  transition: font-size 0.3s;
  box-shadow: 0px 0px 0.2rem 0.3em var(--main-background);
  height: var(--search-bar-height);
}

.odoc-search:focus-within .search-bar {
  font-size: 1.1em;
}

.odoc-search:not(:focus-within) .search-result {
  display: none;
}

.odoc-search .search-result:empty {
  display: none;
}

.odoc-search .search-result {
  grid-row: 2;
  background: var(--toc-background);
  position: absolute;
  left: 0;
  right: 0;
  border: solid;
  border-color: var(--search-results-border);
  border-width: 1px;
  border-radius: 6px;
  box-shadow: 0 3px 10px 2px var(--search-results-shadow), 0 0 3px 4px var(--main-background), 0px -1rem 0px 0px var(--main-background);
  /* Works better on smallish screens with this */
  max-height: calc(min(40rem, 50vh));
  overflow-y: auto;
  padding: 0;
}

.search-bar {
  /* inputs are of fixed size by default, even if you display:block them */
  width: 100%;
}

.odoc-search .search-no-result {
  color: var(--color);
  border-bottom: var(--search-results-border) solid 0px;
  background-color: inherit;
  outline: 0;
  padding: 10px;
  padding-right: 0.5rem;
}

.search-bar-container {
  display: flex;
  align-items: stretch;
  border-bottom: 1rem solid var(--main-background);
}

.search-snake {
  grid-row: 1;
  grid-column: 2;
  display: flex;
  align-items: center;
  width: 0;
  z-index: 2;
  position: relative;
  left: 0;
  margin-top: 4px;
  margin-bottom: 4px;
  /* Otherwise the search snake flickers for very fast searches. */
  transition: opacity 0.2s;
  opacity: 0;
}

.search-snake.search-busy {
  opacity: 1;
}

.search-snake:before {
  content: " ";
  display: block;
  aspect-ratio: 1 / 1;
  height: 100%;
  margin-right: 4px;
  border-radius: 50%;
  border: 3px solid #aaa;
  border-color: var(--search-snake) transparent var(--search-snake) transparent;
  animation: search-snake 1.2s linear infinite;
  position: absolute;
  right: 0;
}

@keyframes search-snake {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

:root {
  --kind-font-size-factor: 0.8;
}

.odoc-search .search-entry {
  color: var(--color);
  display: grid;
  /* Possible kinds are the following :
     "doc" "type" "mod" "exn" "class" "meth" "cons" "sig" "cons" "field" "val"
     and "ext".
     As the longest is 5 characters (and the font monospace), we give 5
     character size to the column. However the font used for kind is a little
     smaller, so we adjust by this factor.
     */
  grid-template-columns: [kinds] calc(var(--kind-font-size-factor) * 5ch) [titles] 1fr;
  column-gap: 0.5rem;
  border-bottom: var(--search-results-border) solid 1px;
  background-color: inherit;
  outline: 0;
  padding: 0.2rem 0.4rem 0.2rem 0.7rem;
}

.odoc-search .search-entry p {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.odoc-search .search-entry:focus-visible {
  box-shadow: none;
  background-color: var(--target-background);
}

.odoc-search .search-entry:hover {
  box-shadow: none;
  background-color: var(--search-hover);
}

.odoc-search .search-entry .entry-kind {
  grid-row: 1/2;
  grid-column: 1/2;
  line-height: 1.4rem;
  font-size: calc(var(--kind-font-size-factor) * 0.7em);
  font-weight: bold;
  text-align: right;
  position: relative;
  bottom: 0;
}

.odoc-search .search-entry pre {
  border: none;
  margin: 0;
}

.odoc-search .search-entry pre code {
  font-size: 1em;
  background-color: var(--li-code-background);
  color: var(--li-code-color);
  border-radius: 3px;
  padding: 0 0.3ex;
}

.odoc-search .search-entry .entry-title {
  width: 100%;
  display: block;
  grid-column: 2/2;
  grid-row: 1/2;
  align-self: end;
  line-height: 1.4rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.odoc-search .entry-name {
  font-weight: bold;
}

.odoc-search .prefix-name {
  font-weight: bold;
}

.odoc-search .search-entry .prefix-name {
  opacity: 0.7;
}

.odoc-search .entry-rhs {
  white-space: nowrap;
}

.odoc-search .search-entry .entry-content {
  flex-grow: 1;
  flex-shrink: 1;
  min-width: 0;
}

.odoc-search .search-entry .entry-comment {
  max-height: 1.5em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.95em;
  grid-row: 2/2;
  grid-column: 2/2;
}

.odoc-search .search-entry .entry-comment ul {
  white-space: nowrap;
  display: inline;
}

.odoc-search .search-entry .entry-comment li {
  display: inline;
  white-space: nowrap;
}

.odoc-search .search-entry .entry-comment ul>li::before {
  content: '•';
}

.odoc-search .search-entry .entry-comment div {
  display: inline;
  white-space: nowrap;
}

.odoc-search .search-entry .entry-comment p {
  display: inline;
  white-space: nowrap;
}

.odoc-search .search-entry .entry-comment code {
  display: inline;
  white-space: nowrap;
}


/*---------------------------------------------------------------------------
   Copyright (c) 2016 The odoc contributors

   Permission to use, copy, modify, and/or distribute this software for any
   purpose with or without fee is hereby granted, provided that the above
   copyright notice and this permission notice appear in all copies.

   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  ---------------------------------------------------------------------------*/
