/* src/globals.css */
:root {
  --bg: #0d0e14;
  --surface: #13161f;
  --surface-2: #181b25;
  --bg-2: #11131c;
  --border: rgba(255, 255, 255, 0.08);
  --border-strong: rgba(255, 255, 255, 0.14);
  --text: #f0f0eb;
  --text-muted: #c9cbc0;
  --text-dim: #abada1;
  --brand: #2dd4bf;
  --brand-deep: #14b8a6;
  --brand-glow: rgba(45, 212, 191, 0.18);
  --brand-glow-soft: rgba(45, 212, 191, 0.06);
  --warning: #f5b542;
  --success: #22c55e;
  --danger: #dc4a4a;
  --danger-dim: rgba(220, 74, 74, 0.15);
  --success-dim: rgba(34, 197, 94, 0.15);
  --warning-dim: rgba(245, 181, 66, 0.16);
  --overlay: rgba(0, 0, 0, 0.55);
  --pain: #45443b;
  --brand-ink: #062018;
  --terminal-bg: #0a0a0e;
  --oauth-google-bg: #ffffff;
  --oauth-google-fg: #1a1a1a;
  --oauth-github-bg: #24292e;
  --oauth-github-fg: #ffffff;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --teal: var(--brand);
  --teal-deep: var(--brand-deep);
  --teal-glow: var(--brand-glow);
  --teal-glow-soft: var(--brand-glow-soft);
  --teal-ink: var(--brand-ink);
  --serif:
    "Instrument Serif",
    Georgia,
    serif;
  --sans:
    "DM Sans",
    system-ui,
    sans-serif;
  --mono:
    "DM Mono",
    ui-monospace,
    monospace;
  --weight-body: 350;
  --weight-medium: 450;
  --weight-strong: 550;
}
[data-theme=light] {
  --bg: #fafaf8;
  --surface: #ffffff;
  --surface-2: #f3f2ee;
  --bg-2: #f3f2ee;
  --border: rgba(0, 0, 0, 0.08);
  --border-strong: rgba(0, 0, 0, 0.16);
  --text: #1a1a1a;
  --text-muted: #54524a;
  --text-dim: #63615a;
  --brand: #14b8a6;
  --brand-deep: #0d9488;
  --brand-glow: rgba(20, 184, 166, 0.18);
  --brand-glow-soft: rgba(20, 184, 166, 0.06);
  --warning: #c2750a;
  --success: #16a34a;
  --danger: #c12626;
  --danger-dim: rgba(193, 38, 38, 0.10);
  --success-dim: rgba(22, 163, 74, 0.12);
  --warning-dim: rgba(194, 117, 10, 0.12);
  --overlay: rgba(0, 0, 0, 0.45);
  --pain: #c6c4be;
}
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 0.5s;
  animation-timing-function: ease;
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-weight: 400;
  letter-spacing: 0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
