/*
  Critical CSS for above-the-fold content, delivered inline to increase first
  paint performance
*/

/*! purgecss start ignore */

/* Typefaces */
@import "typeface-roboto-slab";
@import "typeface-fira-code";

/* Normalize */
@import "normalize.css/normalize.css";

/*! purgecss end ignore */

/*! CC BY-SA 3.0 License | https://stackoverflow.com/a/36118384/1154965 */
@keyframes blink {
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

/* Default license header for non-vendor CSS source code that follows */
/*! MIT License | github.com/schnerring/hugo-theme-gruvbox */
/*
  Bootstrap 5 breakpoints
  See: https://getbootstrap.com/docs/5.0/layout/breakpoints/#available-breakpoints
*/
@custom-media --sm (min-width: 576px);
@custom-media --md (min-width: 768px);
@custom-media --lg (min-width: 992px);
@custom-media --xl (min-width: 1200px);
@custom-media --xxl (min-width: 1400px);



  


:root[data-theme="light"] {
  --bg: var(--bg0_h);
  --bg0: #fbf1c7;
  --bg0_h: #f9f5d7;
  --bg0_s: #f2e5bc;
  --bg1: #ebdbb2;
  --bg2: #d5c4a1;
  --bg3: #bdae93;
  --bg4: #a89984;
  --fg: var(--fg1);
  --fg0: #282828;
  --fg1: #3c3836;
  --fg2: #504945;
  --fg3: #665c54;
  --fg4: #7c6f64;
  --gray1: var(--fg4);
  --gray2: #928374;
  --red1: #cc241d;
  --red2: #9d0006;
  --green1: #98971a;
  --green2: #797403;
  --yellow1: #d79921;
  --yellow2: #b57614;
  --blue1: #458588;
  --blue2: #076678;
  --purple1: #b16286;
  --purple2: #8f3f71;
  --aqua1: #689d6a;
  --aqua2: #427b58;
  --orange1: #d65d0e;
  --orange2: #af3a03;

  & .light--hidden {
    display: none;
  }
}

:root[data-theme="dark"] {
  --bg: var(--bg0_h);
  --bg0: #282828;
  --bg0_h: #1d2021;
  --bg0_s: #32302f;
  --bg1: #3c3836;
  --bg2: #504945;
  --bg3: #665c54;
  --bg4: #7c6f64;
  --fg: var(--fg1);
  --fg0: #fbf1c7;
  --fg1: #ebdbb2;
  --fg2: #d5c4a1;
  --fg3: #bdae93;
  --fg4: #a89984;
  --gray1: var(--fg4);
  --gray2: #928374;
  --red1: #cc241d;
  --red2: #fb4934;
  --green1: #98971a;
  --green2: #b8bb26;
  --yellow1: #d79921;
  --yellow2: #fabd2f;
  --blue1: #458588;
  --blue2: #83a598;
  --purple1: #b16286;
  --purple2: #d3869b;
  --aqua1: #689d6a;
  --aqua2: #8ec07c;
  --orange1: #d65d0e;
  --orange2: #fe8019;

  & .dark--hidden {
    display: none;
  }
}

:root {
  
  --primary: var(--gray1);
  --primary-alt: var(--gray2);
}
:root {
  --font-monospace: "Fira Code", "Lucida Console", Monaco, monospace;
  --font-sans-serif: Verdana, Helvetica, sans-serif;
  --font-serif: "Roboto Slab", Georgia, serif;
}

html {
  font-family: var(--font-serif);
  font-size: 1rem;
  scroll-behavior: smooth;
}

body {
  background: var(--bg);
  color: var(--fg);
  line-height: 1.675;
  word-wrap: break-word;
}

strong {
  letter-spacing: 0.35px;
}

a {
  color: inherit;
  text-decoration: none;
}

a.link--external::after {
  /* 2009 = Thin Space */
  content: "\2009↗";
}

img,
video {
  border: 2px solid var(--bg1);
  height: auto;
  max-width: 100%;
}

figure {
  display: inline-block;
}

figcaption {
  color: var(--fg3);
  font-family: var(--font-serif);
  font-size: 0.9rem;
}

*::selection {
  color: var(--fg0);
  background: var(--bg4);
}

h1,
h2,
h3,
h4,
h5,
h6 {
  color: var(--fg0);
  font-family: var(--font-monospace);
  font-weight: 300;
  line-height: 1.4;

  & code {
    font-size: 1em;
  }
}

h2,
h3,
h4,
h5,
h6 {
  border-bottom: 1px solid var(--bg1);
}

h1,
h2 {
  font-weight: 400;
}

h1 {
  font-size: 1.875rem;
}

h2 {
  font-size: 1.75rem;
}

h3 {
  font-size: 1.625rem;
}

@media (--md) {
  h1 {
    font-size: 2.375rem;
  }

  h2 {
    font-size: 2rem;
  }

  h3 {
    font-size: 1.75rem;
  }
}

h4 {
  font-size: 1.5rem;
}

h5 {
  font-size: 1.375rem;
}

h6 {
  font-size: 1.25rem;
}

table {
  table-layout: fixed;
  border-collapse: collapse;
  width: 100%;
  margin: 2rem 0;
}

table,
th,
td {
  border: 1px solid var(--bg1);
  padding: 0.5rem;
}

hr {
  border: none;
  background: var(--bg1);
  height: 1px;
  margin: 3rem auto;
  width: 80%;
}

mark {
  background: var(--yellow1);
  color: var(--bg0);
}

abbr {
  text-underline-offset: 0.2rem;
}

blockquote,
code,
kbd,
mark,
pre {
  border-radius: 0.2rem;
  padding: 0 0.2em;
}

pre code {
  padding: 0;
}

blockquote,
code,
kbd,
pre,
th {
  background: var(--bg1);
}

code,
kbd,
pre,
th {
  font-family: var(--font-monospace);
}

code,
kbd {
  & code,
  & kbd {
    background: var(--bg2);
  }
}

blockquote,
pre {
  padding: 1rem;
}

pre {
  /* TODO is !important really needed because of Prism? */
  background: var(--bg1) !important;
  overflow: auto;

  & code {
    background: none;
  }
}

blockquote,
blockquote.twitter-tweet {
  border-left: var(--primary-alt) 5px solid;
  margin: 0.5rem 0;

  & code {
    background: var(--bg2);
  }

  & p:first-of-type {
    margin-top: 0;
  }

  & p:last-of-type {
    margin-bottom: 0;
  }
}

blockquote.twitter-tweet {
  border-color: var(--blue2);
  color: inherit;
  font: inherit;
  font-size: inherit;
  line-height: inherit;

  & a {
    color: var(--blue2);
  }

  & a:hover {
    color: var(--blue1);
    text-decoration: none !important;
  }
}
pre::-webkit-scrollbar {
  height: 0.5rem;
  scrollbar-width: auto;
}

pre::-webkit-scrollbar-track {
  background: var(--bg2);
  border-radius: 0.2rem;
}

pre::-webkit-scrollbar-thumb {
  background: var(--bg4);
  border-radius: 0.2rem;
}
.layout {
  display: grid;
  grid-template-areas:
    "header"
    "main"
    "footer";
  grid-template-rows: auto 1fr auto;
  height: 100vh;
}

main {
  align-items: start;
  display: grid;
  grid-area: main;
  grid-template-areas: "empty content sidebar";
  grid-template-columns: 1fr minmax(0, 650px) 4fr;
}

header {
  background: var(--bg1);
  grid-area: header;
}

footer {
  grid-area: footer;
}

main,
footer {
  margin: 0.5em 1.1em;
}

.content {
  grid-area: content;
}

.sidebar {
  display: none;
  flex-direction: column;
  grid-area: sidebar;
  margin-top: 3rem;
  position: sticky;
  top: 2rem;

  @media (--lg) {
    display: flex;
  }
}
header {
  display: grid;
  font-family: var(--font-monospace);
  font-size: 1.125rem;
  grid-template-columns: auto auto 1fr auto;
  grid-template-areas: "heading search nav theme-toggle";
  padding: 0.75rem;
}

.logo {
  color: var(--fg0);
  display: flex;
  font-weight: 700;
  grid-area: heading;

  &:hover .logo__cursor {
    animation: 1s blink infinite;
    opacity: 1;
  }
}

.logo__chevron,
.logo__cursor {
  margin-left: 0.5rem;
}

.logo__cursor {
  opacity: 0;
}

.logo__text {
  display: none;
}

@media (--md) {
  .logo__text {
    display: block;
  }
}

/*! purgecss start ignore */

.search {
  display: flex;
  grid-area: search;
  margin: 0 1rem;
}

#search__text {
  border: 1px solid var(--bg2);
  border-radius: 0.2rem;
  background: var(--bg2);
  caret-color: var(--fg);
  color: var(--fg);
  outline: none;
  padding: 0 0.5rem;
  visibility: hidden; /* Hide until flexsearch index is initialized */
  width: 100%;

  &:hover {
    border-color: var(--bg3);
  }

  &:focus {
    border-color: var(--bg4);
  }

  &::placeholder {
    color: var(--fg3);
  }

  &[type="search"]::-webkit-search-cancel-button {
    appearance: none;
  }
}