::selection {
  background: var(--teal-glow);
  color: var(--text);
}
a {
  color: inherit;
  text-decoration: none;
}
.dot-grid {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image: radial-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px);
  background-size: 30px 30px;
}
.hero-glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1100px;
  height: 1100px;
  transform: translate(-50%, -55%);
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(
      circle at center,
      var(--teal-glow) 0%,
      rgba(45, 212, 191, 0.05) 30%,
      transparent 60%);
  filter: blur(20px);
}
.eyebrow {
  display: inline-block;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--teal);
  border: 1px solid rgba(45, 212, 191, 0.3);
  border-radius: 999px;
  padding: 6px 14px;
  background: rgba(45, 212, 191, 0.04);
}
.eyebrow-muted {
  display: inline-block;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.btn-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--sans);
  font-weight: 500;
  font-size: 15px;
  background: var(--teal);
  color: #0a1410;
  border: none;
  border-radius: 999px;
  padding: 14px 28px;
  cursor: pointer;
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    background 0.2s ease;
  box-shadow: 0 0 0 rgba(45, 212, 191, 0);
}
.btn-pill:hover {
  transform: translateY(-1px);
  background: #4ce0c8;
  box-shadow: 0 12px 32px rgba(45, 212, 191, 0.25);
}
.btn-pill-large {
  font-size: 17px;
  padding: 18px 36px;
}
.btn-pill-idle {
  animation: pulse-glow 4s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% {
    box-shadow: 0 0 0 rgba(45, 212, 191, 0);
  }
  50% {
    box-shadow: 0 0 32px rgba(45, 212, 191, 0.22);
  }
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
.prompt-block {
  appearance: none;
  -webkit-appearance: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  max-width: 640px;
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 18px;
  cursor: pointer;
  text-align: left;
  transition: border-color 0.2s ease;
}
.prompt-block:hover,
.prompt-block:focus-visible {
  border-color: var(--teal);
  outline: none;
}
.prompt-block-text {
  font-family: var(--mono);
  font-size: 13.5px;
  color: var(--text);
  line-height: 1.5;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.prompt-block-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  color: var(--text-muted);
  transition: color 0.2s ease;
}
.prompt-block:hover .prompt-block-icon,
.prompt-block:focus-visible .prompt-block-icon {
  color: var(--teal);
}
.prompt-block-icon.copied {
  color: var(--teal);
}
@keyframes typing-dot {
  0%, 60%, 100% {
    opacity: 0.3;
    transform: translateY(0);
  }
  30% {
    opacity: 1;
    transform: translateY(-3px);
  }
}
@keyframes msg-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.msg-row {
  animation: msg-in 0.28s ease-out both;
}
@media (prefers-reduced-motion: reduce) {
  .msg-row {
    animation: none;
  }
}
@keyframes float-404 {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}
@keyframes wobble-oh {
  0%, 100% {
    transform: translateY(0) rotate(0deg);
  }
  50% {
    transform: translateY(-6px) rotate(7deg);
  }
}
.four-oh-four {
  animation: float-404 5s ease-in-out infinite;
}
.four-oh-four .oh {
  display: inline-block;
  animation: wobble-oh 4.2s ease-in-out infinite;
  transform-origin: center 55%;
}
@media (prefers-reduced-motion: reduce) {
  .four-oh-four,
  .four-oh-four .oh {
    animation: none !important;
  }
}
.display {
  font-family: var(--serif);
  font-weight: 400;
  letter-spacing: 0.01em;
}
.display em {
  color: var(--teal);
  font-style: italic;
  font-weight: 400;
}
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 32px;
}
.card-glow {
  border-color: rgba(45, 212, 191, 0.25);
  box-shadow: 0 0 60px rgba(45, 212, 191, 0.08), inset 0 0 0 1px rgba(45, 212, 191, 0.08);
}
.cw-spot {
  box-shadow: 0 0 0 2px var(--teal);
  animation: cw-ring 0.7s var(--ease-out, ease-out) 1;
}
@keyframes cw-ring {
  0% {
    box-shadow: 0 0 0 2px var(--teal), 0 0 0 0 rgba(45, 212, 191, 0.45);
  }
  100% {
    box-shadow: 0 0 0 2px var(--teal), 0 0 0 14px rgba(45, 212, 191, 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cw-spot {
    animation: none;
  }
}
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.9s var(--ease-out) var(--reveal-delay, 0s), transform 0.9s var(--ease-out) var(--reveal-delay, 0s);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.hero-stagger {
  opacity: 0;
  transform: translateY(24px);
  animation: hero-rise 1s var(--ease-out) forwards;
  animation-delay: var(--stagger-delay, 0s);
}
@keyframes hero-rise {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes somewhere-hero-cursor-blink {
  0%, 50% {
    opacity: 1;
  }
  51%, 100% {
    opacity: 0;
  }
}
.marquee {
  position: relative;
  overflow: hidden;
  width: 100%;
  mask-image:
    linear-gradient(
      to right,
      transparent 0%,
      #000 10%,
      #000 90%,
      transparent 100%);
  -webkit-mask-image:
    linear-gradient(
      to right,
      transparent 0%,
      #000 10%,
      #000 90%,
      transparent 100%);
}
.marquee-track {
  display: flex;
  align-items: center;
  width: max-content;
  will-change: transform;
}
.marquee-track-left {
  animation: scroll-left 30s linear infinite;
}
.marquee-track-right {
  animation: scroll-right 30s linear infinite;
}
@keyframes scroll-left {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}
@keyframes scroll-right {
  0% {
    transform: translateX(-50%);
  }
  100% {
    transform: translateX(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .marquee-track-left,
  .marquee-track-right {
    animation: none;
  }
}
.marquee-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-right: 48px;
  opacity: 0.4;
}
.marquee-item img {
  width: 32px;
  height: 32px;
  filter: grayscale(100%) brightness(0) invert(1);
}
.marquee-item span {
  font-size: 11px;
  font-weight: 400;
  color: var(--text-muted);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.connector-line {
  width: 1px;
  height: 56px;
  margin: 0 auto;
  border-left: 1px dashed var(--teal);
  opacity: 0.6;
}
.section {
  position: relative;
  padding: 96px 24px;
  z-index: 1;
}
.section-tight {
  padding: 48px 24px;
}
.container {
  max-width: 860px;
  margin: 0 auto;
  position: relative;
}
.container-wide {
  max-width: 980px;
  margin: 0 auto;
  position: relative;
}
.skip-link {
  position: fixed;
  left: 12px;
  top: -64px;
  z-index: 200;
  padding: 10px 16px;
  background: var(--surface);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: var(--sans);
  font-size: 14px;
  text-decoration: none;
  transition: top 0.15s ease;
}
.skip-link:focus {
  top: 12px;
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}
.nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  height: 68px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 32px;
  transition:
    background 0.3s ease,
    border-color 0.3s ease,
    backdrop-filter 0.3s ease;
  border-bottom: 1px solid transparent;
}
.nav.scrolled {
  background: color-mix(in srgb, var(--bg) 72%, transparent);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom-color: var(--border);
}
.nav-link {
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 400;
  transition: color 0.2s ease;
}
.nav-link:hover {
  color: var(--text);
}
.nav-menu-btn {
  display: none;
  appearance: none;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--sans);
  font-size: 13px;
  padding: 8px 12px;
  min-height: 40px;
  cursor: pointer;
}
.nav-menu {
  position: fixed;
  top: 60px;
  right: 12px;
  z-index: 101;
  display: flex;
  flex-direction: column;
  min-width: 168px;
  padding: 8px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.28);
}
.nav-menu-link {
  padding: 12px 14px;
  border-radius: 8px;
  color: var(--text-muted);
  text-decoration: none;
  font-family: var(--sans);
  font-size: 15px;
}
.nav-menu-link:hover {
  color: var(--text);
  background: var(--border);
}
@media (max-width: 720px) {
  .section {
    padding: 64px 20px;
  }
  .container,
  .container-wide {
    max-width: 100%;
  }
  .nav {
    padding: 0 16px;
  }
  .nav-links {
    display: none !important;
  }
  .nav-menu-btn {
    display: inline-flex;
    align-items: center;
  }
  .nav-auth .nav-link {
    display: inline;
  }
  .pain-relief-grid {
    grid-template-columns: 1fr !important;
  }
  .pain-relief-arrow {
    display: none !important;
  }
  .claude-demo-sidebar {
    display: none !important;
  }
  .claude-demo-body {
    padding: 20px 16px 8px !important;
  }
  .security-hero {
    padding: 112px 20px 170px !important;
  }
  [style*="grid-template-columns: 1.1fr 1fr"],
  [style*="grid-template-columns: 1fr 1fr"],
  [style*="grid-template-columns: 1fr 1.4fr"],
  [style*="grid-template-columns: 1.5fr 1fr"],
  [style*="grid-template-columns: 1fr 1.3fr"],
  [style*="grid-template-columns: 240px 1fr 180px"] {
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
  .container-wide [style*=grid-template-columns] > *,
  .container [style*=grid-template-columns] > * {
    min-width: 0;
  }
}
@media (max-width: 420px) {
  .nav {
    padding: 0 12px;
  }
  .nav-auth {
    gap: 8px !important;
  }
  .nav-auth .btn-pill {
    padding: 8px 14px !important;
    font-size: 12px !important;
  }
  .nav-tld {
    display: none !important;
  }
  .nav-theme {
    display: none !important;
  }
  .nav-auth .nav-link,
  .nav-auth .btn-pill {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  .hero-cta-row .btn-pill-large {
    font-size: 16px !important;
    padding: 15px 22px !important;
    max-width: 100%;
  }
  .hero-reassure {
    max-width: 300px !important;
  }
}
.docs-tabs-row {
  position: sticky;
  top: 0;
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 68px;
  padding: 0 32px;
  background: rgba(13, 14, 20, 0.85);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--border);
}
[data-theme=light] .docs-tabs-row {
  background: rgba(250, 250, 248, 0.85);
}
.docs-tabs {
  display: flex;
  gap: 4px;
}
.docs-tab {
  appearance: none;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  font-family: var(--sans);
  font-size: 14px;
  color: var(--text-muted);
  padding: 14px 14px 12px;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.docs-tab:hover {
  color: var(--text);
}
.docs-tab.active {
  color: var(--text);
  border-bottom-color: var(--teal);
}
.docs-menu-btn {
  display: none;
  appearance: none;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--sans);
  font-size: 13px;
  padding: 6px 14px;
  min-height: 44px;
  flex-shrink: 0;
  cursor: pointer;
}
.docs-shell {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 264px minmax(0, 1fr) 220px;
  gap: 48px;
  max-width: 1360px;
  margin: 0 auto;
  padding: 0 32px 80px;
  align-items: start;
}
.docs-sidebar {
  position: sticky;
  top: 116px;
  max-height: calc(100vh - 132px);
  overflow-y: auto;
  padding: 24px 12px 24px 0;
  scrollbar-width: thin;
}
.docs-sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.docs-section {
  margin-bottom: 6px;
}
.docs-section-head {
  appearance: none;
  background: none;
  border: none;
  cursor: pointer;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--text-dim);
  padding: 10px 8px 6px;
  transition: color 0.15s ease;
}
.docs-section-head:hover {
  color: var(--text-muted);
}
.docs-chevron {
  font-size: 14px;
  transition: transform 0.15s ease;
  transform: rotate(0deg);
}
.docs-chevron.openc {
  transform: rotate(90deg);
}
.docs-section-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.docs-nav-link {
  display: block;
  font-size: 13.5px;
  line-height: 1.45;
  color: var(--text-muted);
  padding: 5px 10px;
  border-left: 1px solid var(--border);
  margin-left: 8px;
  transition:
    color 0.12s ease,
    border-color 0.12s ease,
    background 0.12s ease;
}
.docs-nav-link:hover {
  color: var(--text);
}
.docs-nav-link.active {
  color: var(--teal);
  border-left: 2px solid var(--teal);
  padding-left: 9px;
  background: var(--teal-glow-soft);
}
.docs-sidebar-foot {
  margin-top: 28px;
  padding: 14px 8px 0;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-dim);
  font-family: var(--mono);
  line-height: 1.8;
}
.docs-sidebar-foot a {
  color: var(--text-muted);
}
.docs-sidebar-foot a:hover {
  color: var(--teal);
}
.docs-search {
  position: relative;
  margin-bottom: 14px;
}
.docs-search-input {
  width: 100%;
  font-family: var(--sans);
  font-size: 13.5px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 9px 40px 9px 12px;
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.docs-search-input::placeholder {
  color: var(--text-dim);
}
.docs-search-input:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px var(--teal-glow-soft);
}
.docs-search-kbd {
  position: absolute;
  right: 8px;
  top: 8px;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--text-dim);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 2px 5px;
  pointer-events: none;
}
.docs-search-results {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: -40px;
  z-index: 95;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);
  overflow: hidden;
  max-height: 420px;
  overflow-y: auto;
}
.docs-search-empty {
  padding: 14px;
  font-size: 13px;
  color: var(--text-dim);
}
.docs-search-hit {
  appearance: none;
  background: none;
  border: none;
  border-bottom: 1px solid var(--border);
  display: block;
  width: 100%;
  text-align: left;
  cursor: pointer;
  padding: 10px 14px;
}
.docs-search-hit:last-child {
  border-bottom: none;
}
.docs-search-hit.active {
  background: var(--teal-glow-soft);
}
.docs-search-hit-title {
  display: block;
  font-size: 13.5px;
  color: var(--text);
  font-family: var(--sans);
}
.docs-search-hit-anchor {
  color: var(--teal);
}
.docs-search-hit-meta {
  display: block;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-dim);
  margin-top: 2px;
}
.docs-search-hit-snippet {
  display: block;
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
  line-height: 1.5;
}
.docs-main {
  min-width: 0;
  padding-top: 40px;
}
.docs-article {
  max-width: 760px;
}
.docs-eyebrow {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 10px;
}
.docs-title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(34px, 4.5vw, 44px);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 28px;
}
.docs-article h2,
.docs-article h3 {
  scroll-margin-top: 140px !important;
}
.docs-prevnext {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 64px;
  padding-top: 28px;
  border-top: 1px solid var(--border);
}
.docs-pn-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 16px;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.docs-pn-card:hover {
  border-color: var(--teal);
  background: var(--teal-glow-soft);
}
.docs-pn-card.next {
  text-align: right;
}
.docs-pn-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-dim);
}
.docs-pn-title {
  font-size: 14px;
  color: var(--text);
}
.docs-toc {
  position: sticky;
  top: 132px;
  max-height: calc(100vh - 152px);
  overflow-y: auto;
  padding: 24px 0;
  font-size: 12.5px;
  scrollbar-width: thin;
}
.docs-toc-head {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-dim);
  margin-bottom: 10px;
}
.docs-toc ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.docs-toc li.sub {
  padding-left: 12px;
}
.docs-toc-link {
  display: block;
  color: var(--text-muted);
  padding: 3px 0 3px 10px;
  border-left: 1px solid var(--border);
  line-height: 1.5;
  transition: color 0.12s ease, border-color 0.12s ease;
}
.docs-toc-link:hover {
  color: var(--text);
}
.docs-toc-link.active {
  color: var(--teal);
  border-left-color: var(--teal);
}
@media (max-width: 1280px) {
  .docs-shell {
    grid-template-columns: 250px minmax(0, 1fr);
  }
  .docs-toc {
    display: none;
  }
}
@media (max-width: 1024px) {
  .docs-shell {
    grid-template-columns: minmax(0, 1fr);
  }
  .docs-menu-btn {
    display: inline-flex;
    align-items: center;
  }
  .docs-tabs {
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .docs-tabs::-webkit-scrollbar {
    display: none;
  }
  .docs-tab {
    flex-shrink: 0;
  }
  .docs-sidebar {
    display: none;
    position: fixed;
    top: 116px;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 89;
    background: var(--bg);
    padding: 20px 24px;
    max-height: none;
  }
  .docs-sidebar.open {
    display: block;
  }
  .docs-search-results {
    right: 0;
  }
}
@media (max-width: 720px) {
  .docs-tabs-row {
    padding: 0 16px;
  }
  .docs-shell {
    padding: 0 20px 64px;
  }
}
.btn-pill {
  white-space: nowrap;
}
@media (max-width: 720px) {
  .section {
    padding: 64px 20px !important;
  }
  .hero-section {
    padding: 112px 20px 240px !important;
  }
  .start-hero {
    padding: 112px 20px 32px !important;
  }
  .nav.scrolled {
    background: color-mix(in srgb, var(--bg) 96%, transparent);
  }
  .sr-col-header {
    display: none !important;
  }
  .sr-row {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
}
.btn-pill-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 28px;
  border-radius: 999px;
  border: 1px solid var(--border-strong);
  background: transparent;
  color: var(--text);
  font-size: 15px;
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.btn-pill-ghost:hover {
  border-color: var(--teal);
  color: var(--teal);
}
.sv2-stage {
  --stop: 63%;
  --hit: 79%;
}
.sv2-lane {
  position: absolute;
  left: 0;
  right: 0;
  height: 30px;
  z-index: 2;
}
.sv2-lane::before {
  content: "";
  position: absolute;
  top: 14px;
  left: 3%;
  width: 59%;
  border-top: 1px dashed var(--border);
  opacity: 0.4;
}
.sv2-attack {
  position: absolute;
  top: 0;
  left: -2%;
  transform: translateX(-100%);
  font-family: var(--mono);
  font-size: 12px;
  white-space: nowrap;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--warning);
  border-radius: 999px;
  padding: 5px 11px;
  opacity: 0;
}
.sv2-verdict {
  position: absolute;
  top: 1px;
  left: calc(var(--stop) + 3.5%);
  font-family: var(--mono);
  font-size: 11.5px;
  white-space: nowrap;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 4px 10px;
  opacity: 0;
  z-index: 3;
}
.sv2-verdict-safe {
  color: var(--teal);
}
.sv2-verdict-typical {
  color: var(--danger);
}
.sv2-stage[data-mode=safe] .sv2-verdict-typical {
  display: none;
}
.sv2-stage[data-mode=typical] .sv2-verdict-safe {
  display: none;
}
.sv2-stage[data-mode=safe] .sv2-attack {
  animation: sv2-run 18s linear infinite;
  animation-delay: calc(var(--i) * 3s - 18s);
}
.sv2-stage[data-mode=typical] .sv2-attack {
  animation: sv2-run-through 18s linear infinite;
  animation-delay: calc(var(--i) * 3s - 18s);
}
.sv2-stage[data-mode=safe] .sv2-verdict-safe,
.sv2-stage[data-mode=typical] .sv2-verdict-typical {
  animation: sv2-pop 18s linear infinite;
  animation-delay: calc(var(--i) * 3s - 18s);
}
@keyframes sv2-run {
  0% {
    left: -2%;
    transform: translateX(-100%);
    opacity: 0;
  }
  1.5% {
    opacity: 1;
  }
  12% {
    left: var(--stop);
    transform: translateX(-100%);
    opacity: 1;
  }
  15% {
    left: calc(var(--stop) - 4%);
    opacity: 1;
  }
  19% {
    left: calc(var(--stop) - 6%);
    opacity: 0;
  }
  100% {
    left: -2%;
    transform: translateX(-100%);
    opacity: 0;
  }
}
@keyframes sv2-run-through {
  0% {
    left: -2%;
    transform: translateX(-100%);
    opacity: 0;
  }
  1.5% {
    opacity: 1;
  }
  12% {
    left: var(--stop);
    transform: translateX(-100%);
    opacity: 1;
  }
  16% {
    left: var(--hit);
    opacity: 1;
  }
  17.5% {
    left: var(--hit);
    opacity: 0;
  }
  100% {
    left: -2%;
    transform: translateX(-100%);
    opacity: 0;
  }
}
@keyframes sv2-pop {
  0%, 12.5% {
    opacity: 0;
    transform: translateY(5px);
  }
  15.5% {
    opacity: 1;
    transform: translateY(0);
  }
  58% {
    opacity: 1;
  }
  66% {
    opacity: 0;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
  }
}
.sv2-shield {
  position: absolute;
  left: 65.5%;
  top: 7%;
  bottom: 7%;
  width: 4px;
  border-radius: 4px;
  background:
    linear-gradient(
      180deg,
      transparent,
      var(--teal) 18%,
      var(--teal) 82%,
      transparent);
  box-shadow: 0 0 18px var(--teal-glow-soft, rgba(45, 212, 191, 0.35));
  transition: opacity 0.5s ease;
}
.sv2-stage[data-mode=safe] .sv2-shield {
  animation: sv2-shield-hit 3s linear infinite;
}
.sv2-stage[data-mode=typical] .sv2-shield {
  opacity: 0.12;
  animation: none;
  box-shadow: none;
}
@keyframes sv2-shield-hit {
  0%, 68% {
    filter: brightness(1);
  }
  72% {
    filter: brightness(1.9);
  }
  100% {
    filter: brightness(1);
  }
}
.sv2-app {
  position: absolute;
  right: 4.5%;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  align-items: center;
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 14px;
  padding: 18px 22px;
}
.sv2-stage[data-mode=typical] .sv2-app {
  animation: sv2-app-hit 3s linear infinite;
}
@keyframes sv2-app-hit {
  0%, 92% {
    border-color: var(--border-strong);
    box-shadow: none;
  }
  96% {
    border-color: var(--danger);
    box-shadow: 0 0 26px rgba(239, 68, 68, 0.3);
    transform: translateY(-50%) translateX(3px);
  }
  100% {
    border-color: var(--border-strong);
    box-shadow: none;
    transform: translateY(-50%);
  }
}
.sv2-pulse {
  animation: sv2-pulse 2.4s ease-in-out infinite;
}
@keyframes sv2-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.35;
  }
}
.sv2-sweep {
  stroke-dasharray: 244;
  animation: sv2-sweep 3.6s linear infinite;
}
@keyframes sv2-sweep {
  from {
    stroke-dashoffset: 244;
  }
  to {
    stroke-dashoffset: 0;
  }
}
@media (max-width: 640px) {
  .sv2-attack {
    font-size: 10.5px;
    padding: 4px 9px;
  }
  .sv2-verdict {
    font-size: 10px;
  }
  .sv2-app {
    padding: 12px 14px;
    right: 3%;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sv2-attack,
  .sv2-verdict,
  .sv2-shield,
  .sv2-app,
  .sv2-pulse,
  .sv2-sweep {
    animation: none !important;
  }
  .sv2-attack {
    left: var(--stop);
    opacity: 1;
  }
  .sv2-stage[data-mode=safe] .sv2-verdict-safe,
  .sv2-stage[data-mode=typical] .sv2-verdict-typical {
    opacity: 1;
  }
  .sv2-stage[data-mode=typical] .sv2-attack {
    left: var(--hit);
  }
}
.hero-scrim {
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
  width: min(1240px, 100%);
  height: clamp(400px, 44vw, 660px);
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(
      ellipse 72% 62% at 50% 38%,
      rgba(13, 14, 20, 0.86) 0%,
      rgba(13, 14, 20, 0.74) 30%,
      rgba(13, 14, 20, 0.46) 55%,
      rgba(13, 14, 20, 0.16) 76%,
      transparent 100%);
}
[data-theme=light] .hero-scrim {
  background:
    radial-gradient(
      ellipse 72% 62% at 50% 38%,
      rgba(250, 250, 248, 0.82) 0%,
      rgba(250, 250, 248, 0.66) 30%,
      rgba(250, 250, 248, 0.38) 55%,
      rgba(250, 250, 248, 0.12) 76%,
      transparent 100%);
}
.xray-band {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: min(100%, 1680px);
  aspect-ratio: 1448 / 891;
  bottom: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
  -webkit-mask-image:
    linear-gradient(
      to top,
      transparent 0%,
      black 9%,
      black 86%,
      transparent 100%);
  mask-image:
    linear-gradient(
      to top,
      transparent 0%,
      black 9%,
      black 86%,
      transparent 100%);
}
.xray-inner {
  position: absolute;
  inset: 0;
}
@media (min-width: 1681px) {
  .xray-inner {
    -webkit-mask-image:
      linear-gradient(
        to right,
        transparent 0,
        black 120px,
        black calc(100% - 120px),
        transparent 100%);
    mask-image:
      linear-gradient(
        to right,
        transparent 0,
        black 120px,
        black calc(100% - 120px),
        transparent 100%);
  }
}
.xray-plate {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 45%;
  user-select: none;
  -webkit-user-drag: none;
}
.xray-plate--night {
  filter: brightness(1.28) contrast(1.04);
}
.xray-plate--day {
  display: none;
}
[data-theme=light] .xray-plate--night {
  display: none;
}
[data-theme=light] .xray-plate--day {
  display: block;
}
.xray-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.xray-source {
  position: absolute;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
@media (max-width: 640px) {
  .xray-band {
    aspect-ratio: auto;
    height: clamp(420px, 56vh, 620px);
  }
  .hero-scrim {
    background:
      radial-gradient(
        ellipse 92% 62% at 50% 36%,
        rgba(13, 14, 20, 0.70) 0%,
        rgba(13, 14, 20, 0.52) 38%,
        rgba(13, 14, 20, 0.24) 66%,
        transparent 100%);
  }
  .xray-plate {
    object-position: center 47%;
  }
}
/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2dsb2JhbHMuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBzb21ld2hlcmUudGVjaCBcdTIwMTQgZGVzaWduIHRva2VucyArIGxhbmRpbmctcGFnZSB1dGlsaXR5IGNsYXNzZXNcbiAqIFRoZSBkYXNoYm9hcmQgcGFnZXMgc3RpbGwgdXNlIGlubGluZSBzdHlsZXMgKHNlZSBzdHlsZXMudHMpO1xuICogdGhpcyBmaWxlIG9ubHkgb3ducyB0aGUgbGFuZGluZy1wYWdlIHZpc3VhbCBwcmltaXRpdmVzIHRoYXQgbmVlZFxuICogcHNldWRvLWNsYXNzZXMsIGFuaW1hdGlvbnMsIG9yIGxhcmdlIHJlcGVhdGVkIHBhdHRlcm5zLiAqL1xuXG4vKiBAc3ctdG9rZW5zOmJlZ2luIGhhc2g9YzI0NzBlMDg4ZmVlIFx1MjAxNCBHRU5FUkFURUQgZnJvbSBkZXNpZ24vdG9rZW5zL3NvbWV3aGVyZS50b2tlbnMuanNvbjsgZG8gbm90IGVkaXQgYnkgaGFuZCwgcnVuIGBub2RlIGRlc2lnbi90b2tlbnMvYnVpbGQubWpzYC4gKi9cbi8qIHNvbWV3aGVyZS50ZWNoIGRlc2lnbiB0b2tlbnMgXHUyMDE0IEdFTkVSQVRFRCwgZG8gbm90IGVkaXQuXG4gKiBTb3VyY2U6IGRlc2lnbi90b2tlbnMvc29tZXdoZXJlLnRva2Vucy5qc29uIFx1MDBCNyB2ZXJzaW9uIDIwMjYtMDctMTEuMSBcdTAwQjcgaGFzaCBjMjQ3MGUwODhmZWVcbiAqIFJlZ2VuZXJhdGU6IG5vZGUgZGVzaWduL3Rva2Vucy9idWlsZC5tanNcbiAqIFJ1bnRpbWUgVVJMOiBodHRwczovL3NvbWV3aGVyZS50ZWNoL19fc3cvZGVzaWduLXRva2Vucy9zb21ld2hlcmUuY3NzICovXG46cm9vdCB7XG4gIC0tYmc6ICMwZDBlMTQ7XG4gIC0tc3VyZmFjZTogIzEzMTYxZjtcbiAgLS1zdXJmYWNlLTI6ICMxODFiMjU7XG4gIC0tYmctMjogIzExMTMxYztcbiAgLS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gIC0tYm9yZGVyLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KTtcbiAgLS10ZXh0OiAjZjBmMGViO1xuICAtLXRleHQtbXV0ZWQ6ICNjOWNiYzA7XG4gIC0tdGV4dC1kaW06ICNhYmFkYTE7XG4gIC0tYnJhbmQ6ICMyZGQ0YmY7XG4gIC0tYnJhbmQtZGVlcDogIzE0YjhhNjtcbiAgLS1icmFuZC1nbG93OiByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4xOCk7XG4gIC0tYnJhbmQtZ2xvdy1zb2Z0OiByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4wNik7XG4gIC0td2FybmluZzogI2Y1YjU0MjtcbiAgLS1zdWNjZXNzOiAjMjJjNTVlO1xuICAtLWRhbmdlcjogI2RjNGE0YTtcbiAgLS1kYW5nZXItZGltOiByZ2JhKDIyMCwgNzQsIDc0LCAwLjE1KTtcbiAgLS1zdWNjZXNzLWRpbTogcmdiYSgzNCwgMTk3LCA5NCwgMC4xNSk7XG4gIC0td2FybmluZy1kaW06IHJnYmEoMjQ1LCAxODEsIDY2LCAwLjE2KTtcbiAgLS1vdmVybGF5OiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xuICAtLXBhaW46ICM0NTQ0M2I7XG5cbiAgLyogVGhlbWUtaW52YXJpYW50IGJ5IGRlc2lnbiAoc2VlIG5vdGVzIGluIHRoZSB0b2tlbnMgSlNPTikuICovXG4gIC0tYnJhbmQtaW5rOiAjMDYyMDE4O1xuICAtLXRlcm1pbmFsLWJnOiAjMGEwYTBlO1xuICAtLW9hdXRoLWdvb2dsZS1iZzogI2ZmZmZmZjtcbiAgLS1vYXV0aC1nb29nbGUtZmc6ICMxYTFhMWE7XG4gIC0tb2F1dGgtZ2l0aHViLWJnOiAjMjQyOTJlO1xuICAtLW9hdXRoLWdpdGh1Yi1mZzogI2ZmZmZmZjtcbiAgLS1lYXNlLW91dDogY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG5cbiAgLyogQ29tcGF0IGFsaWFzZXMgXHUyMDE0IHRoZSBjYW5vbmljYWwgdmFsdWUgbGl2ZXMgb24gdGhlIHJlZmVyZW5jZWQgdG9rZW4uICovXG4gIC0tdGVhbDogdmFyKC0tYnJhbmQpO1xuICAtLXRlYWwtZGVlcDogdmFyKC0tYnJhbmQtZGVlcCk7XG4gIC0tdGVhbC1nbG93OiB2YXIoLS1icmFuZC1nbG93KTtcbiAgLS10ZWFsLWdsb3ctc29mdDogdmFyKC0tYnJhbmQtZ2xvdy1zb2Z0KTtcbiAgLS10ZWFsLWluazogdmFyKC0tYnJhbmQtaW5rKTtcblxuICAvKiBUeXBlIFx1MjAxNCBmb250IHN0YWNrcyBsaXZlIE9OTFkgaW4gdGhlIHRva2VucyBKU09OLiAqL1xuICAtLXNlcmlmOiAnSW5zdHJ1bWVudCBTZXJpZicsIEdlb3JnaWEsIHNlcmlmO1xuICAtLXNhbnM6ICdETSBTYW5zJywgc3lzdGVtLXVpLCBzYW5zLXNlcmlmO1xuICAtLW1vbm86ICdETSBNb25vJywgdWktbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC0td2VpZ2h0LWJvZHk6IDM1MDtcbiAgLS13ZWlnaHQtbWVkaXVtOiA0NTA7XG4gIC0td2VpZ2h0LXN0cm9uZzogNTUwO1xufVxuXG5bZGF0YS10aGVtZT1cImxpZ2h0XCJdIHtcbiAgLS1iZzogI2ZhZmFmODtcbiAgLS1zdXJmYWNlOiAjZmZmZmZmO1xuICAtLXN1cmZhY2UtMjogI2YzZjJlZTtcbiAgLS1iZy0yOiAjZjNmMmVlO1xuICAtLWJvcmRlcjogcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgLS1ib3JkZXItc3Ryb25nOiByZ2JhKDAsIDAsIDAsIDAuMTYpO1xuICAtLXRleHQ6ICMxYTFhMWE7XG4gIC0tdGV4dC1tdXRlZDogIzU0NTI0YTtcbiAgLS10ZXh0LWRpbTogIzYzNjE1YTtcbiAgLS1icmFuZDogIzE0YjhhNjtcbiAgLS1icmFuZC1kZWVwOiAjMGQ5NDg4O1xuICAtLWJyYW5kLWdsb3c6IHJnYmEoMjAsIDE4NCwgMTY2LCAwLjE4KTtcbiAgLS1icmFuZC1nbG93LXNvZnQ6IHJnYmEoMjAsIDE4NCwgMTY2LCAwLjA2KTtcbiAgLS13YXJuaW5nOiAjYzI3NTBhO1xuICAtLXN1Y2Nlc3M6ICMxNmEzNGE7XG4gIC0tZGFuZ2VyOiAjYzEyNjI2O1xuICAtLWRhbmdlci1kaW06IHJnYmEoMTkzLCAzOCwgMzgsIDAuMTApO1xuICAtLXN1Y2Nlc3MtZGltOiByZ2JhKDIyLCAxNjMsIDc0LCAwLjEyKTtcbiAgLS13YXJuaW5nLWRpbTogcmdiYSgxOTQsIDExNywgMTAsIDAuMTIpO1xuICAtLW92ZXJsYXk6IHJnYmEoMCwgMCwgMCwgMC40NSk7XG4gIC0tcGFpbjogI2M2YzRiZTtcbn1cbi8qIEBzdy10b2tlbnM6ZW5kICovXG5cbi8qIFRoZW1lIHN3aXRjaGluZyBydW5zIGluc2lkZSBhIFZpZXcgVHJhbnNpdGlvbiAoVGhlbWVUb2dnbGUudHN4KSwgc29cbiAgIGZsaXBwaW5nIGxpZ2h0L2RhcmsgY3Jvc3MtZmFkZXMgdGhlIHdob2xlIHBhZ2UgaW5zdGVhZCBvZiBzbmFwcGluZy5cbiAgIFRoZSBkZWZhdWx0IDI1MG1zIHJlYWRzIGFzIGEgZ2xpdGNoOyBoYWxmIGEgc2Vjb25kIHJlYWRzIGFzIGR1c2suICovXG46OnZpZXctdHJhbnNpdGlvbi1vbGQocm9vdCksXG46OnZpZXctdHJhbnNpdGlvbi1uZXcocm9vdCkge1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuNXM7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XG59XG5cbiogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbmh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgfVxuYm9keSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgY29sb3I6IHZhcigtLXRleHQpO1xuICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gIC8qIE5vcm1hbC13aWR0aCBETSBTYW5zIGZvciBib2R5IHRleHQuIFdhcyAzMDAgKExpZ2h0KSBcdTIwMTQgdG9vIHRoaW5cbiAgICogYW5kIGZlbHQgdmlzdWFsbHkgY29uZGVuc2VkIG5leHQgdG8gdGhlIHNlcmlmIGhlYWRsaW5lcy4gNDAwIGlzXG4gICAqIHRoZSBzYW1lIHdlaWdodCB0aGUgZGFzaGJvYXJkIGFwcCB1c2VzIGJ5IGRlZmF1bHQuICovXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIC8qIFNsaWdodCBwb3NpdGl2ZSB0cmFja2luZyBmb3IgYWlyIGJldHdlZW4gZ2x5cGhzLiBLZWVwcyBETSBTYW5zXG4gICAqIGZlZWxpbmcgXCJub3JtYWwgd2lkdGhcIiBpbnN0ZWFkIG9mIGNyYW1wZWQgYXQgc21hbGwgc2l6ZXMuICovXG4gIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xufVxuOjpzZWxlY3Rpb24geyBiYWNrZ3JvdW5kOiB2YXIoLS10ZWFsLWdsb3cpOyBjb2xvcjogdmFyKC0tdGV4dCk7IH1cbmEgeyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBCYWNrZ3JvdW5kIGRvdCBncmlkIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLmRvdC1ncmlkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIDFweCwgdHJhbnNwYXJlbnQgMXB4KTtcbiAgYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7XG59XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBIZXJvIHJhZGlhbCBnbG93IChzaXRzIGJlaGluZCBoZXJvLCBibGVlZHMgdGhyb3VnaCBkb3RzKSBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDAgKi9cbi5oZXJvLWdsb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHdpZHRoOiAxMTAwcHg7XG4gIGhlaWdodDogMTEwMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTUlKTtcbiAgei1pbmRleDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChcbiAgICBjaXJjbGUgYXQgY2VudGVyLFxuICAgIHZhcigtLXRlYWwtZ2xvdykgMCUsXG4gICAgcmdiYSg0NSwgMjEyLCAxOTEsIDAuMDUpIDMwJSxcbiAgICB0cmFuc3BhcmVudCA2MCVcbiAgKTtcbiAgZmlsdGVyOiBibHVyKDIwcHgpO1xufVxuXG4vKiBcdTI1MDBcdTI1MDBcdTI1MDAgRXllYnJvdyBwaWxsIChzbWFsbCB1cHBlcmNhc2UgdGVhbCBsYWJlbCkgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG4uZXllYnJvdyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4xMmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tdGVhbCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDUsIDIxMiwgMTkxLCAwLjMpO1xuICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgcGFkZGluZzogNnB4IDE0cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoNDUsIDIxMiwgMTkxLCAwLjA0KTtcbn1cbi5leWVicm93LW11dGVkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjEyZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIFBpbGwgYnV0dG9uIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLmJ0bi1waWxsIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tdGVhbCk7XG4gIGNvbG9yOiAjMGExNDEwO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICBwYWRkaW5nOiAxNHB4IDI4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4ycyBlYXNlO1xuICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKDQ1LCAyMTIsIDE5MSwgMCk7XG59XG4uYnRuLXBpbGw6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJhY2tncm91bmQ6ICM0Y2UwYzg7XG4gIGJveC1zaGFkb3c6IDAgMTJweCAzMnB4IHJnYmEoNDUsIDIxMiwgMTkxLCAwLjI1KTtcbn1cbi5idG4tcGlsbC1sYXJnZSB7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgcGFkZGluZzogMThweCAzNnB4O1xufVxuLmJ0bi1waWxsLWlkbGUge1xuICBhbmltYXRpb246IHB1bHNlLWdsb3cgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIHB1bHNlLWdsb3cge1xuICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAwIHJnYmEoNDUsIDIxMiwgMTkxLCAwKTsgfVxuICA1MCUgICAgICB7IGJveC1zaGFkb3c6IDAgMCAzMnB4IHJnYmEoNDUsIDIxMiwgMTkxLCAwLjIyKTsgfVxufVxuQGtleWZyYW1lcyBzcGluIHtcbiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG59XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBIZXJvIHByb21wdCBibG9jayAodHNrX2EwZDJhZDNhKSBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcbiAqIFRoZSBoZXJvJ3MgcHJpbWFyeSBhY3Rpb246IGEgY29weS10by1jbGlwYm9hcmQgcHJvbXB0IHRoZSB2aXNpdG9yXG4gKiBwYXN0ZXMgaW50byB0aGVpciBvd24gYWdlbnQuIEVudGlyZSBibG9jayBpcyBhIG5hdGl2ZSA8YnV0dG9uPiBzb1xuICogY2xpY2sgKyBrZXlib2FyZCBib3RoIHdvcmsgZm9yIGZyZWU7IHRoZSBjb3B5IGljb24gbGl2ZXMgaW5zaWRlIGl0XG4gKiByYXRoZXIgdGhhbiBhcyBhIG5lc3RlZCBidXR0b24gKGludmFsaWQgSFRNTCkuICovXG4ucHJvbXB0LWJsb2NrIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogMTZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNjQwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgcGFkZGluZzogMTZweCAxOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG59XG4ucHJvbXB0LWJsb2NrOmhvdmVyLFxuLnByb21wdC1ibG9jazpmb2N1cy12aXNpYmxlIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZWFsKTtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5wcm9tcHQtYmxvY2stdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTtcbiAgZm9udC1zaXplOiAxMy41cHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG4ucHJvbXB0LWJsb2NrLWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2U7XG59XG4ucHJvbXB0LWJsb2NrOmhvdmVyIC5wcm9tcHQtYmxvY2staWNvbixcbi5wcm9tcHQtYmxvY2s6Zm9jdXMtdmlzaWJsZSAucHJvbXB0LWJsb2NrLWljb24ge1xuICBjb2xvcjogdmFyKC0tdGVhbCk7XG59XG4ucHJvbXB0LWJsb2NrLWljb24uY29waWVkIHtcbiAgY29sb3I6IHZhcigtLXRlYWwpO1xufVxuXG4vKiBcdTI1MDBcdTI1MDBcdTI1MDAgQ2xhdWRlLWNoYXQgZGVtbyBhbmltYXRpb25zIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLyogdHlwaW5nLWRvdDogdGhyZWUgZG90cyBwdWxzaW5nIGluIHNlcXVlbmNlIHRvIGluZGljYXRlIENsYXVkZSBpc1xuICogdGhpbmtpbmcuIEVhY2ggZG90IHN0YWdnZXIgaXMgc2V0IGlubGluZSB2aWEgYW5pbWF0aW9uLWRlbGF5LiAqL1xuQGtleWZyYW1lcyB0eXBpbmctZG90IHtcbiAgMCUsIDYwJSwgMTAwJSB7IG9wYWNpdHk6IDAuMzsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG4gIDMwJSAgICAgICAgICAgeyBvcGFjaXR5OiAxOyAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsgfVxufVxuLyogbXNnLWluOiBlYWNoIG1lc3NhZ2UgaW4gdGhlIGNoYXQgc2xpZGVzIHVwICsgZmFkZXMgaW4gd2hlbiBhcHBlbmRlZC4gKi9cbkBrZXlmcmFtZXMgbXNnLWluIHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSg2cHgpOyB9XG4gIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbn1cbi5tc2ctcm93IHsgYW5pbWF0aW9uOiBtc2ctaW4gMC4yOHMgZWFzZS1vdXQgYm90aDsgfVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLm1zZy1yb3cgeyBhbmltYXRpb246IG5vbmU7IH1cbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIDQwNCBwYWdlIGFuaW1hdGlvbnMgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG4vKiBUaGUgYmlnIDQwNCBudW1iZXIgZmxvYXRzIGdlbnRseTsgdGhlIG1pZGRsZSAwIGhhcyBpdHMgb3duIGRyaWZ0ICtcbiAqIHJvdGF0aW9uIHNvIGl0IGZlZWxzIGxpa2UgdGhlIFwic29tZXdoZXJlXCIgd2FuZGVyaW5nIG9mZi4gU2hhcmVkXG4gKiBhY3Jvc3MgcHVibGljLzQwNC5odG1sICh0aGUgd29ya2VyLXNlcnZlZCB2ZXJzaW9uIGNvcGllcyB0aGVzZVxuICoga2V5ZnJhbWVzIGlubGluZSkgYW5kIHNyYy9wYWdlcy9Ob3RGb3VuZC50c3ggKFNQQSBjYXRjaC1hbGwpLiAqL1xuQGtleWZyYW1lcyBmbG9hdC00MDQge1xuICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuICA1MCUgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IH1cbn1cbkBrZXlmcmFtZXMgd29iYmxlLW9oIHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDBkZWcpOyB9XG4gIDUwJSAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpIHJvdGF0ZSg3ZGVnKTsgfVxufVxuLmZvdXItb2gtZm91ciB7XG4gIGFuaW1hdGlvbjogZmxvYXQtNDA0IDVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuLmZvdXItb2gtZm91ciAub2gge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFuaW1hdGlvbjogd29iYmxlLW9oIDQuMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciA1NSU7XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZm91ci1vaC1mb3VyLCAuZm91ci1vaC1mb3VyIC5vaCB7IGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9XG59XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBEaXNwbGF5IGhlYWRpbmcgKEluc3RydW1lbnQgU2VyaWYpIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLmRpc3BsYXkge1xuICBmb250LWZhbWlseTogdmFyKC0tc2VyaWYpO1xuICBmb250LXdlaWdodDogNDAwO1xuICAvKiBJbnN0cnVtZW50IFNlcmlmIGlzIGEgbmFycm93IGRpc3BsYXkgY3V0OyBuZWdhdGl2ZSB0cmFja2luZyBtYWRlIHRoZVxuICAgKiBoZWFkbGluZXMgZmVlbCBjcmFtcGVkLiBTbGlnaHQgcG9zaXRpdmUgdHJhY2tpbmcgb3BlbnMgdGhlbSB1cCBmb3JcbiAgICogZWFzaWVyIHJlYWRpbmcgd2l0aG91dCBsb3NpbmcgdGhlIHRpZ2h0LCBlZGl0b3JpYWwgbG9vay4gKi9cbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbn1cbi5kaXNwbGF5IGVtIHtcbiAgY29sb3I6IHZhcigtLXRlYWwpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBDYXJkIHN1cmZhY2UgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG4uY2FyZCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBwYWRkaW5nOiAzMnB4O1xufVxuLmNhcmQtZ2xvdyB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSg0NSwgMjEyLCAxOTEsIDAuMjUpO1xuICBib3gtc2hhZG93OiAwIDAgNjBweCByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4wOCksIGluc2V0IDAgMCAwIDFweCByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4wOCk7XG59XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBDb25uZWN0b3Igd2Fsa3Rocm91Z2ggc3BvdGxpZ2h0IFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLyogVGVhbCByaW5nIG9uIHRoZSBjdXJyZW50IGNsaWNrIHRhcmdldC4gQSBzaW5nbGUgcmVzdHJhaW5lZCBleHBhbnNpb25cbiAqIHBsYXlzIHdoZW4gdGhlIHN0ZXAgbW91bnRzICh0aGUgbW9jayBpcyBrZXllZCBieSBzdGVwIHNvIGl0IHJlbW91bnRzKSxcbiAqIHRoZW4gcmVzdHMgYXMgYSBzdGVhZHkgMnB4IG91dGxpbmUgXHUyMDE0IG5vIHBlcnNpc3RlbnQgcHVsc2UuIFNlZVxuICogY29tcG9uZW50cy9sYW5kaW5nL0Nvbm5lY3RvcldhbGt0aHJvdWdoLnRzeC4gKi9cbi5jdy1zcG90IHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXRlYWwpO1xuICBhbmltYXRpb246IGN3LXJpbmcgMC43cyB2YXIoLS1lYXNlLW91dCwgZWFzZS1vdXQpIDE7XG59XG5Aa2V5ZnJhbWVzIGN3LXJpbmcge1xuICAwJSAgIHsgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXRlYWwpLCAwIDAgMCAwIHJnYmEoNDUsIDIxMiwgMTkxLCAwLjQ1KTsgfVxuICAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXRlYWwpLCAwIDAgMCAxNHB4IHJnYmEoNDUsIDIxMiwgMTkxLCAwKTsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmN3LXNwb3QgeyBhbmltYXRpb246IG5vbmU7IH1cbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIFJldmVhbC1vbi1zY3JvbGwgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG4ucmV2ZWFsIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpO1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgMC45cyB2YXIoLS1lYXNlLW91dCkgdmFyKC0tcmV2ZWFsLWRlbGF5LCAwcyksXG4gICAgdHJhbnNmb3JtIDAuOXMgdmFyKC0tZWFzZS1vdXQpIHZhcigtLXJldmVhbC1kZWxheSwgMHMpO1xuICB3aWxsLWNoYW5nZTogb3BhY2l0eSwgdHJhbnNmb3JtO1xufVxuLnJldmVhbC5pcy12aXNpYmxlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBIZXJvIGxvYWQtaW46IHN0YWdnZXIgY2hpbGRyZW4gYXV0b21hdGljYWxseSB1c2luZyBhIENTUyBjb3VudGVyIHBhdHRlcm4uXG4gKiBFYWNoIGVsZW1lbnQgd2l0aCAuaGVyby1zdGFnZ2VyIGdldHMgaXRzIG93biBkZWxheSB0aHJvdWdoIGlubGluZSBzdHlsZS4gKi9cbi5oZXJvLXN0YWdnZXIge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjRweCk7XG4gIGFuaW1hdGlvbjogaGVyby1yaXNlIDFzIHZhcigtLWVhc2Utb3V0KSBmb3J3YXJkcztcbiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1zdGFnZ2VyLWRlbGF5LCAwcyk7XG59XG5Aa2V5ZnJhbWVzIGhlcm8tcmlzZSB7XG4gIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG59XG5cbi8qIEhlcm8gdHlwaW5nLWN1cnNvciBibGluayBcdTIwMTQgdXNlZCBieSA8VHlwaW5nQ3ljbGU+IGluIEhlcm8udHN4IGZvclxuICogdGhlIGJvcmluZyAvIHNjYXJ5IC8gY3JpdGljYWwgLyByZXBldGl0aXZlIHdvcmQgY3ljbGUuIFN0ZXBzKDEsZW5kKVxuICogZ2l2ZXMgYSBoYXJkIG9uL29mZiwgbm90IGEgZmFkZSBcdTIwMTQgcmVhZHMgbGlrZSBhIHJlYWwgdGVybWluYWwgY3Vyc29yLiAqL1xuQGtleWZyYW1lcyBzb21ld2hlcmUtaGVyby1jdXJzb3ItYmxpbmsge1xuICAwJSwgNTAlICAgeyBvcGFjaXR5OiAxOyB9XG4gIDUxJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIE1hcnF1ZWUgKGluZmluaXRlIGhvcml6b250YWwgc2Nyb2xsLCB0d28gb3Bwb3NpdGUgcm93cykgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG4vKiBJdGVtcyB1c2UgbWFyZ2luLXJpZ2h0IChub3QgZ2FwKSBzbyB0aGUgZG91YmxlZCB0cmFjaydzIHRvdGFsIHdpZHRoIGlzXG4gKiBleGFjdGx5IDJOKihpdGVtX3dpZHRoICsgbWFyZ2luKS4gVHJhbnNsYXRpbmcgLTUwJSB0aGVuIGxhbmRzIHRoZSBzZWNvbmRcbiAqIGNvcHkgcHJlY2lzZWx5IG9uIHRoZSBmaXJzdCBjb3B5J3Mgc3RhcnQsIGxvb3Bpbmcgc2VhbWxlc3NseSB3aXRoIG5vIGp1bXAuXG4gKiBQdXJlIENTUywgbm8gSlMsIG5vIHJlcXVlc3RBbmltYXRpb25GcmFtZS4gKi9cbi5tYXJxdWVlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMTAwJTtcbiAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIHJpZ2h0LFxuICAgIHRyYW5zcGFyZW50IDAlLFxuICAgICMwMDAgMTAlLFxuICAgICMwMDAgOTAlLFxuICAgIHRyYW5zcGFyZW50IDEwMCVcbiAgKTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgdG8gcmlnaHQsXG4gICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgIzAwMCAxMCUsXG4gICAgIzAwMCA5MCUsXG4gICAgdHJhbnNwYXJlbnQgMTAwJVxuICApO1xufVxuLm1hcnF1ZWUtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG4ubWFycXVlZS10cmFjay1sZWZ0ICB7IGFuaW1hdGlvbjogc2Nyb2xsLWxlZnQgIDMwcyBsaW5lYXIgaW5maW5pdGU7IH1cbi5tYXJxdWVlLXRyYWNrLXJpZ2h0IHsgYW5pbWF0aW9uOiBzY3JvbGwtcmlnaHQgMzBzIGxpbmVhciBpbmZpbml0ZTsgfVxuXG5Aa2V5ZnJhbWVzIHNjcm9sbC1sZWZ0IHtcbiAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB9XG59XG5Aa2V5ZnJhbWVzIHNjcm9sbC1yaWdodCB7XG4gIDAlICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH1cbiAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLm1hcnF1ZWUtdHJhY2stbGVmdCxcbiAgLm1hcnF1ZWUtdHJhY2stcmlnaHQgeyBhbmltYXRpb246IG5vbmU7IH1cbn1cblxuLyogTWFycXVlZSBpdGVtOiBsb2dvICsgdGlueSBicmFuZCBuYW1lIHVuZGVybmVhdGgsIDQwJSBvcGFjaXR5LlxuICogbWFyZ2luLXJpZ2h0IChub3QgZ2FwKSBpcyB0aGUga2V5IHRvIHRoZSBzZWFtbGVzcyBsb29wIG1hdGguICovXG4ubWFycXVlZS1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDQ4cHg7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5tYXJxdWVlLWl0ZW0gaW1nIHtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSkgYnJpZ2h0bmVzcygwKSBpbnZlcnQoMSk7XG59XG4ubWFycXVlZS1pdGVtIHNwYW4ge1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIERhc2hlZCB0ZWFsIGNvbm5lY3RvciBsaW5lIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLyogU2l0cyBiZXR3ZWVuIHRoZSByZWxpZWYgY2FyZCBhbmQgdGhlIG1hcnF1ZWUsIHZpc3VhbGx5IHNheWluZ1xuICogXCJ0aGlzIG9uZSB0aGluZyByZXBsYWNlcyBhbGwgb2YgdGhhdC5cIiAqL1xuLmNvbm5lY3Rvci1saW5lIHtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiA1NnB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgdmFyKC0tdGVhbCk7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIFNlY3Rpb24gc3BhY2luZyBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDAgKi9cbi5zZWN0aW9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA5NnB4IDI0cHg7XG4gIHotaW5kZXg6IDE7XG59XG4uc2VjdGlvbi10aWdodCB7IHBhZGRpbmc6IDQ4cHggMjRweDsgfVxuLmNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogODYwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY29udGFpbmVyLXdpZGUge1xuICBtYXgtd2lkdGg6IDk4MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBcdTI1MDBcdTI1MDBcdTI1MDAgTmF2IFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMCAqL1xuLyogU2tpcC10by1jb250ZW50IGxpbmsgKHRza181OTQ4YWY3NiwgV0NBRyAyLjQuMSk6IG9mZi1zY3JlZW4gdW50aWwgZm9jdXNlZCxcbiAgIHRoZW4gaXQgZHJvcHMgaW50byB2aWV3IGFib3ZlIHRoZSBmaXhlZCBuYXYuIFRva2VuLWRyaXZlbiBwZXIgdGhlIGRlc2lnblxuICAgc3lzdGVtLiBUaGUgbmF2IGlzIHBvc2l0aW9uOmZpeGVkLCBzbyB0aGUgPGhlYWRlcj4gd3JhcHBlciBhZGRzIHRoZSBiYW5uZXJcbiAgIGxhbmRtYXJrIHdpdGhvdXQgYWZmZWN0aW5nIGxheW91dC4gKi9cbi5za2lwLWxpbmsge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDEycHg7XG4gIHRvcDogLTY0cHg7XG4gIHotaW5kZXg6IDIwMDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgY29sb3I6IHZhcigtLXRleHQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1zYW5zKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IHRvcCAwLjE1cyBlYXNlO1xufVxuLnNraXAtbGluazpmb2N1cyB7XG4gIHRvcDogMTJweDtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRlYWwpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4ubmF2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwO1xuICB6LWluZGV4OiAxMDA7XG4gIGhlaWdodDogNjhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAwIDMycHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyBlYXNlLCBib3JkZXItY29sb3IgMC4zcyBlYXNlLCBiYWNrZHJvcC1maWx0ZXIgMC4zcyBlYXNlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG4ubmF2LnNjcm9sbGVkIHtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJnKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE4cHgpIHNhdHVyYXRlKDE0MCUpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxOHB4KSBzYXR1cmF0ZSgxNDAlKTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tYm9yZGVyKTtcbn1cbi5uYXYtbGluayB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2U7XG59XG4ubmF2LWxpbms6aG92ZXIgeyBjb2xvcjogdmFyKC0tdGV4dCk7IH1cblxuLyogQ29tcGFjdCBtb2JpbGUgbmF2IG1lbnUgKHRza18xMTA1NDZlOSkuIFRoZSB0cmlnZ2VyIGlzIGRpc3BsYXk6bm9uZSBvblxuICAgZGVza3RvcCAoc2VjdGlvbiBsaW5rcyBhcmUgaW5saW5lIHRoZXJlKTsgdGhlIFx1MjI2NDcyMHB4IGJsb2NrIHNob3dzIGl0LiBUaGVcbiAgIGRyb3Bkb3duIHN1cmZhY2VzIHRoZSBzZWN0aW9uIGxpbmtzIChQcmljaW5nL0d1aWRlL0RvY3MpIHRoYXQgLm5hdi1saW5rc1xuICAgaGlkZXMgYXQgcGhvbmUgd2lkdGgsIHdoaWxlIFRoZW1lICsgbG9naW4gKyBDVEEgc3RheSBpbmxpbmUgaW4gLm5hdi1hdXRoLiAqL1xuLm5hdi1tZW51LWJ0biB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLXNhbnMpO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmc6IDhweCAxMnB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubmF2LW1lbnUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjBweDtcbiAgcmlnaHQ6IDEycHg7XG4gIHotaW5kZXg6IDEwMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAxNjhweDtcbiAgcGFkZGluZzogOHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjI4KTtcbn1cbi5uYXYtbWVudS1saW5rIHtcbiAgcGFkZGluZzogMTJweCAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn1cbi5uYXYtbWVudS1saW5rOmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXIpOyB9XG5cbi8qIFx1MjUwMFx1MjUwMFx1MjUwMCBNb2JpbGUgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwICovXG5AbWVkaWEgKG1heC13aWR0aDogNzIwcHgpIHtcbiAgLnNlY3Rpb24geyBwYWRkaW5nOiA2NHB4IDIwcHg7IH1cbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci13aWRlIHsgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5uYXYgeyBwYWRkaW5nOiAwIDE2cHg7IH1cbiAgLyogU2VjdGlvbiBsaW5rcyBjb2xsYXBzZSwgYXV0aCBjb250cm9scyBzdGF5IHZpc2libGUgXHUyMDE0IHNlZSBOYXZiYXIudHN4XG4gICAqIGZvciB0aGUgc3RydWN0dXJhbCBzcGxpdC4gV2l0aG91dCB0aGlzIHlvdSBjYW4ndCBsb2cgaW4gb24gbW9iaWxlLiAqL1xuICAubmF2LWxpbmtzIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIC8qIC4uLmJ1dCB0aGUgc2VjdGlvbiBsaW5rcyBzdGF5IHJlYWNoYWJsZSB2aWEgdGhlIGNvbXBhY3QgbWVudSBidXR0b24uICovXG4gIC5uYXYtbWVudS1idG4geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubmF2LWF1dGggLm5hdi1saW5rIHtcbiAgICAvKiBLZWVwIFwiTG9nIGluXCIgcmVhZGFibGUgbmV4dCB0byB0aGUgcGlsbCBvbiBuYXJyb3cgc2NyZWVucy4gKi9cbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbiAgLnBhaW4tcmVsaWVmLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBhaW4tcmVsaWVmLWFycm93IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgLyogQ2xhdWRlIE1DUCBkZW1vICgyMDI2LTA3LTE4IG1vYmlsZSBhdWRpdCk6IHRoZSAxNzZweCBzaWRlYmFyIGxlZnRcbiAgICogfjEwMHB4IGZvciB0aGUgY2hhdCBhdCAzNjBweC4gSGlkZSBpdCBvbiBwaG9uZXMgXHUyMDE0IGFuIGljb24gcmFpbFxuICAgKiBzdGlsbCB3YXN0ZXMgd2lkdGggb24gYSBzY3JpcHRlZCBkZW1vLiAqL1xuICAuY2xhdWRlLWRlbW8tc2lkZWJhciB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuY2xhdWRlLWRlbW8tYm9keSB7IHBhZGRpbmc6IDIwcHggMTZweCA4cHggIWltcG9ydGFudDsgfVxuICAvKiAvc2VjdXJpdHkgaGVybyBpbmhlcml0cyB0aGUgaG9tZXBhZ2UncyB0YWxsIGdlb21ldHJpYy1maWVsZCB0YWlsO1xuICAgKiBpdHMgb3duIGZpZWxkIGlzIHNob3J0ZXIsIHNvIHRyaW0gdGhlIGJsYW5rIGJvdHRvbSBvbiBtb2JpbGUuICovXG4gIC5zZWN1cml0eS1oZXJvIHsgcGFkZGluZzogMTEycHggMjBweCAxNzBweCAhaW1wb3J0YW50OyB9XG5cbiAgLyogTGFuZGluZyBzZWN0aW9ucyB1c2UgaW5saW5lIGBncmlkVGVtcGxhdGVDb2x1bW5zYCBmb3IgdGhlaXJcbiAgICogXCJjb3B5IHwgdmlzdWFsXCIgb3IgXCJoZWFkbGluZSB8IGludHJvXCIgdHdvLWNvbHVtbiBzcGxpdHMuXG4gICAqIElubGluZSBzdHlsZXMgYnlwYXNzIGNsYXNzLWJhc2VkIG1lZGlhIHF1ZXJpZXMgXHUyMDE0IHRoZXNlXG4gICAqIGF0dHJpYnV0ZSBzZWxlY3RvcnMgdGFyZ2V0IGVhY2gga25vd24gcmF0aW8gYW5kIGZvcmNlIGFcbiAgICogc2luZ2xlIGNvbHVtbiBvbiBtb2JpbGUuIEFkZGluZyBhIG5ldyBzZWN0aW9uIG1lYW5zIGFkZGluZ1xuICAgKiBpdHMgcmF0aW8gaGVyZSBPUiB1c2luZyBvbmUgb2YgdGhlIGV4aXN0aW5nIG9uZXMuXG4gICAqXG4gICAqIEtub3duIHNwbGl0czpcbiAgICogICAnMS4xZnIgMWZyJyAgIFRocmVlTGF5ZXJzIGhlYWRlciwgU2VjdXJpdHlSZXZpZXcgaGVhZGVyXG4gICAqICAgJzFmciAxZnInICAgICBEZW1vIChDbGF1ZGUgc3VwZXJwb3dlcnMgc3BsaXQpXG4gICAqICAgJzFmciAxLjRmcicgICBIb3dJdFdvcmtzICh0aXRsZSB8IHN0ZXBzKVxuICAgKiAgICcxLjVmciAxZnInICAgQ29zdENhbGN1bGF0b3IgKHdpdGhvdXQgfCB3aXRoKVxuICAgKiAgICcxZnIgMS4zZnInICAgR3VpZGUgdHdvQ29sU3R5bGVcbiAgICogICAnMS4xZnIgMWZyJyAgIEhlcm8gKGNvcHkgfCBkZW1vKVxuICAgKiAgICcyNDBweCAxZnIgMTgwcHgnICAgVGhyZWVMYXllcnMgbGF5ZXIgY2FyZHNcbiAgICovXG4gIFtzdHlsZSo9XCJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMWZyIDFmclwiXSxcbiAgW3N0eWxlKj1cImdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmclwiXSxcbiAgW3N0eWxlKj1cImdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuNGZyXCJdLFxuICBbc3R5bGUqPVwiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjVmciAxZnJcIl0sXG4gIFtzdHlsZSo9XCJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjNmclwiXSxcbiAgW3N0eWxlKj1cImdyaWQtdGVtcGxhdGUtY29sdW1uczogMjQwcHggMWZyIDE4MHB4XCJdIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50O1xuICAgIGdhcDogMTZweCAhaW1wb3J0YW50O1xuICB9XG4gIC8qIEdyaWQgaXRlbXMgZGVmYXVsdCB0byBtaW4td2lkdGg6YXV0byBhbmQgcmVmdXNlIHRvIHNocmluayBiZWxvdyB0aGVpclxuICAgKiBjb250ZW50J3MgaW50cmluc2ljIHdpZHRoLCBzbyBhIHdpZGUgY2hpbGQgKGEgZGlzcGxheSBoZWFkaW5nLCBhXG4gICAqIGxhYmVsK2JvZHkgcm93KSBmb3JjZXMgdGhlIGNvbGxhcHNlZCAxZnIgdHJhY2sgcGFzdCB0aGUgdmlld3BvcnQgXHUyMDE0IHRoZVxuICAgKiAxMjBweCBob3Jpem9udGFsIHBhZ2Ugc2Nyb2xsIG9uIC9ndWlkZS4gTGV0IGNvbGxhcHNlZC1ncmlkIGNoaWxkcmVuIHNocmlua1xuICAgKiBzbyB0aGVpciB0ZXh0IHdyYXBzIGluc3RlYWQgb2Ygb3ZlcmZsb3dpbmcgKHRza18xMTA1NDZlOSkuICovXG4gIC5jb250YWluZXItd2lkZSBbc3R5bGUqPVwiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXCJdID4gKixcbiAgLmNvbnRhaW5lciBbc3R5bGUqPVwiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXCJdID4gKiB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG59XG5cbi8qIE5hcnJvd2VyIHBob25lczoga2VlcCB0aGUgYnJhbmQgd29yZG1hcmsgYnV0IHNocmluayBpdCBzbyB0aGVcbiAqIC50ZWNoIHN1ZmZpeCBkb2Vzbid0IHB1c2ggdGhlIGF1dGggYnV0dG9ucyBvZmYtc2NyZWVuLiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gIC5uYXYgeyBwYWRkaW5nOiAwIDEycHg7IH1cbiAgLm5hdi1hdXRoIHsgZ2FwOiA4cHggIWltcG9ydGFudDsgfVxuICAubmF2LWF1dGggLmJ0bi1waWxsIHsgcGFkZGluZzogOHB4IDE0cHggIWltcG9ydGFudDsgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7IH1cbiAgLyogMjAyNi0wNy0xOCBtb2JpbGUgYXVkaXQ6IGV2ZW4gc2hydW5rLCB0aGUgZnVsbCB3b3JkbWFyayArIHRvZ2dsZSArXG4gICAqIGF1dGggcm93IGV4Y2VlZGVkIDM2MHB4IChlc3AuIHNpZ25lZC1pbiBcIkRhc2hib2FyZFwiKS4gRHJvcCB0aGVcbiAgICogXCIudGVjaFwiIHN1ZmZpeCBhbmQgdGhlIHRoZW1lIHRvZ2dsZTsgYnVtcCB0YXAgdGFyZ2V0cyB0byA0NHB4LiAqL1xuICAubmF2LXRsZCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAubmF2LXRoZW1lIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIC5uYXYtYXV0aCAubmF2LWxpbmssXG4gIC5uYXYtYXV0aCAuYnRuLXBpbGwgeyBtaW4taGVpZ2h0OiA0NHB4OyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAvKiBIZXJvIHByaW1hcnkgQ1RBIHdhcyB+MzM3cHggd2lkZSBcdTIwMTQgbGV0IGl0IHNocmluayBpbnNpZGUgMzYwcHguICovXG4gIC5oZXJvLWN0YS1yb3cgLmJ0bi1waWxsLWxhcmdlIHsgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDE1cHggMjJweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgLyogT25lIGxvbmcgbGluZSBvZiByZWFzc3VyYW5jZSByYW4gZWRnZS10by1lZGdlIG92ZXIgdGhlIHNreWxpbmU7IGdpdmVcbiAgICogaXQgYSBjb2x1bW4gc28gaXQgd3JhcHMgaW5zdGVhZCBvZiB0b3VjaGluZyBib3RoIGJlemVscy4gKi9cbiAgLmhlcm8tcmVhc3N1cmUgeyBtYXgtd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7IH1cbn1cblxuLyogXHUyNTAwXHUyNTAwXHUyNTAwIERvY3Mgc2l0ZSAoc3JjL3BhZ2VzL0RvY3MudHN4KSBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcbiAqIEZlcm4tc3R5bGUgdGhyZWUtcGFuZSBkb2NzIHNoZWxsIGluIHRoZSBicmFuZCBzeXN0ZW06IHN0aWNreSB0YWIgcm93XG4gKiB1bmRlciB0aGUgZml4ZWQgbmF2LCBncm91cGVkIHNpZGViYXIsIGFydGljbGUgY29sdW1uLCByaWdodC1yYWlsIFRPQy5cbiAqIENsYXNzZXMgKG5vdCBpbmxpbmUgc3R5bGVzKSBiZWNhdXNlIHRoZSBzaGVsbCBuZWVkcyBob3Zlci9hY3RpdmVcbiAqIHN0YXRlcywgc3RpY2t5IHBvc2l0aW9uaW5nLCBhbmQgbWVkaWEgcXVlcmllcy4gKi9cblxuLmRvY3MtdGFicy1yb3cge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDkwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi10b3A6IDY4cHg7IC8qIGNsZWFycyB0aGUgZml4ZWQgLm5hdiAqL1xuICBwYWRkaW5nOiAwIDMycHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTMsIDE0LCAyMCwgMC44NSk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxOHB4KSBzYXR1cmF0ZSgxNDAlKTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMThweCkgc2F0dXJhdGUoMTQwJSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xufVxuW2RhdGEtdGhlbWU9XCJsaWdodFwiXSAuZG9jcy10YWJzLXJvdyB7IGJhY2tncm91bmQ6IHJnYmEoMjUwLCAyNTAsIDI0OCwgMC44NSk7IH1cblxuLmRvY3MtdGFicyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyB9XG4uZG9jcy10YWIge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICBwYWRkaW5nOiAxNHB4IDE0cHggMTJweDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG59XG4uZG9jcy10YWI6aG92ZXIgeyBjb2xvcjogdmFyKC0tdGV4dCk7IH1cbi5kb2NzLXRhYi5hY3RpdmUgeyBjb2xvcjogdmFyKC0tdGV4dCk7IGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXRlYWwpOyB9XG5cbi5kb2NzLW1lbnUtYnRuIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6IHZhcigtLXRleHQpO1xuICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgcGFkZGluZzogNnB4IDE0cHg7XG4gIC8qIENvbWZvcnRhYmxlIHRhcCB0YXJnZXQgKHRza185Njk4MGZlOSk6IHdhcyB+MzFweCB0YWxsLiBOZXZlciBzaHJpbmsgYmVsb3dcbiAgICAgdGhlIHRhYiBzdHJpcCBpbiB0aGUgZmxleCByb3cgc28gaXRzIFwiTWVudVwiL1wiQ2xvc2VcIiBsYWJlbCBjYW4ndCB0cnVuY2F0ZS4gKi9cbiAgbWluLWhlaWdodDogNDRweDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmRvY3Mtc2hlbGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjY0cHggbWlubWF4KDAsIDFmcikgMjIwcHg7XG4gIGdhcDogNDhweDtcbiAgbWF4LXdpZHRoOiAxMzYwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAwIDMycHggODBweDtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4vKiBTaWRlYmFyICovXG4uZG9jcy1zaWRlYmFyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAxMTZweDsgLyogbmF2IDY4ICsgdGFiIHJvdyB+NDggKi9cbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDEzMnB4KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogMjRweCAxMnB4IDI0cHggMDtcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xufVxuLmRvY3Mtc2lkZWJhci1uYXYgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgfVxuLmRvY3Mtc2VjdGlvbiB7IG1hcmdpbi1ib3R0b206IDZweDsgfVxuLmRvY3Mtc2VjdGlvbi1oZWFkIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4xM2VtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tdGV4dC1kaW0pO1xuICBwYWRkaW5nOiAxMHB4IDhweCA2cHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7XG59XG4uZG9jcy1zZWN0aW9uLWhlYWQ6aG92ZXIgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cbi5kb2NzLWNoZXZyb24ge1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbn1cbi5kb2NzLWNoZXZyb24ub3BlbmMgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbi5kb2NzLXNlY3Rpb24tbGlzdCB7IGxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgfVxuLmRvY3MtbmF2LWxpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxMy41cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjEycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMTJzIGVhc2U7XG59XG4uZG9jcy1uYXYtbGluazpob3ZlciB7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfVxuLmRvY3MtbmF2LWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6IHZhcigtLXRlYWwpO1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLXRlYWwpO1xuICBwYWRkaW5nLWxlZnQ6IDlweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tdGVhbC1nbG93LXNvZnQpO1xufVxuLmRvY3Mtc2lkZWJhci1mb290IHtcbiAgbWFyZ2luLXRvcDogMjhweDtcbiAgcGFkZGluZzogMTRweCA4cHggMDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6IHZhcigtLXRleHQtZGltKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pO1xuICBsaW5lLWhlaWdodDogMS44O1xufVxuLmRvY3Mtc2lkZWJhci1mb290IGEgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cbi5kb2NzLXNpZGViYXItZm9vdCBhOmhvdmVyIHsgY29sb3I6IHZhcigtLXRlYWwpOyB9XG5cbi8qIFNlYXJjaCAqL1xuLmRvY3Mtc2VhcmNoIHsgcG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOiAxNHB4OyB9XG4uZG9jcy1zZWFyY2gtaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLXNhbnMpO1xuICBmb250LXNpemU6IDEzLjVweDtcbiAgY29sb3I6IHZhcigtLXRleHQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA5cHggNDBweCA5cHggMTJweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcbn1cbi5kb2NzLXNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIgeyBjb2xvcjogdmFyKC0tdGV4dC1kaW0pOyB9XG4uZG9jcy1zZWFyY2gtaW5wdXQ6Zm9jdXMgeyBib3JkZXItY29sb3I6IHZhcigtLXRlYWwpOyBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tdGVhbC1nbG93LXNvZnQpOyB9XG4uZG9jcy1zZWFyY2gta2JkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogOHB4O1xuICB0b3A6IDhweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWRpbSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogMnB4IDVweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uZG9jcy1zZWFyY2gtcmVzdWx0cyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICBsZWZ0OiAwO1xuICByaWdodDogLTQwcHg7XG4gIHotaW5kZXg6IDk1O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJveC1zaGFkb3c6IDAgMTZweCA0OHB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWF4LWhlaWdodDogNDIwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG4uZG9jcy1zZWFyY2gtZW1wdHkgeyBwYWRkaW5nOiAxNHB4OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS10ZXh0LWRpbSk7IH1cbi5kb2NzLXNlYXJjaC1oaXQge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMTBweCAxNHB4O1xufVxuLmRvY3Mtc2VhcmNoLWhpdDpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfVxuLmRvY3Mtc2VhcmNoLWhpdC5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZWFsLWdsb3ctc29mdCk7IH1cbi5kb2NzLXNlYXJjaC1oaXQtdGl0bGUgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMy41cHg7IGNvbG9yOiB2YXIoLS10ZXh0KTsgZm9udC1mYW1pbHk6IHZhcigtLXNhbnMpOyB9XG4uZG9jcy1zZWFyY2gtaGl0LWFuY2hvciB7IGNvbG9yOiB2YXIoLS10ZWFsKTsgfVxuLmRvY3Mtc2VhcmNoLWhpdC1tZXRhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWRpbSk7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbi5kb2NzLXNlYXJjaC1oaXQtc25pcHBldCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgbWFyZ2luLXRvcDogNHB4O1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4vKiBBcnRpY2xlICovXG4uZG9jcy1tYWluIHsgbWluLXdpZHRoOiAwOyBwYWRkaW5nLXRvcDogNDBweDsgfVxuLmRvY3MtYXJ0aWNsZSB7IG1heC13aWR0aDogNzYwcHg7IH1cbi5kb2NzLWV5ZWJyb3cge1xuICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLXRlYWwpO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLmRvY3MtdGl0bGUge1xuICBmb250LWZhbWlseTogdmFyKC0tc2VyaWYpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IGNsYW1wKDM0cHgsIDQuNXZ3LCA0NHB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIG1hcmdpbjogMCAwIDI4cHg7XG59XG4vKiBIZWFkaW5nIGFuY2hvciBvZmZzZXQ6IHRoZSBNYXJrZG93biBjb21wb25lbnQgYmFrZXMgc2Nyb2xsLW1hcmdpbi10b3BcbiAqIDg4cHggaW5saW5lICh0dW5lZCBmb3IgcGFnZXMgd2l0aG91dCB0aGUgc3RpY2t5IHRhYiByb3cpIFx1MjAxNCB0aGUgZG9jc1xuICogc2hlbGwgYWRkcyB+NDhweCBvZiBzdGlja3kgdGFicywgc28gb3ZlcnJpZGUgaXQgaGVyZS4gKi9cbi5kb2NzLWFydGljbGUgaDIsIC5kb2NzLWFydGljbGUgaDMgeyBzY3JvbGwtbWFyZ2luLXRvcDogMTQwcHggIWltcG9ydGFudDsgfVxuXG4vKiBQcmV2IC8gbmV4dCBwYWdpbmF0aW9uICovXG4uZG9jcy1wcmV2bmV4dCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgZ2FwOiAxNnB4O1xuICBtYXJnaW4tdG9wOiA2NHB4O1xuICBwYWRkaW5nLXRvcDogMjhweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG4uZG9jcy1wbi1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQgMC4xNXMgZWFzZTtcbn1cbi5kb2NzLXBuLWNhcmQ6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXRlYWwpOyBiYWNrZ3JvdW5kOiB2YXIoLS10ZWFsLWdsb3ctc29mdCk7IH1cbi5kb2NzLXBuLWNhcmQubmV4dCB7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG4uZG9jcy1wbi1sYWJlbCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4xMmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tdGV4dC1kaW0pO1xufVxuLmRvY3MtcG4tdGl0bGUgeyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfVxuXG4vKiBSaWdodC1yYWlsIFRPQyAqL1xuLmRvY3MtdG9jIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAxMzJweDtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDE1MnB4KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogMjRweCAwO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xufVxuLmRvY3MtdG9jLWhlYWQge1xuICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7XG4gIGZvbnQtc2l6ZTogMTAuNXB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4xNGVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tdGV4dC1kaW0pO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLmRvY3MtdG9jIHVsIHsgbGlzdC1zdHlsZTogbm9uZTsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyB9XG4uZG9jcy10b2MgbGkuc3ViIHsgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XG4uZG9jcy10b2MtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIHBhZGRpbmc6IDNweCAwIDNweCAxMHB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjEycyBlYXNlO1xufVxuLmRvY3MtdG9jLWxpbms6aG92ZXIgeyBjb2xvcjogdmFyKC0tdGV4dCk7IH1cbi5kb2NzLXRvYy1saW5rLmFjdGl2ZSB7IGNvbG9yOiB2YXIoLS10ZWFsKTsgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXRlYWwpOyB9XG5cbi8qIFJlc3BvbnNpdmUgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjgwcHgpIHtcbiAgLmRvY3Mtc2hlbGwgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI1MHB4IG1pbm1heCgwLCAxZnIpOyB9XG4gIC5kb2NzLXRvYyB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmRvY3Mtc2hlbGwgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpOyB9XG4gIC5kb2NzLW1lbnUtYnRuIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLyogVGhlIHRhYiBzdHJpcCBtdXN0IHNocmluayBhbmQgc2Nyb2xsIGhvcml6b250YWxseSBpbnN0ZWFkIG9mIHB1c2hpbmcgdGhlXG4gICAgIG1lbnUgYnV0dG9uIHBhc3QgdGhlIHZpZXdwb3J0IGVkZ2UgKHRza185Njk4MGZlOSk6IGF0IH4zODZweCB0aGUgdGhyZWUgdGFic1xuICAgICArIGJ1dHRvbiBvdmVyZmxvd2VkIHRoZSByb3cgYnkgfjE5cHggKHdvYmJsZSArIHRydW5jYXRlZCBsYWJlbCkuICovXG4gIC5kb2NzLXRhYnMgeyBtaW4td2lkdGg6IDA7IG92ZXJmbG93LXg6IGF1dG87IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyB9XG4gIC5kb2NzLXRhYnM6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfVxuICAuZG9jcy10YWIgeyBmbGV4LXNocmluazogMDsgfVxuICAuZG9jcy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDExNnB4O1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDg5O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBwYWRkaW5nOiAyMHB4IDI0cHg7XG4gICAgbWF4LWhlaWdodDogbm9uZTtcbiAgfVxuICAuZG9jcy1zaWRlYmFyLm9wZW4geyBkaXNwbGF5OiBibG9jazsgfVxuICAuZG9jcy1zZWFyY2gtcmVzdWx0cyB7IHJpZ2h0OiAwOyB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNzIwcHgpIHtcbiAgLmRvY3MtdGFicy1yb3cgeyBwYWRkaW5nOiAwIDE2cHg7IH1cbiAgLmRvY3Mtc2hlbGwgeyBwYWRkaW5nOiAwIDIwcHggNjRweDsgfVxufVxuXG4vKiA9PT09PSBsaXZlIG1vYmlsZSBmaXhlcyAodHNrX2QzNTYxYWVhLCAyMDI2LTA3LTAyKSA9PT09PSAqL1xuXG4vKiBBIHBpbGwgYnV0dG9uIHNxdWVlemVkIGluIGEgZmxleCByb3cgbXVzdCBuZXZlciB3cmFwIGl0cyBsYWJlbFxuICogbWlkLXdvcmQgKFwiQnVpbGQgZm9yIC8gZnJlZVwiKSBcdTIwMTQgY29uZmlybWVkIG9uIGEgMzkwcHggdmlld3BvcnQuICovXG4uYnRuLXBpbGwgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3MjBweCkge1xuICAvKiAhaW1wb3J0YW50IGlzIHJlcXVpcmVkOiBuZWFybHkgZXZlcnkgbGFuZGluZyBzZWN0aW9uIHNldHMgaXRzIG93blxuICAgKiBpbmxpbmUgcGFkZGluZ1RvcC9wYWRkaW5nQm90dG9tIChIZXJvIDE4MC8yMDAsIEJvdHRvbUNUQSAxMjAvNjAsXG4gICAqIFNlY3VyaXR5UmVsaWFiaWxpdHkgOTYvOTYsIFx1MjAyNikgdG8gdHVuZSBkZXNrdG9wIHJoeXRobS4gSW5saW5lIHN0eWxlc1xuICAgKiBiZWF0IGEgcGxhaW4gY2xhc3MgcnVsZSwgc28gd2l0aG91dCAhaW1wb3J0YW50IHRoaXMgbW9iaWxlIHJlc2V0XG4gICAqIE5FVkVSIGZpcmVkIGFuZCBldmVyeSBzZWN0aW9uIGtlcHQgZGVza3RvcC1zaXplZCB2ZXJ0aWNhbCBwYWRkaW5nXG4gICAqIG9uIGEgcGhvbmUgXHUyMDE0IHRoZSBwYWdlIHJlbmRlcmVkIH4yNCwwMDBweCB0YWxsIGFuZCBmZWx0IHNwYXJzZS4gKi9cbiAgLnNlY3Rpb24geyBwYWRkaW5nOiA2NHB4IDIwcHggIWltcG9ydGFudDsgfVxuXG4gIC8qIFRoZSBoZXJvIG5lZWRzIGl0cyBvd24gcGFkZGluZywgbm90IHRoZSBnZW5lcmljIDY0cHg6IDY0IHRvcCBsZWF2ZXNcbiAgICogdGhlIGhlYWRsaW5lIHRvdWNoaW5nIHRoZSA2OHB4IGZpeGVkIG5hdiwgYW5kIDY0IGJvdHRvbSBkcm9wcyB0aGVcbiAgICogcmVhc3N1cmFuY2UgbGluZSBpbnRvIHRoZSBQaXhlbEZpZWxkIGRvdCBiYW5kIChhIGJvdHRvbS1hbmNob3JlZFxuICAgKiBjbGFtcCgzMDBweCw0MnZoLDQ0MHB4KSBjYW52YXMpLiAxMTIgY2xlYXJzIHRoZSBuYXY7IDI0MCBrZWVwcyB0ZXh0XG4gICAqIGFib3ZlIHRoZSBkb3RzIGF0IHRoZSBzYW1lIHZpc3VhbCByYXRpbyBhcyBkZXNrdG9wJ3MgMjAwcHguICovXG4gIC5oZXJvLXNlY3Rpb24geyBwYWRkaW5nOiAxMTJweCAyMHB4IDI0MHB4ICFpbXBvcnRhbnQ7IH1cbiAgLyogL3N0YXJ0J3MgaGVybyBoYXMgbm8gZG90IGJhbmQgdW5kZXIgaXQ6IGNsZWFyIHRoZSBuYXYsIHRoZW4gYSBzaG9ydFxuICAgKiB0YWlsIGludG8gdGhlIHN0ZXBzLiAqL1xuICAuc3RhcnQtaGVybyB7IHBhZGRpbmc6IDExMnB4IDIwcHggMzJweCAhaW1wb3J0YW50OyB9XG5cbiAgLyogQXQgMC43MiB0aGUgZnJvc3RlZCBuYXYgbGV0cyBzYXR1cmF0ZWQgY29udGVudCBzY3JvbGxlZCB1bmRlcm5lYXRoXG4gICAqICh0aGUgdGVhbCBCb3R0b21DVEEgcGlsbCkgdmlzaWJseSBibGVlZCB0aHJvdWdoIG9uIGEgc21hbGwgdmlld3BvcnRcbiAgICogd2hlcmUgdGhlIG5hdiBpcyBhIG11Y2ggbGFyZ2VyIGZyYWN0aW9uIG9mIHRoZSBzY3JlZW4uICovXG4gIC5uYXYuc2Nyb2xsZWQgeyBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYmcpIDk2JSwgdHJhbnNwYXJlbnQpOyB9XG5cbiAgLyogU2VjdXJpdHlSZWxpYWJpbGl0eSdzIGJlc3Bva2UgJzE4MHB4IDEuMmZyIDEuMmZyJyB0YWJsZSBncmlkIGlzbid0XG4gICAqIGluIHRoZSBrbm93bi1zcGxpdHMgYXR0cmlidXRlLXNlbGVjdG9yIGxpc3QsIHNvIGl0IG5ldmVyIGNvbGxhcHNlZDpcbiAgICogdGhyZWUgfjExMHB4IGNvbHVtbnMgb2YgNC04LWxpbmUgd29yZCBmcmFnbWVudHMuIE9uY2Ugc3RhY2tlZCB0aGVcbiAgICogY29sdW1uIGhlYWRlcnMgYXJlIHJlZHVuZGFudCAoZWFjaCBjZWxsIGNhcnJpZXMgaXRzIG93biAhL1x1MjcxMyBnbHlwaCkuICovXG4gIC5zci1jb2wtaGVhZGVyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIC5zci1yb3cge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogR2hvc3Qgc2libGluZyBvZiAuYnRuLXBpbGwgZm9yIHRoZSBoZXJvJ3MgXCJHZXQgc3RhcnRlZFwiIHNlY29uZGFyeSBDVEFcbiAqICgyMDI2LTA3LTAzIFx1MjAxNCBwcm9tcHQgaGlkZGVuIGJlaGluZCB0aGUgcHJpbWFyeSBjb3B5IHBpbGwpLiAqL1xuLmJ0bi1waWxsLWdob3N0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxNHB4IDI4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlO1xufVxuLmJ0bi1waWxsLWdob3N0OmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZWFsKTsgY29sb3I6IHZhcigtLXRlYWwpOyB9XG5cbi8qIFx1MjUwMFx1MjUwMCBzdjI6IHRoZSAvc2VjdXJpdHkgc2hpZWxkIHN0YWdlICsgZGlhZ3JhbXMgKHRza181ZGI3NTdmNSkgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXG4gICBBdHRhY2tzIChtb25vIHBpbGxzKSBzbGlkZSB0b3dhcmQgdGhlIGFwcCBvbiA2IGxhbmVzOyBpbiBzYWZlIG1vZGVcbiAgIHRoZXkgYm91bmNlIG9mZiB0aGUgc2hpZWxkIGJhciAodGVhbCB2ZXJkaWN0IHBvcHMpLCBpbiB0eXBpY2FsIG1vZGVcbiAgIHRoZSBzaGllbGQgZ2hvc3RzIGFuZCB0aGV5IGxhbmQgKGFwcCBmbGFzaGVzIHJlZCkuIDE4cyBsb29wLCBvbmVcbiAgIGxhbmUgZXZlcnkgM3M7IG5lZ2F0aXZlIGRlbGF5cyBzbyB0aGUgc3RhZ2UgaXMgbWlkLWZsaWdodCBvbiBsb2FkLlxuICAgVG9nZ2xpbmcgZGF0YS1tb2RlIHN3YXBzIGFuaW1hdGlvbiBuYW1lcywgd2hpY2ggcmVzdGFydHMgY2xlYW5seS4gKi9cbi5zdjItc3RhZ2UgeyAtLXN0b3A6IDYzJTsgLS1oaXQ6IDc5JTsgfVxuLnN2Mi1sYW5lIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAzMHB4OyB6LWluZGV4OiAyOyB9XG4uc3YyLWxhbmU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTRweDsgbGVmdDogMyU7IHdpZHRoOiA1OSU7XG4gIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tYm9yZGVyKTsgb3BhY2l0eTogMC40O1xufVxuLnN2Mi1hdHRhY2sge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogLTIlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7IGZvbnQtc2l6ZTogMTJweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY29sb3I6IHZhcigtLXRleHQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdhcm5pbmcpOyBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgcGFkZGluZzogNXB4IDExcHg7IG9wYWNpdHk6IDA7XG59XG4uc3YyLXZlcmRpY3Qge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMXB4OyBsZWZ0OiBjYWxjKHZhcigtLXN0b3ApICsgMy41JSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsgZm9udC1zaXplOiAxMS41cHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiA5OTlweDsgcGFkZGluZzogNHB4IDEwcHg7XG4gIG9wYWNpdHk6IDA7IHotaW5kZXg6IDM7XG59XG4uc3YyLXZlcmRpY3Qtc2FmZSB7IGNvbG9yOiB2YXIoLS10ZWFsKTsgfVxuLnN2Mi12ZXJkaWN0LXR5cGljYWwgeyBjb2xvcjogdmFyKC0tZGFuZ2VyKTsgfVxuLnN2Mi1zdGFnZVtkYXRhLW1vZGU9J3NhZmUnXSAuc3YyLXZlcmRpY3QtdHlwaWNhbCB7IGRpc3BsYXk6IG5vbmU7IH1cbi5zdjItc3RhZ2VbZGF0YS1tb2RlPSd0eXBpY2FsJ10gLnN2Mi12ZXJkaWN0LXNhZmUgeyBkaXNwbGF5OiBub25lOyB9XG5cbi5zdjItc3RhZ2VbZGF0YS1tb2RlPSdzYWZlJ10gLnN2Mi1hdHRhY2sge1xuICBhbmltYXRpb246IHN2Mi1ydW4gMThzIGxpbmVhciBpbmZpbml0ZTtcbiAgYW5pbWF0aW9uLWRlbGF5OiBjYWxjKHZhcigtLWkpICogM3MgLSAxOHMpO1xufVxuLnN2Mi1zdGFnZVtkYXRhLW1vZGU9J3R5cGljYWwnXSAuc3YyLWF0dGFjayB7XG4gIGFuaW1hdGlvbjogc3YyLXJ1bi10aHJvdWdoIDE4cyBsaW5lYXIgaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1pKSAqIDNzIC0gMThzKTtcbn1cbi5zdjItc3RhZ2VbZGF0YS1tb2RlPSdzYWZlJ10gLnN2Mi12ZXJkaWN0LXNhZmUsXG4uc3YyLXN0YWdlW2RhdGEtbW9kZT0ndHlwaWNhbCddIC5zdjItdmVyZGljdC10eXBpY2FsIHtcbiAgYW5pbWF0aW9uOiBzdjItcG9wIDE4cyBsaW5lYXIgaW5maW5pdGU7XG4gIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1pKSAqIDNzIC0gMThzKTtcbn1cblxuQGtleWZyYW1lcyBzdjItcnVuIHtcbiAgMCUgeyBsZWZ0OiAtMiU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDA7IH1cbiAgMS41JSB7IG9wYWNpdHk6IDE7IH1cbiAgMTIlIHsgbGVmdDogdmFyKC0tc3RvcCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDE7IH1cbiAgMTUlIHsgbGVmdDogY2FsYyh2YXIoLS1zdG9wKSAtIDQlKTsgb3BhY2l0eTogMTsgfVxuICAxOSUgeyBsZWZ0OiBjYWxjKHZhcigtLXN0b3ApIC0gNiUpOyBvcGFjaXR5OiAwOyB9XG4gIDEwMCUgeyBsZWZ0OiAtMiU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDA7IH1cbn1cbkBrZXlmcmFtZXMgc3YyLXJ1bi10aHJvdWdoIHtcbiAgMCUgeyBsZWZ0OiAtMiU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDA7IH1cbiAgMS41JSB7IG9wYWNpdHk6IDE7IH1cbiAgMTIlIHsgbGVmdDogdmFyKC0tc3RvcCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDE7IH1cbiAgMTYlIHsgbGVmdDogdmFyKC0taGl0KTsgb3BhY2l0eTogMTsgfVxuICAxNy41JSB7IGxlZnQ6IHZhcigtLWhpdCk7IG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7IGxlZnQ6IC0yJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgb3BhY2l0eTogMDsgfVxufVxuQGtleWZyYW1lcyBzdjItcG9wIHtcbiAgMCUsIDEyLjUlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7IH1cbiAgMTUuNSUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgNTglIHsgb3BhY2l0eTogMTsgfVxuICA2NiUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbn1cblxuLnN2Mi1zaGllbGQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDY1LjUlOyB0b3A6IDclOyBib3R0b206IDclOyB3aWR0aDogNHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10ZWFsKSAxOCUsIHZhcigtLXRlYWwpIDgyJSwgdHJhbnNwYXJlbnQpO1xuICBib3gtc2hhZG93OiAwIDAgMThweCB2YXIoLS10ZWFsLWdsb3ctc29mdCwgcmdiYSg0NSwgMjEyLCAxOTEsIDAuMzUpKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7XG59XG4uc3YyLXN0YWdlW2RhdGEtbW9kZT0nc2FmZSddIC5zdjItc2hpZWxkIHtcbiAgYW5pbWF0aW9uOiBzdjItc2hpZWxkLWhpdCAzcyBsaW5lYXIgaW5maW5pdGU7XG59XG4uc3YyLXN0YWdlW2RhdGEtbW9kZT0ndHlwaWNhbCddIC5zdjItc2hpZWxkIHsgb3BhY2l0eTogMC4xMjsgYW5pbWF0aW9uOiBub25lOyBib3gtc2hhZG93OiBub25lOyB9XG5Aa2V5ZnJhbWVzIHN2Mi1zaGllbGQtaGl0IHtcbiAgMCUsIDY4JSB7IGZpbHRlcjogYnJpZ2h0bmVzcygxKTsgfVxuICA3MiUgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS45KTsgfVxuICAxMDAlIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEpOyB9XG59XG5cbi5zdjItYXBwIHtcbiAgcG9zaXRpb246IGFic29sdXRlOyByaWdodDogNC41JTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAzcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7XG4gIGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IDE4cHggMjJweDtcbn1cbi5zdjItc3RhZ2VbZGF0YS1tb2RlPSd0eXBpY2FsJ10gLnN2Mi1hcHAge1xuICBhbmltYXRpb246IHN2Mi1hcHAtaGl0IDNzIGxpbmVhciBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgc3YyLWFwcC1oaXQge1xuICAwJSwgOTIlIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXItc3Ryb25nKTsgYm94LXNoYWRvdzogbm9uZTsgfVxuICA5NiUgeyBib3JkZXItY29sb3I6IHZhcigtLWRhbmdlcik7IGJveC1zaGFkb3c6IDAgMCAyNnB4IHJnYmEoMjM5LCA2OCwgNjgsIDAuMyk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKDNweCk7IH1cbiAgMTAwJSB7IGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLXN0cm9uZyk7IGJveC1zaGFkb3c6IG5vbmU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfVxufVxuXG4vKiBkaWFncmFtIGJlYXRzICovXG4uc3YyLXB1bHNlIHsgYW5pbWF0aW9uOiBzdjItcHVsc2UgMi40cyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfVxuQGtleWZyYW1lcyBzdjItcHVsc2UgeyAwJSwgMTAwJSB7IG9wYWNpdHk6IDE7IH0gNTAlIHsgb3BhY2l0eTogMC4zNTsgfSB9XG4uc3YyLXN3ZWVwIHtcbiAgc3Ryb2tlLWRhc2hhcnJheTogMjQ0O1xuICBhbmltYXRpb246IHN2Mi1zd2VlcCAzLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgc3YyLXN3ZWVwIHsgZnJvbSB7IHN0cm9rZS1kYXNob2Zmc2V0OiAyNDQ7IH0gdG8geyBzdHJva2UtZGFzaG9mZnNldDogMDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAuc3YyLWF0dGFjayB7IGZvbnQtc2l6ZTogMTAuNXB4OyBwYWRkaW5nOiA0cHggOXB4OyB9XG4gIC5zdjItdmVyZGljdCB7IGZvbnQtc2l6ZTogMTBweDsgfVxuICAuc3YyLWFwcCB7IHBhZGRpbmc6IDEycHggMTRweDsgcmlnaHQ6IDMlOyB9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5zdjItYXR0YWNrLCAuc3YyLXZlcmRpY3QsIC5zdjItc2hpZWxkLCAuc3YyLWFwcCwgLnN2Mi1wdWxzZSwgLnN2Mi1zd2VlcCB7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnN2Mi1hdHRhY2sgeyBsZWZ0OiB2YXIoLS1zdG9wKTsgb3BhY2l0eTogMTsgfVxuICAuc3YyLXN0YWdlW2RhdGEtbW9kZT0nc2FmZSddIC5zdjItdmVyZGljdC1zYWZlLFxuICAuc3YyLXN0YWdlW2RhdGEtbW9kZT0ndHlwaWNhbCddIC5zdjItdmVyZGljdC10eXBpY2FsIHsgb3BhY2l0eTogMTsgfVxuICAuc3YyLXN0YWdlW2RhdGEtbW9kZT0ndHlwaWNhbCddIC5zdjItYXR0YWNrIHsgbGVmdDogdmFyKC0taGl0KTsgfVxufVxuXG4vKiBcdTI1MDBcdTI1MDAgWHJheVNreWxpbmUgXHUyMDE0IGhlcm8gY2l0eSBiYW5kIHdpdGggdGhlIHgtcmF5IGxlbnMgKDIwMjYtMDctMjQpIFx1MjUwMFx1MjUwMFxuICAgVHdvIHJlZ2lzdGVyZWQgcGxhdGVzOyB0aGUgbGVucyBtYXNrcyB0aGUgdGVhbCB3aXJlZnJhbWUgcGxhdGUgd2l0aCBhXG4gICBzb2Z0IHJhZGlhbCBncmFkaWVudCB3aG9zZSBjZW50cmUgKC0teC8tLXkpLCByYWRpdXMgKC0tcikgYW5kIG9wYWNpdHlcbiAgICgtLW8pIGFyZSBkcml2ZW4gZnJvbSByQUYgd2l0aCBleHBvbmVudGlhbCBzbW9vdGhpbmcuIE5vdGhpbmcgaGVyZVxuICAgdXNlcyBhIENTUyB0cmFuc2l0aW9uOiBldmVyeSBlYXNpbmcgbGl2ZXMgaW4gdGhlIHNtb290aGluZyBsYXcsIHNvXG4gICB0aGUgYmxvb20gc3RheXMgc2xvdyBhbmQgY29udGludW91cyBldmVuIHdoaWxlIHRoZSBwb2ludGVyIG1vdmVzLiAqL1xuLyogQ2FwcGVkIHdpZHRoLCBjZW50cmVkOiBvbiBhIHdpZGUgbW9uaXRvciBvYmplY3QtZml0OmNvdmVyIHdvdWxkIHNjYWxlXG4gICB0aGUgcGxhdGUgdXAgYW5kIGNyb3AgdGhlIGNpdHkgYXdheSwgc28gdGhlIGJhbmQgc3RvcHMgZ3Jvd2luZyBwYXN0XG4gICB0aGUgY2FwIGFuZCB0aGUgbGFuZHNjYXBlIHN0YXlzIHdob2xlLiBUaGUgaG9yaXpvbnRhbCBmYWRlIG9uXG4gICAueHJheS1pbm5lciB0aGVuIGRpc3NvbHZlcyB0aGUgdHdvIHZlcnRpY2FsIHBob3RvIGVkZ2VzIHRoZSBjYXBcbiAgIGNyZWF0ZXMgKGZvdW5kZXI6IFwiZmFkZSBvdXQgdGhlIGVkZ2VzIGlmIHRoZSBzY3JlZW4gaXMgdG9vIGJpZ1wiKS4gKi9cbi8qIE5vdyB0aGF0IHRoZSBiYW5kIHNob3dzIHRoZSB3aG9sZSBza3lsaW5lLCB0aGUgaGVybyBjb3B5IHNpdHMgb3ZlclxuICAgYnVpbGRpbmdzIHJhdGhlciB0aGFuIGVtcHR5IHNreS4gVGhpcyBpcyB0aGUgY29weSdzIGNhbnZhczogYSBzb2Z0XG4gICBwb29sIG9mIHBhZ2UtYmFja2dyb3VuZCBiZWhpbmQgdGhlIHRleHQgYmxvY2sgb25seSwgc28gdGhlIGhlYWRsaW5lXG4gICBhbmQgdGhlIHNtYWxsIHByaW50IHN0YXkgcmVhZGFibGUgd2hpbGUgdGhlIHNreWxpbmUgc3RpbGwgcmVhZHNcbiAgIHRocm91Z2ggYXJvdW5kIHRoZW0uIFNpdHMgYWJvdmUgdGhlIGJhbmQsIGJlbG93IC5jb250YWluZXItd2lkZS4gKi9cbi5oZXJvLXNjcmltIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB3aWR0aDogbWluKDEyNDBweCwgMTAwJSk7XG4gIGhlaWdodDogY2xhbXAoNDAwcHgsIDQ0dncsIDY2MHB4KTtcbiAgei1pbmRleDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIDcyJSA2MiUgYXQgNTAlIDM4JSxcbiAgICByZ2JhKDEzLCAxNCwgMjAsIDAuODYpIDAlLFxuICAgIHJnYmEoMTMsIDE0LCAyMCwgMC43NCkgMzAlLFxuICAgIHJnYmEoMTMsIDE0LCAyMCwgMC40NikgNTUlLFxuICAgIHJnYmEoMTMsIDE0LCAyMCwgMC4xNikgNzYlLFxuICAgIHRyYW5zcGFyZW50IDEwMCUpO1xufVxuXG5bZGF0YS10aGVtZT0nbGlnaHQnXSAuaGVyby1zY3JpbSB7XG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIDcyJSA2MiUgYXQgNTAlIDM4JSxcbiAgICByZ2JhKDI1MCwgMjUwLCAyNDgsIDAuODIpIDAlLFxuICAgIHJnYmEoMjUwLCAyNTAsIDI0OCwgMC42NikgMzAlLFxuICAgIHJnYmEoMjUwLCAyNTAsIDI0OCwgMC4zOCkgNTUlLFxuICAgIHJnYmEoMjUwLCAyNTAsIDI0OCwgMC4xMikgNzYlLFxuICAgIHRyYW5zcGFyZW50IDEwMCUpO1xufVxuXG4vKiBUaGUgYmFuZCdzIGFzcGVjdCByYXRpbyBJUyB0aGUgY3JvcC4gTWVhc3VyZWQgb24gdGhlIHBsYXRlLCBhbGwgdGhlXG4gICBjb250ZW50IHNpdHMgaW4gcm93cyAxMFx1MjAxMzg1JTogYWJvdmUgaXQgaXMgZmxhdCBuaWdodCBza3ksIGJlbG93IGl0IGlzXG4gICBmbGF0IHdhdGVyLiAxNDQ4XHUwMEQ3ODkxIGtlZXBzIHJvd3MgfjhcdTIwMTM5MCUgXHUyMDE0IHRoZSBlbnRpcmUgc2t5bGluZSwgYm90aFxuICAgYnJpZGdlIHRvd2VycywgdGhlIEZlcnJ5IEJ1aWxkaW5nIGFuZCBpdHMgcmVmbGVjdGlvbnMgXHUyMDE0IGFuZCB0aHJvd3NcbiAgIGF3YXkgb25seSB0aGUgZGVhZCBzcGFjZS4gU28gdGhlIHBpY3R1cmUgcmVhZHMgd2hvbGUgd2hpbGUgdGhlIGJhbmRcbiAgIHN0YXlzIGZ1bGwtYmxlZWQsIGluc3RlYWQgb2Ygc2hyaW5raW5nIHRvIGEgYm94ZWQgNDozIHBob3RvLlxuICAgSGVpZ2h0IHRoZXJlZm9yZSBmb2xsb3dzIHdpZHRoOyBhIHNob3J0IHZpZXdwb3J0IGp1c3QgcHV0cyB0aGUgKGFscmVhZHlcbiAgIGZhZGVkKSBib3R0b20gb2YgdGhlIHdhdGVyIGJlbG93IHRoZSBmb2xkLiAqL1xuLnhyYXktYmFuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdpZHRoOiBtaW4oMTAwJSwgMTY4MHB4KTtcbiAgYXNwZWN0LXJhdGlvOiAxNDQ4IC8gODkxO1xuICBib3R0b206IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAwO1xuICAvKiBGZWF0aGVyIG9ubHkgdGhlIGV4dHJlbWVzIFx1MjAxNCBhbiBhZ2dyZXNzaXZlIHRvcCBmYWRlIHdhcyBjbGlwcGluZyB0aGVcbiAgICAgdG93ZXIgdG9wcyBvZmYgdGhlIHNreWxpbmUuICovXG4gIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgdHJhbnNwYXJlbnQgMCUsIGJsYWNrIDklLCBibGFjayA4NiUsIHRyYW5zcGFyZW50IDEwMCUpO1xuICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCB0cmFuc3BhcmVudCAwJSwgYmxhY2sgOSUsIGJsYWNrIDg2JSwgdHJhbnNwYXJlbnQgMTAwJSk7XG59XG5cbi8qIFNlcGFyYXRlIGVsZW1lbnQgcHVyZWx5IHNvIHRoZSBob3Jpem9udGFsIGZhZGUgY29tcG9zaXRlcyB3aXRoIHRoZVxuICAgYmFuZCdzIHZlcnRpY2FsIG9uZSB3aXRob3V0IG5lZWRpbmcgbWFzay1jb21wb3NpdGUuIEJlbG93IHRoZSBjYXAgdGhlXG4gICBiYW5kIGlzIGZ1bGwtYmxlZWQgYW5kIGl0cyBlZGdlcyBhcmUgdGhlIHZpZXdwb3J0J3MsIHNvIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmVhdGhlciBcdTIwMTQgdGhlIGZhZGUgb25seSBleGlzdHMgdG8gaGlkZSB0aGUgdHdvIHZlcnRpY2FsXG4gICBlZGdlcyB0aGUgY2FwIGNyZWF0ZXMgb24gYW4gb3ZlcnNpemVkIHNjcmVlbi4gKi9cbi54cmF5LWlubmVyIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTY4MXB4KSB7XG4gIC54cmF5LWlubmVyIHtcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMCwgYmxhY2sgMTIwcHgsIGJsYWNrIGNhbGMoMTAwJSAtIDEyMHB4KSwgdHJhbnNwYXJlbnQgMTAwJSk7XG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAwLCBibGFjayAxMjBweCwgYmxhY2sgY2FsYygxMDAlIC0gMTIwcHgpLCB0cmFuc3BhcmVudCAxMDAlKTtcbiAgfVxufVxuXG4ueHJheS1wbGF0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBvYmplY3QtcG9zaXRpb246IGNlbnRlciA0NSU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbn1cblxuLyogTmlnaHQgcGxhdGUgb25seSBcdTIwMTQgbmVhci1ibGFjayBieSBkZXNpZ24sIHNvIGEgc21hbGwgbGlmdCBtYWtlcyB0aGVcbiAgIGxpbmUgd29yayByZWFkIG9uIGEgYnJpZ2h0IHNjcmVlbiB3aXRob3V0IHdhc2hpbmcgb3V0IHRoZSBuaWdodC4gKi9cbi54cmF5LXBsYXRlLS1uaWdodCB7IGZpbHRlcjogYnJpZ2h0bmVzcygxLjI4KSBjb250cmFzdCgxLjA0KTsgfVxuXG4vKiBMaWdodCBtb2RlIHN3YXBzIHRoZSBiYXNlIHBob3RvZ3JhcGggZm9yIGEgREFZIHJlbmRlciBvZiB0aGUgc2FtZVxuICAgdmlldywgb2ZmbGluZS1yZWdpc3RlcmVkIHRvIHRoZSBuaWdodCBwbGF0ZSdzIGdlb21ldHJ5IFx1MjAxNCBzbyB0aGVcbiAgIGNhbnZhcyByZXZlYWwgKHdoaWNoIGlzIHRoZW1lLWJsaW5kKSBzdGlsbCBwdW5jaGVzIHRocm91Z2ggaW5cbiAgIHJlZ2lzdGVyLiBCb3RoIGFyZSBwbGFpbiA8aW1nPnM7IHRoZSBoaWRkZW4gb25lIHN0aWxsIGxvYWRzLCB3aGljaFxuICAgaXMgd2hhdCBtYWtlcyB0aGUgdGhlbWUgdG9nZ2xlIGluc3RhbnQuICovXG4ueHJheS1wbGF0ZS0tZGF5IHsgZGlzcGxheTogbm9uZTsgfVxuW2RhdGEtdGhlbWU9J2xpZ2h0J10gLnhyYXktcGxhdGUtLW5pZ2h0IHsgZGlzcGxheTogbm9uZTsgfVxuW2RhdGEtdGhlbWU9J2xpZ2h0J10gLnhyYXktcGxhdGUtLWRheSB7IGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qIFRoZSByZXZlYWwgaXMgcGFpbnRlZCBpbnRvIGEgY2FudmFzIGJ5IFhyYXlTa3lsaW5lIChhIGJydXNoIHRoYXRcbiAgIHRyYWNrcyB0aGUgcG9pbnRlciBleGFjdGx5IGFuZCBsZWF2ZXMgYSBmYWRpbmcgc3Ryb2tlKSwgc28gdGhlcmUgaXMgbm9cbiAgIG1hc2sgZWxlbWVudCBoZXJlIGFueSBtb3JlIFx1MjAxNCB0aGUgY2FudmFzIHNpbXBseSBzaXRzIG92ZXIgdGhlIGJhc2VcbiAgIHBsYXRlLiBEaW1taW5nIG9mIHRoZSB4LXJheSBoYXBwZW5zIGFzIGl0J3MgZHJhd24sIGluIHRoZSBjb21wb25lbnQuICovXG4ueHJheS1jYW52YXMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogRGVjb2RlZCBmb3IgdGhlIGJydXNoLCBuZXZlciBsYWlkIG91dC4gTm90IGRpc3BsYXk6bm9uZSBcdTIwMTQgdGhhdCdzIHRoZVxuICAgb25lIHZhbHVlIHRoYXQgY2FuIGtlZXAgYSBicm93c2VyIGZyb20gcHJpb3JpdGlzaW5nIHRoZSBmZXRjaC4gKi9cbi54cmF5LXNvdXJjZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAueHJheS1iYW5kIHsgYXNwZWN0LXJhdGlvOiBhdXRvOyBoZWlnaHQ6IGNsYW1wKDQyMHB4LCA1NnZoLCA2MjBweCk7IH1cbiAgLyogVGhlIHNjcmltIGlzIGEgbXVjaCBiaWdnZXIgZnJhY3Rpb24gb2YgYSBwaG9uZSBoZXJvLCBzbyBpdCB3YXNcbiAgICAgd2FzaGluZyB0aGUgc2t5bGluZSBvdXQuIExpZ2h0ZXIgdG91Y2ggaGVyZS4gKi9cbiAgLmhlcm8tc2NyaW0ge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIDkyJSA2MiUgYXQgNTAlIDM2JSxcbiAgICAgIHJnYmEoMTMsIDE0LCAyMCwgMC43MCkgMCUsXG4gICAgICByZ2JhKDEzLCAxNCwgMjAsIDAuNTIpIDM4JSxcbiAgICAgIHJnYmEoMTMsIDE0LCAyMCwgMC4yNCkgNjYlLFxuICAgICAgdHJhbnNwYXJlbnQgMTAwJSk7XG4gIH1cbiAgLnhyYXktcGxhdGUg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 */