#search__suggestions {
  background: var(--bg);
  border-radius: 0.2rem;
  box-shadow: 0 0.5rem 1rem var(--bg1);
  font-family: var(--font-serif);
  left: 0;
  margin-top: 2rem;
  position: absolute;
  width: 95vw;
  z-index: 1000;
}

@media (--md) {
  .search {
    position: relative;
  }

  #search__suggestions {
    width: 60vw;
  }
}

.search__suggestions--hidden {
  display: none;
}

.search__suggestion-item {
  border-bottom: 1px dashed var(--bg2);
  display: grid;
  grid-template-columns: 1fr 2fr;

  &:focus,
  &:focus-visible,
  &:hover {
    background: var(--bg1);
    cursor: pointer;
    outline: none;
  }

  &:last-child {
    border: none;
  }
}

.search__suggestion-title,
.search__suggestion-description {
  padding: 0 1rem;
  margin: 1rem 0;
}

.search__suggestion-title {
  font-weight: 700;
}

.search__suggestion-description {
  border-left: 1px solid var(--bg2);
}

.search__no-results {
  padding: 0.75rem;
}

/*! purgecss end ignore */

.theme__toggle {
  align-items: center;
  background: none;
  border: none;
  color: var(--yellow1);
  cursor: pointer;
  display: flex;
  grid-area: theme-toggle;
  margin: 0 1rem;

  &:hover {
    color: var(--yellow2);
  }

  & svg {
    height: 28px;
    width: 28px;
  }
}

/* TODO: simplify deep nesting */
nav#menu {
  align-items: center;
  display: flex;
  grid-area: nav;
  justify-content: flex-end;

  & .menu__item {
    color: var(--fg);

    &:hover {
      color: var(--fg3);
      cursor: pointer;
    }
  }

  & ul {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  & ul.menu--horizontal {
    align-items: center;
    display: none;

    & li {
      display: inline-block;
      margin: 0 0.75rem;
    }

    @media (--md) {
      display: flex;
    }
  }

  & ul.menu--vertical {
    background: var(--fg0);
    bottom: 0;
    margin: 0;
    padding: 3rem;
    position: fixed;
    right: 0;
    top: 0;
    transform: translate(100%, 0);
    transition: transform 0.5s cubic-bezier(0.9, 0, 0.1, 1);
    width: 50%;
    z-index: 10;

    & .menu__item {
      color: var(--bg1);

      &:hover {
        color: var(--bg4);
      }
    }
  }

  & .menu__burger {
    display: flex;
    height: 24px;
    width: 24px;

    & > * {
      position: absolute;
    }

    & svg {
      width: inherit;
      z-index: 20;
      height: inherit;

      & line {
        transition-duration: 0.5s;
        transition-property: stroke, opacity, transform;
        transition-timing-function: cubic-bezier(0.9, 0, 0.1, 1);
      }

      & line:nth-of-type(1) {
        transform-origin: center 6px;
      }

      & line:nth-of-type(2) {
        transform-origin: center 12px;
      }

      & line:nth-of-type(3) {
        transform-origin: center 18px;
      }
    }

    & input {
      height: inherit;
      opacity: 0;
      width: inherit;
      z-index: 30;

      &:checked {
        & ~ ul.menu--vertical {
          transform: none;
        }

        & ~ svg {
          stroke: var(--bg1);

          & line:nth-of-type(1) {
            transform: translate(0, 6px) rotate(45deg);
          }

          & line:nth-of-type(2) {
            opacity: 0;
            transform: scale(0.2);
          }

          & line:nth-of-type(3) {
            transform: translate(0, -6px) rotate(-45deg);
          }
        }
      }
    }

    @media (--md) {
      display: none;
    }
  }
}
.sidebar {
  font-family: var(--font-monospace);
  max-width: 350px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 2.5rem;

  & hr {
    margin: 1.5rem auto;
  }

  & svg {
    fill: var(--fg);
  }
}

.sidebar__heading {
  font-size: 1.3rem;
}

aside.toc {
  & a {
    color: var(--primary-alt);
  }

  & a:hover {
    color: var(--primary);
  }

  & ul {
    list-style: none;
    margin: 0;
    padding: 0;

    & ul {
      font-size: 0.9rem;
      margin-left: 0.5rem;
    }

    & li {
      line-height: 1.1;

      & a {
        display: block;
        padding: 0.2rem 0;
      }
    }
  }
}

.jr-basics__image {
  background: var(--bg1);
  border: 2px solid var(--bg2);
}

.jr-basics__summary {
  color: var(--fg3);
  font-family: var(--font-serif);
  margin: 0.75rem 0;
}

.jr-basics__profile {
  & a:hover {
    color: var(--fg3);

    & svg {
      fill: var(--fg3);
    }
  }
}

.tag-cloud {
  line-height: 1.1;
  text-align: justify;
}

.tag-cloud__tag:hover {
  color: var(--fg3);
}

.tag-cloud__tag--active {
  text-decoration: underline;
}






.tag-cloud__tag--size-1 {
  font-size: 0.8rem;
}

.tag-cloud__tag--size-2 {
  font-size: 1.04rem;
}

.tag-cloud__tag--size-3 {
  font-size: 1.28rem;
}

.tag-cloud__tag--size-4 {
  font-size: 1.52rem;
}

.tag-cloud__tag--size-5 {
  font-size: 1.76rem;
}

.tag-cloud__tag--size-6 {
  font-size: 2rem;
}

.post,
.content-section {
  border-bottom: 2px dotted var(--bg1);
  padding: 2rem 0;
}

.post {
  & figure,
  & img:not(figure img),
  & video:not(figure video) {
    margin: 0.5rem 0;
    box-sizing: border-box;
  }
}

.post-header,
.post-content__read-more {
  font-family: var(--font-monospace);
}

.post-meta__author {
  font-weight: 700;
}

.post-content {
  margin: 1.3rem 0;
}

.post-content__read-more {
  color: var(--primary-alt);
  margin-top: 1.3rem;
}

.post-header,
.post-content {
  & a {
    color: var(--primary-alt);
  }

  & a:hover {
    color: var(--primary);
  }
}

.post-tags {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin: 1rem 0;
}

.post-tag {
  font-size: 0.9rem;
  line-height: 1;

  &::before {
    content: "#";
  }
}

.post-heading__anchor {
  display: none;
}

h1:hover,
h2:hover,
h3:hover,
h4:hover,
h5:hover,
h6:hover {
  & .post-heading__anchor {
    display: inline-block;
  }
}
.jr__item-meta {
  flex-direction: column;
}

.jr__item-meta,
.jr-basics__image,
.jr-basics__item,
.jr-basics__profile-icon,
.jr-basics__profile-item {
  align-items: center;
  display: flex;
}

.jr-awards__title,
.jr-certificates__name,
.jr-education__area,
.jr-projects__roles,
.jr-publications__name,
.jr-volunteer__position,
.jr-work__position,
.jr-basics__name {
  font-size: 1.125rem;
  font-weight: bold;
}

.jr-basics__item {
  flex-direction: column;
  text-align: center;
}

.jr-basics__item hr {
  margin: 1.5rem auto;
}

.jr-basics__image {
  border-radius: 50%;
  height: 250px;
  justify-content: center;
  overflow: hidden;
  width: 250px;
}

.jr-basics__name,
.jr-basics__label,
.jr-basics__summary {
  margin-top: 0.75rem;
}

.jr-basics__profile svg {
  height: 24px;
  width: 24px;
}

.jr-basics__profile,
.jr-basics__profile-item {
  display: flex;
}

.jr-basics__profile-item {
  display: flex;
  padding: 0.2rem;
}

.jr-basics__profile--col {
  flex-direction: column;
}

.jr-basics__profile--row {
  flex-wrap: wrap;
  justify-content: space-evenly;
}

.jr-basics__profile-icon {
  padding: 0 0.75rem;
}
.jr__item-meta {
  font-family: var(--font-monospace);
}

.jr__item-meta {
  align-items: start;
  flex-flow: column;
}

@media (--md) {
  .jr__item-meta {
    align-items: center;
    flex-flow: row wrap;
  }

  .jr__date,
  .jr__date-range,
  .jr-work__location {
    flex-grow: 1;
    text-align: right;
  }

  .jr-awards__awarder,
  .jr-publications__publisher,
  .jr-education__institution,
  .jr-volunteer__organization {
    flex-basis: 100%;
  }
}
.social-share {
  align-items: center;
  border-top: 2px dotted var(--bg1);
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin: 3rem 0;
  padding-top: 3rem;

  & svg {
    fill: var(--fg);
    width: 24px;
    height: 24px;

    &.icon-tabler {
      fill: none;
      stroke: var(--fg);
    }
  }
}

.social-share__item {
  background: var(--bg1);
  padding: 0.5rem;
  display: flex;
}

/* Sticky social bar left

@media (--xl) {
  .social-share {
    align-items: flex-start;
    border-top: none;
    flex-direction: column;

    position: fixed;
    top: 15%;
    left: 0;
  }

  .social-share__heading {
    display: none;
  }

  .social-share__item {
    transition: padding 0.2s ease-in;

    &:hover {
      padding: 0.5rem 1rem;
    }

    & svg {
      &:hover {
        fill: var(--fg);
      }

      &.icon-tabler {
        fill: none;

        &:hover {
          stroke: var(--fg);
        }
      }
    }
  }
}

*/

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InN0ZGluIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgQ3JpdGljYWwgQ1NTIGZvciBhYm92ZS10aGUtZm9sZCBjb250ZW50LCBkZWxpdmVyZWQgaW5saW5lIHRvIGluY3JlYXNlIGZpcnN0XG4gIHBhaW50IHBlcmZvcm1hbmNlXG4qL1xuXG4vKiEgcHVyZ2Vjc3Mgc3RhcnQgaWdub3JlICovXG5cbi8qIFR5cGVmYWNlcyAqL1xuQGltcG9ydCBcInR5cGVmYWNlLXJvYm90by1zbGFiXCI7XG5AaW1wb3J0IFwidHlwZWZhY2UtZmlyYS1jb2RlXCI7XG5cbi8qIE5vcm1hbGl6ZSAqL1xuQGltcG9ydCBcIm5vcm1hbGl6ZS5jc3Mvbm9ybWFsaXplLmNzc1wiO1xuXG4vKiEgcHVyZ2Vjc3MgZW5kIGlnbm9yZSAqL1xuXG4vKiEgQ0MgQlktU0EgMy4wIExpY2Vuc2UgfCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzYxMTgzODQvMTE1NDk2NSAqL1xuQGtleWZyYW1lcyBibGluayB7XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8qIERlZmF1bHQgbGljZW5zZSBoZWFkZXIgZm9yIG5vbi12ZW5kb3IgQ1NTIHNvdXJjZSBjb2RlIHRoYXQgZm9sbG93cyAqL1xuLyohIE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9zY2huZXJyaW5nL2h1Z28tdGhlbWUtZ3J1dmJveCAqL1xuLypcbiAgQm9vdHN0cmFwIDUgYnJlYWtwb2ludHNcbiAgU2VlOiBodHRwczovL2dldGJvb3RzdHJhcC5jb20vZG9jcy81LjAvbGF5b3V0L2JyZWFrcG9pbnRzLyNhdmFpbGFibGUtYnJlYWtwb2ludHNcbiovXG5AY3VzdG9tLW1lZGlhIC0tc20gKG1pbi13aWR0aDogNTc2cHgpO1xuQGN1c3RvbS1tZWRpYSAtLW1kIChtaW4td2lkdGg6IDc2OHB4KTtcbkBjdXN0b20tbWVkaWEgLS1sZyAobWluLXdpZHRoOiA5OTJweCk7XG5AY3VzdG9tLW1lZGlhIC0teGwgKG1pbi13aWR0aDogMTIwMHB4KTtcbkBjdXN0b20tbWVkaWEgLS14eGwgKG1pbi13aWR0aDogMTQwMHB4KTtcblxuXG5cbiAgXG5cblxuOnJvb3RbZGF0YS10aGVtZT1cImxpZ2h0XCJdIHtcbiAgLS1iZzogdmFyKC0tYmcwX2gpO1xuICAtLWJnMDogI2ZiZjFjNztcbiAgLS1iZzBfaDogI2Y5ZjVkNztcbiAgLS1iZzBfczogI2YyZTViYztcbiAgLS1iZzE6ICNlYmRiYjI7XG4gIC0tYmcyOiAjZDVjNGExO1xuICAtLWJnMzogI2JkYWU5MztcbiAgLS1iZzQ6ICNhODk5ODQ7XG4gIC0tZmc6IHZhcigtLWZnMSk7XG4gIC0tZmcwOiAjMjgyODI4O1xuICAtLWZnMTogIzNjMzgzNjtcbiAgLS1mZzI6ICM1MDQ5NDU7XG4gIC0tZmczOiAjNjY1YzU0O1xuICAtLWZnNDogIzdjNmY2NDtcbiAgLS1ncmF5MTogdmFyKC0tZmc0KTtcbiAgLS1ncmF5MjogIzkyODM3NDtcbiAgLS1yZWQxOiAjY2MyNDFkO1xuICAtLXJlZDI6ICM5ZDAwMDY7XG4gIC0tZ3JlZW4xOiAjOTg5NzFhO1xuICAtLWdyZWVuMjogIzc5NzQwMztcbiAgLS15ZWxsb3cxOiAjZDc5OTIxO1xuICAtLXllbGxvdzI6ICNiNTc2MTQ7XG4gIC0tYmx1ZTE6ICM0NTg1ODg7XG4gIC0tYmx1ZTI6ICMwNzY2Nzg7XG4gIC0tcHVycGxlMTogI2IxNjI4NjtcbiAgLS1wdXJwbGUyOiAjOGYzZjcxO1xuICAtLWFxdWExOiAjNjg5ZDZhO1xuICAtLWFxdWEyOiAjNDI3YjU4O1xuICAtLW9yYW5nZTE6ICNkNjVkMGU7XG4gIC0tb3JhbmdlMjogI2FmM2EwMztcblxuICAmIC5saWdodC0taGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbjpyb290W2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLS1iZzogdmFyKC0tYmcwX2gpO1xuICAtLWJnMDogIzI4MjgyODtcbiAgLS1iZzBfaDogIzFkMjAyMTtcbiAgLS1iZzBfczogIzMyMzAyZjtcbiAgLS1iZzE6ICMzYzM4MzY7XG4gIC0tYmcyOiAjNTA0OTQ1O1xuICAtLWJnMzogIzY2NWM1NDtcbiAgLS1iZzQ6ICM3YzZmNjQ7XG4gIC0tZmc6IHZhcigtLWZnMSk7XG4gIC0tZmcwOiAjZmJmMWM3O1xuICAtLWZnMTogI2ViZGJiMjtcbiAgLS1mZzI6ICNkNWM0YTE7XG4gIC0tZmczOiAjYmRhZTkzO1xuICAtLWZnNDogI2E4OTk4NDtcbiAgLS1ncmF5MTogdmFyKC0tZmc0KTtcbiAgLS1ncmF5MjogIzkyODM3NDtcbiAgLS1yZWQxOiAjY2MyNDFkO1xuICAtLXJlZDI6ICNmYjQ5MzQ7XG4gIC0tZ3JlZW4xOiAjOTg5NzFhO1xuICAtLWdyZWVuMjogI2I4YmIyNjtcbiAgLS15ZWxsb3cxOiAjZDc5OTIxO1xuICAtLXllbGxvdzI6ICNmYWJkMmY7XG4gIC0tYmx1ZTE6ICM0NTg1ODg7XG4gIC0tYmx1ZTI6ICM4M2E1OTg7XG4gIC0tcHVycGxlMTogI2IxNjI4NjtcbiAgLS1wdXJwbGUyOiAjZDM4NjliO1xuICAtLWFxdWExOiAjNjg5ZDZhO1xuICAtLWFxdWEyOiAjOGVjMDdjO1xuICAtLW9yYW5nZTE6ICNkNjVkMGU7XG4gIC0tb3JhbmdlMjogI2ZlODAxOTtcblxuICAmIC5kYXJrLS1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuOnJvb3Qge1xuICBcbiAgLS1wcmltYXJ5OiB2YXIoLS1ncmF5MSk7XG4gIC0tcHJpbWFyeS1hbHQ6IHZhcigtLWdyYXkyKTtcbn1cbjpyb290IHtcbiAgLS1mb250LW1vbm9zcGFjZTogXCJGaXJhIENvZGVcIiwgXCJMdWNpZGEgQ29uc29sZVwiLCBNb25hY28sIG1vbm9zcGFjZTtcbiAgLS1mb250LXNhbnMtc2VyaWY6IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgLS1mb250LXNlcmlmOiBcIlJvYm90byBTbGFiXCIsIEdlb3JnaWEsIHNlcmlmO1xufVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2VyaWYpO1xuICBmb250LXNpemU6IDFyZW07XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICBjb2xvcjogdmFyKC0tZmcpO1xuICBsaW5lLWhlaWdodDogMS42NzU7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cblxuc3Ryb25nIHtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMzVweDtcbn1cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbmEubGluay0tZXh0ZXJuYWw6OmFmdGVyIHtcbiAgLyogMjAwOSA9IFRoaW4gU3BhY2UgKi9cbiAgY29udGVudDogXCJcXDIwMDnihpdcIjtcbn1cblxuaW1nLFxudmlkZW8ge1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1iZzEpO1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuZmlndXJlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5maWdjYXB0aW9uIHtcbiAgY29sb3I6IHZhcigtLWZnMyk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbio6OnNlbGVjdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS1mZzApO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzQpO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBjb2xvcjogdmFyKC0tZmcwKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ub3NwYWNlKTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcblxuICAmIGNvZGUge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICB9XG59XG5cbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYmcxKTtcbn1cblxuaDEsXG5oMiB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbmgxIHtcbiAgZm9udC1zaXplOiAxLjg3NXJlbTtcbn1cblxuaDIge1xuICBmb250LXNpemU6IDEuNzVyZW07XG59XG5cbmgzIHtcbiAgZm9udC1zaXplOiAxLjYyNXJlbTtcbn1cblxuQG1lZGlhICgtLW1kKSB7XG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMzc1cmVtO1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgfVxuXG4gIGgzIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gIH1cbn1cblxuaDQge1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaDUge1xuICBmb250LXNpemU6IDEuMzc1cmVtO1xufVxuXG5oNiB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbn1cblxudGFibGUge1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAycmVtIDA7XG59XG5cbnRhYmxlLFxudGgsXG50ZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJnMSk7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbn1cblxuaHIge1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnMSk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IDNyZW0gYXV0bztcbiAgd2lkdGg6IDgwJTtcbn1cblxubWFyayB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXllbGxvdzEpO1xuICBjb2xvcjogdmFyKC0tYmcwKTtcbn1cblxuYWJiciB7XG4gIHRleHQtdW5kZXJsaW5lLW9mZnNldDogMC4ycmVtO1xufVxuXG5ibG9ja3F1b3RlLFxuY29kZSxcbmtiZCxcbm1hcmssXG5wcmUge1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XG4gIHBhZGRpbmc6IDAgMC4yZW07XG59XG5cbnByZSBjb2RlIHtcbiAgcGFkZGluZzogMDtcbn1cblxuYmxvY2txdW90ZSxcbmNvZGUsXG5rYmQsXG5wcmUsXG50aCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnMSk7XG59XG5cbmNvZGUsXG5rYmQsXG5wcmUsXG50aCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG59XG5cbmNvZGUsXG5rYmQge1xuICAmIGNvZGUsXG4gICYga2JkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzIpO1xuICB9XG59XG5cbmJsb2NrcXVvdGUsXG5wcmUge1xuICBwYWRkaW5nOiAxcmVtO1xufVxuXG5wcmUge1xuICAvKiBUT0RPIGlzICFpbXBvcnRhbnQgcmVhbGx5IG5lZWRlZCBiZWNhdXNlIG9mIFByaXNtPyAqL1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzEpICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gICYgY29kZSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG5ibG9ja3F1b3RlLFxuYmxvY2txdW90ZS50d2l0dGVyLXR3ZWV0IHtcbiAgYm9yZGVyLWxlZnQ6IHZhcigtLXByaW1hcnktYWx0KSA1cHggc29saWQ7XG4gIG1hcmdpbjogMC41cmVtIDA7XG5cbiAgJiBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzIpO1xuICB9XG5cbiAgJiBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICAmIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbmJsb2NrcXVvdGUudHdpdHRlci10d2VldCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZTIpO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcblxuICAmIGEge1xuICAgIGNvbG9yOiB2YXIoLS1ibHVlMik7XG4gIH1cblxuICAmIGE6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1ibHVlMSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbnByZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBoZWlnaHQ6IDAuNXJlbTtcbiAgc2Nyb2xsYmFyLXdpZHRoOiBhdXRvO1xufVxuXG5wcmU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmcyKTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG5wcmU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmc0KTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuLmxheW91dCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgXCJoZWFkZXJcIlxuICAgIFwibWFpblwiXG4gICAgXCJmb290ZXJcIjtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIDFmciBhdXRvO1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuXG5tYWluIHtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWFyZWE6IG1haW47XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6IFwiZW1wdHkgY29udGVudCBzaWRlYmFyXCI7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIG1pbm1heCgwLCA2NTBweCkgNGZyO1xufVxuXG5oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzEpO1xuICBncmlkLWFyZWE6IGhlYWRlcjtcbn1cblxuZm9vdGVyIHtcbiAgZ3JpZC1hcmVhOiBmb290ZXI7XG59XG5cbm1haW4sXG5mb290ZXIge1xuICBtYXJnaW46IDAuNWVtIDEuMWVtO1xufVxuXG4uY29udGVudCB7XG4gIGdyaWQtYXJlYTogY29udGVudDtcbn1cblxuLnNpZGViYXIge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBncmlkLWFyZWE6IHNpZGViYXI7XG4gIG1hcmdpbi10b3A6IDNyZW07XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMnJlbTtcblxuICBAbWVkaWEgKC0tbGcpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG59XG5oZWFkZXIge1xuICBkaXNwbGF5OiBncmlkO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vc3BhY2UpO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0byAxZnIgYXV0bztcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogXCJoZWFkaW5nIHNlYXJjaCBuYXYgdGhlbWUtdG9nZ2xlXCI7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG59XG5cbi5sb2dvIHtcbiAgY29sb3I6IHZhcigtLWZnMCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGdyaWQtYXJlYTogaGVhZGluZztcblxuICAmOmhvdmVyIC5sb2dvX19jdXJzb3Ige1xuICAgIGFuaW1hdGlvbjogMXMgYmxpbmsgaW5maW5pdGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4ubG9nb19fY2hldnJvbixcbi5sb2dvX19jdXJzb3Ige1xuICBtYXJnaW4tbGVmdDogMC41cmVtO1xufVxuXG4ubG9nb19fY3Vyc29yIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmxvZ29fX3RleHQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgKC0tbWQpIHtcbiAgLmxvZ29fX3RleHQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi8qISBwdXJnZWNzcyBzdGFydCBpZ25vcmUgKi9cblxuLnNlYXJjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdyaWQtYXJlYTogc2VhcmNoO1xuICBtYXJnaW46IDAgMXJlbTtcbn1cblxuI3NlYXJjaF9fdGV4dCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJnMik7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmcyKTtcbiAgY2FyZXQtY29sb3I6IHZhcigtLWZnKTtcbiAgY29sb3I6IHZhcigtLWZnKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMCAwLjVyZW07XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgLyogSGlkZSB1bnRpbCBmbGV4c2VhcmNoIGluZGV4IGlzIGluaXRpYWxpemVkICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmczKTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYmc0KTtcbiAgfVxuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tZmczKTtcbiAgfVxuXG4gICZbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxufVxuXG4jc2VhcmNoX19zdWdnZXN0aW9ucyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xuICBib3gtc2hhZG93OiAwIDAuNXJlbSAxcmVtIHZhcigtLWJnMSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogOTV2dztcbiAgei1pbmRleDogMTAwMDtcbn1cblxuQG1lZGlhICgtLW1kKSB7XG4gIC5zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICNzZWFyY2hfX3N1Z2dlc3Rpb25zIHtcbiAgICB3aWR0aDogNjB2dztcbiAgfVxufVxuXG4uc2VhcmNoX19zdWdnZXN0aW9ucy0taGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnNlYXJjaF9fc3VnZ2VzdGlvbi1pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCB2YXIoLS1iZzIpO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyZnI7XG5cbiAgJjpmb2N1cyxcbiAgJjpmb2N1cy12aXNpYmxlLFxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZzEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuLnNlYXJjaF9fc3VnZ2VzdGlvbi10aXRsZSxcbi5zZWFyY2hfX3N1Z2dlc3Rpb24tZGVzY3JpcHRpb24ge1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIG1hcmdpbjogMXJlbSAwO1xufVxuXG4uc2VhcmNoX19zdWdnZXN0aW9uLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLnNlYXJjaF9fc3VnZ2VzdGlvbi1kZXNjcmlwdGlvbiB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYmcyKTtcbn1cblxuLnNlYXJjaF9fbm8tcmVzdWx0cyB7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG59XG5cbi8qISBwdXJnZWNzcyBlbmQgaWdub3JlICovXG5cbi50aGVtZV9fdG9nZ2xlIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogdmFyKC0teWVsbG93MSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgZ3JpZC1hcmVhOiB0aGVtZS10b2dnbGU7XG4gIG1hcmdpbjogMCAxcmVtO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS15ZWxsb3cyKTtcbiAgfVxuXG4gICYgc3ZnIHtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgd2lkdGg6IDI4cHg7XG4gIH1cbn1cblxuLyogVE9ETzogc2ltcGxpZnkgZGVlcCBuZXN0aW5nICovXG5uYXYjbWVudSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdyaWQtYXJlYTogbmF2O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICYgLm1lbnVfX2l0ZW0ge1xuICAgIGNvbG9yOiB2YXIoLS1mZyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1mZzMpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuXG4gICYgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAmIHVsLm1lbnUtLWhvcml6b250YWwge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYgbGkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luOiAwIDAuNzVyZW07XG4gICAgfVxuXG4gICAgQG1lZGlhICgtLW1kKSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuXG4gICYgdWwubWVudS0tdmVydGljYWwge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWZnMCk7XG4gICAgYm90dG9tOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAzcmVtO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSwgMCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgY3ViaWMtYmV6aWVyKDAuOSwgMCwgMC4xLCAxKTtcbiAgICB3aWR0aDogNTAlO1xuICAgIHotaW5kZXg6IDEwO1xuXG4gICAgJiAubWVudV9faXRlbSB7XG4gICAgICBjb2xvcjogdmFyKC0tYmcxKTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1iZzQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgLm1lbnVfX2J1cmdlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG5cbiAgICAmID4gKiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgJiBzdmcge1xuICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICB6LWluZGV4OiAyMDtcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcblxuICAgICAgJiBsaW5lIHtcbiAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcbiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogc3Ryb2tlLCBvcGFjaXR5LCB0cmFuc2Zvcm07XG4gICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC45LCAwLCAwLjEsIDEpO1xuICAgICAgfVxuXG4gICAgICAmIGxpbmU6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgNnB4O1xuICAgICAgfVxuXG4gICAgICAmIGxpbmU6bnRoLW9mLXR5cGUoMikge1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgMTJweDtcbiAgICAgIH1cblxuICAgICAgJiBsaW5lOm50aC1vZi10eXBlKDMpIHtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIDE4cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiBpbnB1dCB7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICB6LWluZGV4OiAzMDtcblxuICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgJiB+IHVsLm1lbnUtLXZlcnRpY2FsIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmIH4gc3ZnIHtcbiAgICAgICAgICBzdHJva2U6IHZhcigtLWJnMSk7XG5cbiAgICAgICAgICAmIGxpbmU6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgNnB4KSByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYgbGluZTpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYgbGluZTpudGgtb2YtdHlwZSgzKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNnB4KSByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKC0tbWQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4uc2lkZWJhciB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG4gIG1heC13aWR0aDogMzUwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xuXG4gICYgaHIge1xuICAgIG1hcmdpbjogMS41cmVtIGF1dG87XG4gIH1cblxuICAmIHN2ZyB7XG4gICAgZmlsbDogdmFyKC0tZmcpO1xuICB9XG59XG5cbi5zaWRlYmFyX19oZWFkaW5nIHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG59XG5cbmFzaWRlLnRvYyB7XG4gICYgYSB7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnktYWx0KTtcbiAgfVxuXG4gICYgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICB9XG5cbiAgJiB1bCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgICYgdWwge1xuICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgIH1cblxuICAgICYgbGkge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcblxuICAgICAgJiBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uanItYmFzaWNzX19pbWFnZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnMSk7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJnMik7XG59XG5cbi5qci1iYXNpY3NfX3N1bW1hcnkge1xuICBjb2xvcjogdmFyKC0tZmczKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2VyaWYpO1xuICBtYXJnaW46IDAuNzVyZW0gMDtcbn1cblxuLmpyLWJhc2ljc19fcHJvZmlsZSB7XG4gICYgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWZnMyk7XG5cbiAgICAmIHN2ZyB7XG4gICAgICBmaWxsOiB2YXIoLS1mZzMpO1xuICAgIH1cbiAgfVxufVxuXG4udGFnLWNsb3VkIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcbn1cblxuLnRhZy1jbG91ZF9fdGFnOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWZnMyk7XG59XG5cbi50YWctY2xvdWRfX3RhZy0tYWN0aXZlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cblxuXG5cblxuXG4udGFnLWNsb3VkX190YWctLXNpemUtMSB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4udGFnLWNsb3VkX190YWctLXNpemUtMiB7XG4gIGZvbnQtc2l6ZTogMS4wNHJlbTtcbn1cblxuLnRhZy1jbG91ZF9fdGFnLS1zaXplLTMge1xuICBmb250LXNpemU6IDEuMjhyZW07XG59XG5cbi50YWctY2xvdWRfX3RhZy0tc2l6ZS00IHtcbiAgZm9udC1zaXplOiAxLjUycmVtO1xufVxuXG4udGFnLWNsb3VkX190YWctLXNpemUtNSB7XG4gIGZvbnQtc2l6ZTogMS43NnJlbTtcbn1cblxuLnRhZy1jbG91ZF9fdGFnLS1zaXplLTYge1xuICBmb250LXNpemU6IDJyZW07XG59XG5cbi5wb3N0LFxuLmNvbnRlbnQtc2VjdGlvbiB7XG4gIGJvcmRlci1ib3R0b206IDJweCBkb3R0ZWQgdmFyKC0tYmcxKTtcbiAgcGFkZGluZzogMnJlbSAwO1xufVxuXG4ucG9zdCB7XG4gICYgZmlndXJlLFxuICAmIGltZzpub3QoZmlndXJlIGltZyksXG4gICYgdmlkZW86bm90KGZpZ3VyZSB2aWRlbykge1xuICAgIG1hcmdpbjogMC41cmVtIDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxufVxuXG4ucG9zdC1oZWFkZXIsXG4ucG9zdC1jb250ZW50X19yZWFkLW1vcmUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vc3BhY2UpO1xufVxuXG4ucG9zdC1tZXRhX19hdXRob3Ige1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4ucG9zdC1jb250ZW50IHtcbiAgbWFyZ2luOiAxLjNyZW0gMDtcbn1cblxuLnBvc3QtY29udGVudF9fcmVhZC1tb3JlIHtcbiAgY29sb3I6IHZhcigtLXByaW1hcnktYWx0KTtcbiAgbWFyZ2luLXRvcDogMS4zcmVtO1xufVxuXG4ucG9zdC1oZWFkZXIsXG4ucG9zdC1jb250ZW50IHtcbiAgJiBhIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1hbHQpO1xuICB9XG5cbiAgJiBhOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gIH1cbn1cblxuLnBvc3QtdGFncyB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAwLjlyZW07XG4gIG1hcmdpbjogMXJlbSAwO1xufVxuXG4ucG9zdC10YWcge1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIiNcIjtcbiAgfVxufVxuXG4ucG9zdC1oZWFkaW5nX19hbmNob3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5oMTpob3ZlcixcbmgyOmhvdmVyLFxuaDM6aG92ZXIsXG5oNDpob3Zlcixcbmg1OmhvdmVyLFxuaDY6aG92ZXIge1xuICAmIC5wb3N0LWhlYWRpbmdfX2FuY2hvciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG4uanJfX2l0ZW0tbWV0YSB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5qcl9faXRlbS1tZXRhLFxuLmpyLWJhc2ljc19faW1hZ2UsXG4uanItYmFzaWNzX19pdGVtLFxuLmpyLWJhc2ljc19fcHJvZmlsZS1pY29uLFxuLmpyLWJhc2ljc19fcHJvZmlsZS1pdGVtIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmpyLWF3YXJkc19fdGl0bGUsXG4uanItY2VydGlmaWNhdGVzX19uYW1lLFxuLmpyLWVkdWNhdGlvbl9fYXJlYSxcbi5qci1wcm9qZWN0c19fcm9sZXMsXG4uanItcHVibGljYXRpb25zX19uYW1lLFxuLmpyLXZvbHVudGVlcl9fcG9zaXRpb24sXG4uanItd29ya19fcG9zaXRpb24sXG4uanItYmFzaWNzX19uYW1lIHtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5qci1iYXNpY3NfX2l0ZW0ge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5qci1iYXNpY3NfX2l0ZW0gaHIge1xuICBtYXJnaW46IDEuNXJlbSBhdXRvO1xufVxuXG4uanItYmFzaWNzX19pbWFnZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgaGVpZ2h0OiAyNTBweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAyNTBweDtcbn1cblxuLmpyLWJhc2ljc19fbmFtZSxcbi5qci1iYXNpY3NfX2xhYmVsLFxuLmpyLWJhc2ljc19fc3VtbWFyeSB7XG4gIG1hcmdpbi10b3A6IDAuNzVyZW07XG59XG5cbi5qci1iYXNpY3NfX3Byb2ZpbGUgc3ZnIHtcbiAgaGVpZ2h0OiAyNHB4O1xuICB3aWR0aDogMjRweDtcbn1cblxuLmpyLWJhc2ljc19fcHJvZmlsZSxcbi5qci1iYXNpY3NfX3Byb2ZpbGUtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5qci1iYXNpY3NfX3Byb2ZpbGUtaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAuMnJlbTtcbn1cblxuLmpyLWJhc2ljc19fcHJvZmlsZS0tY29sIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmpyLWJhc2ljc19fcHJvZmlsZS0tcm93IHtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbn1cblxuLmpyLWJhc2ljc19fcHJvZmlsZS1pY29uIHtcbiAgcGFkZGluZzogMCAwLjc1cmVtO1xufVxuLmpyX19pdGVtLW1ldGEge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vc3BhY2UpO1xufVxuXG4uanJfX2l0ZW0tbWV0YSB7XG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG5cbkBtZWRpYSAoLS1tZCkge1xuICAuanJfX2l0ZW0tbWV0YSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB9XG5cbiAgLmpyX19kYXRlLFxuICAuanJfX2RhdGUtcmFuZ2UsXG4gIC5qci13b3JrX19sb2NhdGlvbiB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG5cbiAgLmpyLWF3YXJkc19fYXdhcmRlcixcbiAgLmpyLXB1YmxpY2F0aW9uc19fcHVibGlzaGVyLFxuICAuanItZWR1Y2F0aW9uX19pbnN0aXR1dGlvbixcbiAgLmpyLXZvbHVudGVlcl9fb3JnYW5pemF0aW9uIHtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICB9XG59XG4uc29jaWFsLXNoYXJlIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXRvcDogMnB4IGRvdHRlZCB2YXIoLS1iZzEpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogMC45cmVtO1xuICBtYXJnaW46IDNyZW0gMDtcbiAgcGFkZGluZy10b3A6IDNyZW07XG5cbiAgJiBzdmcge1xuICAgIGZpbGw6IHZhcigtLWZnKTtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG5cbiAgICAmLmljb24tdGFibGVyIHtcbiAgICAgIGZpbGw6IG5vbmU7XG4gICAgICBzdHJva2U6IHZhcigtLWZnKTtcbiAgICB9XG4gIH1cbn1cblxuLnNvY2lhbC1zaGFyZV9faXRlbSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnMSk7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLyogU3RpY2t5IHNvY2lhbCBiYXIgbGVmdFxuXG5AbWVkaWEgKC0teGwpIHtcbiAgLnNvY2lhbC1zaGFyZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMTUlO1xuICAgIGxlZnQ6IDA7XG4gIH1cblxuICAuc29jaWFsLXNoYXJlX19oZWFkaW5nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnNvY2lhbC1zaGFyZV9faXRlbSB7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjJzIGVhc2UtaW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIH1cblxuICAgICYgc3ZnIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBmaWxsOiB2YXIoLS1mZyk7XG4gICAgICB9XG5cbiAgICAgICYuaWNvbi10YWJsZXIge1xuICAgICAgICBmaWxsOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIHN0cm9rZTogdmFyKC0tZmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiovXG4iXX0= */