valtech-components 4.0.613 → 4.0.616

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5278,7 +5278,7 @@ export class ChessimalsGameComponent {
5278
5278
  />
5279
5279
  </ng-template>
5280
5280
  </ion-modal>
5281
- `, isInline: true, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{flex-direction:column;align-items:flex-start;border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__meta{display:none}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__meta{display:flex;flex:0 1 auto;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0;max-width:min(31rem,58%)}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card__adventure-stars{display:flex;gap:.2rem;margin-top:.35rem}.chessimals-turn-card__adventure-stars span{font-size:1.375rem;color:var(--chessimals-magic, #f7d45a);opacity:.28;transition:opacity .25s ease}.chessimals-turn-card__adventure-stars span.is-earned{opacity:1}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,100%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-adventure-result{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem;padding:.875rem 1rem;border-radius:.875rem;background:#2e6f3e1a;border:1px solid rgba(46,111,62,.25);margin-bottom:.5rem}.chessimals-adventure-result__mode{font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--chessimals-primary, #2e6f3e);opacity:.85}.chessimals-adventure-result__stars{display:flex;gap:.25rem;align-items:center}.chessimals-adventure-result__star{font-size:1.75rem;color:var(--chessimals-magic, #f7d45a);opacity:.3;transition:opacity .2s ease}.chessimals-adventure-result__star.is-earned{opacity:1}.chessimals-adventure-result__caption{font-size:.8125rem;color:var(--chessimals-muted, #51643d);margin:0;line-height:1.4}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-bot-rival{order:2;border-color:rgba(var(--chessimals-magic-rgb),.38);padding:.62rem .7rem;background:radial-gradient(circle at 8% 12%,rgba(var(--chessimals-magic-rgb),.2),transparent 42%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent 70%),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-bot-rival>.chessimals-bot-avatar{width:3.3rem;height:3.3rem;border:1px solid rgba(var(--chessimals-magic-rgb),.5);background:var(--chessimals-panel);box-shadow:0 .4rem 1rem rgba(var(--chessimals-magic-rgb),.18)}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-loading{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.chessimals-path-loading span{height:88px;border-radius:16px;background:var(--ion-color-light, rgba(0, 0, 0, .06));animation:chessimals-path-shimmer 1.4s ease-in-out infinite}.chessimals-path-loading span:nth-child(odd){animation-delay:.2s}@keyframes chessimals-path-shimmer{0%,to{opacity:.45}50%{opacity:.9}}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__actions{position:absolute;bottom:1.1rem;left:50%;transform:translate(-50%);z-index:2;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;width:calc(100% - 2.5rem);max-width:22rem}.chessimals-board-overlay__actions .chessimals-action-button{flex:1 1 auto;min-width:min(100%,8rem);padding:.65rem 1.1rem;font-size:.875rem;border-radius:999px}.chessimals-board-overlay .chessimals-primary{background:#fffffff2;color:#1a2a1a;box-shadow:0 .5rem 1.5rem #0000004d}.chessimals-board-overlay .chessimals-secondary{border-color:#ffffff7a;background:#ffffff1f;color:#ffffffeb}.chessimals-board-overlay__rival-name{justify-self:center;margin:-.2rem 0 0;font-size:clamp(.75rem,3vw,.9rem);font-weight:700;color:#ffffffb8;letter-spacing:.04em}.chessimals-board-overlay__adv-stars{display:flex;justify-content:center;gap:.3rem;margin-top:-.1rem}.chessimals-board-overlay__adv-stars span{font-size:clamp(1.5rem,8vw,2.2rem);color:var(--chessimals-magic, #f7d45a);opacity:.28;filter:drop-shadow(0 0 .4rem rgba(247,212,90,0));transition:opacity .3s ease,filter .3s ease}.chessimals-board-overlay__adv-stars span.is-earned{opacity:1;filter:drop-shadow(0 0 .5rem rgba(247,212,90,.7));animation:chessimals-star-pop .4s cubic-bezier(.34,1.56,.64,1) both}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(2){animation-delay:.12s}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(3){animation-delay:.24s}@keyframes chessimals-star-pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.chessimals-board-overlay__adv-caption{justify-self:center;margin:0;padding:0 1rem;font-size:clamp(.75rem,3vw,.88rem);font-weight:700;color:#fffc;text-align:center;line-height:1.4}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__adv-caption{color:#b4ccf0e0}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__meta{gap:.25rem;max-width:none}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: MiniGameCalloutComponent, selector: "val-mini-game-callout", inputs: ["props"] }, { kind: "component", type: MiniGameScorePopComponent, selector: "val-mini-game-score-pop", inputs: ["props"] }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
5281
+ `, isInline: true, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{flex-direction:column;align-items:flex-start;border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__meta{display:none}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__meta{display:flex;flex:0 1 auto;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0;max-width:min(31rem,58%)}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card__adventure-stars{display:flex;gap:.2rem;margin-top:.35rem}.chessimals-turn-card__adventure-stars span{font-size:1.375rem;color:var(--chessimals-magic, #f7d45a);opacity:.28;transition:opacity .25s ease}.chessimals-turn-card__adventure-stars span.is-earned{opacity:1}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,100%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-adventure-result{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem;padding:.875rem 1rem;border-radius:.875rem;background:#2e6f3e1a;border:1px solid rgba(46,111,62,.25);margin-bottom:.5rem}.chessimals-adventure-result__mode{font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--chessimals-primary, #2e6f3e);opacity:.85}.chessimals-adventure-result__stars{display:flex;gap:.25rem;align-items:center}.chessimals-adventure-result__star{font-size:1.75rem;color:var(--chessimals-magic, #f7d45a);opacity:.3;transition:opacity .2s ease}.chessimals-adventure-result__star.is-earned{opacity:1}.chessimals-adventure-result__caption{font-size:.8125rem;color:var(--chessimals-muted, #51643d);margin:0;line-height:1.4}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-bot-rival{order:2;border-color:rgba(var(--chessimals-magic-rgb),.38);padding:.62rem .7rem;background:radial-gradient(circle at 8% 12%,rgba(var(--chessimals-magic-rgb),.2),transparent 42%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent 70%),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-bot-rival>.chessimals-bot-avatar{width:3.3rem;height:3.3rem;border:1px solid rgba(var(--chessimals-magic-rgb),.5);background:var(--chessimals-panel);box-shadow:0 .4rem 1rem rgba(var(--chessimals-magic-rgb),.18)}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-loading{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.chessimals-path-loading span{height:88px;border-radius:16px;background:var(--ion-color-light, rgba(0, 0, 0, .06));animation:chessimals-path-shimmer 1.4s ease-in-out infinite}.chessimals-path-loading span:nth-child(odd){animation-delay:.2s}@keyframes chessimals-path-shimmer{0%,to{opacity:.45}50%{opacity:.9}}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem 1.25rem 5.5rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__actions{position:absolute;bottom:1.1rem;left:50%;transform:translate(-50%);z-index:2;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;width:calc(100% - 2.5rem);max-width:22rem}.chessimals-board-overlay__actions .chessimals-action-button{flex:1 1 auto;min-width:min(100%,8rem);padding:.65rem 1.1rem;font-size:.875rem;border-radius:999px}.chessimals-board-overlay .chessimals-primary{background:#fffffff2;color:#1a2a1a;box-shadow:0 .5rem 1.5rem #0000004d}.chessimals-board-overlay .chessimals-secondary{border-color:#ffffff7a;background:#ffffff1f;color:#ffffffeb}.chessimals-board-overlay__rival-name{justify-self:center;margin:-.2rem 0 0;font-size:clamp(.75rem,3vw,.9rem);font-weight:700;color:#ffffffb8;letter-spacing:.04em}.chessimals-board-overlay__adv-stars{display:flex;justify-content:center;gap:.3rem;margin-top:-.1rem}.chessimals-board-overlay__adv-stars span{font-size:clamp(1.5rem,8vw,2.2rem);color:var(--chessimals-magic, #f7d45a);opacity:.28;filter:drop-shadow(0 0 .4rem rgba(247,212,90,0));transition:opacity .3s ease,filter .3s ease}.chessimals-board-overlay__adv-stars span.is-earned{opacity:1;filter:drop-shadow(0 0 .5rem rgba(247,212,90,.7));animation:chessimals-star-pop .4s cubic-bezier(.34,1.56,.64,1) both}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(2){animation-delay:.12s}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(3){animation-delay:.24s}@keyframes chessimals-star-pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.chessimals-board-overlay__adv-caption{justify-self:center;margin:0;padding:0 1rem;font-size:clamp(.75rem,3vw,.88rem);font-weight:700;color:#fffc;text-align:center;line-height:1.4}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__adv-caption{color:#b4ccf0e0}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__meta{gap:.25rem;max-width:none}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"], dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: MiniGameCalloutComponent, selector: "val-mini-game-callout", inputs: ["props"] }, { kind: "component", type: MiniGameScorePopComponent, selector: "val-mini-game-score-pop", inputs: ["props"] }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }, { kind: "component", type: RangeInputComponent, selector: "val-range-input", inputs: ["props"], outputs: ["rangeChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
5282
5282
  }
5283
5283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsGameComponent, decorators: [{
5284
5284
  type: Component,
@@ -6802,7 +6802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6802
6802
  />
6803
6803
  </ng-template>
6804
6804
  </ion-modal>
6805
- `, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{flex-direction:column;align-items:flex-start;border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__meta{display:none}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__meta{display:flex;flex:0 1 auto;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0;max-width:min(31rem,58%)}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card__adventure-stars{display:flex;gap:.2rem;margin-top:.35rem}.chessimals-turn-card__adventure-stars span{font-size:1.375rem;color:var(--chessimals-magic, #f7d45a);opacity:.28;transition:opacity .25s ease}.chessimals-turn-card__adventure-stars span.is-earned{opacity:1}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,100%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-adventure-result{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem;padding:.875rem 1rem;border-radius:.875rem;background:#2e6f3e1a;border:1px solid rgba(46,111,62,.25);margin-bottom:.5rem}.chessimals-adventure-result__mode{font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--chessimals-primary, #2e6f3e);opacity:.85}.chessimals-adventure-result__stars{display:flex;gap:.25rem;align-items:center}.chessimals-adventure-result__star{font-size:1.75rem;color:var(--chessimals-magic, #f7d45a);opacity:.3;transition:opacity .2s ease}.chessimals-adventure-result__star.is-earned{opacity:1}.chessimals-adventure-result__caption{font-size:.8125rem;color:var(--chessimals-muted, #51643d);margin:0;line-height:1.4}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-bot-rival{order:2;border-color:rgba(var(--chessimals-magic-rgb),.38);padding:.62rem .7rem;background:radial-gradient(circle at 8% 12%,rgba(var(--chessimals-magic-rgb),.2),transparent 42%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent 70%),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-bot-rival>.chessimals-bot-avatar{width:3.3rem;height:3.3rem;border:1px solid rgba(var(--chessimals-magic-rgb),.5);background:var(--chessimals-panel);box-shadow:0 .4rem 1rem rgba(var(--chessimals-magic-rgb),.18)}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-loading{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.chessimals-path-loading span{height:88px;border-radius:16px;background:var(--ion-color-light, rgba(0, 0, 0, .06));animation:chessimals-path-shimmer 1.4s ease-in-out infinite}.chessimals-path-loading span:nth-child(odd){animation-delay:.2s}@keyframes chessimals-path-shimmer{0%,to{opacity:.45}50%{opacity:.9}}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__actions{position:absolute;bottom:1.1rem;left:50%;transform:translate(-50%);z-index:2;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;width:calc(100% - 2.5rem);max-width:22rem}.chessimals-board-overlay__actions .chessimals-action-button{flex:1 1 auto;min-width:min(100%,8rem);padding:.65rem 1.1rem;font-size:.875rem;border-radius:999px}.chessimals-board-overlay .chessimals-primary{background:#fffffff2;color:#1a2a1a;box-shadow:0 .5rem 1.5rem #0000004d}.chessimals-board-overlay .chessimals-secondary{border-color:#ffffff7a;background:#ffffff1f;color:#ffffffeb}.chessimals-board-overlay__rival-name{justify-self:center;margin:-.2rem 0 0;font-size:clamp(.75rem,3vw,.9rem);font-weight:700;color:#ffffffb8;letter-spacing:.04em}.chessimals-board-overlay__adv-stars{display:flex;justify-content:center;gap:.3rem;margin-top:-.1rem}.chessimals-board-overlay__adv-stars span{font-size:clamp(1.5rem,8vw,2.2rem);color:var(--chessimals-magic, #f7d45a);opacity:.28;filter:drop-shadow(0 0 .4rem rgba(247,212,90,0));transition:opacity .3s ease,filter .3s ease}.chessimals-board-overlay__adv-stars span.is-earned{opacity:1;filter:drop-shadow(0 0 .5rem rgba(247,212,90,.7));animation:chessimals-star-pop .4s cubic-bezier(.34,1.56,.64,1) both}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(2){animation-delay:.12s}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(3){animation-delay:.24s}@keyframes chessimals-star-pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.chessimals-board-overlay__adv-caption{justify-self:center;margin:0;padding:0 1rem;font-size:clamp(.75rem,3vw,.88rem);font-weight:700;color:#fffc;text-align:center;line-height:1.4}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__adv-caption{color:#b4ccf0e0}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__meta{gap:.25rem;max-width:none}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
6805
+ `, styles: [":host{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;display:block;font-size:var(--val-mini-games-font-size, 1rem)}:host-context(body.font-small){--val-mini-games-font-size: .875rem}:host-context(body.font-large){--val-mini-games-font-size: 1.1875rem}.chessimals-shell{--chessimals-panel: #ffffff;--chessimals-surface: #fffaf1;--chessimals-elevated: rgba(255, 255, 255, .72);--chessimals-elevated-soft: rgba(255, 255, 255, .46);--chessimals-elevated-strong: rgba(255, 255, 255, .86);--chessimals-glass-highlight: rgba(255, 255, 255, .58);--chessimals-border: rgba(46, 58, 44, .18);--chessimals-text: #2e3a2c;--chessimals-muted: #51643d;--chessimals-soft: rgba(111, 122, 60, .1);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-selected: #37f28a;--chessimals-selected-rgb: 55, 242, 138;--chessimals-magic: #f7d45a;--chessimals-magic-rgb: 247, 212, 90;--chessimals-magic-hot: #fff56f;--chessimals-magic-deep: #b77a18;--chessimals-warning: #f4c542;--chessimals-warning-rgb: 244, 197, 66;--chessimals-move: var(--chessimals-sky);--chessimals-move-rgb: var(--chessimals-sky-rgb);--chessimals-capture: #1fcdb3;--chessimals-capture-rgb: 31, 205, 179;--chessimals-last: #8c6b4f;--chessimals-last-rgb: 140, 107, 79;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(46, 58, 44, .14);--chessimals-piece-white-fill: #ffffff;--chessimals-piece-white-side: #f3eadb;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .52)) drop-shadow(0 .18rem .12rem rgba(72, 58, 36, .22)) drop-shadow(0 .34rem .42rem rgba(72, 58, 36, .22));--chessimals-piece-black-fill: #242936;--chessimals-piece-black-side: #171b25;--chessimals-piece-black-line: rgba(255, 255, 255, .1);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .12)) drop-shadow(0 .32rem .42rem rgba(0, 0, 0, .36));--chessimals-piece-gold: #c79a42;--chessimals-piece-gold-dark: #8a5f22;--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(46, 58, 44, .12);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(46, 58, 44, .18));--chessimals-animal-face-locked-filter: grayscale(.2) saturate(.72);--chessimals-animal-face-locked-img-opacity: .72;display:grid;gap:1.125rem;width:100%;max-width:min(100%,60rem);margin:0 auto;color:var(--chessimals-text)}@media (prefers-color-scheme: dark){.chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(242, 230, 213, .2);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #f3f4e8;--chessimals-cell-dark: #7f944d;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-animal-face-border: rgba(242, 230, 213, .24)}}.chessimals-resume-splash{order:0;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;align-content:center;gap:.65rem;padding:1.5rem;text-align:center;color:var(--chessimals-text);background:radial-gradient(circle at 50% 42%,rgba(var(--chessimals-primary-rgb),.18),transparent 22rem),color-mix(in srgb,var(--chessimals-panel) 92%,transparent);backdrop-filter:blur(.9rem)}.chessimals-resume-splash__logo{display:block;width:clamp(5.8rem,20vw,7.2rem);height:auto;animation:chessimals-resume-pulse 1.2s ease-in-out infinite;filter:drop-shadow(0 .8rem 1.2rem rgba(var(--ion-color-dark-rgb, 47, 42, 58),.18))}.chessimals-resume-splash strong{font-size:clamp(1.55rem,5vw,2.4rem);font-weight:950;line-height:1.05}.chessimals-resume-splash p{max-width:24rem;margin:0;color:var(--chessimals-muted);font-size:1rem;line-height:1.35}@keyframes chessimals-resume-pulse{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.25rem) scale(1.04)}}@keyframes chessimals-spin{to{transform:rotate(360deg)}}@keyframes chessimals-online-pulse{0%,to{transform:scale(1);opacity:.78}50%{transform:scale(1.22);opacity:1}}:host-context(html.ion-palette-dark) .chessimals-shell,:host-context([data-theme=\"dark\"]) .chessimals-shell{--chessimals-panel: #172116;--chessimals-surface: #0f170f;--chessimals-elevated: rgba(255, 255, 255, .08);--chessimals-elevated-soft: rgba(255, 255, 255, .05);--chessimals-elevated-strong: rgba(255, 255, 255, .12);--chessimals-glass-highlight: rgba(255, 255, 255, .08);--chessimals-border: rgba(246, 227, 213, .22);--chessimals-text: #f6f3e9;--chessimals-muted: #c8cfb1;--chessimals-soft: rgba(111, 122, 60, .22);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--chessimals-sky: #c06a3d;--chessimals-sky-rgb: 192, 106, 61;--chessimals-stone: #8e9362;--chessimals-stone-rgb: 142, 147, 98;--chessimals-cell-light: #e8eadc;--chessimals-cell-dark: #5f7040;--chessimals-board-shadow: rgba(0, 0, 0, .34);--chessimals-capture: #66f2d7;--chessimals-capture-rgb: 102, 242, 215;--chessimals-last: #cdbe9b;--chessimals-last-rgb: 205, 190, 155;--chessimals-piece-white-fill: #fffaff;--chessimals-piece-white-side: #f0e5d4;--chessimals-piece-white-line: rgba(82, 65, 46, .12);--chessimals-piece-white-shadow: drop-shadow(0 0 1px rgba(84, 62, 34, .48)) drop-shadow(0 .18rem .12rem rgba(0, 0, 0, .24)) drop-shadow(0 .34rem .42rem rgba(0, 0, 0, .3));--chessimals-piece-black-fill: #202633;--chessimals-piece-black-side: #111620;--chessimals-piece-black-line: rgba(255, 255, 255, .12);--chessimals-piece-black-shadow: drop-shadow(0 0 1px rgba(255, 255, 255, .34)) drop-shadow(0 .18rem .1rem rgba(255, 255, 255, .14)) drop-shadow(0 .34rem .44rem rgba(0, 0, 0, .52));--chessimals-animal-face-bg: #fffdf7;--chessimals-animal-face-inner-bg: #ffffff;--chessimals-animal-face-border: rgba(242, 230, 213, .24);--chessimals-animal-face-filter: drop-shadow(0 .12rem .16rem rgba(0, 0, 0, .22));--chessimals-animal-face-locked-filter: grayscale(.32) saturate(.72);--chessimals-animal-face-locked-img-opacity: .58}.chessimals-hero{display:grid;gap:.75rem;justify-items:center;overflow:hidden;border-radius:1.75rem;padding:clamp(1.25rem,5vw,2.5rem);background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.92),transparent 20%),linear-gradient(135deg,#fdf8ee,#fff 40%,#edf3df);color:var(--chessimals-text);text-align:center;border:1px solid var(--chessimals-border)}:host-context(html.ion-palette-dark) .chessimals-hero,:host-context([data-theme=\"dark\"]) .chessimals-hero{background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.08),transparent 22%),linear-gradient(135deg,#111a10,#172116 48%,#0f170f);color:var(--chessimals-text);border-color:#f6e3d538}.chessimals-hero__logo{display:grid;place-items:center;gap:.35rem;width:min(27rem,86vw);max-width:100%}.chessimals-hero__logo img{display:block;height:auto;object-fit:contain;border-radius:0}.chessimals-hero__emblem{width:min(12.25rem,48vw);margin-top:.2rem;transform:translateY(.2rem)}.chessimals-hero__wordmark{width:min(21rem,76vw)}.chessimals-hero p,.chessimals-howto p,.chessimals-tip p,.chessimals-result p,.chessimals-powers p{margin:0;line-height:1.45}.chessimals-powers{display:grid;gap:1rem;border:1px solid var(--chessimals-border);border-radius:1.625rem;padding:clamp(1rem,4vw,1.5rem);background:var(--chessimals-panel)}.chessimals-game{display:grid;gap:.875rem}.chessimals-panel{display:grid;gap:1.125rem}.chessimals-home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.875rem}.chessimals-home-action{display:grid;justify-items:start;gap:.68rem;min-height:9.6rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1.25rem;padding:1.15rem 1rem 1.05rem;background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.74),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-secondary-rgb),.08)),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-home-action--play{border-color:rgba(var(--chessimals-primary-rgb),.46);background:radial-gradient(circle at 18% 10%,rgba(255,255,255,.82),transparent 22%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.22),rgba(var(--chessimals-secondary-rgb),.12)),var(--chessimals-panel)}.chessimals-mode-icon{display:block;width:4.45rem;height:4.45rem;border-radius:1rem;object-fit:cover;background:rgba(var(--chessimals-sun-rgb),.16);box-shadow:0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .55rem 1rem rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-home-action strong{font-size:clamp(1.1rem,3vw,1.45rem);font-weight:1000;line-height:1.05}.chessimals-home-action small{color:var(--chessimals-muted);font-size:.88rem;font-weight:900;line-height:1.3}.chessimals-options{border:1px solid var(--chessimals-border);border-radius:1.125rem;padding:.35rem;background:var(--chessimals-panel)}.chessimals-options summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.25rem;padding:.65rem .8rem;color:var(--chessimals-text);cursor:pointer;list-style:none}.chessimals-options summary::-webkit-details-marker{display:none}.chessimals-options summary:after{content:\"+\";display:grid;place-items:center;flex:0 0 auto;width:1.8rem;height:1.8rem;border-radius:999px;background:var(--chessimals-soft);color:var(--chessimals-primary);font-weight:950}.chessimals-options[open] summary:after{content:\"-\"}.chessimals-options summary strong,.chessimals-options summary span{display:block}.chessimals-options summary strong{font-weight:950}.chessimals-options summary span{color:var(--chessimals-muted);font-size:.84rem;font-weight:800}.chessimals-options>:not(summary){margin:.5rem}.chessimals-play-options{display:grid;gap:1.05rem;color:var(--chessimals-text)}.chessimals-play-options__group{display:grid;gap:.62rem}.chessimals-play-options__group h3{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:950;line-height:1.15}.chessimals-play-options .chessimals-size button,.chessimals-play-options .chessimals-mode button,.chessimals-play-options .chessimals-nightmare button,.chessimals-play-options .chessimals-bots button{position:relative;overflow:hidden;min-height:4.75rem;padding:.78rem 2.1rem .78rem .9rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);border-radius:1.08rem;background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.7),transparent 24%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),rgba(var(--chessimals-secondary-rgb),.05)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-size button.is-selected,.chessimals-play-options .chessimals-mode button.is-selected,.chessimals-play-options .chessimals-nightmare button.is-selected,.chessimals-play-options .chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:radial-gradient(circle at 16% 8%,rgba(255,255,255,.78),transparent 25%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.23),rgba(var(--chessimals-secondary-rgb),.13)),var(--chessimals-panel);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .85rem 1.8rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-option-check{position:absolute;top:.65rem;right:.65rem;width:.72rem;height:.72rem;border:2px solid rgba(var(--chessimals-primary-rgb),.3);border-radius:999px;background:var(--chessimals-panel)}.is-selected>.chessimals-option-check{border-color:var(--chessimals-primary);background:var(--chessimals-primary);box-shadow:0 0 0 .28rem rgba(var(--chessimals-primary-rgb),.13)}.chessimals-play-options .chessimals-nightmare{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-nightmare button{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:\"icon title\" \"icon body\";column-gap:.55rem;row-gap:.12rem;align-content:center;text-align:left}.chessimals-play-options .chessimals-nightmare strong{grid-area:title;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-play-options .chessimals-nightmare small{grid-area:body;color:var(--chessimals-muted);font-size:.72rem;font-weight:800;line-height:1.15}.chessimals-nightmare__icon{grid-area:icon;display:grid;place-items:center;width:2.35rem;height:2.35rem;overflow:hidden;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:1000;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-nightmare__icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-play-options .chessimals-nightmare button.is-selected .chessimals-nightmare__icon{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-options .chessimals-difficulty{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}.chessimals-play-options .chessimals-difficulty button{border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.06),rgba(var(--chessimals-secondary-rgb),.04)),var(--chessimals-panel);color:var(--chessimals-text);box-shadow:inset 0 0 0 1px var(--chessimals-glass-highlight)}.chessimals-play-options .chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .16rem rgba(var(--chessimals-primary-rgb),.18),0 .72rem 1.25rem rgba(var(--chessimals-primary-rgb),.16)}.chessimals-play-options .chessimals-bots button>.chessimals-bot-avatar{width:2.45rem;height:2.45rem;border-radius:.8rem;background:rgba(var(--chessimals-primary-rgb),.12)}.chessimals-play-options .chessimals-bots button.is-selected>.chessimals-bot-avatar{background:rgba(var(--chessimals-secondary-rgb),.2);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.24)}.chessimals-play-modal{--chessimals-panel: var(--chessimals-modal-card, #ffffff);--chessimals-elevated: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .72));--chessimals-elevated-soft: color-mix(in srgb, var(--chessimals-modal-card, #ffffff) 74%, transparent);--chessimals-elevated-strong: var(--chessimals-modal-card-strong, rgba(255, 255, 255, .86));--chessimals-glass-highlight: color-mix(in srgb, var(--chessimals-modal-surface, #ffffff) 58%, transparent);--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--background: var(--chessimals-primary);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--border-color: var(--chessimals-primary);--border-radius: 999px;--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast);--val-modal-footer-gap: .7rem}.chessimals-rules-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--chessimals-secondary: #a8a06a;--chessimals-secondary-rgb: 168, 160, 106;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}.chessimals-confirm-modal{--chessimals-border: var(--chessimals-modal-border, rgba(46, 58, 44, .18));--chessimals-text: var(--chessimals-modal-text, #2e3a2c);--chessimals-muted: var(--chessimals-modal-muted, #51643d);--chessimals-primary: #2e6f3e;--chessimals-primary-rgb: 46, 111, 62;--chessimals-primary-contrast: #fffaf0;--ion-background-color: var(--chessimals-modal-surface, #ffffff);--ion-card-background: var(--chessimals-modal-card, #ffffff);--ion-text-color: var(--chessimals-text);--val-modal-footer-gap: .7rem}:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #ffffff;--chessimals-modal-card: #ffffff;--chessimals-modal-card-strong: #f8fbf5;--chessimals-modal-text: #2e3a2c;--chessimals-modal-muted: #5f6f50;--chessimals-modal-border: rgba(46, 58, 44, .18);--chessimals-modal-shadow: rgba(46, 58, 44, .14);--ion-background-color: var(--chessimals-modal-surface);--ion-card-background: var(--chessimals-modal-card);--ion-text-color: var(--chessimals-modal-text);--ion-color-dark: var(--chessimals-modal-text);--ion-color-dark-rgb: 46, 58, 44;--ion-color-medium: var(--chessimals-modal-muted);--ion-color-medium-rgb: 95, 111, 80;--ion-border-color: var(--chessimals-modal-border);--ion-color-primary: var(--chessimals-primary);--ion-color-primary-rgb: var(--chessimals-primary-rgb);--ion-color-primary-contrast: var(--chessimals-primary-contrast);--ion-color-primary-shade: #285f36;--ion-color-primary-tint: #43804f}@media (prefers-color-scheme: dark){:host ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}}:host-context(html.ion-palette-dark) ::ng-deep ion-modal.chessimals-themed-modal,:host-context([data-theme=\"dark\"]) ::ng-deep ion-modal.chessimals-themed-modal{--chessimals-modal-surface: #121811;--chessimals-modal-card: #182217;--chessimals-modal-card-strong: #1d2a1c;--chessimals-modal-text: #f6f3e9;--chessimals-modal-muted: #c8cfb1;--chessimals-modal-border: rgba(246, 227, 213, .2);--chessimals-modal-shadow: rgba(0, 0, 0, .36);--ion-color-dark-rgb: 246, 243, 233;--ion-color-medium-rgb: 200, 207, 177}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-toolbar,:host ::ng-deep ion-modal.chessimals-themed-modal .val-modal-layout__footer{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text);background:var(--chessimals-modal-surface);color:var(--chessimals-modal-text);border-color:var(--chessimals-modal-border)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-display ion-text,:host ::ng-deep ion-modal.chessimals-themed-modal val-title ion-text{color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-solid,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-themed-modal val-button.val-modal-layout__button ion-button.button-outline,:host ::ng-deep ion-modal.chessimals-themed-modal val-button.chessimals-rules__action--secondary ion-button{--background: transparent;--border-color: var(--chessimals-modal-border);--border-width: 1px;--color: var(--chessimals-modal-text);--color-activated: var(--chessimals-modal-text);--color-hover: var(--chessimals-modal-text)}.chessimals-play-modal__actions,.chessimals-rules__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;width:100%}.chessimals-play-modal__actions .chessimals-primary,.chessimals-play-modal__actions .chessimals-secondary{min-width:min(100%,12.5rem);padding:.85rem 1.35rem}.chessimals-rules__action{min-width:min(100%,12.5rem)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--primary ion-button{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-rules-modal val-button.chessimals-rules__action--secondary ion-button{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button{min-height:3.45rem;font-weight:950;--border-radius: 999px;--padding-bottom: .85rem;--padding-end: 1.35rem;--padding-start: 1.35rem;--padding-top: .85rem}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=confirm]{--background: var(--chessimals-primary);--background-hover: color-mix(in srgb, var(--chessimals-primary) 92%, #fff);--background-activated: color-mix(in srgb, var(--chessimals-primary) 88%, #000);--box-shadow: 0 1rem 2rem rgba(var(--chessimals-primary-rgb), .22);--color: var(--chessimals-primary-contrast);--color-activated: var(--chessimals-primary-contrast);--color-hover: var(--chessimals-primary-contrast)}:host ::ng-deep ion-modal.chessimals-confirm-modal val-button.val-modal-layout__button ion-button[data-testid=cancel]{--border-color: rgba(46, 58, 44, .24);--border-width: 1px;--color: var(--chessimals-text);--color-activated: var(--chessimals-text);--color-hover: var(--chessimals-text)}.chessimals-online{display:grid;gap:.875rem;border:1px solid var(--chessimals-border);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-online--waiting{order:2;border-color:rgba(var(--chessimals-primary-rgb),.34)}.chessimals-online h2,.chessimals-online p{margin:0}.chessimals-online h2{font-size:1.1rem;font-weight:950}.chessimals-online p{color:var(--chessimals-muted);line-height:1.4}.chessimals-online__create,.chessimals-online__join{display:grid;gap:.55rem}.chessimals-online__create small{color:var(--chessimals-muted);font-weight:800;line-height:1.35}.chessimals-online__join{border-top:1px solid var(--chessimals-border);padding-top:.85rem}.chessimals-online__join>strong{font-size:.95rem;font-weight:950}.chessimals-online__error{border-radius:.875rem;padding:.7rem .8rem;background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12);color:var(--ion-color-danger, #eb445a)!important;font-weight:800}.chessimals-online__loading{display:flex;align-items:center;gap:.625rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:999px;padding:.65rem .85rem;background:rgba(var(--chessimals-primary-rgb),.08);color:var(--chessimals-text);font-size:.92rem;font-weight:900}.chessimals-online__loading span{width:1rem;height:1rem;border:.15rem solid rgba(var(--chessimals-primary-rgb),.24);border-top-color:var(--chessimals-primary);border-radius:999px;animation:chessimals-spin .75s linear infinite}.chessimals-online-code{display:grid;gap:.4rem;font-weight:950}.chessimals-online-code input{width:100%;min-height:3.3rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.chessimals-game-code{display:grid;gap:.2rem;border-radius:1rem;padding:.85rem 1rem;background:var(--chessimals-soft)}.chessimals-game-code small{color:var(--chessimals-muted);font-weight:900;letter-spacing:.06em;text-transform:uppercase}.chessimals-game-code strong{font-size:clamp(1.35rem,6vw,2rem);font-weight:950;letter-spacing:.05em}.chessimals-online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-history{gap:.75rem}.chessimals-history__heading{display:flex;align-items:start;justify-content:space-between;gap:.75rem}.chessimals-history__list{display:grid;gap:.5rem}.chessimals-history__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.7rem .8rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-history__item span{display:grid;gap:.1rem;min-width:0}.chessimals-history__item strong{font-weight:950;letter-spacing:.04em}.chessimals-history__item small{overflow:hidden;color:var(--chessimals-muted);font-size:.82rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.chessimals-history__item em{flex:0 0 auto;color:var(--chessimals-primary);font-size:.86rem;font-style:normal;font-weight:950}.chessimals-home-settings{gap:.8rem}.chessimals-home-settings__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.625rem}.chessimals-pending-player{display:flex;align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.22);border-radius:1rem;padding:.75rem;background:var(--chessimals-soft)}.chessimals-pending-player div{display:grid;gap:.1rem;min-width:0}.chessimals-pending-player small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.07em;text-transform:uppercase}.chessimals-pending-player strong{overflow:hidden;font-size:1.05rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card{order:1;display:flex;align-items:center;justify-content:space-between;gap:.625rem;min-height:3.75rem;overflow:visible;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1rem;padding:.55rem .65rem;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.34),transparent 18%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.2),rgba(var(--chessimals-secondary-rgb),.1))}.chessimals-turn-card.is-black-turn{border-color:rgba(var(--ion-color-dark-rgb, 47, 42, 58),.28);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.12),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-dark-rgb, 47, 42, 58),.14),rgba(var(--chessimals-primary-rgb),.1))}.chessimals-turn-card.is-finished{flex-direction:column;align-items:flex-start;border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.42);background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.35),transparent 18%),linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.18),rgba(var(--chessimals-primary-rgb),.12))}.chessimals-turn-card.is-finished .chessimals-turn-card__meta{display:none}.chessimals-turn-card.is-finished .chessimals-turn-card__chip{color:var(--ion-color-success, #2dd36f)}.chessimals-turn-card.is-your-turn{border-color:rgba(var(--chessimals-primary-rgb),.48);box-shadow:0 0 0 .12rem rgba(var(--chessimals-primary-rgb),.12),0 .95rem 2rem rgba(var(--chessimals-primary-rgb),.14)}.chessimals-turn-card.is-your-turn .chessimals-turn-card__chip{background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 0 0 .32rem rgba(var(--chessimals-primary-rgb),.14);animation:chessimals-turn-pulse 1.45s ease-in-out infinite}.chessimals-turn-card.is-timer-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.5);box-shadow:0 0 0 .12rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12),0 .95rem 2rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-turn-card.is-timer-low .chessimals-turn-card__chip{background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #ffffff)}.chessimals-turn-card.is-waiting-turn .chessimals-turn-card__chip{color:var(--chessimals-muted)}@keyframes chessimals-turn-pulse{0%,to{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.035)}}.chessimals-turn-card__copy{display:grid;min-width:0;gap:.15rem}.chessimals-turn-card__meta{display:flex;flex:0 1 auto;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0;max-width:min(31rem,58%)}.chessimals-turn-card__chip{justify-self:start;border-radius:999px;padding:.2rem .5rem;background:var(--chessimals-panel);color:var(--chessimals-primary);font-size:.62rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-turn-card__adventure-stars{display:flex;gap:.2rem;margin-top:.35rem}.chessimals-turn-card__adventure-stars span{font-size:1.375rem;color:var(--chessimals-magic, #f7d45a);opacity:.28;transition:opacity .25s ease}.chessimals-turn-card__adventure-stars span.is-earned{opacity:1}.chessimals-turn-card strong{display:block;min-width:0;font-size:clamp(1rem,3.5vw,1.25rem);line-height:1.08;font-weight:950;overflow-wrap:anywhere}.chessimals-turn-card p{display:block;min-width:0;margin:0;color:var(--chessimals-muted);font-size:.78rem;line-height:1.22}.chessimals-player-strip{display:flex;flex:0 0 auto;align-items:center;gap:.45rem;min-width:10rem;max-width:min(17rem,100%);border:1px solid var(--chessimals-border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;background:rgba(var(--ion-color-light-rgb, 244, 245, 248),.72)}:host-context(html.ion-palette-dark) .chessimals-player-strip,:host-context([data-theme=\"dark\"]) .chessimals-player-strip{background:#ffffff0f}.chessimals-player-strip val-user-avatar{display:inline-flex;flex:0 0 auto;line-height:0}.chessimals-player-strip__avatar{display:grid;place-items:center;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;aspect-ratio:1 / 1;overflow:hidden;border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.875rem;line-height:1}.chessimals-player-strip__avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-player-strip__avatar--initials{font-size:.78rem;font-weight:950}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:2.25rem;min-width:2.25rem;height:2.25rem;border-radius:50%}.chessimals-player-strip__text{display:grid;min-width:0;gap:.05rem;line-height:1.1}.chessimals-player-strip__text span{color:var(--chessimals-muted);font-size:.58rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-player-strip__text strong{overflow:hidden;font-size:.82rem;line-height:1.08;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-player-strip__text small{overflow:hidden;color:var(--chessimals-muted);font-size:.66rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chessimals-arena{order:4;display:grid;gap:.875rem;align-items:start}.chessimals-howto,.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-rematch-status{display:grid;gap:.375rem;padding:1rem;border-radius:1.25rem;background:var(--chessimals-soft)}.chessimals-howto{border:1px solid var(--chessimals-border);background:var(--chessimals-soft);color:var(--chessimals-text)}.chessimals-howto p{color:var(--chessimals-muted)}.chessimals-howto__actions{display:flex;flex-wrap:wrap;gap:.625rem}:host-context(html.ion-palette-dark) .chessimals-howto,:host-context([data-theme=\"dark\"]) .chessimals-howto{border-color:#f6e3d533;background:#172116;color:#f6f3e9}:host-context(html.ion-palette-dark) .chessimals-howto p,:host-context([data-theme=\"dark\"]) .chessimals-howto p{color:#c8cfb1}.chessimals-result{order:5}.chessimals-adventure-result{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem;padding:.875rem 1rem;border-radius:.875rem;background:#2e6f3e1a;border:1px solid rgba(46,111,62,.25);margin-bottom:.5rem}.chessimals-adventure-result__mode{font-size:.6875rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--chessimals-primary, #2e6f3e);opacity:.85}.chessimals-adventure-result__stars{display:flex;gap:.25rem;align-items:center}.chessimals-adventure-result__star{font-size:1.75rem;color:var(--chessimals-magic, #f7d45a);opacity:.3;transition:opacity .2s ease}.chessimals-adventure-result__star.is-earned{opacity:1}.chessimals-adventure-result__caption{font-size:.8125rem;color:var(--chessimals-muted, #51643d);margin:0;line-height:1.4}.chessimals-result__actions{display:flex;flex-wrap:wrap;gap:.625rem;margin-top:.45rem}.chessimals-action-button{flex:0 1 auto;min-width:min(100%,12.5rem);max-width:100%;padding:.85rem 1.35rem}.chessimals-result.is-challenge-result{gap:0;padding:0;background:transparent}.chessimals-result__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-top:.35rem}.chessimals-result__stats span{display:grid;gap:.15rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:.85rem;padding:.58rem .6rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--chessimals-panel)}.chessimals-result__stats small{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.05em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-result__stats b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:950;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}.chessimals-result__detail{margin:.2rem 0 0}.chessimals-bot-report{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.75rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-bot-report>span{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:.85rem;background:rgba(var(--chessimals-secondary-rgb),.14);font-size:1.45rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-bot-report>span img{width:100%;height:100%;object-fit:contain}.chessimals-bot-report div{display:grid;gap:.12rem;min-width:0}.chessimals-bot-report small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-bot-report strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-bot-report p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-online-status{order:3;display:grid;grid-template-columns:1.35rem minmax(0,1fr);align-items:center;gap:.85rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.1rem;padding:.85rem .95rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.09),transparent),var(--chessimals-panel)}.chessimals-online-status>span{justify-self:center;width:.72rem;height:.72rem;border-radius:999px;background:var(--chessimals-primary);box-shadow:0 0 0 .38rem rgba(var(--chessimals-primary-rgb),.12)}.chessimals-online-status.is-syncing>span{animation:chessimals-online-pulse .9s ease-in-out infinite}.chessimals-online-status.is-error{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.28);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1),transparent),var(--chessimals-panel)}.chessimals-online-status.is-error>span{background:var(--ion-color-danger, #eb445a);box-shadow:0 0 0 .38rem rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.chessimals-online-status div{display:grid;gap:.12rem;min-width:0}.chessimals-online-status strong{overflow:hidden;color:var(--chessimals-text);font-size:.95rem;font-weight:950;text-overflow:ellipsis;white-space:nowrap}.chessimals-online-status p{margin:0;color:var(--chessimals-muted);font-size:.84rem;font-weight:780;line-height:1.28}.chessimals-series{display:grid;gap:.18rem;margin-top:.35rem;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1rem;padding:.78rem .85rem;background:linear-gradient(135deg,rgba(var(--chessimals-secondary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-series--compact{margin-top:0}.chessimals-series small{color:var(--chessimals-muted);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-series strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.15}.chessimals-series span{color:var(--chessimals-muted);font-size:.84rem;font-weight:820;line-height:1.28}.chessimals-replay{order:5;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border:1px solid rgba(var(--chessimals-primary-rgb),.2);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),transparent),var(--chessimals-panel)}.chessimals-replay>div:first-child{display:grid;gap:.15rem;min-width:0}.chessimals-replay strong{font-size:1rem;font-weight:950}.chessimals-replay span{color:var(--chessimals-muted);font-size:.86rem;font-weight:800;line-height:1.25}.chessimals-replay__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.chessimals-replay__actions .chessimals-secondary{min-height:2.5rem;padding:0 .8rem}.chessimals-tutorial{order:3;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.24);border-radius:1.25rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel)}.chessimals-tutorial>div{display:grid;gap:.18rem;min-width:0}.chessimals-tutorial small{color:var(--chessimals-primary);font-size:.76rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-tutorial strong{font-size:1rem;font-weight:950}.chessimals-tutorial p{margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:780;line-height:1.35}.chessimals-tutorial .chessimals-secondary{min-height:2.5rem;padding:0 .85rem}.chessimals-rematch-status{order:5;border:1px solid rgba(var(--chessimals-primary-rgb),.22);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.12),transparent),var(--chessimals-panel)}.chessimals-rematch-status.is-incoming{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.38);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.14),transparent),var(--chessimals-panel)}.chessimals-rematch-status strong{font-size:1rem;font-weight:950}.chessimals-rematch-status p{margin:0;color:var(--chessimals-muted);font-size:.88rem;line-height:1.35}.chessimals-rematch-player{background:var(--chessimals-elevated)}:host-context(html.ion-palette-dark) .chessimals-rematch-player,:host-context([data-theme=\"dark\"]) .chessimals-rematch-player{background:#ffffff0f}.chessimals-rematch-status__actions{display:flex;justify-content:flex-end}.chessimals-rematch-status__actions .chessimals-secondary{min-height:2.5rem;padding:0 .95rem}.chessimals-howto h2,.chessimals-powers h2{margin:0;font-size:1.15rem;font-weight:950}.chessimals-challenge-cta{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(10rem,auto) auto;gap:.65rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.24);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.1),transparent 62%),var(--chessimals-panel);box-shadow:0 .7rem 1.4rem rgba(var(--chessimals-shadow-rgb),.08)}.chessimals-challenge-cta__copy{display:grid;gap:.18rem;min-width:0}.chessimals-challenge-cta__copy span,.chessimals-challenge-cta__rival small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-cta__copy h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.05rem,2.5vw,1.32rem);font-weight:1000}.chessimals-challenge-cta__copy p{margin:0;color:var(--chessimals-muted);font-size:.82rem;font-weight:780;line-height:1.3}.chessimals-challenge-cta__meta{display:grid;grid-template-columns:repeat(2,minmax(3.8rem,1fr));gap:.4rem}.chessimals-challenge-cta__meta span{display:grid;gap:.08rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:.95rem;padding:.42rem .5rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-cta__meta small{color:var(--chessimals-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-cta__meta strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-cta__actions{display:grid;gap:.45rem;min-width:10rem}.chessimals-challenge-cta__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-cta__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:.9rem;background:rgba(var(--chessimals-sky-rgb),.14);font-size:1.12rem}.chessimals-challenge-cta__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-cta__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:.9rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-view{display:grid;gap:.85rem}.chessimals-back-link{justify-self:start;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:999px;padding:.45rem .72rem;background:var(--chessimals-elevated);color:var(--chessimals-text);font:inherit;font-size:.85rem;font-weight:950;cursor:pointer}.chessimals-challenge-back{margin-bottom:.15rem}.chessimals-challenge-card{display:grid;gap:.9rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:1.375rem;padding:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.18),transparent 54%),linear-gradient(180deg,var(--chessimals-glass-highlight),transparent),var(--chessimals-panel);box-shadow:0 1rem 2.2rem #4f3a231f}.chessimals-challenge-card--dedicated{border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.chessimals-challenge-hero,.chessimals-challenge-focus,.chessimals-challenge-secondary{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(14rem,.9fr);gap:.75rem;align-items:stretch}.chessimals-challenge-card__copy{display:grid;gap:.28rem;align-content:center}.chessimals-challenge-card__copy span,.chessimals-challenge-summary small,.chessimals-challenge-route small,.chessimals-challenge-panel__heading small{color:var(--chessimals-sky);font-size:.72rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-challenge-card h2{margin:0;font-size:clamp(1.25rem,3.5vw,1.9rem);font-weight:1000}.chessimals-challenge-card p,.chessimals-challenge-summary p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:780;line-height:1.35}.chessimals-challenge-card__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.chessimals-challenge-rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:1.125rem;padding:.7rem;background:var(--chessimals-elevated)}.chessimals-challenge-rival--feature{min-height:8rem;border-color:rgba(var(--chessimals-sky-rgb),.28);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated)}.chessimals-bot-rival{order:2;border-color:rgba(var(--chessimals-magic-rgb),.38);padding:.62rem .7rem;background:radial-gradient(circle at 8% 12%,rgba(var(--chessimals-magic-rgb),.2),transparent 42%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent 70%),var(--chessimals-elevated)}.chessimals-challenge-rival>.chessimals-bot-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.45rem}.chessimals-bot-rival>.chessimals-bot-avatar{width:3.3rem;height:3.3rem;border:1px solid rgba(var(--chessimals-magic-rgb),.5);background:var(--chessimals-panel);box-shadow:0 .4rem 1rem rgba(var(--chessimals-magic-rgb),.18)}.chessimals-challenge-rival div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-rival small,.chessimals-challenge-history small,.chessimals-challenge-summary__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-rival strong{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival p{font-size:.84rem}.chessimals-challenge-rival em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-rival--next{background:rgba(var(--chessimals-primary-rgb),.08)}.chessimals-challenge-card__stats span{display:grid;gap:.16rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;padding:.55rem;background:var(--chessimals-elevated)}.chessimals-challenge-card__stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-challenge-card__stats strong{color:var(--chessimals-text);font-size:1.1rem;font-weight:1000}.chessimals-challenge-card__actions{display:grid;gap:.55rem;align-content:center}.chessimals-challenge-card__actions--hero{grid-template-columns:minmax(0,1fr)}.chessimals-challenge-route,.chessimals-challenge-panel{display:grid;gap:.55rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1.125rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-route>div:first-child,.chessimals-challenge-panel__heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;justify-content:space-between}.chessimals-challenge-route>div:first-child>span{color:var(--chessimals-muted);font-size:.76rem;font-weight:850}.chessimals-challenge-path{display:flex;flex-wrap:nowrap;gap:.4rem;overflow-x:auto;padding-block:.1rem;scrollbar-width:none}.chessimals-challenge-path::-webkit-scrollbar{display:none}.chessimals-challenge-path span{flex:0 0 auto;display:grid;place-items:center;width:2.15rem;height:2.15rem;overflow:hidden;border:1px solid rgba(var(--chessimals-primary-rgb),.18);border-radius:999px;background:var(--chessimals-elevated-strong);font-size:1.08rem}.chessimals-challenge-path img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-challenge-path span.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.34);background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.16)}.chessimals-challenge-path span.is-current{border-color:rgba(var(--chessimals-sky-rgb),.48);background:rgba(var(--chessimals-sky-rgb),.18);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.12)}.chessimals-challenge-path span.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.48)}.chessimals-challenge-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}.chessimals-challenge-roster article{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem;align-items:center;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.48rem;background:var(--chessimals-elevated-soft);opacity:.78}.chessimals-challenge-roster article.is-cleared{border-color:rgba(var(--ion-color-success-rgb, 45, 211, 111),.26);background:linear-gradient(135deg,rgba(var(--ion-color-success-rgb, 45, 211, 111),.1),transparent),var(--chessimals-elevated-soft);opacity:1}.chessimals-challenge-roster article.is-current{border-color:rgba(var(--chessimals-sky-rgb),.38);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-elevated);box-shadow:0 0 0 2px rgba(var(--chessimals-sky-rgb),.1);opacity:1}.chessimals-challenge-roster article.is-final{border-color:rgba(var(--ion-color-warning-rgb, 255, 196, 9),.34)}.chessimals-challenge-roster article>.chessimals-bot-avatar{display:grid;place-items:center;width:2rem;height:2rem;border-radius:.85rem;background:rgba(var(--chessimals-primary-rgb),.1);font-size:1rem}.chessimals-challenge-roster article.is-current>.chessimals-bot-avatar{background:rgba(var(--chessimals-sky-rgb),.18)}.chessimals-challenge-roster div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-roster small,.chessimals-challenge-roster em{overflow:hidden;color:var(--chessimals-muted);font-size:.62rem;font-style:normal;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-roster strong{overflow:hidden;color:var(--chessimals-text);font-size:.82rem;font-weight:1000;line-height:1.08;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-roster p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-achievements,.chessimals-mode-winrates{display:grid;grid-template-columns:minmax(0,1fr);gap:.45rem}.chessimals-mode-winrates>span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-sky-rgb),.2);border-radius:8px;padding:.48rem;background:rgba(var(--chessimals-sky-rgb),.08)}.chessimals-mode-winrates small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-mode-winrates strong{color:var(--chessimals-text);font-size:.98rem;font-weight:1000}.chessimals-mode-winrates em{overflow:hidden;color:var(--chessimals-muted);font-size:.68rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements>span{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:center;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.5rem;background:var(--chessimals-elevated-soft);opacity:.68}.chessimals-achievements>span.is-unlocked{border-color:rgba(var(--chessimals-sky-rgb),.3);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),var(--chessimals-elevated));opacity:1}.chessimals-achievements b{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;background:rgba(var(--chessimals-primary-rgb),.1);color:var(--chessimals-muted);font-size:.9rem;font-weight:1000}.chessimals-achievements .is-unlocked b{background:var(--chessimals-sky);color:#fffaf0}.chessimals-achievements span span{display:grid;gap:.06rem;min-width:0}.chessimals-achievements strong,.chessimals-achievements small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-achievements strong{color:var(--chessimals-text);font-size:.78rem;font-weight:1000}.chessimals-achievements small{color:var(--chessimals-muted);font-size:.67rem;font-weight:850}.chessimals-secondary--compact{min-height:2.45rem;padding-block:.45rem}.chessimals-path-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.75rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),rgba(var(--chessimals-sun-rgb),.08)),var(--chessimals-elevated-soft)}.chessimals-path-cta div{display:grid;gap:.18rem;min-width:0}.chessimals-path-cta span,.chessimals-path-hero small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-path-cta strong{color:var(--chessimals-text);font-size:.95rem;font-weight:950;line-height:1.2}.chessimals-path-cta__action{justify-self:end;width:min(12rem,100%);min-width:9.5rem;padding-inline:1.1rem;white-space:nowrap}.chessimals-path-view{display:grid;gap:.85rem}.chessimals-path-loading{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.chessimals-path-loading span{height:88px;border-radius:16px;background:var(--ion-color-light, rgba(0, 0, 0, .06));animation:chessimals-path-shimmer 1.4s ease-in-out infinite}.chessimals-path-loading span:nth-child(odd){animation-delay:.2s}@keyframes chessimals-path-shimmer{0%,to{opacity:.45}50%{opacity:.9}}.chessimals-path-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.26);border-radius:1.25rem;padding:.85rem;background:radial-gradient(circle at 88% 10%,rgba(var(--chessimals-sun-rgb),.18),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent 62%),var(--chessimals-elevated-soft)}.chessimals-path-hero__art{display:block;width:clamp(5.2rem,15vw,7.5rem);height:clamp(5.2rem,15vw,7.5rem);object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero>div:not(.chessimals-path-hero__medal){display:grid;gap:.25rem;min-width:0}.chessimals-path-hero h2{margin:0;color:var(--chessimals-text);font-size:clamp(1.7rem,4vw,2.35rem);font-weight:1000;line-height:1}.chessimals-path-hero p{margin:0;color:var(--chessimals-muted);font-size:.95rem;font-weight:820;line-height:1.35}.chessimals-path-hero__medal{display:grid;place-items:center;width:6.5rem;min-height:6.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.14);border-radius:1rem;background:linear-gradient(180deg,rgba(var(--chessimals-sun-rgb),.2),rgba(var(--chessimals-sky-rgb),.11)),var(--chessimals-elevated);box-shadow:0 16px 28px rgba(var(--chessimals-shadow-rgb),.12)}.chessimals-path-hero__medal img{display:block;width:3rem;height:3rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-hero__medal span{color:var(--chessimals-text);font-size:1.65rem;font-weight:1000;line-height:1}.chessimals-path-hero__medal b{color:var(--chessimals-muted);font-size:.78rem;font-weight:950}.chessimals-path-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem}.chessimals-path-highlights article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;min-height:7.5rem;border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;padding:.7rem;background:radial-gradient(circle at 12% 4%,rgba(var(--chessimals-sun-rgb),.18),transparent 42%),var(--chessimals-elevated-soft)}.chessimals-path-highlights img{display:block;width:4.25rem;height:4.25rem;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.chessimals-path-highlights article div{display:grid;min-width:0;gap:.12rem}.chessimals-path-highlights small{color:var(--chessimals-sky);font-size:.66rem;font-weight:950;letter-spacing:.05em;text-transform:uppercase}.chessimals-path-highlights strong{color:var(--chessimals-text);font-size:1.08rem;font-weight:1000;line-height:1.06}.chessimals-path-highlights span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820;line-height:1.24}.chessimals-path-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.6rem}.chessimals-path-ring,.chessimals-path-panel,.chessimals-path-stats span,.chessimals-path-bars span{border:1px solid rgba(var(--chessimals-primary-rgb),.13);border-radius:1rem;background:var(--chessimals-elevated-soft)}.chessimals-path-ring{display:grid;grid-template-areas:\"ring label\" \"ring detail\";grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.65rem;text-align:left}.chessimals-path-ring>div{position:relative;grid-area:ring;display:grid;place-items:center;width:3.35rem;height:3.35rem;border-radius:999px;background:conic-gradient(var(--chessimals-sky) var(--ring-progress),rgba(var(--chessimals-primary-rgb),.12) 0)}.chessimals-path-ring>div:after{position:absolute;inset:.34rem;border-radius:inherit;background:var(--chessimals-elevated);content:\"\"}.chessimals-path-ring strong{position:relative;z-index:1;color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-path-ring span,.chessimals-path-bars b{color:var(--chessimals-text);font-size:.78rem;font-weight:950}.chessimals-path-ring span{grid-area:label;align-self:end}.chessimals-path-ring small{grid-area:detail;align-self:start;min-width:0}.chessimals-path-ring small{color:var(--chessimals-muted);font-size:.68rem;font-weight:820;line-height:1.25}.chessimals-path-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:.75rem}.chessimals-path-panel{display:grid;gap:.65rem;align-content:start;padding:.75rem}.chessimals-path-panel--wide{grid-column:1 / -1}.chessimals-path-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem}.chessimals-path-stats span{display:grid;gap:.08rem;padding:.6rem}.chessimals-path-stats small{color:var(--chessimals-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.chessimals-path-stats strong{color:var(--chessimals-text);font-size:1.25rem;font-weight:1000}.chessimals-path-bars{display:grid;gap:.45rem}.chessimals-path-bars span{display:grid;grid-template-columns:minmax(0,.9fr) minmax(3rem,1fr) auto;gap:.45rem;align-items:center;padding:.48rem}.chessimals-path-bars i{display:block;height:.48rem;overflow:hidden;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.11)}.chessimals-path-bars i:before{display:block;width:var(--bar-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--chessimals-sky),var(--chessimals-sun));content:\"\"}.chessimals-path-bars strong{color:var(--chessimals-text);font-size:.86rem;font-weight:1000}.chessimals-achievements--path{grid-template-columns:1fr}.chessimals-challenge-history--path{border-top:0;padding-top:0}.chessimals-progress__heading small{color:var(--chessimals-sky);font-size:.68rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-progress__heading{display:flex;flex-wrap:wrap;gap:.35rem;align-items:baseline;justify-content:space-between}.chessimals-progress__heading span{color:var(--chessimals-muted);font-size:.76rem;font-weight:820}.chessimals-challenge-history{display:grid;gap:.35rem;border-top:1px solid rgba(var(--chessimals-primary-rgb),.12);padding-top:.2rem}.chessimals-challenge-history span{display:flex;flex-wrap:wrap;gap:.35rem;color:var(--chessimals-muted);font-size:.82rem;font-weight:820}.chessimals-challenge-history b{color:var(--chessimals-text);font-weight:1000}.chessimals-challenge-summary{display:grid;gap:.6rem;border:0;border-radius:0;padding:0;background:transparent}.chessimals-challenge-summary.is-victory,.chessimals-challenge-summary.is-defeat{background:transparent}.chessimals-challenge-summary__hero,.chessimals-challenge-rival-voice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem}.chessimals-challenge-summary__hero>.chessimals-bot-avatar,.chessimals-challenge-rival-voice>.chessimals-bot-avatar{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:1rem;background:rgba(var(--chessimals-sky-rgb),.16);font-size:1.55rem;box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14)}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar img{filter:grayscale(1) saturate(.15) contrast(.95);opacity:.62}.chessimals-challenge-summary__hero.is-cleared>.chessimals-bot-avatar:after{content:\"\\2713\";position:absolute;right:-.05rem;bottom:-.05rem;display:grid;place-items:center;width:1.25rem;height:1.25rem;border:.12rem solid var(--chessimals-panel);border-radius:999px;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.74rem;font-weight:1000;line-height:1}.chessimals-challenge-summary__hero div,.chessimals-challenge-rival-voice div{display:grid;gap:.12rem;min-width:0}.chessimals-challenge-summary__hero small,.chessimals-challenge-rival-voice small{color:var(--chessimals-muted);font-size:.68rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-challenge-summary strong{font-size:1rem;font-weight:1000}.chessimals-challenge-summary__hero p,.chessimals-challenge-rival-voice p{margin:0;color:var(--chessimals-muted);font-size:.86rem;font-weight:820;line-height:1.28}.chessimals-challenge-rival-voice{border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.95rem;padding:.65rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-summary__actions{display:grid}.chessimals-challenge-summary__play{min-height:3.35rem;font-size:1.02rem;box-shadow:0 .9rem 1.8rem rgba(var(--chessimals-primary-rgb),.26)}.chessimals-result.is-challenge-result .chessimals-challenge-tension,.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{display:grid;grid-template-columns:minmax(0,1fr);border:0;border-radius:.75rem;padding:.45rem .6rem;background:rgba(var(--chessimals-primary-rgb),.07)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.7rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:1rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.12),transparent),rgba(var(--chessimals-primary-rgb),.06)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next>.chessimals-bot-avatar{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--chessimals-elevated-strong);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14),0 .45rem 1rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-result.is-challenge-result .chessimals-challenge-rival--next p{margin:0;color:var(--chessimals-text);font-size:.9rem;font-weight:900;line-height:1.22}.chessimals-result.is-challenge-result .chessimals-challenge-tension.is-critical{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.1)}.chessimals-challenge-rival-voice>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;border-radius:999px;font-size:1.15rem}.chessimals-challenge-summary__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.chessimals-challenge-record{display:flex;align-items:center;gap:.45rem;border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:999px;padding:.45rem .65rem;background:rgba(var(--chessimals-sky-rgb),.14);color:var(--chessimals-text)}.chessimals-challenge-record span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:var(--chessimals-sky);color:#fffaf0;font-size:.82rem}.chessimals-challenge-record strong{font-size:.9rem}.chessimals-challenge-tension{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;border:1px solid rgba(var(--chessimals-sky-rgb),.3);border-radius:.9rem;padding:.65rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension.is-critical{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.38);background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),rgba(var(--chessimals-primary-rgb),.08)),var(--chessimals-elevated)}.chessimals-challenge-tension>span{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(var(--chessimals-sky-rgb),.18);color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-tension.is-critical>span{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.18)}.chessimals-challenge-tension div{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-tension strong{font-size:.95rem}.chessimals-challenge-tension p{font-size:.84rem}.chessimals-challenge-summary__stats span{display:grid;gap:.1rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:.8rem;padding:.45rem;background:var(--chessimals-elevated)}.chessimals-challenge-summary__stats b{color:var(--chessimals-text);font-size:1rem;font-weight:1000}.chessimals-challenge-rival--next em{color:var(--chessimals-muted);font-size:.78rem;font-style:normal;font-weight:820;line-height:1.25;white-space:normal}.chessimals-tip p,.chessimals-powers p{color:var(--chessimals-muted)}.chessimals-learn-more{justify-self:start;min-height:2.75rem;border:0;border-radius:999px;padding:0 1rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font:inherit;font-weight:950;box-shadow:0 .75rem 1.6rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-size,.chessimals-mode,.chessimals-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.chessimals-status{order:3;grid-template-columns:repeat(3,minmax(0,1fr))}.chessimals-size button,.chessimals-mode button,.chessimals-status div{display:grid;gap:.2rem;align-content:center;min-width:0;min-height:3.875rem;padding:.55rem .65rem;border:1px solid var(--chessimals-border);border-radius:1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-size button.is-selected{border-color:var(--chessimals-primary);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-mode button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16)}.chessimals-status__timer{position:relative;overflow:hidden;isolation:isolate;border-color:rgba(var(--chessimals-primary-rgb),.42)!important}.chessimals-status__timer:before{content:\"\";position:absolute;inset:auto 0 0;z-index:0;height:.22rem;transform:scaleX(var(--timer-progress, 1));transform-origin:left center;background:var(--chessimals-primary);transition:transform .18s linear,background .18s ease}.chessimals-status__timer.is-low{border-color:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.58)!important;background:linear-gradient(135deg,rgba(var(--ion-color-danger-rgb, 235, 68, 90),.16),transparent),var(--chessimals-panel)!important;animation:chessimals-turn-pulse .82s ease-in-out infinite}.chessimals-status__timer.is-low:before{background:var(--ion-color-danger, #eb445a)}.chessimals-status__timer.is-low strong{color:var(--ion-color-danger, #eb445a)}.chessimals-status__score.is-pop{border-color:rgba(var(--chessimals-sky-rgb),.42);background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.16),transparent),var(--chessimals-panel);animation:chessimals-score-pulse .62s ease-out both}.chessimals-status__timer small,.chessimals-status__timer strong{position:relative;z-index:1}.chessimals-challenge-live{order:4;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr);gap:.65rem;align-items:stretch;border:1px solid rgba(var(--chessimals-sky-rgb),.28);border-radius:8px;padding:.68rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.13),transparent 52%),var(--chessimals-elevated-soft);color:var(--chessimals-text)}.chessimals-challenge-live__rival{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:center;min-width:0}.chessimals-challenge-live__rival>.chessimals-bot-avatar{display:grid;place-items:center;width:2.7rem;height:2.7rem;border-radius:8px;background:rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.14);font-size:1.35rem}.chessimals-challenge-live__rival div{display:grid;gap:.08rem;min-width:0}.chessimals-challenge-live__rival small,.chessimals-challenge-live__metrics small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:900;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-live__rival strong{overflow:hidden;color:var(--chessimals-text);font-size:1rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-live__rival p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.78rem;font-weight:820;line-height:1.18;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-live__metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.42rem}.chessimals-challenge-live__metrics span{display:grid;gap:.1rem;align-content:center;min-width:0;min-height:3rem;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.4rem .45rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-live__metrics b{overflow:hidden;color:var(--chessimals-text);font-size:.92rem;font-weight:1000;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-tension--live{grid-column:1 / -1;padding:.55rem}.chessimals-difficulty{display:flex;flex-wrap:wrap;gap:.55rem}.chessimals-difficulty button{min-height:2.75rem;border:1px solid var(--chessimals-border);border-radius:999px;padding:0 1rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;font-weight:950}.chessimals-difficulty button.is-selected{border-color:var(--chessimals-primary);background:var(--chessimals-primary);color:#fff}.chessimals-bots{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.625rem}.chessimals-bots button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:\"avatar title\" \"avatar body\" \"avatar tendency\";column-gap:.55rem;row-gap:.12rem;min-width:0;min-height:4.75rem;border:1px solid var(--chessimals-border);border-radius:1rem;padding:.65rem;background:var(--chessimals-panel);color:var(--chessimals-text);font:inherit;text-align:left}.chessimals-bots button>.chessimals-bot-avatar{grid-area:avatar;display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;background:rgba(var(--chessimals-primary-rgb),.12);font-size:1.2rem}.chessimals-bots button strong{grid-area:title;align-self:end;font-size:.95rem;font-weight:950}.chessimals-bots button small{grid-area:body;color:var(--chessimals-muted);font-size:.75rem;font-weight:750;line-height:1.25}.chessimals-bots button p{grid-area:tendency;margin:.12rem 0 0;color:var(--chessimals-muted);font-size:.72rem;font-weight:820;line-height:1.24}.chessimals-bots button.is-selected{border-color:var(--chessimals-primary);background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.13),transparent),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-primary-rgb),.16),0 .75rem 1.5rem rgba(var(--chessimals-primary-rgb),.1)}.chessimals-size strong,.chessimals-mode strong,.chessimals-status strong,.chessimals-result strong,.chessimals-rematch-status strong,.chessimals-tip strong{font-weight:950}.chessimals-status strong{min-width:0;font-size:clamp(.95rem,2.5vw,1.2rem);line-height:1.08;overflow-wrap:anywhere;white-space:normal}.chessimals-size small,.chessimals-mode small,.chessimals-status small{color:var(--chessimals-muted);font-size:.78rem;line-height:1.12}.chessimals-board-wrap{--chessimals-board-radius: min(.85rem, 14px);display:flex;justify-content:center;min-width:0;max-width:100%;overflow-x:auto;width:100%;padding:.25rem 0}.chessimals-board-wrap.is-orienting .chessimals-board-frame{animation:chessimals-orient-board .32s ease}.chessimals-board-wrap.is-finished{overflow-x:visible}.chessimals-board-frame{flex:0 1 58rem;min-width:0;width:100%;max-width:58rem;border-radius:var(--chessimals-board-radius)}.chessimals-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-size),minmax(0,1fr));grid-template-rows:repeat(var(--board-size),minmax(0,1fr));min-width:0;width:100%;aspect-ratio:1 / 1;overflow:hidden;isolation:isolate;contain:paint;border:1px solid var(--chessimals-border);border-radius:var(--chessimals-board-radius);clip-path:inset(0 round var(--chessimals-board-radius));-webkit-mask-image:-webkit-radial-gradient(white,black);background:radial-gradient(ellipse at 16% 18%,rgba(255,255,255,.34),transparent 18%),radial-gradient(ellipse at 82% 78%,rgba(var(--chessimals-primary-rgb),.1),transparent 22%),radial-gradient(ellipse at 32% 68%,rgba(var(--chessimals-stone-rgb),.05),transparent 30%),radial-gradient(ellipse at 66% 34%,rgba(255,255,255,.08),transparent 24%),var(--chessimals-border);box-shadow:inset 0 0 0 1px #ffffff1a,0 .85rem 2.1rem var(--chessimals-board-shadow)}.chessimals-board-wrap.is-syncing .chessimals-board{cursor:wait}.chessimals-cell-coordinate{position:absolute;z-index:5;color:color-mix(in srgb,var(--chessimals-muted) 78%,var(--chessimals-text));font-size:.68rem;font-weight:950;letter-spacing:.02em;line-height:1;pointer-events:none;text-transform:uppercase;-webkit-user-select:none;user-select:none}.chessimals-cell-coordinate--rank{top:.2rem;left:.24rem}.chessimals-cell-coordinate--file{right:.24rem;bottom:.18rem}@keyframes chessimals-orient-board{0%{opacity:.72;filter:blur(.06rem);transform:scale(.985)}52%{opacity:.92;filter:blur(0);transform:scale(1.012)}to{opacity:1;filter:blur(0);transform:scale(1)}}.chessimals-center-line{position:absolute;top:50%;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:center;border-top:.08rem dashed rgba(var(--chessimals-primary-rgb),.56);filter:drop-shadow(0 0 .24rem rgba(var(--chessimals-primary-rgb),.26));pointer-events:none}.chessimals-power-trail{position:absolute;inset:0;z-index:5;pointer-events:none;--trail-color: rgba(var(--chessimals-magic-rgb), .88);--trail-glow: rgba(var(--chessimals-magic-rgb), .48)}.chessimals-power-trail.is-capture{--trail-color: rgba(var(--chessimals-capture-rgb), .86);--trail-glow: rgba(var(--chessimals-capture-rgb), .46)}.chessimals-power-trail.effect-eagle{--trail-color: rgba(255, 255, 255, .92);--trail-glow: rgba(120, 210, 255, .54)}.chessimals-power-trail.effect-bull{--trail-color: rgba(188, 131, 76, .86);--trail-glow: rgba(188, 131, 76, .36)}.chessimals-power-trail.effect-kangaroo{--trail-color: rgba(174, 124, 255, .86);--trail-glow: rgba(174, 124, 255, .42)}.chessimals-power-trail.effect-lion{--trail-color: rgba(255, 221, 120, .88);--trail-glow: rgba(255, 190, 56, .42)}.chessimals-power-trail>span{position:absolute;top:var(--trail-y);left:var(--trail-x);width:var(--trail-length);height:.45rem;border-radius:999px;background:linear-gradient(90deg,transparent,var(--trail-color) 42%,rgba(255,255,255,.92));box-shadow:0 0 .75rem var(--trail-glow),0 0 1.45rem var(--trail-glow);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0);transform-origin:0 50%;animation:chessimals-power-trail .72s ease-out both}.chessimals-power-trail.effect-eagle>span{height:.28rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95) 44%,rgba(120,210,255,.58)),repeating-linear-gradient(90deg,transparent 0 .7rem,rgba(255,255,255,.66) .7rem .92rem);animation-name:chessimals-eagle-trail}.chessimals-power-trail.effect-bull>span{height:.72rem;background:repeating-linear-gradient(90deg,rgba(255,255,255,.42) 0 .18rem,transparent .18rem .42rem),linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.86));animation-name:chessimals-bull-trail}.chessimals-power-trail.effect-kangaroo>span{height:1rem;border-top:.16rem dashed var(--trail-color);background:transparent;box-shadow:none;filter:drop-shadow(0 0 .8rem var(--trail-glow));animation-name:chessimals-kangaroo-trail}.chessimals-power-trail.effect-lion>span{height:.62rem;background:linear-gradient(90deg,transparent,var(--trail-color),rgba(255,255,255,.82)),repeating-linear-gradient(115deg,rgba(255,255,255,.55) 0 .12rem,transparent .12rem .34rem);animation-name:chessimals-lion-trail}@keyframes chessimals-power-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}28%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.72)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-eagle-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) skew(-10deg)}30%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.82) skew(-10deg)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1.05) skew(-10deg)}}@keyframes chessimals-bull-trail{0%{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0) scaleY(1)}38%{opacity:1;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.7) scaleY(1.18)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1) scaleY(.82)}}@keyframes chessimals-kangaroo-trail{0%{opacity:0;transform:translateY(-.4rem) rotate(var(--trail-angle)) scaleX(0)}34%{opacity:1;transform:translateY(-1.2rem) rotate(var(--trail-angle)) scaleX(.62)}to{opacity:0;transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-lion-trail{0%{opacity:0;filter:saturate(1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(0)}36%{opacity:1;filter:saturate(1.4);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(.76)}to{opacity:0;filter:saturate(1.1);transform:translateY(-50%) rotate(var(--trail-angle)) scaleX(1)}}@keyframes chessimals-score-pulse{0%,to{transform:translateZ(0) scale(1)}42%{transform:translateZ(0) scale(1.035)}}.chessimals-challenge-intro{position:absolute;inset:0;z-index:7;display:grid;place-items:center;padding:clamp(.75rem,4vw,1.35rem);background:radial-gradient(circle at 50% 36%,rgba(var(--chessimals-sky-rgb),.24),transparent 34%),linear-gradient(135deg,#140c167a,#08120d57);backdrop-filter:blur(1.5px);animation:chessimals-challenge-intro-in .26s ease-out both}.chessimals-challenge-intro__card{display:grid;justify-items:center;gap:.55rem;width:min(18rem,92%);border:1px solid rgba(var(--chessimals-sky-rgb),.34);border-radius:8px;padding:.85rem;background:linear-gradient(135deg,rgba(var(--chessimals-sky-rgb),.14),transparent),var(--chessimals-elevated-strong);color:var(--chessimals-text);box-shadow:0 1.1rem 2.3rem #0000003d,inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.08);text-align:center}.chessimals-challenge-intro__avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:8px;background:radial-gradient(circle at 35% 24%,var(--chessimals-glass-highlight),transparent 30%),rgba(var(--chessimals-sky-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--chessimals-primary-rgb),.16),0 .7rem 1.5rem rgba(var(--chessimals-sky-rgb),.18);font-size:2.15rem}.chessimals-challenge-intro__copy{display:grid;gap:.14rem;min-width:0}.chessimals-challenge-intro__copy small,.chessimals-challenge-intro__facts small{overflow:hidden;color:var(--chessimals-muted);font-size:.64rem;font-weight:950;letter-spacing:0;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.chessimals-challenge-intro__copy strong{overflow:hidden;color:var(--chessimals-text);font-size:1.35rem;font-weight:1000;line-height:1.04;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro__copy p{display:-webkit-box;overflow:hidden;margin:0;color:var(--chessimals-muted);font-size:.88rem;font-weight:820;line-height:1.24;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-challenge-intro__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;width:100%}.chessimals-challenge-intro__facts span{display:grid;gap:.1rem;min-width:0;border:1px solid rgba(var(--chessimals-primary-rgb),.12);border-radius:8px;padding:.38rem;background:var(--chessimals-elevated-soft)}.chessimals-challenge-intro__facts b{overflow:hidden;color:var(--chessimals-text);font-size:.86rem;font-weight:1000;text-overflow:ellipsis;white-space:nowrap}.chessimals-challenge-intro .chessimals-primary{min-height:2.45rem;width:100%}@keyframes chessimals-challenge-intro-in{0%{opacity:0}to{opacity:1}}.chessimals-board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-content:center;gap:.5rem;padding:1.25rem 1.25rem 5.5rem;background:radial-gradient(circle at 50% 34%,rgba(255,226,129,.34),transparent 24%),radial-gradient(circle at 50% 52%,rgba(var(--chessimals-primary-rgb),.34),transparent 42%),linear-gradient(135deg,#140c16e0,#08120dc7);color:#fff;text-align:center;backdrop-filter:blur(2px);overflow:hidden}.chessimals-board-overlay.is-defeat{background:radial-gradient(circle at 50% 34%,rgba(143,168,206,.26),transparent 24%),radial-gradient(circle at 50% 52%,rgba(72,86,115,.42),transparent 42%),linear-gradient(135deg,#090c14e6,#1c1e2bcc)}.chessimals-board-overlay:before{position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.58) 0 .08rem,transparent .1rem),radial-gradient(circle at 75% 25%,rgba(255,226,129,.7) 0 .1rem,transparent .12rem),radial-gradient(circle at 68% 72%,rgba(var(--chessimals-capture-rgb),.54) 0 .08rem,transparent .1rem),radial-gradient(circle at 35% 78%,rgba(255,255,255,.48) 0 .07rem,transparent .09rem),radial-gradient(circle at 84% 66%,rgba(255,255,255,.38) 0 .06rem,transparent .08rem),radial-gradient(circle at 14% 64%,rgba(255,226,129,.48) 0 .07rem,transparent .09rem);content:\"\";opacity:.72;animation:chessimals-victory-sparks 1.5s ease-in-out infinite}.chessimals-board-overlay__rays{position:absolute;inset:-18%;background:conic-gradient(from 8deg,transparent 0 7deg,rgba(255,226,129,.16) 7deg 11deg,transparent 11deg 22deg);opacity:.85;animation:chessimals-finale-rays 8s linear infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__rays{background:conic-gradient(from 8deg,transparent 0 8deg,rgba(180,204,240,.1) 8deg 12deg,transparent 12deg 24deg);animation-duration:12s}.chessimals-board-overlay__ribbon{position:absolute;top:-20%;width:.42rem;height:54%;border-radius:999px;background:linear-gradient(to bottom,transparent,rgba(255,226,129,.72),transparent);opacity:.7;transform:rotate(var(--ribbon-angle, 12deg));animation:chessimals-finale-ribbon 2.5s ease-in-out infinite}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__ribbon{background:linear-gradient(to bottom,transparent,rgba(180,204,240,.42),transparent);opacity:.48}.chessimals-board-overlay__ribbon.ribbon-a{left:18%;--ribbon-angle: -18deg}.chessimals-board-overlay__ribbon.ribbon-b{left:50%;--ribbon-angle: 8deg;animation-delay:.32s}.chessimals-board-overlay__ribbon.ribbon-c{right:18%;--ribbon-angle: 20deg;animation-delay:.64s}.chessimals-board-overlay>*{position:relative;z-index:1}.chessimals-board-overlay span{justify-self:center;border-radius:999px;padding:.32rem .7rem;background:#ffffff26;color:#ffffffe6;font-size:.76rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay strong{font-size:clamp(1.65rem,8vw,3rem);line-height:1;font-weight:950;text-shadow:0 0 1.25rem rgba(255,255,255,.26)}.chessimals-board-overlay em{justify-self:center;display:grid;place-items:center;width:clamp(3rem,14vw,4.6rem);height:clamp(3rem,14vw,4.6rem);border:.16rem solid rgba(255,255,255,.62);border-radius:50%;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.72),transparent 18%),linear-gradient(135deg,#ffe281,#b98436);color:#2d2412;font-size:clamp(1.1rem,5vw,1.65rem);font-style:normal;font-weight:950;box-shadow:0 0 0 .45rem #ffe2811f,0 1rem 2rem #00000042;animation:chessimals-finale-medal 1.8s ease-in-out infinite}.chessimals-board-overlay.is-defeat em{background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.48),transparent 18%),linear-gradient(135deg,#d9e2ef,#69758e);color:#182032;box-shadow:0 0 0 .45rem #b4ccf01a,0 1rem 2rem #00000052}.chessimals-board-overlay em.has-avatar{overflow:hidden;background:#fff;padding:0}.chessimals-board-overlay em.has-avatar img{display:block;width:100%;height:100%;object-fit:cover}.chessimals-board-overlay b{justify-self:center;color:#fffc;font-size:.8rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}.chessimals-board-overlay small{color:#ffffffd1;font-size:clamp(.9rem,3vw,1.1rem);font-weight:800}.chessimals-board-overlay__actions{position:absolute;bottom:1.1rem;left:50%;transform:translate(-50%);z-index:2;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;width:calc(100% - 2.5rem);max-width:22rem}.chessimals-board-overlay__actions .chessimals-action-button{flex:1 1 auto;min-width:min(100%,8rem);padding:.65rem 1.1rem;font-size:.875rem;border-radius:999px}.chessimals-board-overlay .chessimals-primary{background:#fffffff2;color:#1a2a1a;box-shadow:0 .5rem 1.5rem #0000004d}.chessimals-board-overlay .chessimals-secondary{border-color:#ffffff7a;background:#ffffff1f;color:#ffffffeb}.chessimals-board-overlay__rival-name{justify-self:center;margin:-.2rem 0 0;font-size:clamp(.75rem,3vw,.9rem);font-weight:700;color:#ffffffb8;letter-spacing:.04em}.chessimals-board-overlay__adv-stars{display:flex;justify-content:center;gap:.3rem;margin-top:-.1rem}.chessimals-board-overlay__adv-stars span{font-size:clamp(1.5rem,8vw,2.2rem);color:var(--chessimals-magic, #f7d45a);opacity:.28;filter:drop-shadow(0 0 .4rem rgba(247,212,90,0));transition:opacity .3s ease,filter .3s ease}.chessimals-board-overlay__adv-stars span.is-earned{opacity:1;filter:drop-shadow(0 0 .5rem rgba(247,212,90,.7));animation:chessimals-star-pop .4s cubic-bezier(.34,1.56,.64,1) both}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(2){animation-delay:.12s}.chessimals-board-overlay__adv-stars span.is-earned:nth-child(3){animation-delay:.24s}@keyframes chessimals-star-pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.chessimals-board-overlay__adv-caption{justify-self:center;margin:0;padding:0 1rem;font-size:clamp(.75rem,3vw,.88rem);font-weight:700;color:#fffc;text-align:center;line-height:1.4}.chessimals-board-overlay.is-defeat .chessimals-board-overlay__adv-caption{color:#b4ccf0e0}.chessimals-board-overlay__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;width:min(26rem,92%);margin:.2rem auto 0}.chessimals-board-overlay__stats div{display:grid;gap:.08rem;min-width:0;border:1px solid rgba(255,255,255,.18);border-radius:.75rem;padding:.42rem .46rem;background:#ffffff1a;backdrop-filter:blur(3px)}.chessimals-board-overlay__stats dt,.chessimals-board-overlay__stats dd{overflow:hidden;margin:0;text-overflow:ellipsis;white-space:nowrap}.chessimals-board-overlay__stats dt{color:#ffffffad;font-size:clamp(.52rem,2.1vw,.66rem);font-weight:950;letter-spacing:.04em;text-transform:uppercase}.chessimals-board-overlay__stats dd{color:#fff;font-size:clamp(.68rem,2.8vw,.88rem);font-weight:950}@keyframes chessimals-victory-sparks{0%,to{opacity:.46;transform:translateY(0) scale(.98)}50%{opacity:.95;transform:translateY(-.35rem) scale(1.02)}}@keyframes chessimals-finale-rays{to{transform:rotate(360deg)}}@keyframes chessimals-finale-ribbon{0%,to{opacity:.18;transform:translateY(-.5rem) rotate(var(--ribbon-angle))}50%{opacity:.75;transform:translateY(1.4rem) rotate(var(--ribbon-angle))}}@keyframes chessimals-finale-medal{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-.18rem) scale(1.04)}}.chessimals-cell{position:relative;isolation:isolate;--chessimals-cell-bg: var(--chessimals-cell-light);display:grid;place-items:center;min-width:0;min-height:0;aspect-ratio:1;border:0;background:radial-gradient(ellipse at 26% 24%,rgba(255,255,255,.12),transparent 24%),radial-gradient(ellipse at 78% 76%,rgba(61,54,36,.06),transparent 28%),linear-gradient(135deg,rgba(255,255,255,.04),transparent 52%,rgba(52,44,28,.04)),var(--chessimals-cell-bg);color:var(--chessimals-text);font:inherit;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.chessimals-cell:before,.chessimals-cell:after{pointer-events:none}.chessimals-cell-texture{position:absolute;inset:0;z-index:0;display:block;pointer-events:none;opacity:.42;mix-blend-mode:multiply;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.16),transparent 17%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.09),transparent 25%),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.045) 0 1px,transparent 1px .52rem),linear-gradient(135deg,rgba(255,255,255,.06),transparent 42%,rgba(52,44,28,.045))}.chessimals-cell-texture:after{position:absolute;inset:.08rem;border:1px solid rgba(75,66,42,.05);border-radius:.18rem;box-shadow:inset .08rem .08rem #ffffff14,inset -.08rem -.08rem #342c1c0b;content:\"\"}.chessimals-cell.is-edge-cell .chessimals-cell-texture{opacity:.56;background:radial-gradient(ellipse at var(--wear-x, 28%) var(--wear-y, 32%),rgba(255,255,255,.14),transparent 18%),radial-gradient(ellipse at var(--wear-x2, 74%) var(--wear-y2, 68%),rgba(75,66,42,.14),transparent 28%),linear-gradient(135deg,rgba(70,52,28,.055),transparent 44%,rgba(52,44,28,.09)),repeating-linear-gradient(var(--wear-angle, 26deg),rgba(75,66,42,.055) 0 1px,transparent 1px .48rem)}.chessimals-cell.wear-0{--wear-x: 22%;--wear-y: 24%;--wear-x2: 78%;--wear-y2: 72%;--wear-angle: 18deg}.chessimals-cell.wear-1{--wear-x: 64%;--wear-y: 18%;--wear-x2: 30%;--wear-y2: 76%;--wear-angle: -24deg}.chessimals-cell.wear-2{--wear-x: 42%;--wear-y: 58%;--wear-x2: 82%;--wear-y2: 26%;--wear-angle: 42deg}.chessimals-cell.wear-3{--wear-x: 74%;--wear-y: 68%;--wear-x2: 24%;--wear-y2: 28%;--wear-angle: -12deg}.chessimals-cell.wear-4{--wear-x: 34%;--wear-y: 18%;--wear-x2: 62%;--wear-y2: 84%;--wear-angle: 64deg}.chessimals-cell.wear-5{--wear-x: 18%;--wear-y: 70%;--wear-x2: 70%;--wear-y2: 34%;--wear-angle: -48deg}:host-context(html.ion-palette-dark) .chessimals-cell-texture,:host-context([data-theme=\"dark\"]) .chessimals-cell-texture{opacity:.34;mix-blend-mode:soft-light}.chessimals-cell.is-dark-cell{--chessimals-cell-bg: var(--chessimals-cell-dark)}.chessimals-cell.is-selected{z-index:1;background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.28) 0 36%,transparent 62%),linear-gradient(135deg,rgba(var(--chessimals-selected-rgb),.22),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-selected),inset 0 0 .55rem #ffffffb8,inset 0 0 1.8rem rgba(var(--chessimals-selected-rgb),.42),0 0 .55rem rgba(var(--chessimals-selected-rgb),.56),0 0 1.55rem rgba(var(--chessimals-selected-rgb),.36)}.chessimals-board.is-power-aiming .chessimals-cell.is-selected{background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-magic-rgb),.38) 0 34%,transparent 64%),radial-gradient(circle at 32% 24%,rgba(255,255,255,.34),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .18rem var(--chessimals-magic-hot),inset 0 0 .8rem #ffffffa8,inset 0 0 1.9rem rgba(var(--chessimals-magic-rgb),.5),0 0 .7rem rgba(var(--chessimals-magic-rgb),.62),0 0 1.75rem rgba(var(--chessimals-magic-rgb),.42)}.chessimals-board.is-power-aiming .chessimals-cell.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-magic-rgb),.94);box-shadow:0 0 .72rem rgba(var(--chessimals-magic-rgb),.48),inset 0 0 .6rem #fff3}.chessimals-board.is-power-aiming .chessimals-target{background:var(--chessimals-magic-hot);box-shadow:0 0 0 .2rem rgba(var(--chessimals-magic-rgb),.2),0 0 .95rem rgba(var(--chessimals-magic-rgb),.62)}.chessimals-cell.is-legal:not(.is-capture):after{position:absolute;inset:13%;z-index:2;border:max(2px,1.8%) solid var(--chessimals-move);border-radius:.55rem;content:\"\";opacity:.74;pointer-events:none}.chessimals-cell.is-last:not(.is-selected):not(.is-legal):not(.is-capture){background:radial-gradient(circle,rgba(var(--chessimals-last-rgb),.16) 0 42%,transparent 68%),var(--chessimals-cell-bg)}.chessimals-cell.is-capture{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.24),transparent 34%),linear-gradient(135deg,rgba(var(--chessimals-capture-rgb),.14),#ffffff14),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .14rem rgba(var(--chessimals-capture-rgb),.84),inset 0 0 1.4rem rgba(var(--chessimals-capture-rgb),.24),0 0 .95rem rgba(var(--chessimals-capture-rgb),.34);animation:chessimals-capture-aura 1.35s ease-in-out infinite}.chessimals-cell.is-capture:before{position:absolute;inset:4%;z-index:1;display:block;border-radius:.64rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.52),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.24),transparent 58%);content:\"\";opacity:0;transform:translate(-42%) scale(.9);animation:chessimals-capture-sweep 1.35s ease-in-out infinite}.chessimals-cell.is-capture:after{position:absolute;inset:8%;z-index:3;border:max(2px,1.55%) solid rgba(var(--chessimals-capture-rgb),.9);border-radius:.62rem;box-shadow:0 0 .75rem rgba(var(--chessimals-capture-rgb),.5),inset 0 0 .72rem #ffffff38;content:\"\";pointer-events:none;animation:chessimals-capture-frame 1.35s ease-in-out infinite}.chessimals-cell.has-capture-ready:not(.is-selected):after{position:absolute;inset:16%;z-index:3;border:max(2px,1.45%) solid rgba(var(--chessimals-selected-rgb),.72);border-radius:999px;box-shadow:0 0 .65rem rgba(var(--chessimals-selected-rgb),.34),inset 0 0 .55rem #ffffff2e;content:\"\"}.chessimals-cell.is-winning.is-legal:not(.is-capture):after{border-color:rgba(var(--chessimals-warning-rgb),.92);border-radius:999px;box-shadow:0 0 .75rem rgba(var(--chessimals-warning-rgb),.48),inset 0 0 .58rem #ffffff38}.chessimals-cell.is-winning .chessimals-target{background:var(--chessimals-warning);box-shadow:0 0 0 .22rem rgba(var(--chessimals-warning-rgb),.2),0 0 .95rem rgba(var(--chessimals-warning-rgb),.56)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture){background:radial-gradient(circle at 50% 52%,rgba(var(--chessimals-warning-rgb),.16),transparent 52%),var(--chessimals-cell-bg)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-white-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture) .chessimals-piece.is-black{filter:drop-shadow(0 0 .38rem rgba(var(--chessimals-warning-rgb),.52)) var(--chessimals-piece-black-shadow)}.chessimals-cell.has-threat:not(.is-selected):not(.is-capture):before{position:absolute;top:.26rem;right:.26rem;z-index:4;width:.48rem;height:.48rem;border-radius:999px;background:rgba(var(--chessimals-warning-rgb),.96);box-shadow:0 0 0 .18rem rgba(var(--chessimals-warning-rgb),.22);content:\"\"}@keyframes chessimals-capture-aura{0%,to{filter:saturate(1);box-shadow:inset 0 0 0 .12rem rgba(var(--chessimals-capture-rgb),.78),inset 0 0 1rem rgba(var(--chessimals-capture-rgb),.2),0 0 .64rem rgba(var(--chessimals-capture-rgb),.32)}50%{filter:saturate(1.22);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.96),inset 0 0 1.34rem rgba(var(--chessimals-capture-rgb),.34),0 0 1.2rem rgba(var(--chessimals-capture-rgb),.48)}}@keyframes chessimals-capture-sweep{0%{opacity:0;transform:translate(-52%) scale(.88)}42%{opacity:.66;transform:translate(0) scale(1)}to{opacity:0;transform:translate(48%) scale(.92)}}@keyframes chessimals-capture-frame{0%,to{opacity:.68;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}.chessimals-cell.has-source-effect:not(.is-moving-source){background:radial-gradient(circle,rgba(var(--chessimals-selected-rgb),.12) 0 34%,transparent 64%),var(--chessimals-cell-bg)}.chessimals-cell.has-move-effect{z-index:2;background:radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.22) 0 34%,transparent 68%),var(--chessimals-cell-bg);box-shadow:inset 0 0 0 .16rem rgba(var(--chessimals-capture-rgb),.86),inset 0 0 1.2rem rgba(var(--chessimals-capture-rgb),.26),0 0 1.1rem rgba(var(--chessimals-capture-rgb),.42)}.chessimals-cell.has-move-effect:before{position:absolute;inset:.12rem;z-index:1;display:block;border-radius:.7rem;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.48),transparent 22%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.42),transparent 58%);content:\"\";opacity:0;transform:scale(.72);animation:chessimals-power-impact .7s ease-out both}.chessimals-cell.has-move-effect:after{position:absolute;inset:.28rem;z-index:4;display:block;border:.14rem solid rgba(255,255,255,.72);border-radius:.58rem;box-shadow:0 0 .5rem #ffffff5c,0 0 1rem rgba(var(--chessimals-capture-rgb),.32);content:\"\";animation:chessimals-power-frame .86s ease-out both}.chessimals-cell.has-capture-effect{animation:chessimals-capture-hit .78s ease-out both}.chessimals-cell.effect-eagle:before{background:linear-gradient(135deg,transparent 10%,rgba(255,255,255,.78) 48%,transparent 52%),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.36),transparent 62%)}.chessimals-cell.effect-bull:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 .16rem,transparent .16rem .34rem),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.38),transparent 62%)}.chessimals-cell.effect-kangaroo:before{border-radius:999px;background:radial-gradient(circle at 42% 44%,rgba(255,255,255,.58),transparent 18%),radial-gradient(circle at 58% 56%,rgba(var(--chessimals-capture-rgb),.4),transparent 64%)}.chessimals-cell.effect-lion:before{background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.56),transparent,rgba(var(--chessimals-capture-rgb),.4),transparent),radial-gradient(circle at 50% 50%,rgba(var(--chessimals-capture-rgb),.34),transparent 62%)}@keyframes chessimals-power-impact{0%{opacity:0;transform:scale(.54) rotate(0)}28%{opacity:1;transform:scale(.96) rotate(2deg)}to{opacity:0;transform:scale(1.3) rotate(8deg)}}@keyframes chessimals-power-frame{0%{opacity:0;transform:scale(.84)}34%{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(1.16)}}@keyframes chessimals-capture-hit{0%,to{filter:saturate(1)}35%{filter:saturate(1.35) brightness(1.08)}}.chessimals-cell.is-moving-source .chessimals-piece{opacity:0}.chessimals-piece{position:relative;z-index:2;display:block;width:68%;height:74%;color:var(--chessimals-primary);--chessimals-piece-fill: var(--chessimals-piece-white-fill);--chessimals-piece-side: var(--chessimals-piece-white-side);--chessimals-piece-line: var(--chessimals-piece-white-line);--chessimals-piece-outline: rgba(82, 65, 46, .34);filter:var(--chessimals-piece-white-shadow)}.chessimals-piece.is-black{color:#fff;--chessimals-piece-fill: var(--chessimals-piece-black-fill);--chessimals-piece-side: var(--chessimals-piece-black-side);--chessimals-piece-line: var(--chessimals-piece-black-line);--chessimals-piece-outline: rgba(255, 255, 255, .22);filter:var(--chessimals-piece-black-shadow)}.chessimals-moving-piece{position:absolute;top:0;left:0;z-index:6;width:calc(100% / var(--board-size));height:calc(100% / var(--board-size));display:grid;place-items:center;pointer-events:none;transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%));animation:chessimals-piece-travel .36s cubic-bezier(.2,.82,.24,1) both}@keyframes chessimals-piece-travel{0%{transform:translate(calc(var(--from-col) * 100%),calc(var(--from-row) * 100%)) scale(1)}68%{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1.07)}to{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%)) scale(1)}}.chessimals-piece__side,.chessimals-piece__head,.chessimals-piece__collar,.chessimals-piece__neck,.chessimals-piece__base{position:absolute;display:block;left:50%;background:var(--chessimals-piece-fill);border:max(1px,1.25%) solid var(--chessimals-piece-outline);transform:translate(-50%)}.chessimals-piece__side{top:46%;z-index:0;width:58%;height:41%;border-radius:34% 34% 12% 12%;background:linear-gradient(96deg,var(--chessimals-piece-side) 0 34%,transparent 35%),var(--chessimals-piece-fill);clip-path:polygon(22% 0,78% 0,96% 100%,4% 100%);opacity:.92}.chessimals-piece__head{top:1%;z-index:4;width:48%;height:40%;border-radius:999px;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.72) 0 13%,transparent 14%),linear-gradient(135deg,rgba(255,255,255,.28) 0 34%,transparent 35%),var(--chessimals-piece-fill);box-shadow:inset -.18rem -.12rem #52412e0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece.is-black .chessimals-piece__head{box-shadow:inset .18rem -.12rem #ffffff0f,inset 0 -1px 0 var(--chessimals-piece-line)}.chessimals-piece__collar{top:37%;z-index:5;width:72%;height:15%;border-radius:999px;background:linear-gradient(180deg,#f5cd77 0%,var(--chessimals-piece-gold) 55%,var(--chessimals-piece-gold-dark) 100%);border-color:color-mix(in srgb,var(--chessimals-piece-gold-dark) 72%,transparent);box-shadow:inset 0 .12rem #ffffff47,inset 0 -.08rem #462e1238,0 .08rem .18rem #462e1224}.chessimals-piece__neck{top:50%;z-index:2;width:52%;height:31%;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%);background:linear-gradient(100deg,var(--chessimals-piece-side) 0 28%,transparent 29%),linear-gradient(180deg,var(--chessimals-piece-fill),color-mix(in srgb,var(--chessimals-piece-fill) 78%,var(--chessimals-piece-side)));box-shadow:inset -.12rem .1rem #ffffff14}.chessimals-piece__base{bottom:0;z-index:6;width:86%;height:17%;border-radius:.42rem .42rem .22rem .22rem;background:linear-gradient(100deg,var(--chessimals-piece-side) 0 18%,transparent 19%),linear-gradient(180deg,color-mix(in srgb,var(--chessimals-piece-fill) 92%,#ffffff),var(--chessimals-piece-fill));box-shadow:inset 0 .12rem #ffffff24,inset 0 -.1rem 0 var(--chessimals-piece-line)}.chessimals-target{width:16%;height:16%;border-radius:999px;background:var(--chessimals-move);opacity:.9;box-shadow:0 0 .9rem rgba(var(--chessimals-move-rgb),.42)}.chessimals-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.chessimals-cards button{position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(5.4rem,1fr) auto;gap:.5rem;place-items:stretch;min-height:8.15rem;padding:.55rem .55rem .7rem;border:.12rem solid rgba(var(--chessimals-magic-rgb),.54);border-radius:1.125rem;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.9),transparent 36%),linear-gradient(180deg,rgba(var(--chessimals-magic-rgb),.24),rgba(var(--chessimals-magic-deep),.08) 58%,transparent),var(--chessimals-panel);color:var(--chessimals-text);font:inherit;box-shadow:inset 0 0 0 .14rem #ffffff75,0 .55rem 1.2rem rgba(var(--chessimals-magic-rgb),.14);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.chessimals-powers__heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.chessimals-powers p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.chessimals-powers__heading span{flex:0 0 auto;border-radius:999px;padding:.28rem .62rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.78rem;font-weight:950}.chessimals-cards button.is-selected{border-color:var(--chessimals-magic-hot);background:radial-gradient(circle at 50% 16%,rgba(255,255,255,.42),transparent 30%),radial-gradient(circle at 50% 76%,rgba(var(--chessimals-magic-rgb),.2),transparent 56%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.2),#ffffff0a),var(--chessimals-panel);box-shadow:0 0 0 2px rgba(var(--chessimals-magic-rgb),.28),0 0 1.35rem rgba(var(--chessimals-magic-rgb),.48),0 .9rem 2rem rgba(var(--chessimals-magic-rgb),.18);transform:translateY(-1px)}.chessimals-cards button.is-selected:before,.chessimals-cards button.is-selected:after{position:absolute;inset:-.5rem;z-index:0;border-radius:inherit;content:\"\";pointer-events:none}.chessimals-cards button>*{position:relative;z-index:1}.chessimals-cards button.is-selected:before{background:radial-gradient(circle at 18% 24%,rgba(var(--chessimals-magic-rgb),.88) 0 .08rem,transparent .1rem),radial-gradient(circle at 78% 20%,rgba(255,255,255,.86) 0 .07rem,transparent .09rem),radial-gradient(circle at 86% 62%,rgba(var(--chessimals-magic-rgb),.72) 0 .06rem,transparent .08rem),radial-gradient(circle at 28% 78%,rgba(255,245,111,.78) 0 .07rem,transparent .09rem),radial-gradient(circle at 54% 8%,rgba(255,255,255,.68) 0 .05rem,transparent .07rem);opacity:.8;animation:chessimalsMagicParticles 1.8s ease-in-out infinite}.chessimals-cards button.is-selected:after{background:conic-gradient(from 12deg,transparent 0 16deg,rgba(var(--chessimals-magic-rgb),.2) 16deg 22deg,transparent 22deg 44deg);opacity:.68;filter:blur(.04rem);animation:chessimalsMagicAura 3.2s linear infinite}.chessimals-cards button.is-used{opacity:.42}.chessimals-animal-face{display:grid;place-items:center;width:100%;min-height:5.4rem;overflow:hidden;border:.12rem solid rgba(var(--chessimals-magic-deep),.62);border-radius:.9rem;background:radial-gradient(circle at 50% 34%,rgba(255,255,255,.96),transparent 44%),linear-gradient(135deg,rgba(var(--chessimals-magic-rgb),.38),rgba(var(--chessimals-magic-deep),.14)),var(--chessimals-animal-face-bg);color:color-mix(in srgb,var(--chessimals-text) 92%,#000);box-shadow:inset 0 0 0 .12rem #ffffff7a,inset 0 -.18rem .45rem rgba(var(--chessimals-magic-deep),.14)}.chessimals-animal-face img{display:block;width:min(5.45rem,88%);height:min(5.45rem,88%);pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain;transform:none;filter:var(--chessimals-animal-face-filter)}.chessimals-bot-avatar,.chessimals-challenge-intro__avatar{display:grid;overflow:hidden;place-items:center}.chessimals-bot-avatar img,.chessimals-challenge-intro__avatar img{display:block;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;object-fit:contain}.chessimals-cards button.is-selected .chessimals-animal-face,.chessimals-powers.is-ready .chessimals-cards button:not(.is-used) .chessimals-animal-face{color:color-mix(in srgb,var(--chessimals-text) 94%,#000)}.chessimals-powers.is-locked .chessimals-animal-face{filter:var(--chessimals-animal-face-locked-filter);opacity:.86}.chessimals-powers.is-locked .chessimals-animal-face img,.chessimals-cards button.is-used .chessimals-animal-face img{opacity:var(--chessimals-animal-face-locked-img-opacity)}.chessimals-power-uses{position:absolute;top:.5rem;right:.5rem;z-index:2;display:inline-grid;place-items:center;min-width:1.72rem;height:1.35rem;border-radius:999px;padding:0 .38rem;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);font-size:.72rem;font-weight:1000;line-height:1;box-shadow:0 .35rem .9rem rgba(var(--chessimals-primary-rgb),.22)}.chessimals-cards strong{overflow:hidden;max-width:100%;align-self:center;font-size:clamp(.9rem,2.3vw,1.08rem);font-weight:950;line-height:1.05;text-align:center;text-overflow:ellipsis;white-space:nowrap}.chessimals-powers.is-locked .chessimals-cards{opacity:.68}.chessimals-powers.is-ready{border-color:rgba(var(--chessimals-magic-rgb),.46);box-shadow:0 0 0 1px rgba(var(--chessimals-magic-rgb),.12),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}.chessimals-powers.is-ready .chessimals-cards button:not(.is-used){animation:chessimalsPowerPulse 1.8s ease-in-out infinite}.chessimals-powers.is-unlock-pulse{animation:chessimalsPowersUnlocked 1.18s ease-out both}.chessimals-powers.is-unlock-pulse .chessimals-cards button:not(.is-used){animation:chessimalsPowerIgnite .76s ease-out both,chessimalsPowerPulse 1.8s ease-in-out .76s infinite}@keyframes chessimalsPowerPulse{0%,to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}50%{box-shadow:0 0 1.4rem rgba(var(--chessimals-magic-rgb),.24)}}@keyframes chessimalsPowersUnlocked{0%{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}34%{box-shadow:0 0 0 .18rem rgba(var(--chessimals-magic-rgb),.28),0 0 2.2rem rgba(var(--chessimals-magic-rgb),.38),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.16)}to{box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0),0 1rem 2.4rem rgba(var(--chessimals-magic-rgb),.12)}}@keyframes chessimalsPowerIgnite{0%{transform:translateY(0) scale(.96);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}42%{transform:translateY(-.08rem) scale(1.025);box-shadow:0 0 0 .14rem rgba(var(--chessimals-magic-rgb),.24),0 0 1.5rem rgba(var(--chessimals-magic-rgb),.46)}to{transform:translateY(0) scale(1);box-shadow:0 0 rgba(var(--chessimals-magic-rgb),0)}}@keyframes chessimalsMagicParticles{0%,to{opacity:.54;transform:translateY(0) scale(.94)}50%{opacity:1;transform:translateY(-.18rem) scale(1.02)}}@keyframes chessimalsMagicAura{to{transform:rotate(1turn)}}.chessimals-actions{order:6;align-self:stretch;justify-self:stretch;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:.625rem;margin-top:1rem}.chessimals-shell--projection .chessimals-game{max-width:min(96vw,90rem)}.chessimals-shell--projection .chessimals-turn-card{padding:.875rem 1rem}.chessimals-shell--projection .chessimals-status,.chessimals-shell--projection .chessimals-actions,.chessimals-shell--projection .chessimals-online,.chessimals-shell--projection .chessimals-replay,.chessimals-shell--projection .chessimals-rematch-status{display:none}.chessimals-shell--projection .chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center}.chessimals-shell--projection .chessimals-board-wrap{--chessimals-board-radius: min(.625rem, 10px);width:min(96vw,82vh,58rem);max-width:none}.chessimals-shell--projection .chessimals-board-frame{flex-basis:auto;max-width:none}@media (min-width: 760px){.chessimals-game{gap:1rem}.chessimals-turn-card,.chessimals-status,.chessimals-arena,.chessimals-replay,.chessimals-result,.chessimals-actions{grid-column:1 / -1}.chessimals-arena{grid-template-columns:minmax(0,1fr);justify-items:center;align-items:start;gap:.85rem}.chessimals-shell:not(.chessimals-shell--projection) .chessimals-board-frame{flex-basis:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));max-width:min(50rem,clamp(28rem,calc(100vh - 22rem),50rem))}.chessimals-powers{width:min(100%,clamp(28rem,calc(100vh - 22rem),50rem));align-content:center;grid-template-columns:minmax(11rem,.68fr) minmax(0,1fr);align-items:center;gap:.8rem;padding:.78rem}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.chessimals-cards button{grid-template-rows:minmax(3.85rem,1fr) auto;min-height:5.85rem}.chessimals-animal-face{min-height:3.85rem}.chessimals-animal-face img{width:min(3.85rem,88%);height:min(3.85rem,88%)}.chessimals-powers p{-webkit-line-clamp:3}}.chessimals-rules{display:grid;gap:1.05rem;padding-top:.25rem}.chessimals-settings{display:grid;gap:.85rem;color:var(--chessimals-modal-text, var(--chessimals-text))}.chessimals-settings article{display:grid;gap:.65rem;padding:1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .2));border-radius:1.1rem;background:radial-gradient(circle at 14% 8%,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 82%,transparent),transparent 28%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sky-rgb),.06)),var(--chessimals-modal-card-strong, var(--chessimals-elevated-strong));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 48%,transparent)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-toolbar{--background: var(--chessimals-modal-surface);--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-content{--background: var(--chessimals-modal-surface);color:var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal val-modal-shell ion-button{--color: var(--chessimals-modal-text)}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-toggle-input ion-toggle{--track-background: rgba(var(--chessimals-primary-rgb), .14);--track-background-checked: var(--chessimals-primary);--handle-background: var(--chessimals-modal-card);--handle-background-checked: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-label{color:var(--chessimals-modal-text);font-weight:900}:host ::ng-deep ion-modal.chessimals-settings-modal .chessimals-settings val-range-input ion-range{--bar-background: rgba(var(--chessimals-primary-rgb), .14);--bar-background-active: var(--chessimals-primary);--bar-height: .32rem;--bar-border-radius: 999px;--knob-background: var(--chessimals-primary-contrast);--knob-size: 1.28rem;--pin-background: var(--chessimals-primary);--pin-color: var(--chessimals-primary-contrast);color:var(--chessimals-modal-text)}.chessimals-about{display:grid;justify-items:center;gap:1rem;color:var(--ion-text-color, var(--chessimals-text))}.chessimals-about__logo{display:block;width:min(25rem,88%);height:auto;object-fit:contain;object-position:center;filter:drop-shadow(0 .5rem .7rem rgba(46,58,44,.14))}.chessimals-about__thanks{color:var(--ion-text-color, var(--chessimals-text));font-size:1.08rem;font-weight:950;line-height:1.2;text-align:center}.chessimals-about__feedback{max-width:30rem}.chessimals-about p{margin:0;color:var(--ion-color-medium, var(--chessimals-muted));font-size:.95rem;font-weight:750;line-height:1.45;text-align:center}.chessimals-about dl{display:grid;width:100%;margin:0;gap:.65rem}.chessimals-about dl div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem .95rem;border:1px solid rgba(var(--chessimals-primary-rgb),.16);border-radius:1rem;background:linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.08),transparent),var(--ion-card-background, #fff)}.chessimals-about dt,.chessimals-about dd{margin:0}.chessimals-about dt{color:var(--ion-color-medium, var(--chessimals-muted));font-size:.78rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-about dd{color:var(--ion-text-color, var(--chessimals-text));font-size:.95rem;font-weight:950}.chessimals-rules__hero{display:block;width:100%;height:auto;object-fit:contain;border-radius:1.25rem;background:transparent;box-shadow:0 .85rem 1.8rem #2e3a2c1f}.chessimals-rules__powers,.chessimals-rules__note,.chessimals-rules__steps article{display:grid;align-items:start;gap:.75rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1.25rem;background:var(--chessimals-modal-card, #ffffff);color:var(--chessimals-modal-text, var(--ion-text-color, #2f2a3a))}.chessimals-rules__section-title span{justify-self:start;border-radius:999px;padding:.24rem .55rem;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-size:.72rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase}.chessimals-rules__section-title{display:grid;gap:.35rem;padding-inline:0}.chessimals-rules__section-title strong{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.25}.chessimals-rules__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.chessimals-rules__steps article{align-content:start;padding:.9rem}.chessimals-rules__steps article>img,.chessimals-rules__powers>img,.chessimals-rules__note>img{display:block;width:4.75rem;height:4.75rem;border-radius:1.15rem;object-fit:cover;box-shadow:0 0 0 .1rem rgba(var(--chessimals-sun-rgb),.68),0 .7rem 1.25rem #2e3a2c29}.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:auto minmax(0,1fr);padding:.95rem}.chessimals-rules__power-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:.35rem}.chessimals-rules__power-list span{display:grid;justify-items:center;align-content:center;gap:.32rem;min-width:0;min-height:8.1rem;border:1px solid var(--chessimals-modal-border, rgba(var(--chessimals-primary-rgb), .16));border-radius:1rem;padding:.8rem .52rem;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--chessimals-modal-card, #ffffff) 78%,transparent),transparent 52%),linear-gradient(135deg,rgba(var(--chessimals-primary-rgb),.1),rgba(var(--chessimals-sun-rgb),.18)),var(--chessimals-modal-card-strong, #fff8df);color:var(--chessimals-modal-text, var(--chessimals-text));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--chessimals-modal-surface, #ffffff) 64%,transparent),0 .55rem 1.15rem var(--chessimals-modal-shadow, rgba(46, 58, 44, .12));font-size:.78rem;font-weight:950;line-height:1.05;text-align:center}.chessimals-rules__power-list strong,.chessimals-rules__power-list small{min-width:0}.chessimals-rules__power-list strong{font-size:.86rem;font-weight:950;line-height:1.08}.chessimals-rules__power-list small{color:var(--chessimals-muted);font-size:.69rem;font-weight:820;line-height:1.15}.chessimals-rules__power-list img{display:block;width:3.25rem;height:3.25rem;object-fit:contain;filter:drop-shadow(0 .25rem .35rem rgba(46,58,44,.16))}.chessimals-rules__note{border-color:rgba(var(--chessimals-sun-rgb),.34);background:linear-gradient(135deg,rgba(var(--chessimals-sun-rgb),.1),rgba(var(--chessimals-primary-rgb),.04)),var(--chessimals-modal-card, #ffffff)}.chessimals-rules article>span{display:grid;place-items:center;width:2rem;height:2rem;border-radius:999px;background:rgba(var(--chessimals-primary-rgb),.12);color:var(--chessimals-primary);font-weight:950}.chessimals-rules article>div{display:grid;min-width:0;gap:.35rem}.chessimals-rules h3,.chessimals-rules p,.chessimals-rules ul{margin:0}.chessimals-rules h3{color:var(--chessimals-text);font-size:1rem;font-weight:950;line-height:1.2}.chessimals-rules p,.chessimals-rules li{color:var(--chessimals-modal-muted, var(--ion-color-medium, #6f6a7a));font-size:.88rem;font-weight:760;line-height:1.5}.chessimals-rules ul{display:grid;gap:.45rem;padding-left:1.15rem}.chessimals-primary,.chessimals-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.625rem;border-radius:999px;font:inherit;font-weight:950}.chessimals-primary{border:0;background:var(--chessimals-primary);color:var(--chessimals-primary-contrast);box-shadow:0 1.125rem 2.8rem rgba(var(--chessimals-primary-rgb),.28)}.chessimals-secondary{border:1px solid var(--chessimals-border);background:transparent;color:var(--chessimals-text)}.chessimals-primary.is-working,.chessimals-secondary.is-working{cursor:wait;opacity:.82}.chessimals-button-spinner{width:1rem;height:1rem;flex:0 0 auto;border:.14rem solid currentColor;border-right-color:transparent;border-radius:999px;animation:chessimals-spin .72s linear infinite}@media (max-width: 560px){.chessimals-home-actions{grid-template-columns:1fr}.chessimals-home-action{min-height:0}.chessimals-rules__steps,.chessimals-rules__powers,.chessimals-rules__note{grid-template-columns:1fr}.chessimals-rules__power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-size,.chessimals-mode,.chessimals-actions,.chessimals-play-options .chessimals-nightmare,.chessimals-challenge-cta,.chessimals-path-cta,.chessimals-path-hero,.chessimals-path-grid,.chessimals-path-highlights,.chessimals-path-rings,.chessimals-path-stats{grid-template-columns:1fr}.chessimals-path-hero{justify-items:start}.chessimals-path-hero__art{width:6.25rem;height:6.25rem}.chessimals-path-cta__action{justify-self:stretch;width:100%}.chessimals-path-hero__medal{justify-self:stretch;width:100%;min-height:5.5rem}.chessimals-path-bars span{grid-template-columns:minmax(0,1fr) auto}.chessimals-path-bars i{grid-column:1 / -1;order:3}.chessimals-challenge-cta__actions,.chessimals-challenge-cta__rival{min-width:0}.chessimals-challenge-hero,.chessimals-challenge-focus{grid-template-columns:1fr}.chessimals-challenge-card{padding:.85rem}.chessimals-challenge-card__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-game{gap:.55rem}.chessimals-turn-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:0;border-radius:.95rem;padding:.5rem}.chessimals-turn-card__copy{gap:.1rem}.chessimals-turn-card__meta{gap:.25rem;max-width:none}.chessimals-turn-card__chip{max-width:100%;padding:.18rem .5rem;font-size:.6rem;letter-spacing:.045em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chessimals-turn-card strong{font-size:clamp(.92rem,4.4vw,1.12rem);line-height:1.08}.chessimals-turn-card p{display:-webkit-box;overflow:hidden;font-size:.72rem;line-height:1.2;-webkit-box-orient:vertical;-webkit-line-clamp:1}.chessimals-player-strip{width:auto;max-width:none;min-width:0;padding:.25rem}.chessimals-player-strip__avatar{flex:0 0 1.8rem;width:1.8rem;height:1.8rem;aspect-ratio:1 / 1}:host ::ng-deep .chessimals-player-strip .chessimals-turn-avatar{width:1.8rem;min-width:1.8rem;height:1.8rem}.chessimals-player-strip__text{display:none}.chessimals-status{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.chessimals-status div{gap:.14rem;min-height:2.2rem;border-radius:.82rem;padding:.34rem .3rem}.chessimals-status small{font-size:.58rem;line-height:1.05}.chessimals-status strong{font-size:clamp(.78rem,3.2vw,.94rem);line-height:1.05}.chessimals-challenge-live{grid-template-columns:1fr;gap:.45rem;padding:.55rem}.chessimals-challenge-live__rival>.chessimals-bot-avatar{width:2.35rem;height:2.35rem;font-size:1.15rem}.chessimals-challenge-live__rival p{-webkit-line-clamp:1}.chessimals-challenge-live__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem}.chessimals-challenge-live__metrics span{min-height:2.35rem;padding:.32rem .36rem}.chessimals-challenge-live__metrics small{font-size:.56rem}.chessimals-challenge-live__metrics b{font-size:.82rem}.chessimals-challenge-intro{padding:.55rem}.chessimals-challenge-intro__card{gap:.42rem;width:min(15.5rem,94%);padding:.6rem}.chessimals-challenge-intro__avatar{width:3.05rem;height:3.05rem;font-size:1.62rem}.chessimals-challenge-intro__copy strong{font-size:1.02rem}.chessimals-challenge-intro__copy p{font-size:.72rem;-webkit-line-clamp:1}.chessimals-challenge-intro__facts b{font-size:.74rem}.chessimals-challenge-intro .chessimals-primary{min-height:2.15rem}.chessimals-tip,.chessimals-result,.chessimals-replay,.chessimals-online-status,.chessimals-tutorial{gap:.2rem;border-radius:1rem;padding:.7rem .75rem}.chessimals-tip strong,.chessimals-result strong,.chessimals-replay strong,.chessimals-tutorial strong{font-size:.95rem}.chessimals-tip p,.chessimals-result p{font-size:.9rem;line-height:1.28}.chessimals-result__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chessimals-replay,.chessimals-tutorial{grid-template-columns:1fr}.chessimals-replay__actions{justify-content:stretch}.chessimals-replay__actions .chessimals-secondary{flex:1 1 8rem}.chessimals-arena{gap:.5rem}.chessimals-board-wrap{width:100%;margin-inline:0;padding:0}.chessimals-board-frame{width:100%}.chessimals-powers{gap:.5rem;border-radius:1rem;padding:.55rem}.chessimals-powers__heading{gap:.4rem}.chessimals-powers h2{font-size:1rem}.chessimals-powers__heading span{padding:.22rem .48rem;font-size:.68rem}.chessimals-powers p{font-size:.78rem;line-height:1.2;-webkit-line-clamp:1}.chessimals-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.chessimals-cards button{grid-template-rows:minmax(3.65rem,1fr) auto;gap:.3rem;min-height:5.4rem;border-radius:.85rem;padding:.3rem .24rem .42rem}.chessimals-animal-face{min-height:3.65rem;border-radius:.68rem}.chessimals-animal-face img{width:min(3.55rem,92%);height:min(3.55rem,92%)}.chessimals-cards strong{font-size:clamp(.64rem,2.8vw,.78rem)}.chessimals-board{border-radius:var(--chessimals-board-radius)}.chessimals-cell-coordinate{font-size:.58rem}}@media (prefers-reduced-motion: reduce){.chessimals-cell.is-capture,.chessimals-cell.is-capture:before,.chessimals-cell.is-capture:after,.chessimals-cell.has-move-effect,.chessimals-cell.has-move-effect:before,.chessimals-cell.has-move-effect:after,.chessimals-cell.has-capture-effect,.chessimals-moving-piece,.chessimals-challenge-intro,.chessimals-status__score.is-pop{animation:none!important}.chessimals-moving-piece{transform:translate(calc(var(--to-col) * 100%),calc(var(--to-row) * 100%))}}\n"] }]
6806
6806
  }], ctorParameters: () => [], propDecorators: { boardAnchor: [{
6807
6807
  type: ViewChild,
6808
6808
  args: ['boardAnchor']
@@ -6815,4 +6815,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6815
6815
  }], adventureNode: [{
6816
6816
  type: Input
6817
6817
  }] } });
6818
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLG9CQUFvQixHQUNyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0sK0JBQStCLENBQUM7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdStDVCwybTNIQWgvQ0MsUUFBUSxzREFDUix3QkFBd0IscUZBQ3hCLHlCQUF5Qix1RkFDekIsb0JBQW9CLDhNQUNwQixtQkFBbUIseUdBQ25CLG9CQUFvQiwwRkFDcEIsZUFBZSwwR0FDZixtQkFBbUI7OzRGQTQxT1YsdUJBQXVCO2tCQXYyT25DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxRQUFRO3dCQUNSLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1K0NUO3dEQTY1TGlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFrVFgsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRU8sYUFBYTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGFwcGx5Q2hlc3NpbWFsc01vdmUsXG4gIGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlLFxuICBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUyxcbiAgY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlLFxuICBjcmVhdGVDaGVzc2ltYWxzR2FtZSxcbiAgZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMsXG4gIGdldENoZXNzaW1hbHNQaWVjZUF0LFxuICBwb3NpdGlvbktleSxcbiAgcmVzaWduQ2hlc3NpbWFsc0dhbWUsXG59IGZyb20gJy4vY2hlc3NpbWFscy1lbmdpbmUnO1xuaW1wb3J0IHsgQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtb25saW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlc3NpbWFsc0NoYWxsZW5nZVByb2dyZXNzU2VydmljZSB9IGZyb20gJy4vY2hlc3NpbWFscy1jaGFsbGVuZ2UtcHJvZ3Jlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWFkdmVudHVyZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMgfSBmcm9tICcuL2NoZXNzaW1hbHMtYWR2ZW50dXJlLWRhdGEnO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LCBNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLWNhbGxvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsIE1pbmlHYW1lU2NvcmVQb3BNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLXNjb3JlLXBvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bixcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzTG9jYWxNb2RlLFxuICBDaGVzc2ltYWxzTW92ZSxcbiAgQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsXG4gIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbiAgQ2hlc3NpbWFsc1N0YXRzTW9kZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3JhbmdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0TWV0YWRhdGEsIFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbicgfCAnY2hhbGxlbmdlLW5ldyc7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG50eXBlIENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZSA9ICdpZGxlJyB8ICdwbGF5aW5nJyB8ICdiZXR3ZWVuJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG50eXBlIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlID0gQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgfCAnbmlnaHRtYXJlJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB7XG4gIHBpZWNlSWQ6IHN0cmluZztcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNyaXRpY2FsOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FjaGlldmVtZW50VmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICB1bmxvY2tlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXcge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBwZXJjZW50OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlldyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc1BhdGhIaWdobGlnaHRWaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBpbWFnZVNyYzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcge1xuICBjb21ibzogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0dhbWVTY29yZVZpZXcge1xuICBiZXN0Q29tYm86IG51bWJlcjtcbiAgYmVzdE1vdmU/OiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RPcHBvbmVudFZpZXcge1xuICBhdmF0YXI6IHN0cmluZztcbiAgYXZhdGFyU3JjOiBzdHJpbmc7XG4gIGV5ZWJyb3c6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyA9IDM2MDtcbmNvbnN0IENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyA9IDIyMDA7XG5jb25zdCBDSEVTU0lNQUxTX1NDT1JFX1BPUF9NUyA9IDExNTA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyA9IDYyMDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX0NPTE9SOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnYmxhY2snO1xuY29uc3QgQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUyA9IDc7XG5jb25zdCBDSEVTU0lNQUxTX09OTElORV9UVVJOX1NFQ09ORFMgPSA0NTtcbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUyA9IDMwO1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfRklOQUxfVFVSTl9TRUNPTkRTID0gMjA7XG5jb25zdCBDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0UgPSAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcG93ZXJzJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9lYWdsZS1wb3dlci5wbmdgLCB0b25lOiA2NTkuMjUgfSxcbiAgeyB0eXBlOiAnYnVsbCcsIGFzc2V0U3JjOiBgJHtDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0V9L2J1bGwtcG93ZXIucG5nYCwgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6IGAke0NIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRX0va2FuZ2Fyb28tcG93ZXIucG5nYCwgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9saW9uLXBvd2VyLnBuZ2AsIHRvbmU6IDM5MiB9LFxuXTtcblxuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90W10gPSBbXG4gIHtcbiAgICBpZDogJ3Nwcm91dCcsXG4gICAgcm91bmQ6IDEsXG4gICAgcHJvZmlsZUlkOiAnZXhwbG9yZXInLFxuICAgIGRpZmZpY3VsdHk6ICdlYXN5JyxcbiAgICBib2FyZFNpemU6IDYsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3Byb3V0SW50cm8nLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgcm91bmQ6IDIsXG4gICAgcHJvZmlsZUlkOiAnZ3VhcmRpYW4nLFxuICAgIGRpZmZpY3VsdHk6ICdub3JtYWwnLFxuICAgIGJvYXJkU2l6ZTogNixcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTZW50aW5lbEludHJvJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICByb3VuZDogMyxcbiAgICBwcm9maWxlSWQ6ICdodW50ZXInLFxuICAgIGRpZmZpY3VsdHk6ICdub3JtYWwnLFxuICAgIGJvYXJkU2l6ZTogNixcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RIdW50ZXJJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2p1bXBlcicsXG4gICAgcm91bmQ6IDQsXG4gICAgcHJvZmlsZUlkOiAnanVtcGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBib2FyZFNpemU6IDYsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90SnVtcGVySW50cm8nLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgcm91bmQ6IDUsXG4gICAgcHJvZmlsZUlkOiAncHJlZGF0b3InLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBib2FyZFNpemU6IDgsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90UHJlZGF0b3JJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ29yYWNsZScsXG4gICAgcm91bmQ6IDYsXG4gICAgcHJvZmlsZUlkOiAnc3RyYXRlZ2lzdCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGJvYXJkU2l6ZTogOCxcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RPcmFjbGVJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NwcmludGVyJyxcbiAgICByb3VuZDogNyxcbiAgICBwcm9maWxlSWQ6ICdjaGVldGFoJyxcbiAgICBkaWZmaWN1bHR5OiAnbWFzdGVyJyxcbiAgICBib2FyZFNpemU6IDgsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3ByaW50ZXJJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NoYW1waW9uJyxcbiAgICByb3VuZDogOCxcbiAgICBwcm9maWxlSWQ6ICdtYWdudXMnLFxuICAgIGRpZmZpY3VsdHk6ICdtYXN0ZXInLFxuICAgIGJvYXJkU2l6ZTogOCxcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RDaGFtcGlvbkludHJvJyxcbiAgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGVzc2ltYWxzLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uTW9kYWwsXG4gICAgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LFxuICAgIE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsXG4gICAgTW9kYWxMYXlvdXRDb21wb25lbnQsXG4gICAgUmFuZ2VJbnB1dENvbXBvbmVudCxcbiAgICBUb2dnbGVJbnB1dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVXNlckF2YXRhckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIiBbY2xhc3MuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uTW9kZVwiPlxuICAgICAgQGlmIChzY3JlZW4oKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fZW1ibGVtXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy1lbWJsZW0ucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX3dvcmRtYXJrXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy13b3JkbWFyay5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhbmVsXCI+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0hvbWVDaG9vc2UnKVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gY2hlc3NpbWFscy1ob21lLWFjdGlvbi0tcGxheVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblBsYXlPcHRpb25zTW9kYWwoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tb2RlLWljb25zL3NvbG8tYm9yZGVybGVzcy5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNRdWlja1BsYXknKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1F1aWNrUGxheUJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5DaGFsbGVuZ2VWaWV3KClcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlLWljb25cIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21vZGUtaWNvbnMvY2hhbGxlbmdlLWJvcmRlcmxlc3MucG5nXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5QYXRoVmlldygpXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tb2RlLWljb25zL3BhdGgtYm9yZGVybGVzcy5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1N1YnRpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uIGNoZXNzaW1hbHMtaG9tZS1hY3Rpb24tLWFkdmVudHVyZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFkdmVudHVyZU1vZGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uIGNoZXNzaW1hbHMtbW9kZS1pY29uLS1hZHZlbnR1cmVcIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2JyYW5kL2NoZXNzaW1hbHMtZW1ibGVtLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZUhvbWUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZUhvbWVCb2R5JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWhvd3RvXCI+XG4gICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzSG93VG9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxTdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUnVsZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8ZGV0YWlscyBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uc1wiPlxuICAgICAgICAgICAgPHN1bW1hcnk+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1BsYXlXaXRoRnJpZW5kJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3N1bW1hcnk+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19lcnJvclwiPnt7IG9ubGluZUVycm9yKCkgfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmdcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdjcmVhdGUnXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlT25saW5lR2FtZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZUhpbnQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2pvaW5cIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNKb2luT25saW5lVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNKb2luQ29kZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY2hlc3NpbWFsc0pvaW5Db2RlUGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKCkgfHwgIW9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImpvaW5PbmxpbmVHYW1lQnlDb2RlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdqb2luJykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZScpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvZGV0YWlscz5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeUJvZHknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zdW1tYXJ5PlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1oaXN0b3J5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5VGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2Ygb25saW5lSGlzdG9yeSgpLnNsaWNlKDAsIDQpOyB0cmFjayBlbnRyeS5nYW1lSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW1cIiAoY2xpY2spPVwib3Blbkhpc3RvcnlHYW1lKGVudHJ5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBlbnRyeS5nYW1lSWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5KSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeU9wZW4nKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3NNb2RhbCgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkFib3V0TW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWJvdXQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAnY2hhbGxlbmdlJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXZpZXdcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1iYWNrLWxpbmsgY2hlc3NpbWFscy1jaGFsbGVuZ2UtYmFja1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVyb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VFeWVicm93JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucy0taGVyb1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCk7IGFzIGFjdGl2ZVJ1bikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzdW1lQ2hhbGxlbmdlKGFjdGl2ZVJ1bilcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlc3VtZScpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXcnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZUJvdFN0YXR1c0xhYmVsKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoY2hhbGxlbmdlTWVudUJvdCgpLmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9hcmRMYWJlbCcpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAne3NpemV9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZU1lbnVCb3QoKS5ib2FyZFNpemUgKyAneCcgKyBjaGFsbGVuZ2VNZW51Qm90KCkuYm9hcmRTaXplXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAsIHt7IGNoYWxsZW5nZUJvdERpZmZpY3VsdHlMYWJlbChjaGFsbGVuZ2VNZW51Qm90KCkpIH19XG4gICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz4zPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlV2luUmF0ZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlV2luUmF0ZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBhdGgnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdXRlSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJylcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChib3Qgb2YgY2hhbGxlbmdlTGFkZGVyOyB0cmFjayBib3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZU1lbnVDbGVhcmVkUm91bmQoKSA+PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY3VycmVudF09XCJjaGFsbGVuZ2VNZW51Qm90KCkucm91bmQgPT09IGJvdC5yb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1maW5hbF09XCJib3Qucm91bmQgPT09IGNoYWxsZW5nZUxhZGRlci5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGFsbGVuZ2VCb3ROYW1lKGJvdClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCk7IGFzIGF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAncGF0aCcpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtdmlld1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oZXJvXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydFwiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvcHJvZ3Jlc3MtbWFwLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVlvdXJQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0hlcm9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3Ryb3BoeS5wbmdcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNoYWxsZW5nZVN0YXRzKCkudG90YWxXaW5zIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8Yj57eyB0KCdjaGVzc2ltYWxzUGF0aFdpbnNTaG9ydCcpIH19PC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChjaGFsbGVuZ2VTdGF0c0xvYWRlZCgpKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzUGF0aEhpZ2hsaWdodHMnKVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHBhdGhIaWdobGlnaHRzKCk7IHRyYWNrIGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmltYWdlU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGl0ZW0udGl0bGUgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGl0ZW0udmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWxvYWRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ3NcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlV2luUmF0ZXMnKVwiPlxuICAgICAgICAgICAgQGZvciAocmluZyBvZiBwcm9ncmVzc1JpbmdzKCk7IHRyYWNrIHJpbmcubGFiZWwpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ1wiIFtzdHlsZS4tLXJpbmctcHJvZ3Jlc3NdPVwicmluZy5wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJpbmcudmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByaW5nLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyByaW5nLmRldGFpbCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1ncmlkXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbCBjaGVzc2ltYWxzLXBhdGgtcGFuZWwtLXdpZGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQ2hhbGxlbmdlSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NNb2Rlc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtc3RhdHNcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0U3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWsgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmNoYWxsZW5nZXNQbGF5ZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5jaGFsbGVuZ2VzQ29tcGxldGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcGFuZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1Bvd2Vyc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtYmFyc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBvd2VyIG9mIHByb2dyZXNzUG93ZXJTdGF0cygpOyB0cmFjayBwb3dlci5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLi0tYmFyLXByb2dyZXNzXT1cInBvd2VyLnBlcmNlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgcG93ZXIubGFiZWwgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwb3dlci52YWx1ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXBhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQWNoaWV2ZW1lbnRzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIGNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzLS1wYXRoXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWNoaWV2ZW1lbnQgb2YgY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCk7IHRyYWNrIGFjaGlldmVtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtdW5sb2NrZWRdPVwiYWNoaWV2ZW1lbnQudW5sb2NrZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYWNoaWV2ZW1lbnQuaWNvbiB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhY2hpZXZlbWVudC50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBhY2hpZXZlbWVudC5ib2R5IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChjaGFsbGVuZ2VIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVjZW50UnVucycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnktLXBhdGhcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW4pIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lXCI+XG4gICAgICAgICAgQGlmICghcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtYmFjay1saW5rIGNoZXNzaW1hbHMtZ2FtZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJiYWNrVG9Ib21lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlQmFja1RvTWFwJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtYmFjay1saW5rIGNoZXNzaW1hbHMtZ2FtZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlTW9kZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0JhY2tUb01lbnUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlc3VtZVNwbGFzaFZpc2libGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9icmFuZC9jaGVzc2ltYWxzLWVtYmxlbS5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMteW91ci10dXJuXT1cImlzQWN0aW9uYWJsZVR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FpdGluZy10dXJuXT1cImlzV2FpdGluZ0ZvclR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtdGltZXItbG93XT1cImlzVHVyblRpbWVyTG93KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwXCI+XG4gICAgICAgICAgICAgICAge3sgdHVyblN0YXRlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgICAgICAgICBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXG4gICAgICAgICAgICAgICAgICA/IGlzQ3VycmVudFBsYXllclZpY3RvcnkoKVxuICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNZb3VXb24nKVxuICAgICAgICAgICAgICAgICAgICA6IGlzQ3VycmVudFBsYXllckRlZmVhdCgpXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzWW91TG9zdCcpXG4gICAgICAgICAgICAgICAgICAgICAgOiB3aW5UaXRsZSgpXG4gICAgICAgICAgICAgICAgICA6IHR1cm5UaXRsZSgpXG4gICAgICAgICAgICAgIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHR1cm5TdGF0ZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgQGlmIChhZHZlbnR1cmVOb2RlSWQoKSAmJiBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGdhbWUoKS53aW5uZXIgPT09ICd3aGl0ZScpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFyc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmlzLWVhcm5lZF09XCJhZHZlbnR1cmVTdGFycygpID4gaVwiPnt7IGFkdmVudHVyZVN0YXJzKCkgPiBpID8gJ+KYhScgOiAn4piGJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fbWV0YVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3VsZFVzZVR1cm5QbGF5ZXJBdmF0YXIoKSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwidHVyblBsYXllckF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHR1cm5QbGF5ZXJGYWxsYmFja0F2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0dXJuUGxheWVyRXllYnJvdygpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXJuUGxheWVyTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHR1cm5QbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdHVyblBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGJvdE9wcG9uZW50Q2FyZCgpOyBhcyBib3RQcm9maWxlKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtYm90LXJpdmFsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlLmF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImJvdFByb2ZpbGUuYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZS5hdmF0YXIgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgYm90UHJvZmlsZS5leWVicm93IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGUudGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBib3RQcm9maWxlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgd2FpdGluZ1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdhaXRpbmdCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicGVuZGluZ0d1ZXN0QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwZW5kaW5nR3Vlc3RJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGVuZGluZ0d1ZXN0SGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkgfHwgdHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXMgY2hlc3NpbWFscy1zdGF0dXMtLXNpbXBsZVwiPlxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlUm91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVzTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAodHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1c19fdGltZXJcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxvd109XCJpc1R1cm5UaW1lckxvdygpXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRpbWVyLXByb2dyZXNzXT1cInR1cm5UaW1lclByb2dyZXNzKClcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cInRpbWVyXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNUdXJuVGltZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHR1cm5UaW1lckxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93Q2hhbGxlbmdlSW5HYW1lUGFuZWwoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUxpdmVBdmF0YXJTcmMoKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlTGl2ZUF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZUxpdmVSaXZhbExpbmUoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93T25saW5lU3RhdHVzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWVycm9yXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InIHx8IGdhbWUoKS5zdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9ubGluZVN0YXR1c1RpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBvbmxpbmVTdGF0dXNCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodHV0b3JpYWxNb2RlKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy10dXRvcmlhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0dXRvcmlhbFByb2dyZXNzTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXRvcmlhbFRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0dXRvcmlhbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhpdFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxFeGl0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwicmV2aWV3R2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cInJldmlld0dhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcG93ZXItYWltaW5nXT1cIiEhc2VsZWN0ZWRBbmltYWwoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1lZGdlLWNlbGxdPVwiaXNFZGdlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMl09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItM109XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGVnYWxdPVwiaXNMZWdhbENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImlzQ2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtdGhyZWF0XT1cImlzVGhyZWF0ZW5lZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1yZWFkeV09XCJpc0NhcHR1cmVSZWFkeUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13aW5uaW5nXT1cImlzV2lubmluZ0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImlzTGFzdE1vdmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbW92aW5nLXNvdXJjZV09XCJpc01vdmluZ1NvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtbW92ZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1zb3VyY2UtZWZmZWN0XT1cImlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2VhZ2xlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdidWxsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAna2FuZ2Fyb28nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2xpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25Nb2RlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICEhbW92aW5nUGllY2UoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3RUaGlua2luZygpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVTeW5jaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2VsbCh7IHJvdywgY29sIH0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChwb3dlckNhbGxvdXQoKTsgYXMgY2FsbG91dCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW1pbmktZ2FtZS1jYWxsb3V0IFtwcm9wc109XCJjYWxsb3V0XCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2NvcmVQb3AoKTsgYXMgcG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbWluaS1nYW1lLXNjb3JlLXBvcCBbcHJvcHNdPVwicG9wXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSW50cm9WaXNpYmxlKCkgJiYgYWN0aXZlQ2hhbGxlbmdlQm90KCk7IGFzIGludHJvQm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoaW50cm9Cb3QucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihpbnRyb0JvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoaW50cm9Cb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoaW50cm9Cb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm9hcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19eHt7IGludHJvQm90LmJvYXJkU2l6ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGludHJvQm90KSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlSW50cm9DdGEnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiaXNDdXJyZW50UGxheWVyRGVmZWF0KClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tYVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1iXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWR2ZW50dXJlTm9kZUlkKCkgPyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlTW9kZUxhYmVsJykgOiB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFkdmVudHVyZU5vZGVJZCgpICYmIGFkdmVudHVyZUN1cnJlbnROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaXZhbC1uYW1lXCI+e3sgdChhZHZlbnR1cmVDdXJyZW50Tm9kZSgpIS50aXRsZUtleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAod2lubmVyQXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz1cImhhcy1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIndpbm5lckF2YXRhclVybCgpXCIgW2FsdF09XCJ3aW5uZXJEaXNwbGF5TmFtZSgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgd2lubmVySW5pdGlhbHMoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmVudHVyZU5vZGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gaXNDdXJyZW50UGxheWVyVmljdG9yeSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzWW91V29uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNZb3VMb3N0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB3aW5UaXRsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB3aW5uZXJTaWRlTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkgJiYgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtZWFybmVkXT1cImFkdmVudHVyZVN0YXJzKCkgPiBpXCI+e3sgYWR2ZW50dXJlU3RhcnMoKSA+IGkgPyAn4piFJyA6ICfimIYnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmVudHVyZVN0YXJzKCkgPj0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlV29uM1N0YXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc0FkdmVudHVyZVdvbjJTdGFycycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkgJiYgaXNDdXJyZW50UGxheWVyRGVmZWF0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvblwiPnt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVMb3N0Q2FwdGlvbicpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpICYmICFpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdhbWUoKS53aW5uZXIgPT09ICd3aGl0ZScgJiYgYWR2ZW50dXJlTmV4dEJhdHRsZU5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0QWR2ZW50dXJlTm9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZU5leHRSaXZhbCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlQmFja1RvTWFwJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdhbWUoKS53aW5uZXIgIT09ICd3aGl0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc3RhcnRHYW1lKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdwbGF5QWdhaW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChnYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzdGFydEdhbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgncGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocmVtYXRjaFN0YXRlKCkgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5IGNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoQWN0aW9uTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgQGlmIChvbmxpbmVSb2xlKCkgIT09ICdzcGVjdGF0b3InICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIXBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cInBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVubG9jay1wdWxzZV09XCJwb3dlclVubG9ja1B1bHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0FuaW1hbENhcmRzJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHQoJ2NoZXNzaW1hbHNMb2NrZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHA+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwicG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIWNhblVzZVBvd2VyQ2FyZHMoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvd2VyVXNlc0xhYmVsKGFuaW1hbC50eXBlKTsgYXMgdXNlc0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXItdXNlc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHVzZXNMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGhhc1JlcGxheUNvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVwbGF5UG9zaXRpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3UHJldmlvdXMoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3UHJldmlvdXNNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlQcmV2aW91cycpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3TmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdOZXh0TW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5TmV4dCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdFwiIFtjbGFzcy5pcy1jaGFsbGVuZ2UtcmVzdWx0XT1cImlzQ2hhbGxlbmdlQWN0aXZlKClcIj5cbiAgICAgICAgICAgICAgQGlmICghaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXZpY3RvcnldPVwiY2hhbGxlbmdlTGFzdFdvbigpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiY2hhbGxlbmdlTGFzdFdvbigpID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm9cIiBbY2xhc3MuaXMtY2xlYXJlZF09XCJjaGFsbGVuZ2VMYXN0V29uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVN1bW1hcnlBdmF0YXJTcmMoKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZU91dGNvbWVUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250aW51ZUNoYWxsZW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydENoYWxsZW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTsgYXMgdGVuc2lvbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvblwiIFtjbGFzcy5pcy1jcml0aWNhbF09XCJ0ZW5zaW9uLmNyaXRpY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGVuc2lvbi50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdGVuc2lvbi5ib2R5IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nICYmIGFjdGl2ZUNoYWxsZW5nZUJvdCgpOyBhcyBuZXh0Qm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMobmV4dEJvdC5wcm9maWxlSWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKG5leHRCb3QucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKG5leHRCb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBjaGFsbGVuZ2VCb3RJbnRybyhuZXh0Qm90KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyBjaGFsbGVuZ2VOZXh0Uml2YWxIaW50KCkgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllc1wiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlbWF0Y2hTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c1wiIFtjbGFzcy5pcy1pbmNvbWluZ109XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ1RpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVGl0bGUnKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaEluY29taW5nQm9keScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEJvZHknKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllcyBjaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllclwiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cInJlbWF0Y2hPcHBvbmVudEF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIGNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSaXZhbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYXRjaE9wcG9uZW50TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJiBjYW5Db250cm9sQ3VycmVudEdhbWUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNpZ24oKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXNpZ24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5pZCAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZVByb2plY3Rpb25MaW5rKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVQcm9qZWN0aW9uJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUGxheU9wdGlvbnNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXBsYXktb3B0aW9ucy1tb2RhbFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJoYW5kbGVQbGF5T3B0aW9uc01vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1tb2RhbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNTb2xvT3B0aW9uc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU29sb09wdGlvbnNCb2R5JylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cIltdXCJcbiAgICAgICAgICBbZm9vdGVyXT1cInRydWVcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlUGxheU9wdGlvbnNNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1ib2FyZC1zaXplXCI+e3sgdCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2l6ZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWJvYXJkLXNpemVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkQm9hcmRTaXplKCkgPT09IHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbi1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzaXplIH19eHt7IHNpemUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LW1vZGVcIj57eyB0KCdjaGVzc2ltYWxzTW9kZVRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJjaGVzc2ltYWxzLXBsYXktbW9kZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG1vZGUgb2YgbG9jYWxNb2RlczsgdHJhY2sgbW9kZSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkTG9jYWxNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZExvY2FsTW9kZS5zZXQobW9kZSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxvY2FsTW9kZUxhYmVsKG1vZGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LWRpZmZpY3VsdHlcIj57eyB0KCdjaGVzc2ltYWxzQm90RGlmZmljdWx0eScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1kaWZmaWN1bHR5XCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJjaGVzc2ltYWxzLXBsYXktZGlmZmljdWx0eVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZGlmZmljdWx0eSBvZiBib3REaWZmaWN1bHRpZXM7IHRyYWNrIGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gZGlmZmljdWx0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Qm90RGlmZmljdWx0eShkaWZmaWN1bHR5KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zX19ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1ib3RcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSAnbmlnaHRtYXJlJyA/IHQoJ2NoZXNzaW1hbHNOaWdodG1hcmVSaXZhbHMnKSA6IHQoJ2NoZXNzaW1hbHNCb3RTdHlsZScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90c1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWJvdFwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gJ25pZ2h0bWFyZScpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAobW9kZSBvZiBuaWdodG1hcmVSaXZhbHM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuaWdodG1hcmVNb2RlQXNzZXRTcmMobW9kZSk7IGFzIGFzc2V0U3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFzc2V0U3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuaWdodG1hcmVNb2RlR2x5cGgobW9kZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBuaWdodG1hcmVNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAocHJvZmlsZSBvZiBhdmFpbGFibGVCb3RQcm9maWxlcygpOyB0cmFjayBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKHByb2ZpbGUuaWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmF2YXRhciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxkaXYgbW9kYWwtYWN0aW9ucyBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsYXlPcHRpb25zTW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjbG9zZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0U29sb0dhbWVGcm9tT3B0aW9ucygpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydFNvbG8nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUnVsZXNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXJ1bGVzLW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgICAtLWlvbi10ZXh0LWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cInRydWVcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19oZXJvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdHV0b3JpYWwtc29sby1jbGVhbi5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUnVsZXNRdWlja0d1aWRlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19zdGVwc1wiPlxuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmlzaC5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvbW92ZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvY2FwdHVyZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcHR1cmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FwdHVyZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXJzXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvcG93ZXJzLmpwZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJylcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9lYWdsZS1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9idWxsLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9rYW5nYXJvby1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9saW9uLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fbm90ZVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmFsLXN0ZXAuanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8ZGl2IG1vZGFsLWFjdGlvbnMgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnlcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwicnVsZXNUdXRvcmlhbEFjdGlvbigpXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRUdXRvcmlhbEZyb21SdWxlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJydWxlc0Nsb3NlQWN0aW9uKClcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1NldHRpbmdzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbFwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXJnYjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3Q6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktc2hhZGU6ICMyODVmMzY7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktdGludDogIzQzODA0ZjtcbiAgICAgIFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU2V0dGluZ3NUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJmYWxzZVwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlU2V0dGluZ3NNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJtdXNpY1RvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJtdXNpY1ZvbHVtZVByb3BzKClcIiAocmFuZ2VDaGFuZ2UpPVwic2V0TXVzaWNWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHZhbC10b2dnbGUtaW5wdXQgW3Byb3BzXT1cInNmeFRvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJzZnhWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldFNmeFZvbHVtZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzQWJvdXRNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLWFib3V0LW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUFib3V0TW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJhYm91dEFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJoYW5kbGVBYm91dEFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2xvZ29cIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9icmFuZC9jaGVzc2ltYWxzLXdvcmRtYXJrLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fdGhhbmtzXCI+e3sgdCgnY2hlc3NpbWFsc0Fib3V0VGhhbmtzJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNBYm91dEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2tcIj57eyB0KCdjaGVzc2ltYWxzQWJvdXRGZWVkYmFja1Byb21wdCcpIH19PC9wPlxuICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkdD57eyB0KCdjaGVzc2ltYWxzQWJvdXRMaWJWZXJzaW9uJykgfX08L2R0PlxuICAgICAgICAgICAgICAgIDxkZD57eyB2YWx0ZWNoQ29tcG9uZW50c1ZlcnNpb24gfX08L2RkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeTogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlOiAjMjg1ZjM2O1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQ6ICM0MzgwNGY7XG4gICAgICBcIlxuICAgICAgKGRpZERpc21pc3MpPVwiaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwiY29uZmlybVRpdGxlKClcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjb25maXJtQm9keSgpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJjb25maXJtQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY29uZmlybVBlbmRpbmdBY3Rpb24oJGV2ZW50LmFjdGlvbj8udG9rZW4pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogI2ZmZmFmMTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICMyZTNhMmM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUxNjQzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkOiAjMzdmMjhhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiOiA1NSwgMjQyLCAxMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYzogI2Y3ZDQ1YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYjogMjQ3LCAyMTIsIDkwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtaG90OiAjZmZmNTZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcDogI2I3N2ExODtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplLCAxcmVtKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtc21hbGwpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZm9udC1sYXJnZSkge1xuICAgICAgICAtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZTogMS4xODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICNmZmZhZjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MTY0M2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lOiAjOGU5MzYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZDogIzM3ZjI4YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYjogNTUsIDI0MiwgMTM4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWM6ICNmN2Q0NWE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1yZ2I6IDI0NywgMjEyLCA5MDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdDogI2ZmZjU2ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXA6ICNiNzdhMTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy13YXJuaW5nOiAjZjRjNTQyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2I6IDI0NCwgMTk3LCA2NjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmU6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmUtcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZTogIzFmY2RiMztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiOiAzMSwgMjA1LCAxNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjOGM2YjRmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDE0MCwgMTA3LCA3OTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM3Zjk0NGQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoNDYsIDU4LCA0NCwgMC4xNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YzZWFkYjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6IGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyNDI5MzY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTcxYjI1O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OiBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpKSBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg1LjhyZW0sIDIwdncsIDcuMnJlbSk7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC44cmVtIDEuMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6IGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjQ4KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDAsIDAsIDAsIDAuMjQpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzIwMjYzMztcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxMTE2MjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OiBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40NHJlbSByZ2JhKDAsIDAsIDAsIDAuNTIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOiAjZmZmZGY3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtaW5uZXItYmc6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXI6IGRyb3Atc2hhZG93KDAgMC4xMnJlbSAwLjE2cmVtIHJnYmEoMCwgMCwgMCwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcjogZ3JheXNjYWxlKDAuMzIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyN3JlbSwgODZ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19lbWJsZW0ge1xuICAgICAgICB3aWR0aDogbWluKDEyLjI1cmVtLCA0OHZ3KTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4ycmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fd29yZG1hcmsge1xuICAgICAgICB3aWR0aDogbWluKDIxcmVtLCA3NnZ3KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBwLFxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMXJlbSwgNHZ3LCAxLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNjhyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMTVyZW0gMXJlbSAxLjA1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA4KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbi0tcGxheSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40Nik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxOCUgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEyKVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0LjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCksXG4gICAgICAgICAgMCAwLjU1cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDN2dywgMS40NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeTo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zW29wZW5dIHN1bW1hcnk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJy0nO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgPiA6bm90KHN1bW1hcnkpIHtcbiAgICAgICAgbWFyZ2luOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMS4wNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXAge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXAgaDMge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtaW4taGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDIuMXJlbSAwLjc4cmVtIDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4wOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA1KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc4KSwgdHJhbnNwYXJlbnQgMjUlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIzKSxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMylcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksXG4gICAgICAgICAgMCAwLjg1cmVtIDEuOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuNjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjY1cmVtO1xuICAgICAgICB3aWR0aDogMC43MnJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5pcy1zZWxlY3RlZCA+IC5jaGVzc2ltYWxzLW9wdGlvbi1jaGVjayB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4yOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAnaWNvbiB0aXRsZSdcbiAgICAgICAgICAnaWNvbiBib2R5JztcbiAgICAgICAgY29sdW1uLWdhcDogMC41NXJlbTtcbiAgICAgICAgcm93LWdhcDogMC4xMnJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHN0cm9uZyB7XG4gICAgICAgIGdyaWQtYXJlYTogdGl0bGU7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogYm9keTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1uaWdodG1hcmVfX2ljb24ge1xuICAgICAgICBncmlkLWFyZWE6IGljb247XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1uaWdodG1hcmVfX2ljb24gaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uLmlzLXNlbGVjdGVkIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDYpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA0KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksXG4gICAgICAgICAgMCAwLjcycmVtIDEuMjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMi40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtYm90cyBidXR0b24uaXMtc2VsZWN0ZWQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3NCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpIDU4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsICMyZTNhMmMpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsICM1MTY0M2QpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgOTIlLCAjZmZmKTtcbiAgICAgICAgLS1ib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLXZhbC1tb2RhbC1mb290ZXItZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1pb24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tY2FyZC1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgICAtLWlvbi10ZXh0LWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLXZhbC1tb2RhbC1mb290ZXItZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsICMyZTNhMmMpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsICM1MTY0M2QpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmc6ICNmOGZiZjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICM1ZjZmNTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoNDYsIDU4LCA0NCwgMC4xNCk7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSk7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyazogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDQ2LCA1OCwgNDQ7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bTogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZCk7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bS1yZ2I6IDk1LCAxMTEsIDgwO1xuICAgICAgICAtLWlvbi1ib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeTogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlOiAjMjg1ZjM2O1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQ6ICM0MzgwNGY7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICMxMjE4MTE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQ6ICMxODIyMTc7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjMWQyYTFjO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjZjZmM2U5O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZDogI2M4Y2ZiMTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM2KTtcbiAgICAgICAgICAtLWlvbi1jb2xvci1kYXJrLXJnYjogMjQ2LCAyNDMsIDIzMztcbiAgICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiAyMDAsIDIwNywgMTc3O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICMxMjE4MTE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjMTgyMjE3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmc6ICMxZDJhMWM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjZjZmM2U5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXI6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM2KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDI0NiwgMjQzLCAyMzM7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bS1yZ2I6IDIwMCwgMjA3LCAxNzc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi10b29sYmFyLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCAudmFsLW1vZGFsLWxheW91dF9fZm9vdGVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi1jb250ZW50IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1kaXNwbGF5IGlvbi10ZXh0LFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtdGl0bGUgaW9uLXRleHQge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBpb24tYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMy40NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMC44NXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLWVuZDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24uYnV0dG9uLXNvbGlkLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tcHJpbWFyeSBpb24tYnV0dG9uIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24uYnV0dG9uLW91dGxpbmUsXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1zZWNvbmRhcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICAgIC0tYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW1vZGFsX19hY3Rpb25zLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCAxMi41cmVtKTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uIHtcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBpb24tYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMy40NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMC44NXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLWVuZDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtcnVsZXMtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1zZWNvbmRhcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMjQpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWwgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3RcbiAgICAgICAgOjpuZy1kZWVwXG4gICAgICAgIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcbiAgICAgICAgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b25cbiAgICAgICAgaW9uLWJ1dHRvbltkYXRhLXRlc3RpZD0nY29uZmlybSddIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdFxuICAgICAgICA6Om5nLWRlZXBcbiAgICAgICAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtY29uZmlybS1tb2RhbFxuICAgICAgICB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvblxuICAgICAgICBpb24tYnV0dG9uW2RhdGEtdGVzdGlkPSdjYW5jZWwnXSB7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMjQpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzIHtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy43NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1ibGFjay10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTQpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKVxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgMTM1ZGVnLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMilcbiAgICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDgpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksXG4gICAgICAgICAgMCAwLjk1cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4gLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy10dXJuLXB1bHNlIDEuNDVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtdGltZXItbG93IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuNSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy10aW1lci1sb3cgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLWNvbnRyYXN0LCAjZmZmZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXdhaXRpbmctdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy10dXJuLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigzMXJlbSwgNTglKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFycyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFycyBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMsICNmN2Q0NWEpO1xuICAgICAgICBvcGFjaXR5OiAwLjI4O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fYWR2ZW50dXJlLXN0YXJzIHNwYW4uaXMtZWFybmVkIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMy41dncsIDEuMjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMTByZW07XG4gICAgICAgIG1heC13aWR0aDogbWluKDE3cmVtLCAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgdmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgMi4yNXJlbTtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHMge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgLmNoZXNzaW1hbHMtdHVybi1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMDVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNzIxMTY7XG4gICAgICAgIGNvbG9yOiAjZjZmM2U5O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiAjYzhjZmIxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg0NiwgMTExLCA2MiwgMC4xKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NiwgMTExLCA2MiwgMC4yNSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fbW9kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LCAjMmU2ZjNlKTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fc3RhcnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFkdmVudHVyZS1yZXN1bHRfX3N0YXIge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLCAjZjdkNDVhKTtcbiAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fc3Rhci5pcy1lYXJuZWQge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hZHZlbnR1cmUtcmVzdWx0X19jYXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbi1idXR0b24ge1xuICAgICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQuaXMtY2hhbGxlbmdlLXJlc3VsdCB7XG4gICAgICAgIGdhcDogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNThyZW0gMC42cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fZGV0YWlsIHtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gMCAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgPiBzcGFuIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM1cmVtIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA5KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyA+IHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDAuNzJyZW07XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtc3luY2luZyA+IHNwYW4ge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIDkwMG1zIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLWVycm9yIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLWVycm9yID4gc3BhbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjM4cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXJpZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMuaXMtaW5jb21pbmcge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllcixcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjk1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBoMixcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4yZnIpIG1pbm1heCgxMHJlbSwgYXV0bykgYXV0bztcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQgNjIlKSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43cmVtIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAyLjV2dywgMS4zMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDMuOHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYmFjay1saW5rIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1iYWNrIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAyLjJyZW0gcmdiYSg3OSwgNTgsIDM1LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQtLWRlZGljYXRlZCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oZXJvLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMWZyKSBtaW5tYXgoMTRyZW0sIDAuOWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMjhyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzLjV2dywgMS45cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlIHtcbiAgICAgICAgbWluLWhlaWdodDogOHJlbTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yaXZhbCB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KTtcbiAgICAgICAgcGFkZGluZzogMC42MnJlbSAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4JSAxMiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCA3MCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJpdmFsID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzLjNyZW07XG4gICAgICAgIGhlaWdodDogMy4zcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC41KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC40cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHAge1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBlbSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE2cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMtLWhlcm8ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlID4gZGl2OmZpcnN0LWNoaWxkLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSA+IGRpdjpmaXJzdC1jaGlsZCA+IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDAuMXJlbTtcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjE1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMTVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmcpO1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWNsZWFyZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM0KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWN1cnJlbnQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC40OCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUuaXMtY2xlYXJlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMjYpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4uaXMtdW5sb2NrZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCkpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgYiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjlyZW07XG4gICAgICAgIGhlaWdodDogMS45cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgLmlzLXVubG9ja2VkIGIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGNvbG9yOiAjZmZmYWYwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3BhbiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA2cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42N3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LS1jb21wYWN0IHtcbiAgICAgICAgbWluLWhlaWdodDogMi40NXJlbTtcbiAgICAgICAgcGFkZGluZy1ibG9jazogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTMpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGFfX2FjdGlvbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICB3aWR0aDogbWluKDEycmVtLCAxMDAlKTtcbiAgICAgICAgbWluLXdpZHRoOiA5LjVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAxLjFyZW07XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1sb2FkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWxvYWRpbmcgc3BhbiB7XG4gICAgICAgIGhlaWdodDogODhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBhdGgtc2hpbW1lciAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWxvYWRpbmcgc3BhbjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4ycztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBhdGgtc2hpbW1lciB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg4JSAxMCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogY2xhbXAoNS4ycmVtLCAxNXZ3LCA3LjVyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDUuMnJlbSwgMTV2dywgNy41cmVtKTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvID4gZGl2Om5vdCguY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsKSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8gaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuN3JlbSwgNHZ3LCAyLjM1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8gcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDYuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogNi41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMSkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDE2cHggMjhweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjY1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWwgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxNXJlbSksIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNy41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTIlIDQlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDQuMjVyZW07XG4gICAgICAgIGhlaWdodDogNC4yNXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIGFydGljbGUgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZ3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxNXJlbSksIDFmcikpO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1wYW5lbCxcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgJ3JpbmcgbGFiZWwnXG4gICAgICAgICAgJ3JpbmcgZGV0YWlsJztcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyA+IGRpdiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZ3JpZC1hcmVhOiByaW5nO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4zNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjM1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1za3kpIHZhcigtLXJpbmctcHJvZ3Jlc3MpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nID4gZGl2OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMzRyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHN0cm9uZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgc3BhbiB7XG4gICAgICAgIGdyaWQtYXJlYTogbGFiZWw7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBkZXRhaWw7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1ncmlkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4wNWZyKSBtaW5tYXgoMCwgMC45NWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1wYW5lbC0td2lkZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxMC41cmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMC45ZnIpIG1pbm1heCgzcmVtLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBpOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IHZhcigtLWJhci1wcm9ncmVzcyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXNreSksIHZhcigtLWNoZXNzaW1hbHMtc3VuKSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tcGF0aCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tcGF0aCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkuaXMtdmljdG9yeSxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhcixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41NXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVyby5pcy1jbGVhcmVkID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciBpbWcge1xuICAgICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxKSBzYXR1cmF0ZSgwLjE1KSBjb250cmFzdCgwLjk1KTtcbiAgICAgICAgb3BhY2l0eTogMC42MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8uaXMtY2xlYXJlZCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXI6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJ+Kckyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC0wLjA1cmVtO1xuICAgICAgICBib3R0b206IC0wLjA1cmVtO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIGRpdixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Ugc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19wbGF5IHtcbiAgICAgICAgbWluLWhlaWdodDogMy4zNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuOXJlbSAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0ID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzLjRyZW07XG4gICAgICAgIGhlaWdodDogMy40cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCksXG4gICAgICAgICAgMCAwLjQ1cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xNiksXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24uaXMtY3JpdGljYWwgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCBlbSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1sZWFybi1tb3JlIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDIpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXI6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIDAgMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgaGVpZ2h0OiAwLjIycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCh2YXIoLS10aW1lci1wcm9ncmVzcywgMSkpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgbGluZWFyLFxuICAgICAgICAgIGJhY2tncm91bmQgMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41OCkgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgODIwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlLmlzLXBvcCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc2NvcmUtcHVsc2UgNjIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIgc3Ryb25nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjFmcikgbWlubWF4KDAsIDEuMzVmcik7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC42OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuN3JlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjdyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTg7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi0tbGl2ZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5LjVyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgJ2F2YXRhciB0aXRsZSdcbiAgICAgICAgICAnYXZhdGFyIGJvZHknXG4gICAgICAgICAgJ2F2YXRhciB0ZW5kZW5jeSc7XG4gICAgICAgIGNvbHVtbi1nYXA6IDAuNTVyZW07XG4gICAgICAgIHJvdy1nYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGdyaWQtYXJlYTogYXZhdGFyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHN0cm9uZyB7XG4gICAgICAgIGdyaWQtYXJlYTogdGl0bGU7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogYm9keTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBwIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0ZW5kZW5jeTtcbiAgICAgICAgbWFyZ2luOiAwLjEycmVtIDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk1cmVtLCAyLjV2dywgMS4ycmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXM6IG1pbigwLjg1cmVtLCAxNHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgZmxleDogMCAxIDU4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGNvbnRhaW46IHBhaW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgY2xpcC1wYXRoOiBpbnNldCgwIHJvdW5kIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKSk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQod2hpdGUsIGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAxNiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMzIlIDY4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN0b25lLXJnYiksIDAuMDUpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDY2JSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHRyYW5zcGFyZW50IDI0JSksIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc2NvcmUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMS4wMzUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDAuNzVyZW0sIDR2dywgMS4zNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC40OCksIHJnYmEoOCwgMTgsIDEzLCAwLjM0KSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxLjVweCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8taW4gMjYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMThyZW0sIDkyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAxLjFyZW0gMi4zcmVtIHJnYmEoMCwgMCwgMCwgMC4yNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI0JSwgdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBmb250LXNpemU6IDIuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNDVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgIGZyb20gOGRlZyxcbiAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjE2KSA3ZGVnIDExZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDExZGVnIDIyZGVnXG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSA4ZGVnIDEyZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDEyZGVnIDI0ZGVnXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAxLjFyZW07XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIuNXJlbSk7XG4gICAgICAgIG1heC13aWR0aDogMjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCA4cmVtKTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAxLjFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICAgICAgICBjb2xvcjogIzFhMmExYTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjVyZW0gMS41cmVtIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaXZhbC1uYW1lIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogLTAuMnJlbSAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43NXJlbSwgM3Z3LCAwLjlyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWR2LXN0YXJzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMC4xcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41cmVtLCA4dncsIDIuMnJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLCAjZjdkNDVhKTtcbiAgICAgICAgb3BhY2l0eTogMC4yODtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC40cmVtIHJnYmEoMjQ3LCAyMTIsIDkwLCAwKSk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgb3BhY2l0eSAwLjNzIGVhc2UsXG4gICAgICAgICAgZmlsdGVyIDAuM3MgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWR2LXN0YXJzIHNwYW4uaXMtZWFybmVkIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC41cmVtIHJnYmEoMjQ3LCAyMTIsIDkwLCAwLjcpKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXN0YXItcG9wIDAuNHMgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpIGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2Fkdi1zdGFycyBzcGFuLmlzLWVhcm5lZDpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnMgc3Bhbi5pcy1lYXJuZWQ6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXN0YXItcG9wIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjc1cmVtLCAzdncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2Fkdi1jYXB0aW9uIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMTgwLCAyMDQsIDI0MCwgMC44OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMjZyZW0sIDkyJSk7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIGF1dG8gMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDJyZW0gMC40NnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQsXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGR0IHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42OCk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC41MnJlbSwgMi4xdncsIDAuNjZyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNjhyZW0sIDIuOHZ3LCAwLjg4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXZpY3Rvcnktc3BhcmtzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNDY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjk1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4zNXJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yYXlzIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yaWJib24ge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC4xODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxLjRyZW0pIHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLW1lZGFsIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjE4cmVtKSBzY2FsZSgxLjA0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDI2JSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNzglIDc2JSwgcmdiYSg2MSwgNTQsIDM2LCAwLjA2KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpLCB0cmFuc3BhcmVudCA1MiUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMTYwbXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDE2MG1zIGVhc2UsXG4gICAgICAgICAgdHJhbnNmb3JtIDE2MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmFmdGVyIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHRyYW5zcGFyZW50IDE3JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDkpLCB0cmFuc3BhcmVudCAyNSUpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDQ1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNTJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksIHRyYW5zcGFyZW50IDQyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4wOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NSwgNjYsIDQyLCAwLjA1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xOHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwLjA4cmVtIDAuMDhyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLFxuICAgICAgICAgIGluc2V0IC0wLjA4cmVtIC0wLjA4cmVtIDAgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWVkZ2UtY2VsbCAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjU2O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMTQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzAsIDUyLCAyOCwgMC4wNTUpLCB0cmFuc3BhcmVudCA0NCUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wOSkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDU1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNDhyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMCB7XG4gICAgICAgIC0td2Vhci14OiAyMiU7XG4gICAgICAgIC0td2Vhci15OiAyNCU7XG4gICAgICAgIC0td2Vhci14MjogNzglO1xuICAgICAgICAtLXdlYXIteTI6IDcyJTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAxOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTEge1xuICAgICAgICAtLXdlYXIteDogNjQlO1xuICAgICAgICAtLXdlYXIteTogMTglO1xuICAgICAgICAtLXdlYXIteDI6IDMwJTtcbiAgICAgICAgLS13ZWFyLXkyOiA3NiU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTI0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMiB7XG4gICAgICAgIC0td2Vhci14OiA0MiU7XG4gICAgICAgIC0td2Vhci15OiA1OCU7XG4gICAgICAgIC0td2Vhci14MjogODIlO1xuICAgICAgICAtLXdlYXIteTI6IDI2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA0MmRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTMge1xuICAgICAgICAtLXdlYXIteDogNzQlO1xuICAgICAgICAtLXdlYXIteTogNjglO1xuICAgICAgICAtLXdlYXIteDI6IDI0JTtcbiAgICAgICAgLS13ZWFyLXkyOiAyOCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTEyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNCB7XG4gICAgICAgIC0td2Vhci14OiAzNCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogNjIlO1xuICAgICAgICAtLXdlYXIteTI6IDg0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA2NGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTUge1xuICAgICAgICAtLXdlYXIteDogMTglO1xuICAgICAgICAtLXdlYXIteTogNzAlO1xuICAgICAgICAtLXdlYXIteDI6IDcwJTtcbiAgICAgICAgLS13ZWFyLXkyOiAzNCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTQ4ZGVnO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjM0O1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogc29mdC1saWdodDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1kYXJrLWNlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1iZzogdmFyKC0tY2hlc3NpbWFscy1jZWxsLWRhcmspO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yOCkgMCAzNiUsIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSxcbiAgICAgICAgICBpbnNldCAwIDAgMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjQyKSxcbiAgICAgICAgICAwIDAgMC41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC41NiksXG4gICAgICAgICAgMCAwIDEuNTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMzYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCkgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjhyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY2KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjUpLFxuICAgICAgICAgIDAgMCAwLjdyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpLFxuICAgICAgICAgIDAgMCAxLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjk0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43MnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjYyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDEzJTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjglKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vdmUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU1cmVtO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMC43NDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGFzdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWxlZ2FsKTpub3QoLmlzLWNhcHR1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbGFzdC1yZ2IpLCAwLjE2KSAwIDQyJSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KSwgdHJhbnNwYXJlbnQgMzQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODQpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWF1cmEgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogNCU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjY0cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCA1OCUpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00MiUpIHNjYWxlKDAuOSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogOCU7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS41NSUpIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjJyZW07XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC41KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC43MnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWZyYW1lIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLXJlYWR5Om5vdCguaXMtc2VsZWN0ZWQpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDE2JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjQ1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC42NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZy5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNDgpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjU4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yKSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjU2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKSB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSkgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuMjZyZW07XG4gICAgICAgIHJpZ2h0OiAwLjI2cmVtO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogMC40OHJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Nik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMThyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC43OCksXG4gICAgICAgICAgICBpbnNldCAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLFxuICAgICAgICAgICAgMCAwIDAuNjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4yMik7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45NiksXG4gICAgICAgICAgICBpbnNldCAwIDAgMS4zNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAgIDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40OCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUyJSkgc2NhbGUoMC44OCk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNjY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDglKSBzY2FsZSgwLjkyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1zb3VyY2UtZWZmZWN0Om5vdCguaXMtbW92aW5nLXNvdXJjZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjEyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NiksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI2KSxcbiAgICAgICAgICAwIDAgMS4xcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4xMnJlbTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43Mik7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1pbXBhY3QgNzAwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4yOHJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM2KSxcbiAgICAgICAgICAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1mcmFtZSA4NjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWhpdCA3ODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1lYWdsZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB0cmFuc3BhcmVudCAxMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43OCkgNDglLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNiksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWJ1bGw6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSAwIDAuMTZyZW0sIHRyYW5zcGFyZW50IDAuMTZyZW0gMC4zNHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM4KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3Qta2FuZ2Fyb286OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNDIlIDQ0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU4JSA1NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksIHRyYW5zcGFyZW50IDY0JSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWxpb246OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDBkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksXG4gICAgICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksXG4gICAgICAgICAgICB0cmFuc3BhcmVudFxuICAgICAgICAgICksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSwgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLCBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDY4JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpKSBzY2FsZSgxLjA3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLCBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKSkgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMjIlIDAsIDc4JSAwLCA5NiUgMTAwJSwgNCUgMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgdG9wOiAxJTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgaGVpZ2h0OiA0MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzAlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSAwIDEzJSwgdHJhbnNwYXJlbnQgMTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE4cmVtIC0wLjEycmVtIDAgcmdiYSg4MiwgNjUsIDQ2LCAwLjA2KSxcbiAgICAgICAgICBpbnNldCAwIC0xcHggMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhciB7XG4gICAgICAgIHRvcDogMzclO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICB3aWR0aDogNzIlO1xuICAgICAgICBoZWlnaHQ6IDE1JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgI2Y1Y2Q3NyAwJSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQpIDU1JSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJVxuICAgICAgICApO1xuICAgICAgICBib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgNzIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI4KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjA4cmVtIDAgcmdiYSg3MCwgNDYsIDE4LCAwLjIyKSxcbiAgICAgICAgICAwIDAuMDhyZW0gMC4xOHJlbSByZ2JhKDcwLCA0NiwgMTgsIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICB3aWR0aDogNTIlO1xuICAgICAgICBoZWlnaHQ6IDMxJTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDE2JSAwLCA4NCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkgMCAyOCUsIHRyYW5zcGFyZW50IDI5JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgMTgwZGVnLFxuICAgICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSxcbiAgICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSlcbiAgICAgICAgICApO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLFxuICAgICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKVxuICAgICAgICAgICk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjFyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICB3aWR0aDogMTYlO1xuICAgICAgICBoZWlnaHQ6IDE2JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbW92ZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCg1LjRyZW0sIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBtaW4taGVpZ2h0OiA4LjE1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNTVyZW0gMC43cmVtO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSwgdHJhbnNwYXJlbnQgMzYlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yNCksXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcCksIDAuMDgpIDU4JSxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50XG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpLFxuICAgICAgICAgIDAgMC41NXJlbSAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTQpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAxODBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTgwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMjhyZW0gMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDE2JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA1NiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjgpLFxuICAgICAgICAgIDAgMCAxLjM1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjE4KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQ6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMC41cmVtO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiA+ICoge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyNCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3OCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NiUgNjIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC43MikgMCAwLjA2cmVtLCB0cmFuc3BhcmVudCAwLjA4cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDI4JSA3OCUsIHJnYmEoMjU1LCAyNDUsIDExMSwgMC43OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU0JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KSAwIDAuMDVyZW0sIHRyYW5zcGFyZW50IDAuMDdyZW0pO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICBmcm9tIDEyZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDAgMTZkZWcsXG4gICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMjJkZWcgNDRkZWdcbiAgICAgICAgKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogNS40cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXApLCAwLjYyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgdHJhbnNwYXJlbnQgNDQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4xOHJlbSAwLjQ1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIGhlaWdodDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5NCUsICMwMDApO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdXNlcyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDEuNzJyZW07XG4gICAgICAgIGhlaWdodDogMS4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuMzVyZW0gMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDIuM3Z3LCAxLjA4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXNoZWxsOm5vdCguY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbikgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICAgIGZsZXgtYmFzaXM6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIGNsYW1wKDI4cmVtLCBjYWxjKDEwMHZoIC0gMjJyZW0pLCA1MHJlbSkpO1xuICAgICAgICAgIG1heC13aWR0aDogbWluKDUwcmVtLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTFyZW0sIDAuNjhmcikgbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjc4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMy44NXJlbSwgMWZyKSBhdXRvO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDUuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgICAgbWluLWhlaWdodDogMy44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigzLjg1cmVtLCA4OCUpO1xuICAgICAgICAgIGhlaWdodDogbWluKDMuODVyZW0sIDg4JSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjA1cmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2V0dGluZ3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICBjaXJjbGUgYXQgMTQlIDglLFxuICAgICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZikgODIlLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAyOCVcbiAgICAgICAgICApLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wNikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA0OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCAuY2hlc3NpbWFscy1zZXR0aW5ncyB2YWwtdG9nZ2xlLWlucHV0IGlvbi10b2dnbGUge1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQtY2hlY2tlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZC1jaGVja2VkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tcmFuZ2Uge1xuICAgICAgICAtLWJhci1iYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgLS1iYXItYmFja2dyb3VuZC1hY3RpdmU6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFyLWhlaWdodDogMC4zMnJlbTtcbiAgICAgICAgLS1iYXItYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0ta25vYi1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWtub2Itc2l6ZTogMS4yOHJlbTtcbiAgICAgICAgLS1waW4tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1waW4tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDI1cmVtLCA4OCUpO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC41cmVtIDAuN3JlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2sge1xuICAgICAgICBtYXgtd2lkdGg6IDMwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19oZXJvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuODVyZW0gMS44cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zZWN0aW9uLXRpdGxlIHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yNHJlbSAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3NlY3Rpb24tdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIGFydGljbGUge1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMgYXJ0aWNsZSA+IGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMgPiBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSA+IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjE1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjY4KSxcbiAgICAgICAgICAwIDAuN3JlbSAxLjI1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgcGFkZGluZzogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMzJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogOC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjhyZW0gMC41MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICBjaXJjbGUgYXQgNTAlIDAsXG4gICAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3OCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDUyJVxuICAgICAgICAgICksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjE4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgI2ZmZjhkZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA2NCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAwIDAuNTVyZW0gMS4xNXJlbSB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdywgcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc21hbGwge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDMuMjVyZW07XG4gICAgICAgIGhlaWdodDogMy4yNXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMjVyZW0gMC4zNXJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTYpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX25vdGUge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHAsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBsaSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc2MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSxcbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4xMjVyZW0gMi44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeS5pcy13b3JraW5nLFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LmlzLXdvcmtpbmcge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICAgIG9wYWNpdHk6IDAuODI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiA3MjBtcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19ub3RlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgICAuY2hlc3NpbWFscy1tb2RlLFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWdyaWQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5ncyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8ge1xuICAgICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19hcnQge1xuICAgICAgICAgIHdpZHRoOiA2LjI1cmVtO1xuICAgICAgICAgIGhlaWdodDogNi4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhX19hY3Rpb24ge1xuICAgICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWwge1xuICAgICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1LjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3BhbiB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGkge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1mb2N1cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCB7XG4gICAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMC4xOHJlbSAwLjVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjZyZW07XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ1ZW07XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjkycmVtLCA0LjR2dywgMS4xMnJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICAgIGZsZXg6IDAgMCAxLjhyZW07XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBtaW4td2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjgycmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzRyZW0gMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNzhyZW0sIDMuMnZ3LCAwLjk0cmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNwYW4ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zMnJlbSAwLjM2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZCB7XG4gICAgICAgICAgZ2FwOiAwLjQycmVtO1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTUuNXJlbSwgOTQlKTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDMuMDVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAzLjA1cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS42MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgICAgbWluLWhlaWdodDogMi4xNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgICAgZmxleDogMSAxIDhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyB7XG4gICAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjIycmVtIDAuNDhyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgzLjY1cmVtLCAxZnIpIGF1dG87XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogNS40cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuMjRyZW0gMC40MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzLjY1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMy41NXJlbSwgOTIlKTtcbiAgICAgICAgICBoZWlnaHQ6IG1pbigzLjU1cmVtLCA5MiUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNjRyZW0sIDIuOHZ3LCAwLjc4cmVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlLFxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fc2NvcmUuaXMtcG9wIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYWxsZW5nZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkdmVudHVyZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNBZHZlbnR1cmVQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzY29yZVBvcENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBvd2VyVW5sb2NrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUludHJvVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHR1cm5UaW1lckludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdHVyblRpbWVyS2V5ID0gJyc7XG4gIHByaXZhdGUgdHVyblRpbWVyRGVhZGxpbmUgPSAwO1xuICBwcml2YXRlIHR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJFeHBpcmVkS2V5ID0gJyc7XG4gIHByaXZhdGUgcGVuZGluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5pbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuZWRPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0T3V0Y29tZVNvdW5kS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdENoYWxsZW5nZUhhbmRsZWRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0TW9kZVN0YXRzSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RBZHZlbnR1cmVIYW5kbGVkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGFkdmVudHVyZU5vZGVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBAVmlld0NoaWxkKCdib2FyZEFuY2hvcicpIHByaXZhdGUgYm9hcmRBbmNob3I/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICByZWFkb25seSBib2FyZFNpemVzOiBDaGVzc2ltYWxzQm9hcmRTaXplW10gPSBbNiwgOF07XG4gIHJlYWRvbmx5IGxvY2FsTW9kZXM6IENoZXNzaW1hbHNMb2NhbE1vZGVbXSA9IFsnb25lLWRldmljZScsICdib3QnXTtcbiAgcmVhZG9ubHkgYm90RGlmZmljdWx0aWVzOiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZVtdID0gWydlYXN5JywgJ25vcm1hbCcsICdoYXJkJywgJ21hc3RlcicsICduaWdodG1hcmUnXTtcbiAgcmVhZG9ubHkgbmlnaHRtYXJlUml2YWxzOiBFeGNsdWRlPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLCAnbm9uZSc+W10gPSBbJ2h1bnQnLCAncHJpZGUnLCAnbWFnbnVzJ107XG4gIHJlYWRvbmx5IGJvdFByb2ZpbGVzID0gQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhZGRlciA9IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjtcbiAgcmVhZG9ubHkgYW5pbWFscyA9IEFOSU1BTFM7XG4gIHJlYWRvbmx5IHZhbHRlY2hDb21wb25lbnRzVmVyc2lvbiA9IFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OO1xuICByZWFkb25seSBzY3JlZW4gPSBzaWduYWw8J2hvbWUnIHwgJ2NoYWxsZW5nZScgfCAncGF0aCcgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2U+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWROaWdodG1hcmVNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlPignbm9uZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGVJZCA9IHNpZ25hbDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkPignaHVudGVyJyk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaGVzc2ltYWxzR2FtZVN0YXRlPihjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVBoYXNlID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cz4odGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICByZWFkb25seSBjaGFsbGVuZ2VTdGF0c0xvYWRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1bltdPihbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0V29uID0gc2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RCb3QgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZU5ld1JlY29yZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUludHJvVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1cm5TZWNvbmRzUmVtYWluaW5nID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUGxheU9wdGlvbnNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1J1bGVzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTZXR0aW5nc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQWJvdXRNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgcGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2NvcmVQb3AgPSBzaWduYWw8TWluaUdhbWVTY29yZVBvcE1ldGFkYXRhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBwb3dlclVubG9ja1B1bHNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVRyYWlsID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc01vdmVUcmFpbFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmcm9tQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LmZyb20uY29sKSArIDAuNTtcbiAgICBjb25zdCBmcm9tUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LmZyb20ucm93KSArIDAuNTtcbiAgICBjb25zdCB0b0NvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHRvUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LnRvLnJvdykgKyAwLjU7XG4gICAgY29uc3QgZnJvbVggPSAoZnJvbUNvbCAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZnJvbVkgPSAoZnJvbVJvdyAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHggPSAoKHRvQ29sIC0gZnJvbUNvbCkgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR5ID0gKCh0b1JvdyAtIGZyb21Sb3cpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxMCwgTWF0aC5oeXBvdChkeCwgZHkpKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSAqICgxODAgLyBNYXRoLlBJKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBgJHtmcm9tWH0lYCxcbiAgICAgIHk6IGAke2Zyb21ZfSVgLFxuICAgICAgbGVuZ3RoOiBgJHtsZW5ndGh9JWAsXG4gICAgICBhbmdsZTogYCR7YW5nbGV9ZGVnYCxcbiAgICAgIGFuaW1hbDogZWZmZWN0LmFuaW1hbCxcbiAgICAgIGNhcHR1cmU6IGVmZmVjdC5jYXB0dXJlLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBwb3dlckNhbGxvdXQgPSBjb21wdXRlZDxNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0Py5hbmltYWwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYW5pbWFsS2V5ID0gdGhpcy5jYXBpdGFsaXplKGVmZmVjdC5hbmltYWwpO1xuICAgIGNvbnN0IHJlc3VsdEtleSA9IGVmZmVjdC5jYXB0dXJlID8gJ0NhcHR1cmUnIDogJyc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoYGNoZXNzaW1hbHNQb3dlckNhbGxvdXQke2FuaW1hbEtleX0ke3Jlc3VsdEtleX1UaXRsZWApLFxuICAgICAgYm9keTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9Qm9keWApLFxuICAgICAgaW1wYWN0OiB0aGlzLnQoZWZmZWN0LmNhcHR1cmUgPyAnY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dENhcHR1cmVJbXBhY3QnIDogJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRNb3ZlSW1wYWN0JyksXG4gICAgICBpY29uOiB0aGlzLmFuaW1hbEdseXBoKGVmZmVjdC5hbmltYWwpLFxuICAgICAgaWNvblNyYzogdGhpcy5hbmltYWxBc3NldFNyYyhlZmZlY3QuYW5pbWFsKSxcbiAgICAgIHRvbmVSZ2I6IHRoaXMucG93ZXJDYWxsb3V0VG9uZShlZmZlY3QuYW5pbWFsKSxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyxcbiAgICAgIHZhcmlhbnQ6IGVmZmVjdC5jYXB0dXJlID8gJ2NhcHR1cmUnIDogJ2RlZmF1bHQnLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBib3RUaGlua2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8Q2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWVkQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVBY3Rpb24gPSBzaWduYWw8J2NyZWF0ZScgfCAnam9pbicgfCAnYWNjZXB0JyB8ICdyZWplY3QnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdPihbXSk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZW1hdGNoTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVTeW5jaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQ29ubmVjdGlvblN0YXRlID0gc2lnbmFsPCdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdsaXZlJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IHJldmlld0luZGV4ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbG9nZ2VkSW5Vc2VyID0gdGhpcy5hdXRoLnVzZXI7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyUHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpKTtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5hdmF0YXIgPz8gJ/CfjJ8nKTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBpZiAodXNlcj8ubmFtZT8udHJpbSgpKSByZXR1cm4gdXNlci5uYW1lLnRyaW0oKTtcbiAgICBpZiAodXNlcj8uZW1haWw/LnRyaW0oKSkgcmV0dXJuIHVzZXIuZW1haWwudHJpbSgpO1xuICAgIHJldHVybiB0aGlzLnBsYXllclByb2ZpbGVzLmRpc3BsYXlOYW1lKHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSk7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJIYW5kbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgY29uc3QgaGFuZGxlID0gdXNlcj8uaGFuZGxlPy50cmltKCk7XG4gICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZS5zdGFydHNXaXRoKCdAJykgPyBoYW5kbGUgOiBgQCR7aGFuZGxlfWA7XG4gICAgaWYgKHVzZXI/LnVzZXJJZCkgcmV0dXJuIGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlci51c2VySWQpfWA7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uaWQ7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQocHJvZmlsZUlkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcyA9IGNvbXB1dGVkPFVzZXJBdmF0YXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB1c2VyOiB0aGlzLmxvZ2dlZEluVXNlcigpLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgY3NzQ2xhc3M6ICdjaGVzc2ltYWxzLXR1cm4tYXZhdGFyJyxcbiAgfSkpO1xuICByZWFkb25seSB0dXJuUGxheWVyUGFydGljaXBhbnQgPSBjb21wdXRlZDxDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltnYW1lLmN1cnJlbnRUdXJuXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFVzZVR1cm5QbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gISF0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIHJldHVybiAhIXRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWNpcGFudCA9IHRoaXMudHVyblBsYXllclBhcnRpY2lwYW50KCk7XG4gICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgbmFtZTogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICBlbWFpbDogcGFydGljaXBhbnQuZW1haWwsXG4gICAgICAgICAgaGFuZGxlOiBwYXJ0aWNpcGFudC5oYW5kbGUsXG4gICAgICAgICAgYXZhdGFyVXJsOiBwYXJ0aWNpcGFudC5hdmF0YXJVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIGF2YXRhclVybDogcGFydGljaXBhbnQuYXZhdGFyVXJsLFxuICAgICAgICBiYWNrZ3JvdW5kOiBwYXJ0aWNpcGFudC5jb2xvcixcbiAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllckZhbGxiYWNrQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJylcbiAgICAgIHJldHVybiB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpPy5hdmF0YXIgPz8gdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKS5jaGFyQXQoMCk7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxQbGF5ZXJBdmF0YXIoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1cm5QbGF5ZXJFeWVicm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1cm4nKTtcbiAgICByZXR1cm4gdGhpcy50KHRoaXMubG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdGhpcy5wbGF5ZXJEaXNwbGF5TmFtZShnYW1lLmN1cnJlbnRUdXJuKTtcbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJOYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRoaXMubG9nZ2VkUGxheWVySGFuZGxlKCk7XG4gICAgY29uc3QgcGFydGljaXBhbnQgPSB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBjb25zdCB1c2VySWQgPSBwYXJ0aWNpcGFudD8uYWNjb3VudFVzZXJJZCB8fCBwYXJ0aWNpcGFudD8udWlkIHx8IHBhcnRpY2lwYW50Py5wcm9maWxlSWQ7XG4gICAgcmV0dXJuIHVzZXJJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlcklkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8uc2Z4RW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzTXVzaWNFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4VG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1NmeEVuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY1ZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogdmFsdWUgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNTZnhWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiB2YWx1ZSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBhdmFpbGFibGVCb3RQcm9maWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ25pZ2h0bWFyZScpIHJldHVybiBbXTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ21hc3RlcicpIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbHRlcihwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09ICdtYWdudXMnKTtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maWx0ZXIocHJvZmlsZSA9PiBwcm9maWxlLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkgJiYgcHJvZmlsZS5pZCAhPT0gJ21hZ251cycpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbmQocHJvZmlsZSA9PiBwcm9maWxlLmlkID09PSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkpXG4gICk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMuZ2FtZUJvdFByb2ZpbGVJZCgpO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyB0aGlzLmJvdFByb2ZpbGVzLmZpbmQocHJvZmlsZSA9PiBwcm9maWxlLmlkID09PSBwcm9maWxlSWQpIDogdW5kZWZpbmVkO1xuICB9KTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSGVhZGVyQm90ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykgcmV0dXJuIHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gIH0pO1xuICByZWFkb25seSBib3RPcHBvbmVudFByb2ZpbGUgPSBjb21wdXRlZDxDaGVzc2ltYWxzQm90UHJvZmlsZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY2hhbGxlbmdlQm90ID0gdGhpcy5jaGFsbGVuZ2VIZWFkZXJCb3QoKTtcbiAgICBpZiAoY2hhbGxlbmdlQm90KSByZXR1cm4gdGhpcy5jaGFsbGVuZ2VCb3RQcm9maWxlKGNoYWxsZW5nZUJvdCk7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZUJvdFByb2ZpbGUoKSA/PyB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRFeWVicm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuY2hhbGxlbmdlSGVhZGVyQm90KCk7XG4gICAgaWYgKGNoYWxsZW5nZUJvdCkgcmV0dXJuIHRoaXMuY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGNoYWxsZW5nZUJvdCk7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5ib3RPcHBvbmVudFByb2ZpbGUoKTtcbiAgICBjb25zdCBib3ROYW1lID0gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH0pO1xuICByZWFkb25seSBib3RPcHBvbmVudERlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuY2hhbGxlbmdlSGVhZGVyQm90KCk7XG4gICAgaWYgKGNoYWxsZW5nZUJvdCkgcmV0dXJuIHRoaXMuY2hhbGxlbmdlQm90U3R5bGVMaW5lKGNoYWxsZW5nZUJvdCk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90T3Bwb25lbnRQcm9maWxlKCk7XG4gICAgcmV0dXJuIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRDYXJkID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc0JvdE9wcG9uZW50VmlldyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjaGFsbGVuZ2VCb3QgPSB0aGlzLmNoYWxsZW5nZUhlYWRlckJvdCgpO1xuICAgIGlmIChjaGFsbGVuZ2VCb3QpIHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoY2hhbGxlbmdlQm90KTtcbiAgICAgIGNvbnN0IGJvdE5hbWUgPSBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdmF0YXI6IHByb2ZpbGU/LmF2YXRhciA/PyAn4pmfJyxcbiAgICAgICAgYXZhdGFyU3JjOiBwcm9maWxlPy5hdmF0YXJTcmMgPz8gJycsXG4gICAgICAgIGV5ZWJyb3c6IHRoaXMuY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGNoYWxsZW5nZUJvdCksXG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNoYWxsZW5nZUJvdFN0eWxlTGluZShjaGFsbGVuZ2VCb3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBuaWdodG1hcmVNb2RlID0gdGhpcy5hY3RpdmVOaWdodG1hcmVNb2RlKCk7XG4gICAgaWYgKG5pZ2h0bWFyZU1vZGUgIT09ICdub25lJykge1xuICAgICAgY29uc3QgYm90TmFtZSA9IHRoaXMubmlnaHRtYXJlTW9kZUxhYmVsKG5pZ2h0bWFyZU1vZGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXZhdGFyOiB0aGlzLm5pZ2h0bWFyZU1vZGVHbHlwaChuaWdodG1hcmVNb2RlKSxcbiAgICAgICAgYXZhdGFyU3JjOiB0aGlzLm5pZ2h0bWFyZU1vZGVBc3NldFNyYyhuaWdodG1hcmVNb2RlKSxcbiAgICAgICAgZXllYnJvdzogdGhpcy5ib3REaWZmaWN1bHR5TGFiZWwoJ25pZ2h0bWFyZScpLFxuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5uaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obmlnaHRtYXJlTW9kZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdE9wcG9uZW50UHJvZmlsZSgpO1xuICAgIGlmICghcHJvZmlsZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgYXZhdGFyOiBwcm9maWxlLmF2YXRhcixcbiAgICAgIGF2YXRhclNyYzogcHJvZmlsZS5hdmF0YXJTcmMgPz8gJycsXG4gICAgICBleWVicm93OiB0aGlzLmJvdERpZmZpY3VsdHlMYWJlbCh0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpKSxcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuYm90UHJvZmlsZURlc2NyaXB0aW9uKHByb2ZpbGUpLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBhY3RpdmVDaGFsbGVuZ2VCb3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgLSAxKV07XG4gIH0pO1xuICByZWFkb25seSByZXN1bWFibGVDaGFsbGVuZ2VSdW4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkO1xuICB9KTtcblxuICBASW5wdXQoKSBzZXQgb25saW5lR2FtZUlkKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlID8/ICcnKTtcbiAgICBpZiAoIWdhbWVJZCkgcmV0dXJuO1xuICAgIHRoaXMucGVuZGluZ09ubGluZUdhbWVJZCA9IGdhbWVJZDtcbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcbiAgQElucHV0KCkgcHJvamVjdGlvbk1vZGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgYWR2ZW50dXJlTm9kZShcbiAgICBwYXJhbXM6XG4gICAgICB8IHtcbiAgICAgICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgICAgICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQ7XG4gICAgICAgICAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHk7XG4gICAgICAgICAgYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplO1xuICAgICAgICB9XG4gICAgICB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBpZiAoIXBhcmFtcz8ubm9kZUlkKSByZXR1cm47XG4gICAgdGhpcy5hZHZlbnR1cmVOb2RlSWQuc2V0KHBhcmFtcy5ub2RlSWQpO1xuICAgIHRoaXMuc3RhcnRBZHZlbnR1cmVCYXR0bGUocGFyYW1zLnByb2ZpbGVJZCwgcGFyYW1zLmRpZmZpY3VsdHksIHBhcmFtcy5ib2FyZFNpemUpO1xuICB9XG5cbiAgcmVhZG9ubHkgcmVwbGF5RW50cmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlUmV2aWV3SW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMucmVwbGF5RW50cmllcygpO1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgZW50cmllcy5sZW5ndGggPD0gMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmV2aWV3SW5kZXgoKSA/PyBlbnRyaWVzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGluZGV4LCAwKSwgZW50cmllcy5sZW5ndGggLSAxKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGhhc1JlcGxheUNvbnRyb2xzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQpO1xuICByZWFkb25seSByZXZpZXdHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGNvbnN0IGVudHJ5ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICByZXR1cm4gZW50cnkgPyBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUodGhpcy5nYW1lKCksIGVudHJ5KSA6IHRoaXMuZ2FtZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5nYW1lKCkuY3VycmVudFR1cm5dKTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXJDb2xvciA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJyA/IHJvbGUgOiBnYW1lLmN1cnJlbnRUdXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBwb3dlclBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5wb3dlclBsYXllckNvbG9yKCldKTtcbiAgcmVhZG9ubHkgY2FuVXNlUG93ZXJDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdhbWUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmXG4gICAgICB0aGlzLnBvd2VyUGxheWVyQ29sb3IoKSA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJlxuICAgICAgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJlxuICAgICAgIXRoaXMuYm90VGhpbmtpbmcoKSAmJlxuICAgICAgIXRoaXMubW92aW5nUGllY2UoKVxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIFtdO1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModGhpcy5nYW1lKCksIHBpZWNlSWQsIHRoaXMuc2VsZWN0ZWRBbmltYWwoKSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgaWYgKCFleHBlY3RlZCkgcmV0dXJuIG1vdmVzO1xuICAgIHJldHVybiBtb3Zlcy5maWx0ZXIoXG4gICAgICBtb3ZlID0+XG4gICAgICAgIG1vdmUucGllY2VJZCA9PT0gZXhwZWN0ZWQucGllY2VJZCAmJlxuICAgICAgICBwb3NpdGlvbktleShtb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoZXhwZWN0ZWQudG8pICYmXG4gICAgICAgIChtb3ZlLmFuaW1hbCA/PyB1bmRlZmluZWQpID09PSAoZXhwZWN0ZWQuYW5pbWFsID8/IHVuZGVmaW5lZClcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkubWFwKG1vdmUgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICBuZXcgU2V0KFxuICAgICAgICB0aGlzLmxlZ2FsTW92ZXMoKVxuICAgICAgICAgIC5maWx0ZXIobW92ZSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgICAgIC5tYXAobW92ZSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSlcbiAgICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgd2lubmluZ01vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBwcm9tb3Rpb25Sb3cgPSBnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gMCA6IGdhbWUuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gbmV3IFNldChcbiAgICAgIHRoaXMubGVnYWxNb3ZlcygpXG4gICAgICAgIC5maWx0ZXIobW92ZSA9PiBtb3ZlLnRvLnJvdyA9PT0gcHJvbW90aW9uUm93KVxuICAgICAgICAubWFwKG1vdmUgPT4gcG9zaXRpb25LZXkobW92ZS50bykpXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVSZWFkeVBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBtb3ZlcyA9IHRoaXMuYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pLmZpbHRlcihtb3ZlID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KG1vdmVzLm1hcChtb3ZlID0+IG1vdmUucGllY2VJZCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgdGhyZWF0ZW5lZFBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBvcHBvbmVudCA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICBjb25zdCB0aHJlYXRlbmVkID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgb3Bwb25lbnQpXG4gICAgICAubWFwKG1vdmUgPT4gbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICAuZmlsdGVyKChwaWVjZUlkKTogcGllY2VJZCBpcyBzdHJpbmcgPT4gISFwaWVjZUlkKTtcbiAgICByZXR1cm4gbmV3IFNldCh0aHJlYXRlbmVkKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGlzQWN0aW9uYWJsZVR1cm4gPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiYgIXRoaXMuYm90VGhpbmtpbmcoKSAmJiAhdGhpcy5tb3ZlU3luY2luZygpXG4gICk7XG4gIHJlYWRvbmx5IGlzV2FpdGluZ0ZvclR1cm4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgIXRoaXMuaXNBY3Rpb25hYmxlVHVybigpKTtcbiAgcmVhZG9ubHkgYm9hcmRSb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgYm9hcmRDb2xzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheVJvd3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZFJvd3MoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZFJvd3MoKVxuICApO1xuICByZWFkb25seSBkaXNwbGF5Q29scyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkQ29scygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkQ29scygpXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyAodGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3doaXRlJykgOiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVSb2xlID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8ICd3YWl0aW5nJyB8ICdwZW5kaW5nJyB8ICdzcGVjdGF0b3InIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuICdzcGVjdGF0b3InO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkpIHJldHVybiAnd2FpdGluZyc7XG4gICAgaWYgKHRoaXMub25saW5lLmlzUGVuZGluZ0d1ZXN0KGdhbWUsIHVpZCkpIHJldHVybiAncGVuZGluZyc7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICdzcGVjdGF0b3InO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuUGxheUN1cnJlbnRUdXJuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SICYmICF0aGlzLmJvdFRoaW5raW5nKCk7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBjYW5Db250cm9sQ3VycmVudEdhbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICByZXR1cm4gcm9sZSA9PT0gJ3doaXRlJyB8fCByb2xlID09PSAnYmxhY2snO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaFN0YXRlID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZT4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuICdub25lJztcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmICghdWlkIHx8IHRoaXMub25saW5lUm9sZSgpID09PSAnc3BlY3RhdG9yJykgcmV0dXJuICdub25lJztcblxuICAgIGNvbnN0IGhhc01pbmUgPSB0aGlzLm9ubGluZS5oYXNDdXJyZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcbiAgICBjb25zdCBoYXNPdGhlciA9IHRoaXMub25saW5lLmhhc09wcG9uZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcblxuICAgIGlmIChoYXNPdGhlciAmJiAhaGFzTWluZSkgcmV0dXJuICdpbmNvbWluZyc7XG4gICAgaWYgKGhhc01pbmUpIHJldHVybiAncmVxdWVzdGVkJztcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaEFjdGlvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5yZW1hdGNoU3RhdGUoKTtcbiAgICBpZiAodGhpcy5yZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KHN0YXRlID09PSAnaW5jb21pbmcnID8gJ2NoZXNzaW1hbHNBY2NlcHRpbmdSZW1hdGNoJyA6ICdjaGVzc2ltYWxzUmVxdWVzdGluZ1JlbWF0Y2gnKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnaW5jb21pbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQWNjZXB0UmVtYXRjaCcpO1xuICAgIGlmIChzdGF0ZSA9PT0gJ3JlcXVlc3RlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkQWN0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlbWF0Y2gnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dPbmxpbmVTdGF0dXMgPSBjb21wdXRlZChcbiAgICAoKSA9PiAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICd3YWl0aW5nJ1xuICApO1xuICByZWFkb25seSBvbmxpbmVTdGF0dXNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgdGhpcy5tb3ZlU3luY2luZygpKVxuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZ1RpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3BlY3RhdG9yVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lQ29ubmVjdGVkVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSlcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nQm9keScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXhwaXJlZEJvZHknKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZEJvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lVmlld2VyJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxTdGVwSW5kZXggPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbih0aGlzLmdhbWUoKS5tb3ZlQ291bnQsIENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxQcm9ncmVzc0xhYmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxDb21wbGV0ZVByb2dyZXNzJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxQcm9ncmVzcycpXG4gICAgICAgICAgLnJlcGxhY2UoJ3tzdGVwfScsIFN0cmluZyh0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxKSlcbiAgICAgICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyhDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTKSlcbiAgKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfVRpdGxlYCk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfUJvZHlgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSlcbiAgKTtcbiAgcmVhZG9ubHkgd2luVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpKSk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6IHJlYXNvbiA9PT0gJ2Jsb2NrZWQnXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzV2luQmxvY2tlZCdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiByZWFzb24gPT09ICdibG9ja2VkJ1xuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkJsb2NrZWQnXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzUmVhc29uUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSBtb3Zlc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc01vdmVzU3VtbWFyeScpLnJlcGxhY2UoJ3ttb3Zlc30nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YClcbiAgKTtcbiAgcmVhZG9ubHkgY2FwdHVyZXNCeUNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlOiBSZWNvcmQ8Q2hlc3NpbWFsc1BsYXllckNvbG9yLCBudW1iZXI+ID0geyB3aGl0ZTogMCwgYmxhY2s6IDAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZT8uY2FwdHVyZXNQaWVjZUlkKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHBpZWNlID0gZW50cnkucGllY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgICAgaWYgKHBpZWNlPy5jb2xvcikgc2NvcmVbcGllY2UuY29sb3JdICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VsdENhcHR1cmVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGgpO1xuICByZWFkb25seSByZXN1bHRQb3dlcnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpXG4gICAgICAubWFwKGVudHJ5ID0+IGVudHJ5Lm1vdmU/LmFuaW1hbClcbiAgICAgIC5maWx0ZXIoKGFuaW1hbCk6IGFuaW1hbCBpcyBDaGVzc2ltYWxzQW5pbWFsVHlwZSA9PiAhIWFuaW1hbClcbiAgKTtcbiAgcmVhZG9ubHkgbGl2ZVNjb3JlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgPyB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSwgJ1cnKS5zY29yZSA6IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKS5zY29yZVxuICApO1xuICByZWFkb25seSByZXN1bHRTY29yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFN0YXRzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRTY29yZScpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFNjb3JlKCkuc2NvcmUpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE1vdmVzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Q2FwdHVyZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRDYXB0dXJlcygpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRQb3dlcnMoKS5sZW5ndGgpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFJlYXNvbicpLFxuICAgICAgdmFsdWU6IHRoaXMud2luUmVhc29uTGFiZWwoKSxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcG93ZXJzID0gdGhpcy5yZXN1bHRQb3dlcnMoKTtcbiAgICBpZiAoIXBvd2Vycy5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHROb1Bvd2VycycpO1xuICAgIHJldHVybiBwb3dlcnMubWFwKGFuaW1hbCA9PiB0aGlzLmFuaW1hbExhYmVsKGFuaW1hbCkpLmpvaW4oJyDCtyAnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxpdmVTY29yZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gU3RyaW5nKHRoaXMubGl2ZVNjb3JlKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0QmVzdE1vdmVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBiZXN0TW92ZSA9IHRoaXMucmVzdWx0U2NvcmUoKS5iZXN0TW92ZTtcbiAgICBpZiAoIWJlc3RNb3ZlKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Tm9CZXN0TW92ZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRCZXN0TW92ZUxpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3tzY29yZX0nLCBTdHJpbmcoYmVzdE1vdmUuc2NvcmUpKVxuICAgICAgLnJlcGxhY2UoJ3ttb3ZlfScsIGJlc3RNb3ZlLmxhYmVsKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dCb3RSZXBvcnQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJyAmJlxuICAgICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmXG4gICAgICAhdGhpcy50dXRvcmlhbE1vZGUoKSAmJlxuICAgICAgISF0aGlzLmdhbWVCb3RQcm9maWxlKClcbiAgKTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKFxuICAgICAgJ3tib3R9JyxcbiAgICAgIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKVxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBib3RSZXBvcnRCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmdhbWVCb3RQcm9maWxlKCk7XG4gICAgY29uc3QgYm90TW92ZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKS5maWx0ZXIoZW50cnkgPT4gZW50cnkubW92ZT8ucGllY2VJZC5zdGFydHNXaXRoKCdCJykpO1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYm90TW92ZXMuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGg7XG4gICAgY29uc3QgcG93ZXJzID0gYm90TW92ZXMuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uYW5pbWFsKS5sZW5ndGg7XG4gICAgY29uc3Qgb3V0Y29tZUtleSA9XG4gICAgICB0aGlzLmdhbWUoKS53aW5uZXIgPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SID8gJ2NoZXNzaW1hbHNCb3RSZXBvcnRPdXRjb21lV29uJyA6ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZUxvc3QnO1xuXG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFJlcG9ydEJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3tvdXRjb21lfScsIHRoaXMudChvdXRjb21lS2V5KSlcbiAgICAgIC5yZXBsYWNlKCd7Y2FwdHVyZXN9JywgU3RyaW5nKGNhcHR1cmVzKSlcbiAgICAgIC5yZXBsYWNlKCd7cG93ZXJzfScsIFN0cmluZyhwb3dlcnMpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHlsZX0nLCBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZSkgOiAnJyk7XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNHYW1lcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHBvbmVudFVpZCA9IHRoaXMuY3VycmVudE9wcG9uZW50VWlkKCk7XG4gICAgaWYgKCFvcHBvbmVudFVpZCkgcmV0dXJuIFtdIGFzIENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVIaXN0b3J5KCkuZmlsdGVyKGVudHJ5ID0+IGVudHJ5Lm9wcG9uZW50VWlkID09PSBvcHBvbmVudFVpZCAmJiBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU2NvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZXMgPSB0aGlzLnNlcmllc0dhbWVzKCk7XG4gICAgaWYgKCFnYW1lcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbmU6IGdhbWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5vdXRjb21lID09PSAnd29uJykubGVuZ3RoLFxuICAgICAgcml2YWw6IGdhbWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5vdXRjb21lID09PSAnbG9zdCcpLmxlbmd0aCxcbiAgICAgIHRvdGFsOiBnYW1lcy5sZW5ndGgsXG4gICAgfTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNlcmllc1Njb3JlKCk7XG4gICAgaWYgKCFzY29yZSB8fCBzY29yZS50b3RhbCA8IDIpIHJldHVybiAnJztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU2VyaWVzU2NvcmUnKVxuICAgICAgLnJlcGxhY2UoJ3ttaW5lfScsIFN0cmluZyhzY29yZS5taW5lKSlcbiAgICAgIC5yZXBsYWNlKCd7cml2YWx9JywgU3RyaW5nKHNjb3JlLnJpdmFsKSlcbiAgICAgIC5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucmVtYXRjaE9wcG9uZW50TmFtZSgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxhc3RTZXJpZXNXaW5uZXJMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5zZXJpZXNHYW1lcygpWzBdO1xuICAgIGlmICghbGFzdCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBsYXN0Lm91dGNvbWUgPT09ICd3b24nID8gdGhpcy50KCdjaGVzc2ltYWxzWW91JykgOiBsYXN0Lm9wcG9uZW50TmFtZSB8fCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb25maXJtTmV3VGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICBhY3Rpb24gPT09ICdyZXNpZ24nXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc1Jlc2lnbicpXG4gICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdnYW1lcydcbiAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgICAgIDogYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldydcbiAgICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXdDb25maXJtJylcbiAgICAgICAgICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc1R1dG9yaWFsQWN0aW9uID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzUnVsZXNUcnlUdXRvcmlhbCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAndHV0b3JpYWwnLFxuICB9KSk7XG4gIHJlYWRvbmx5IHJ1bGVzQ2xvc2VBY3Rpb24gPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgfSkpO1xuICByZWFkb25seSBhYm91dEFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNBYm91dEZlZWRiYWNrJyksXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdmZWVkYmFjaycsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8ucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubXVzaWNFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGVuYWJsZWQgPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvLnNldE11c2ljRW5hYmxlZChlbmFibGVkKTtcbiAgICAgICAgaWYgKGVuYWJsZWQpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShlbmFibGVkID0+IHRoaXMuYXVkaW8uc2V0U2Z4RW5hYmxlZChlbmFibGVkKSlcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKHRoaXMubXVzaWNWb2x1bWVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodm9sdW1lID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSkpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZvbHVtZSA9PiB0aGlzLnNldFNmeFZvbHVtZSh2b2x1bWUpKSk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICAgICAgdGhpcy53YXRjaENoYWxsZW5nZVN0YXRzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNMb2FkZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSk7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ3BsYXlpbmcnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ31gO1xuICAgICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSBrZXk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZycpIHJldHVybjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tb2RlU3RhdHNSZXN1bHQoZ2FtZSk7XG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3Jlc3VsdC5tb2RlfToke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ31gO1xuICAgICAgICBpZiAodGhpcy5sYXN0TW9kZVN0YXRzSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdE1vZGVTdGF0c0hhbmRsZWRLZXkgPSBrZXk7XG4gICAgICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5yZWNvcmRNb2RlUmVzdWx0KHJlc3VsdC5tb2RlLCByZXN1bHQud29uLCByZXN1bHQucm91bmRTdGF0cykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG1vZGUgc3RhdHMgc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnN5bmNUdXJuVGltZXIoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhpcy5hZHZlbnR1cmVOb2RlSWQoKTtcbiAgICAgICAgaWYgKCFub2RlSWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7bm9kZUlkfToke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfWA7XG4gICAgICAgIGlmICh0aGlzLmxhc3RBZHZlbnR1cmVIYW5kbGVkS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgICAgdGhpcy5sYXN0QWR2ZW50dXJlSGFuZGxlZEtleSA9IGtleTtcbiAgICAgICAgY29uc3Qgd29uID0gZ2FtZS53aW5uZXIgPT09ICd3aGl0ZSc7XG4gICAgICAgIGlmICghd29uKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHN0YXJzID0gdGhpcy5hZHZlbnR1cmVTdGFyc0ZvckdhbWUoZ2FtZSk7XG4gICAgICAgIHZvaWQgdGhpcy5hZHZlbnR1cmVQcm9ncmVzcy5yZWNvcmROb2RlQ29tcGxldGVkKG5vZGVJZCwgc3RhcnMpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWR2ZW50dXJlIHByb2dyZXNzIHNhdmUgZmFpbGVkJywgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRBZHZlbnR1cmVCYXR0bGUoXG4gICAgcHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkLFxuICAgIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICAgIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZS5zZXQoJ2JvdCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KGJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpO1xuICAgIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlLnNldCgnbm9uZScpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGVJZCk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldChwcm9maWxlSWQpO1xuICAgIHRoaXMubGFzdEFkdmVudHVyZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZUNvbmZpZ3VyZWRMb2NhbEdhbWUoYm9hcmRTaXplKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgYWR2ZW50dXJlU3RhcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IG5vZGVJZCA9IHRoaXMuYWR2ZW50dXJlTm9kZUlkKCk7XG4gICAgaWYgKCFub2RlSWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgZ2FtZS53aW5uZXIgIT09ICd3aGl0ZScpIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLmFkdmVudHVyZVN0YXJzRm9yR2FtZShnYW1lKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWR2ZW50dXJlQ3VycmVudE5vZGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZUlkID0gdGhpcy5hZHZlbnR1cmVOb2RlSWQoKTtcbiAgICBpZiAoIW5vZGVJZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gQ0hFU1NJTUFMU19BRFZFTlRVUkVfQUNUUy5mbGF0TWFwKGEgPT4gYS5ub2RlcykuZmluZChuID0+IG4uaWQgPT09IG5vZGVJZCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFkdmVudHVyZU5leHRCYXR0bGVOb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVJZCA9IHRoaXMuYWR2ZW50dXJlTm9kZUlkKCk7XG4gICAgaWYgKCFub2RlSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY3VycmVudCA9IENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMuZmxhdE1hcChhID0+IGEubm9kZXMpLmZpbmQobiA9PiBuLmlkID09PSBub2RlSWQpO1xuICAgIGlmICghY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gQ0hFU1NJTUFMU19BRFZFTlRVUkVfQUNUUy5mbGF0TWFwKGEgPT4gYS5ub2RlcykuZmluZChcbiAgICAgIG4gPT4gY3VycmVudC5jb25uZWN0c1RvLmluY2x1ZGVzKG4uaWQpICYmIG4udHlwZSA9PT0gJ2JhdHRsZSdcbiAgICApO1xuICB9KTtcblxuICBwcml2YXRlIGFkdmVudHVyZVN0YXJzRm9yR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBtb3ZlcyA9IGdhbWUubW92ZUNvdW50O1xuICAgIGNvbnN0IHNpemUgPSBnYW1lLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmYXN0VGhyZXNob2xkID0gc2l6ZSA9PT0gNiA/IDE2IDogMjQ7XG4gICAgaWYgKG1vdmVzIDw9IGZhc3RUaHJlc2hvbGQpIHJldHVybiAzO1xuICAgIHJldHVybiAyO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG9ydFVzZXJJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkLmxlbmd0aCA8PSAxMCkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgcmV0dXJuIGAke25vcm1hbGl6ZWQuc2xpY2UoMCwgNCl94oCmJHtub3JtYWxpemVkLnNsaWNlKC00KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5nZVZhbHVlVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiBudW1iZXIge1xuICAgIGNvbnN0IHJhdyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6ICh2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwKTtcbiAgICByZXR1cm4gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKHJhdykpKTtcbiAgfVxuXG4gIHN0YXJ0Q2hhbGxlbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkpIHtcbiAgICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2NoYWxsZW5nZS1uZXcnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFsZVJ1biA9IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHN0YWxlUnVuICYmICF0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKSkge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHJlcXVlc3ROZXdDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgfHwgdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdjaGFsbGVuZ2UtbmV3Jyk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIG9wZW5DaGFsbGVuZ2VWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuLnNldCgnY2hhbGxlbmdlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBiYWNrVG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgIGNvbnN0IGFkdmVudHVyZU5vZGUgPSB0aGlzLmFkdmVudHVyZU5vZGVJZCgpO1xuICAgIGlmIChhZHZlbnR1cmVOb2RlKSB7XG4gICAgICB0aGlzLmFkdmVudHVyZU5vZGVJZC5zZXQoJycpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWluaS1nYW1lcy9jaGVzc2ltYWxzL2FkdmVudHVyZScpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgZ29Ub05leHRBZHZlbnR1cmVOb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmFkdmVudHVyZU5leHRCYXR0bGVOb2RlKCk7XG4gICAgaWYgKCFuZXh0KSByZXR1cm47XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5hZHZlbnR1cmVOb2RlSWQuc2V0KCcnKTtcbiAgICB2b2lkIHRoaXMucm91dGVyXG4gICAgICAubmF2aWdhdGUoWycvbWluaS1nYW1lcy9jaGVzc2ltYWxzJ10sIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBhZHZlbnR1cmVOb2RlOiBuZXh0LmlkLFxuICAgICAgICAgIHByb2ZpbGVJZDogbmV4dC5wcm9maWxlSWQsXG4gICAgICAgICAgZGlmZmljdWx0eTogbmV4dC5kaWZmaWN1bHR5LFxuICAgICAgICAgIGJvYXJkU2l6ZTogbmV4dC5ib2FyZFNpemUgPz8gNixcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5zY29yZVBvcENsZWFyVGltZXIpO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgaWQgPSBgY2hhbGxlbmdlLSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbiAgICBjb25zdCBydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICBpZCxcbiAgICAgIHNjaGVtYVZlcnNpb246IDIsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNTdGFydDogMyxcbiAgICAgIGxpdmVzUmVtYWluaW5nOiAzLFxuICAgICAgcm91bmRJbmRleDogMSxcbiAgICAgIGN1cnJlbnRSb3VuZDogMSxcbiAgICAgIHJvdW5kc1dvbjogMCxcbiAgICAgIGhpZ2hlc3RSb3VuZFJlYWNoZWQ6IDEsXG4gICAgICBhY3RpdmVSb3VuZElkOiBgJHtpZH06MWAsXG4gICAgICB3aW5zOiAwLFxuICAgICAgbG9zc2VzOiAwLFxuICAgICAgYmVzdFN0cmVha0luUnVuOiAwLFxuICAgICAgY3VycmVudFN0cmVhazogMCxcbiAgICAgIGJvdExhZGRlcjogdGhpcy5jaGFsbGVuZ2VMYWRkZXIubWFwKGJvdCA9PiBib3QuaWQpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbXSxcbiAgICAgIHN0YXJ0ZWRBdDogbm93LFxuICAgICAgbGFzdEV2ZW50QXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5zdGFydENoYWxsZW5nZVJvdW5kKHJ1bik7XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZENoYWxsZW5nZVN0YXJ0ZWQodGhpcy5jaGFsbGVuZ2VSdW4oKSA/PyBydW4pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBydW4gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2hhbGxlbmdlU2Vzc2lvblN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICByZXN1bWVDaGFsbGVuZ2UocnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgY29uc3Qgc2F2ZWRHYW1lID0gdGhpcy5hY3RpdmVHYW1lRm9yUnVuKHJ1bik7XG4gICAgaWYgKHNhdmVkR2FtZSkge1xuICAgICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgc2F2ZWRHYW1lLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgY29udGludWVDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdiZXR3ZWVuJykgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pIC0gMSldO1xuICAgIGlmICghYm90KSB7XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnY29tcGxldGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW50ZXJDaGFsbGVuZ2VSb3VuZChydW4sIGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvdC5ib2FyZFNpemUpLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50ZXJDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sIGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHNob3dJbnRybzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnYm90Jyk7XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoYm90LmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGJvdC5kaWZmaWN1bHR5KTtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgIHRoaXMucGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUoZ2FtZSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICBpZiAoc2hvd0ludHJvKSB0aGlzLnNob3dDaGFsbGVuZ2VJbnRybygpO1xuICAgIGVsc2UgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQpOiBydW4gaXMgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA8IDEgfHwgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4ud2lucyA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCAhPT0gcnVuLndpbnMgKyAxKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhdGhpcy5jaGFsbGVuZ2VMYWRkZXJbcnVuLmN1cnJlbnRSb3VuZCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGdhbWUgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZShib2FyZFNpemUpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnKSByZXR1cm4gZ2FtZTtcbiAgICByZXR1cm4gdGhpcy5hcHBseU5pZ2h0bWFyZVByZXNldChnYW1lLCB0aGlzLmFjdGl2ZU5pZ2h0bWFyZU1vZGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TmlnaHRtYXJlUHJlc2V0KGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nYW1lLFxuICAgICAgICBwbGF5ZXJzOiB7XG4gICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLFxuICAgICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgICBjYXJkczoge1xuICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMsXG4gICAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmVhZ2xlLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYnVsbDoge1xuICAgICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy53aGl0ZS5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAga2FuZ2Fyb286IHtcbiAgICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMua2FuZ2Fyb28sXG4gICAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmxpb24sXG4gICAgICAgICAgICAgICAgdXNlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgIT09ICdwcmlkZScpIHJldHVybiBnYW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdhbWUsXG4gICAgICBwbGF5ZXJzOiB7XG4gICAgICAgIC4uLmdhbWUucGxheWVycyxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5nYW1lLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgY2FyZHM6IHtcbiAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcyxcbiAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5lYWdsZSxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWxsOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICB1c2VkOiB0cnVlLFxuICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGthbmdhcm9vOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5rYW5nYXJvbyxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5saW9uLFxuICAgICAgICAgICAgICB1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZGlzbWlzc0NoYWxsZW5nZUludHJvKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkgOiB1bmRlZmluZWQpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghcnVuIHx8ICFib3QpIHJldHVybjtcblxuICAgIGNvbnN0IHJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKTtcbiAgICBjb25zdCByb3VuZHNXb24gPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kc1dvbihydW4pO1xuICAgIGNvbnN0IHdvbiA9IGdhbWUud2lubmVyID09PSAnd2hpdGUnO1xuICAgIGNvbnN0IHJvdW5kU3RhdHMgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZSk7XG4gICAgY29uc3QgbmV4dExpdmVzID0gd29uID8gcnVuLmxpdmVzUmVtYWluaW5nIDogTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nIC0gMSk7XG4gICAgY29uc3QgbmV4dFN0cmVhayA9IHdvbiA/IHJ1bi5jdXJyZW50U3RyZWFrICsgMSA6IDA7XG4gICAgY29uc3QgbmV4dFJvdW5kID0gd29uID8gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCByb3VuZEluZGV4ICsgMSkgOiByb3VuZEluZGV4O1xuICAgIGNvbnN0IG5leHRSb3VuZHNXb24gPSByb3VuZHNXb24gKyAod29uID8gMSA6IDApO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdvbiAmJiByb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aDtcbiAgICBjb25zdCBmYWlsZWQgPSAhd29uICYmIG5leHRMaXZlcyA8PSAwO1xuICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3Qgcm91bmRSZXN1bHQ6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCA9IHtcbiAgICAgIHJvdW5kOiByb3VuZEluZGV4LFxuICAgICAgYm90SWQ6IGJvdC5pZCxcbiAgICAgIHByb2ZpbGVJZDogYm90LnByb2ZpbGVJZCxcbiAgICAgIHdvbixcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICBzdGF0czogcm91bmRTdGF0cyxcbiAgICAgIGZpbmlzaGVkQXQsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgd2luczogcnVuLndpbnMgKyAod29uID8gMSA6IDApLFxuICAgICAgbG9zc2VzOiBydW4ubG9zc2VzICsgKHdvbiA/IDAgOiAxKSxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IG5leHRTdHJlYWssXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspLFxuICAgICAgcm91bmRJbmRleDogY29tcGxldGVkIHx8IGZhaWxlZCA/IHJvdW5kSW5kZXggOiBuZXh0Um91bmQsXG4gICAgICBjdXJyZW50Um91bmQ6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyByb3VuZEluZGV4IDogbmV4dFJvdW5kLFxuICAgICAgcm91bmRzV29uOiBuZXh0Um91bmRzV29uLFxuICAgICAgaGlnaGVzdFJvdW5kUmVhY2hlZDogTWF0aC5tYXgocnVuLmhpZ2hlc3RSb3VuZFJlYWNoZWQgPz8gcm91bmRJbmRleCwgcm91bmRJbmRleCksXG4gICAgICBhY3RpdmVSb3VuZElkOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gdW5kZWZpbmVkIDogYCR7cnVuLmlkfToke25leHRSb3VuZH1gLFxuICAgICAgcm91bmRSZXN1bHRzOiBbLi4ucnVuLnJvdW5kUmVzdWx0cywgcm91bmRSZXN1bHRdLFxuICAgICAgbGFzdEV2ZW50QXQ6IGZpbmlzaGVkQXQsXG4gICAgICBhY3RpdmVHYW1lOiB1bmRlZmluZWQsXG4gICAgICB1cGRhdGVkQXQ6IGZpbmlzaGVkQXQsXG4gICAgICBmaW5pc2hlZEF0OiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gZmluaXNoZWRBdCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChuZXh0UnVuLnN0YXR1cyA9PT0gJ2FjdGl2ZScgPyBuZXh0UnVuIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHdvbik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldChib3QpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHJvdW5kU3RhdHMpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChcbiAgICAgIHJvdW5kSW5kZXggPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fFxuICAgICAgICBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrXG4gICAgKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldChjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2JldHdlZW4nKTtcblxuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzc1xuICAgICAgLmFwcGx5Um91bmRSZXN1bHQoe1xuICAgICAgICBydW46IG5leHRSdW4sXG4gICAgICAgIHJvdW5kUmVhY2hlZDogcm91bmRJbmRleCxcbiAgICAgICAgd29uLFxuICAgICAgICBjb21wbGV0ZWQsXG4gICAgICAgIHJvdW5kU3RhdHMsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2lkbGUnKSByZXR1cm47XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bik7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuPzogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnKSByZXR1cm47XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBzdGF0dXM6ICdhYmFuZG9uZWQnLFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICBmaW5pc2hlZEF0OiBub3csXG4gICAgfTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Muc2F2ZVJ1bihuZXh0UnVuKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgYWJhbmRvbiBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdvbmUtZGV2aWNlJyk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWxGcm9tUnVsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVJ1bGVzTW9kYWwoKTtcbiAgICB0aGlzLnN0YXJ0VHV0b3JpYWwoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoOCk7XG4gICAgICBjb25zdCBnYW1lID0gYXdhaXQgdGhpcy5vbmxpbmUuY3JlYXRlR2FtZSg4KTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZS5pZCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjcmVhdGUgb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQgfHwgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnY29ubmVjdGluZycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvcGVuIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy5vbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ2FtZS5zZXQoXG4gICAgICB0aGlzLnR1dG9yaWFsTW9kZSgpID8gdGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSA6IHRoaXMuY3JlYXRlQ29uZmlndXJlZExvY2FsR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBleGl0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgfVxuXG4gIHJlc2V0VG9Nb2RlU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXR1cm5DaGFsbGVuZ2VUb01lbnUoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAodGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB9XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQocmV0dXJuSG9tZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMuY3JlYXRlQ29uZmlndXJlZExvY2FsR2FtZShnYW1lLmJvYXJkU2l6ZSkpO1xuICAgIGlmIChyZXR1cm5Ib21lKSB7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2lnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnIHx8ICF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzaWduJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybWVkQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5DaGFsbGVuZ2VUb01lbnUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykge1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3Jykge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHRoaXMuY2hhbGxlbmdlUnVuKCkgPz8gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzaWduR2FtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHZvaWQgdGhpcy5vbmxpbmUucmVzaWduKGdhbWUuaWQpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKSk7XG4gICAgdGhpcy5zaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICB9XG5cbiAgb3BlblBsYXlPcHRpb25zTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IGZhbHNlO1xuICAgIHRoaXMuaXNQbGF5T3B0aW9uc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVBsYXlPcHRpb25zTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BsYXlPcHRpb25zTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVQbGF5T3B0aW9uc01vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQbGF5T3B0aW9uc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCkgcmV0dXJuO1xuXG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRHYW1lKCk7XG4gIH1cblxuICBzdGFydFNvbG9HYW1lRnJvbU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IHRydWU7XG4gICAgdGhpcy5jbG9zZVBsYXlPcHRpb25zTW9kYWwoKTtcbiAgfVxuXG4gIG9wZW5SdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvcGVuU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VTZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblBhdGhWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuLnNldCgncGF0aCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgb3BlbkFkdmVudHVyZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWluaS1nYW1lcy9jaGVzc2ltYWxzL2FkdmVudHVyZScpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBvcGVuQWJvdXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVBYm91dE1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5wZW5kaW5nQWJvdXRGZWVkYmFja05hdmlnYXRpb24pIHJldHVybjtcblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvZmVlZGJhY2snKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQWJvdXRBY3Rpb24oZXZlbnQ6IHsgYWN0aW9uPzogQnV0dG9uTWV0YWRhdGEgfSk6IHZvaWQge1xuICAgIGlmIChldmVudC5hY3Rpb24/LnRva2VuID09PSAnZmVlZGJhY2snKSB7XG4gICAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNsb3NlQWJvdXRNb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUFib3V0TW9kYWwoKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5yYW5nZVZhbHVlVG9OdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRNdXNpY1ZvbHVtZSh2b2x1bWUgLyAxMDApO1xuICAgIGlmICh2b2x1bWUgPiAwICYmIHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCkpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHNldFNmeFZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5zZnhWb2x1bWVDb250cm9sLnZhbHVlICE9PSB2b2x1bWUpIHtcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRTZnhWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdHV0b3JpYWxFeHBlY3RlZE1vdmUoKTogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHV0b3JpYWxNb2RlKCkgfHwgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0ZXBzOiBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmVbXSA9IFtcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMywgY29sOiAxIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMiwgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMSwgY29sOiA0IH0sIGFuaW1hbDogJ2thbmdhcm9vJyB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIyJywgdG86IHsgcm93OiAzLCBjb2w6IDUgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAwLCBjb2w6IDQgfSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHN0ZXBzW3RoaXMuZ2FtZSgpLm1vdmVDb3VudF07XG4gIH1cblxuICBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICByZXR1cm4gISFleHBlY3RlZD8uYW5pbWFsICYmIGV4cGVjdGVkLmFuaW1hbCAhPT0gYW5pbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUdXRvcmlhbEdhbWUoKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgY29uc3QgYmFzZSA9IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpO1xuICAgIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXG4gICAgICB7IGlkOiAnVFcxJywgY29sb3I6ICd3aGl0ZScsIHBvc2l0aW9uOiB7IHJvdzogNCwgY29sOiAxIH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMScsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogMiB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjInLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDUgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIzJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA0IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBpZDogJ1RVVE9SSUFMJyxcbiAgICAgIHBpZWNlcyxcbiAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgbW92ZUNvdW50OiAwLFxuICAgICAgcGxheWVyczoge1xuICAgICAgICB3aGl0ZToge1xuICAgICAgICAgIC4uLmJhc2UucGxheWVycy53aGl0ZSxcbiAgICAgICAgICBwb3dlclVubG9ja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdmVOdW1iZXI6IDAsXG4gICAgICAgICAgcGllY2VzOiBwaWVjZXMubWFwKHBpZWNlID0+ICh7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9IH0pKSxcbiAgICAgICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgICAgICBzdGF0dXM6ICdpbl9wcm9ncmVzcycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJhc2ljTW92ZXNGb3JDb2xvcihnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gICAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gPyBnYW1lIDogeyAuLi5nYW1lLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICByZXR1cm4gdHVyblN0YXRlLnBpZWNlc1xuICAgICAgLmZpbHRlcihwaWVjZSA9PiBwaWVjZS5jb2xvciA9PT0gY29sb3IgJiYgIXBpZWNlLmNhcHR1cmVkKVxuICAgICAgLmZsYXRNYXAocGllY2UgPT4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpIHx8XG4gICAgICB0aGlzLm1vdmVTeW5jaW5nKClcbiAgICApXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKGl0ZW0gPT4gcG9zaXRpb25LZXkoaXRlbS50bykgPT09IHBvc2l0aW9uS2V5KHBvc2l0aW9uKSk7XG4gICAgaWYgKCFtb3ZlKSByZXR1cm47XG5cbiAgICB0aGlzLmNvbW1pdENoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21taXRDaGVzc2ltYWxzTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9ubGluZSBtb3ZlIGZhaWxlZCcsIHsgZ2FtZUlkOiBnYW1lLmlkLCBtb3ZlLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnR1cm5UaW1lckR1cmF0aW9uU2Vjb25kcygpO1xuICAgIGlmIChcbiAgICAgICFkdXJhdGlvbiB8fFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHxcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZlU3luY2luZygpIHx8XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuY3VycmVudFR1cm59OiR7Z2FtZS5tb3ZlQ291bnR9OiR7ZHVyYXRpb259YDtcbiAgICBpZiAodGhpcy50dXJuVGltZXJLZXkgPT09IGtleSAmJiB0aGlzLnR1cm5UaW1lckludGVydmFsKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSBrZXk7XG4gICAgdGhpcy50dXJuVGltZXJEdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgIHRoaXMudHVyblRpbWVyRGVhZGxpbmUgPSBEYXRlLm5vdygpICsgZHVyYXRpb24gKiAxMDAwO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KGR1cmF0aW9uKTtcbiAgICB0aGlzLnR1cm5UaW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy50aWNrVHVyblRpbWVyKCksIDI1MCk7XG4gIH1cblxuICBwcml2YXRlIHRpY2tUdXJuVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykge1xuICAgICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgodGhpcy50dXJuVGltZXJEZWFkbGluZSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KHJlbWFpbmluZyk7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHJldHVybjtcblxuICAgIGNvbnN0IGV4cGlyZWRLZXkgPSB0aGlzLnR1cm5UaW1lcktleTtcbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgaWYgKCFleHBpcmVkS2V5IHx8IHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9PT0gZXhwaXJlZEtleSkgcmV0dXJuO1xuICAgIHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9IGV4cGlyZWRLZXk7XG4gICAgdGhpcy5oYW5kbGVUdXJuVGltZXJFeHBpcmVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR1cm5UaW1lckludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMudHVyblRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSAnJztcbiAgICB0aGlzLnR1cm5UaW1lckRlYWRsaW5lID0gMDtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0dXJuVGltZXJEdXJhdGlvblNlY29uZHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5ib2FyZFNpemUgPT09IDggPyBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgOiBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFM7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVR1cm5UaW1lckV4cGlyZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICB0aGlzLmJvdFRoaW5raW5nKCkgfHxcbiAgICAgIHRoaXMubW92ZVN5bmNpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMuY2hvb3NlQXV0b21hdGljVHVybk1vdmUoZ2FtZSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJOb01vdmUnKSxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJBdXRvTW92ZScpLFxuICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgIH0pO1xuICAgIHRoaXMuY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gIH1cblxuICBwcml2YXRlIGNob29zZUF1dG9tYXRpY1R1cm5Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW92ZXMgPSBnYW1lLnBpZWNlc1xuICAgICAgLmZpbHRlcihwaWVjZSA9PiBwaWVjZS5jb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcChwaWVjZSA9PiBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyhnYW1lLCBwaWVjZS5pZCkpO1xuICAgIGNvbnN0IGJhc2ljTW92ZXMgPSBtb3Zlcy5maWx0ZXIobW92ZSA9PiBtb3ZlLmtpbmQgPT09ICdiYXNpYycpO1xuICAgIHJldHVybiAoXG4gICAgICBiYXNpY01vdmVzLmZpbmQobW92ZSA9PiB0aGlzLmlzUHJvbW90aW9uTW92ZShnYW1lLCBtb3ZlKSkgPz9cbiAgICAgIGJhc2ljTW92ZXMuZmluZChtb3ZlID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpID8/XG4gICAgICBiYXNpY01vdmVzWzBdID8/XG4gICAgICBtb3Zlcy5maW5kKG1vdmUgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCkgPz9cbiAgICAgIG1vdmVzWzBdXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQcm9tb3Rpb25Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBtb3ZlLnRvLnJvdyA9PT0gKGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAwIDogZ2FtZS5ib2FyZFNpemUgLSAxKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZU1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5xdWV1ZU1vdmVFZmZlY3QobW92ZSk7XG5cbiAgICBjb25zdCBtb3ZpbmdQaWVjZSA9IGdhbWUucGllY2VzLmZpbmQocGllY2UgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZSh1cGRhdGVkKTtcbiAgICB0aGlzLnF1ZXVlU2NvcmVQb3AocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVHYW1lRm9yUnVuKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IENoZXNzaW1hbHNHYW1lU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgY29uc3QgZ2FtZSA9IHJ1bi5hY3RpdmVHYW1lO1xuICAgIGlmICghYm90IHx8ICFnYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5ib2FyZFNpemUgIT09IGJvdC5ib2FyZFNpemUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBhY3RpdmVHYW1lOiB0aGlzLmNsb25lQ2hhbGxlbmdlR2FtZShnYW1lKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBzbmFwc2hvdCBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7IC4uLmdhbWUsIG9ubGluZTogdW5kZWZpbmVkIH0pKSBhcyBDaGVzc2ltYWxzR2FtZVN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHdoaXRlVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkO1xuICAgIGNvbnN0IGJsYWNrVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkO1xuICAgIGlmICh3aGl0ZVVubG9ja2VkIHx8IGJsYWNrVW5sb2NrZWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTtcbiAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpO1xuICAgICAgY29uc3Qgc3RhcnRQdWxzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSksIDEzNTApO1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGFydFB1bHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RhcnRQdWxzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbmlnaHRtYXJlTW9kZSA9IGNoYWxsZW5nZUJvdCA/ICdub25lJyA6IHRoaXMuYWN0aXZlTmlnaHRtYXJlTW9kZSgpO1xuICAgIGNvbnN0IG1vdmUgPSBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShnYW1lLCB0aGlzLmVuZ2luZUJvdERpZmZpY3VsdHkoKSwgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpLCB7XG4gICAgICBjaGFsbGVuZ2VSb3VuZDogY2hhbGxlbmdlQm90Py5yb3VuZCxcbiAgICAgIG5pZ2h0bWFyZU1vZGUsXG4gICAgfSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlLCB0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJCb3RUdXJuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSksIDM0MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB0aGlzLmdhbWUoKSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5TW92ZVNvdW5kKG1vdmU6IENoZXNzaW1hbHNNb3ZlLCBpc0JvdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKG1vdmUuYW5pbWFsKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlcihtb3ZlLmFuaW1hbCk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpLCAxNTApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzQm90KSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNCb3RNb3ZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc01vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogdm9pZCB7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLnN0YXR1c306JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfToke2dhbWUubW92ZUNvdW50fWA7XG4gICAgaWYgKHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0ga2V5O1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKTtcbiAgICBpZiAoIXdpbm5lciB8fCAhc2lkZSB8fCB3aW5uZXIgPT09IHNpZGUpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzRGVmZWF0KCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUud2lubmVyUmVhc29uID09PSAncmVzaWduYXRpb24nID8gZ2FtZS5jdXJyZW50VHVybiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJSZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXTtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChlbnRyaWVzLmxlbmd0aCA+IDEgPyBlbnRyaWVzLmxlbmd0aCAtIDEgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZU1vdmVFZmZlY3QobW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG5cbiAgICBpZiAoIW1vdmUuYW5pbWFsICYmICFtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWxheU1zID0gTWF0aC5tYXgoMCwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyAtIDkwKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHtcbiAgICAgICAgYW5pbWFsOiBtb3ZlLmFuaW1hbCxcbiAgICAgICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICAgICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgICAgICBjYXB0dXJlOiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCksIENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyk7XG4gICAgfSwgZGVsYXlNcyk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlU2NvcmVQb3AocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgY29uc3QgZW50cnkgPSB1cGRhdGVkLm1vdmVIaXN0b3J5Py5bdXBkYXRlZC5tb3ZlSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBtb3ZlID0gZW50cnk/Lm1vdmU7XG4gICAgaWYgKCFlbnRyeSB8fCAhbW92ZSB8fCBwcmV2aW91cy5tb3ZlQ291bnQgPT09IHVwZGF0ZWQubW92ZUNvdW50KSB7XG4gICAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzQ29tYm8gPSB0aGlzLmNhcHR1cmVDb21ib0JlZm9yZU1vdmUocHJldmlvdXMsIG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgcHJvbW90aW9uID0gZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgcHJvbW90aW9uLCBwcmV2aW91c0NvbWJvKTtcbiAgICBpZiAoc2NvcmUuc2NvcmUgPD0gMSkge1xuICAgICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCkgKyAwLjU7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpICsgMC41O1xuICAgIHRoaXMuc2NvcmVQb3Auc2V0KHtcbiAgICAgIHNjb3JlOiBzY29yZS5zY29yZSxcbiAgICAgIGxhYmVsOiBzY29yZS5sYWJlbCxcbiAgICAgIGRldGFpbDogc2NvcmUuY29tYm8gPiAxID8gdGhpcy5zY29yZUNvbWJvTGFiZWwoc2NvcmUuY29tYm8pIDogdW5kZWZpbmVkLFxuICAgICAgeDogYCR7KGNvbCAvIHVwZGF0ZWQuYm9hcmRTaXplKSAqIDEwMH0lYCxcbiAgICAgIHk6IGAkeyhyb3cgLyB1cGRhdGVkLmJvYXJkU2l6ZSkgKiAxMDB9JWAsXG4gICAgICB0b25lUmdiOiAnNzksIDE2OSwgMjE4JyxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfU0NPUkVfUE9QX01TLFxuICAgICAgdmFyaWFudDogc2NvcmUuY29tYm8gPiAxID8gJ2NvbWJvJyA6IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ2NhcHR1cmUnIDogJ3Njb3JlJyxcbiAgICB9KTtcbiAgICB0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKSwgQ0hFU1NJTUFMU19TQ09SRV9QT1BfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlQ29tYm9CZWZvcmVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQocGllY2VJZCk7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuIDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpICE9PSBjb2xvcikgY29udGludWU7XG4gICAgICBjb21ibyA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gY29tYm8gKyAxIDogMDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJvO1xuICB9XG5cbiAgdG9nZ2xlQW5pbWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFZpZXcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCAhdGhpcy5jYW5Vc2VQb3dlckNhcmRzKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMucG93ZXJQbGF5ZXIoKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWwudHlwZV0udXNlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkQW5pbWFsKCk7XG4gICAgY29uc3QgbmV4dCA9IGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGU7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQobmV4dCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUGllY2VJZCgpKSB7XG4gICAgICBjb25zdCBmaXJzdFBpZWNlID0gdGhpcy5nYW1lKCkucGllY2VzLmZpbmQocGllY2UgPT4gIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybik7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQoZmlyc3RQaWVjZT8uaWQpO1xuICAgIH1cbiAgICBpZiAobmV4dCkgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJQcmV2aWV3KGFuaW1hbC50eXBlKTtcbiAgfVxuXG4gIHBpZWNlQXQocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogQ2hlc3NpbWFsc1BpZWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQodGhpcy5yZXZpZXdHYW1lKCksIHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc0RhcmtDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAocm93ICsgY29sKSAlIDIgPT09IDE7XG4gIH1cblxuICBpc0VkZ2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiByb3cgPT09IDAgfHwgY29sID09PSAwIHx8IHJvdyA9PT0gbGFzdCB8fCBjb2wgPT09IGxhc3Q7XG4gIH1cblxuICBjZWxsV2Vhcihyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmFicygocm93ICogMTcgKyBjb2wgKiAzMSArIHJvdyAqIGNvbCAqIDcpICUgNik7XG4gIH1cblxuICBpc1NlbGVjdGVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuaWQgPT09IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gIH1cblxuICBpc0xlZ2FsQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sZWdhbE1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc1RocmVhdGVuZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiB0aGlzLnRocmVhdGVuZWRQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc0NhcHR1cmVSZWFkeUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybiAmJiB0aGlzLmNhcHR1cmVSZWFkeVBpZWNlSWRzKCkuaGFzKHBpZWNlLmlkKTtcbiAgfVxuXG4gIGlzV2lubmluZ0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2lubmluZ01vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLnJldmlld0dhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIsIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYW5pbWFsICYmIGVmZmVjdC5hbmltYWwgIT09IGFuaW1hbCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0U291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3QgJiYgcG9zaXRpb25LZXkoZWZmZWN0LmZyb20pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0Py5jYXB0dXJlICYmIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBmaWxlTGFiZWwoY29sOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY29sKTtcbiAgfVxuXG4gIHJhbmtMYWJlbChyb3c6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIHJvd31gO1xuICB9XG5cbiAgc2hvd1JhbmtMYWJlbChjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2wgPT09IHRoaXMuZGlzcGxheUNvbHMoKVswXTtcbiAgfVxuXG4gIHNob3dGaWxlTGFiZWwocm93OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kaXNwbGF5Um93cygpO1xuICAgIHJldHVybiByb3cgPT09IHJvd3Nbcm93cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgY2FwdHVyZXNTY29yZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLmNhcHR1cmVzQnlDb2xvcigpO1xuICAgIHJldHVybiBgJHtzY29yZS53aGl0ZX0tJHtzY29yZS5ibGFja31gO1xuICB9XG5cbiAgdHVyblRpbWVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzID09PSB1bmRlZmluZWQgPyAnLScgOiBgJHtzZWNvbmRzfXNgO1xuICB9XG5cbiAgc2NvcmVDb21ib0xhYmVsKGNvbWJvOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTY29yZUNvbWJvJykucmVwbGFjZSgne2NvbWJvfScsIFN0cmluZyhjb21ibykpO1xuICB9XG5cbiAgdHVyblRpbWVyUHJvZ3Jlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50dXJuVGltZXJEdXJhdGlvbjtcbiAgICBpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IGR1cmF0aW9uIDw9IDApIHJldHVybiAnMSc7XG4gICAgcmV0dXJuIFN0cmluZyhNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBzZWNvbmRzIC8gZHVyYXRpb24pKSk7XG4gIH1cblxuICBpc1R1cm5UaW1lckxvdygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgc2Vjb25kcyA8PSA1O1xuICB9XG5cbiAgdHVyblN0YXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJyk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICBpZiAodGhpcy5ib3RUaGlua2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5pc1dhaXRpbmdGb3JUdXJuKCkgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybkxhYmVsJykgOiB0aGlzLm1vZGVDaGlwTGFiZWwoKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUJvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy53aW5Cb2R5KCk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSB7XG4gICAgICBpZiAodGhpcy5pc1R1cm5UaW1lckxvdygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyTG93Qm9keScpO1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKHBhcnQgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgdGhpcy53aW5uZXJTaWRlTGFiZWwoKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHdpbm5lckF2YXRhclVybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB3aW5uZXIgPSBnYW1lLndpbm5lcjtcbiAgICBpZiAoIXdpbm5lciB8fCBnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Llt3aW5uZXJdPy5hdmF0YXJVcmw/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIGlzQ3VycmVudFBsYXllclZpY3RvcnkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSkgPT09IGdhbWUud2lubmVyO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyRGVmZWF0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIHJldHVybiAhIXNpZGUgJiYgc2lkZSAhPT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBwcml2YXRlIHBsYXllckRpc3BsYXlOYW1lKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnQgPSBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bY29sb3JdO1xuICAgICAgY29uc3QgbmFtZSA9IHBhcnRpY2lwYW50Py5uYW1lPy50cmltKCk7XG4gICAgICBpZiAobmFtZSkgcmV0dXJuIG5hbWU7XG4gICAgICBjb25zdCBoYW5kbGUgPSBwYXJ0aWNpcGFudD8uaGFuZGxlPy50cmltKCk7XG4gICAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBjb2xvciA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJykgOiB0aGlzLmxvZ2dlZFBsYXllck5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGxheWVyTGFiZWwoY29sb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1hdGNoT3Bwb25lbnQoKTogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnIHx8IChyb2xlICE9PSAnd2hpdGUnICYmIHJvbGUgIT09ICdibGFjaycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wcG9uZW50U2lkZTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gcm9sZSA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bb3Bwb25lbnRTaWRlXTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudE9wcG9uZW50VWlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LnVpZCA/PyAnJztcbiAgfVxuXG4gIG1vZGVDaGlwTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAocm9sZSA9PT0gJ3dhaXRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lV2FpdGluZycpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQZW5kaW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICBub3JtYWxpemVHYW1lSWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBjb3B5T25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzTGlua0NvcGllZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaGFyZU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7IHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUaXRsZScpLCB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNTaGFyZVRleHQnKSwgdXJsIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvcHlPbmxpbmVMaW5rKCk7XG4gIH1cblxuICBhc3luYyBzaGFyZVByb2plY3Rpb25MaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnByb2plY3Rpb25TaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25UaXRsZScpLFxuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uU2hhcmVUZXh0JyksXG4gICAgICAgIHVybCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uTGlua0NvcGllZCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGNhblJldmlld1BlbmRpbmdHdWVzdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICByZXR1cm4gISF1aWQgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkgJiYgISFnYW1lLm9ubGluZS5wZW5kaW5nR3Vlc3Q7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5uYW1lID8/IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEhhbmRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8uaGFuZGxlID8/ICcnO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5hdmF0YXJVcmwgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgY29uc3QgbmFtZSA9IChndWVzdD8ubmFtZSB8fCBndWVzdD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcChwYXJ0ID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIGluaXRpYWxzIHx8ICc/JztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEF2YXRhclByb3BzKCk6IFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiBndWVzdD8ubmFtZSxcbiAgICAgICAgaGFuZGxlOiBndWVzdD8uaGFuZGxlLFxuICAgICAgICBhdmF0YXJVcmw6IGd1ZXN0Py5hdmF0YXJVcmwsXG4gICAgICB9LFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/Lm5hbWU/LnRyaW0oKSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uaGFuZGxlPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uYXZhdGFyVXJsPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wcG9uZW50ID0gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKTtcbiAgICBjb25zdCBuYW1lID0gKG9wcG9uZW50Py5uYW1lIHx8IG9wcG9uZW50Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKHBhcnQgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcChwYXJ0ID0+IHRoaXMuY2FwaXRhbGl6ZShwYXJ0KSlcbiAgICAgIC5qb2luKCcnKX1gO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZW50cnkub3Bwb25lbnROYW1lXG4gICAgICA/IGAgwrcgJHt0aGlzLnQoJ2NoZXNzaW1hbHNIaXN0b3J5QWdhaW5zdCcpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgZW50cnkub3Bwb25lbnROYW1lKX1gXG4gICAgICA6ICcnO1xuICAgIHJldHVybiBgJHt0aGlzLnQob3V0Y29tZUtleSl9JHtvcHBvbmVudH1gO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE9ubGluZVJlbWF0Y2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgaWYgKHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnIHx8IHRoaXMucmVtYXRjaExvYWRpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGFjY2VwdGluZyA9IHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZyc7XG4gICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCB0aGlzLm9ubGluZS5yZXF1ZXN0UmVtYXRjaCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICBpZiAobmV4dD8uc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QodGhpcy5nYW1lKCksIG5leHQpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KGFjY2VwdGluZyA/ICdjaGVzc2ltYWxzUmVtYXRjaEFjY2VwdGVkJyA6ICdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRvYXN0JyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyNDAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVIaXN0b3J5V2F0Y2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKTtcbiAgICB0aGlzLmhpc3RvcnlXYXRjaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoT25saW5lSGlzdG9yeSgpLCAyMjApO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUhpc3RvcnkoKTogdm9pZCB7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhpc3RvcnlVaWQgPT09IHVpZCAmJiB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmhpc3RvcnlVaWQgPSB1aWQ7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoSGlzdG9yeSgyNCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGhpc3RvcnkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChoaXN0b3J5KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KFtdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hDaGFsbGVuZ2VTdGF0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRTdGF0c1N1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Mud2F0Y2hSZWNlbnRSdW5zKDQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBydW5zID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJ1biA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkKSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRTdGF0c1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHN0YXRzID0+IHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgICBpZiAoIXRoaXMuY2hhbGxlbmdlU3RhdHNMb2FkZWQoKSkgdGhpcy5jaGFsbGVuZ2VTdGF0c0xvYWRlZC5zZXQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgLy8gQXV0aCBpcyBndWFyYW50ZWVkIGJ5IGF1dGhHdWFyZCDigJQgZXJyb3JzIGFyZSB0cmFuc2llbnQuIFJlc2V0IGFuZCByZXRyeS5cbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQodGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5sb2dnZWRJblVzZXIoKSkgdGhpcy5zdGFydFN0YXRzU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH0sIDQwMDApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVubG9ja2VkTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQgPyB0aGlzLnQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdGhpcy50KCdjaGVzc2ltYWxzTG9ja2VkJyk7XG4gIH1cblxuICBsb2NhbE1vZGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGVCb2R5JykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2VCb2R5Jyk7XG4gIH1cblxuICBzZWxlY3RCb3REaWZmaWN1bHR5KGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWROaWdodG1hcmUgPSB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZSgpO1xuICAgICAgdGhpcy5zZWxlY3ROaWdodG1hcmVSaXZhbChzZWxlY3RlZE5pZ2h0bWFyZSA9PT0gJ25vbmUnID8gJ2h1bnQnIDogc2VsZWN0ZWROaWdodG1hcmUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlLnNldCgnbm9uZScpO1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoaXRlbSA9PiBpdGVtLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkpO1xuICAgIGlmIChwcm9maWxlKSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChwcm9maWxlLmlkKTtcbiAgfVxuXG4gIHNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGU6IEV4Y2x1ZGU8Q2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsICdub25lJz4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQobW9kZSk7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ2h1bnRlcicpO1xuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdwcmlkZScpIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KCdwcmVkYXRvcicpO1xuICAgIGVsc2UgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ21hZ251cycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVOaWdodG1hcmVNb2RlKCk6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSAhPT0gJ25pZ2h0bWFyZScpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09ICdub25lJyA/ICdodW50JyA6IHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuZ2luZUJvdERpZmZpY3VsdHkoKTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkge1xuICAgIGNvbnN0IGRpZmZpY3VsdHkgPSB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpO1xuICAgIHJldHVybiBkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJyA/ICdoYXJkJyA6IGRpZmZpY3VsdHk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVQcmlkZScpO1xuICAgIGlmIChtb2RlID09PSAnbWFnbnVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZU1hZ251cycpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lJyk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Qm9keScpO1xuICAgIGlmIChtb2RlID09PSAncHJpZGUnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlUHJpZGVCb2R5Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlTWFnbnVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lQm9keScpO1xuICB9XG5cbiAgbmlnaHRtYXJlTW9kZUFzc2V0U3JjKG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogc3RyaW5nIHtcbiAgICBpZiAobW9kZSA9PT0gJ2h1bnQnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1odW50LnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvY2hhbGxlbmdlLWF2YXRhcnMvbmlnaHRtYXJlLXByaWRlLnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1tYWdudXMucG5nJztcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlR2x5cGgobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnbm9uZScgPyAnT0snIDogJyonO1xuICB9XG5cbiAgcG93ZXJVc2VzTGFiZWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5wb3dlclBsYXllcigpLmNhcmRzW2FuaW1hbF0udXNlc1JlbWFpbmluZztcbiAgICByZXR1cm4gcmVtYWluaW5nICYmIHJlbWFpbmluZyA+IDEgPyAneCcgKyByZW1haW5pbmcgOiAnJztcbiAgfVxuXG4gIGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZSk6IHN0cmluZyB7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEVhc3knKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90SGFyZCcpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbWFzdGVyJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE1hc3RlcicpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5pZ2h0bWFyZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROb3JtYWwnKTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVMYWJlbChwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmxhYmVsS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmRlc2NyaXB0aW9uS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0JvdCR7dGhpcy5jYXBpdGFsaXplKHByb2ZpbGUuaWQpfVRlbmRlbmN5YCk7XG4gIH1cblxuICBib3RQcm9maWxlQXZhdGFyKHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZChwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhciA/PyAn4pmfJztcbiAgfVxuXG4gIGJvdFByb2ZpbGVBdmF0YXJTcmMocHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maW5kKHByb2ZpbGUgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKT8uYXZhdGFyU3JjID8/ICcnO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90UHJvZmlsZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBDaGVzc2ltYWxzQm90UHJvZmlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZChwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3BlbmluZ0JvdCgpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbMF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Qm90KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgoYWN0aXZlUnVuKTtcbiAgICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1pbihNYXRoLm1heChhY3RpdmVSb3VuZEluZGV4IC0gMSwgMCksIHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpXTtcbiAgICB9XG4gICAgY29uc3QgYmVzdFJvdW5kID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQ7XG4gICAgY29uc3QgbmV4dFJvdW5kSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChiZXN0Um91bmQsIDApLCB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbbmV4dFJvdW5kSW5kZXhdO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jaGFsbGVuZ2VNZW51Qm90KCkucm91bmR9LyR7dGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RofWA7XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51TGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5jaGFsbGVuZ2VNZW51UnVuKCk/LmxpdmVzUmVtYWluaW5nID8/IDMpO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHJldHVybiBNYXRoLm1heCgwLCBhY3RpdmVSdW4uY3VycmVudFJvdW5kIC0gMSk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VNZW51UnVuKCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGN1cnJlbnRSdW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICh0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKGN1cnJlbnRSdW4pKSByZXR1cm4gY3VycmVudFJ1bjtcbiAgICByZXR1cm4gdGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdE5hbWUoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5jaGFsbGVuZ2VCb3RQcm9maWxlKGJvdCk7XG4gICAgcmV0dXJuIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdEludHJvKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChib3QuaW50cm9LZXkpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKGJvdC5kaWZmaWN1bHR5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0eWxlTGluZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFyZWRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kO1xuICAgIGlmIChjbGVhcmVkUm91bmQgPj0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDbGVhcmVkJyk7XG4gICAgaWYgKGN1cnJlbnRSb3VuZCA9PT0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDdXJyZW50Jyk7XG4gICAgaWYgKGJvdC5yb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxGaW5hbCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFBlbmRpbmcnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHN0cmluZyB7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzRmFpbGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdhYmFuZG9uZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQWJhbmRvbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FjdGl2ZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUnVuTGluZShydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSdW5MaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKHJ1bi5oaWdoZXN0Um91bmRSZWFjaGVkID8/IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZHNXb24ocnVuKSkpO1xuICB9XG5cbiAgaXNDaGFsbGVuZ2VBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ2lkbGUnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3VsZFNob3dDaGFsbGVuZ2VJbkdhbWVQYW5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKVxuICAgICk7XG4gIH1cblxuICBzaG93Q2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAncGxheWluZycgfHwgIXRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKTtcbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKSk7XG4gICAgfSwgMjQwMCk7XG4gIH1cblxuICBkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgICB0aGlzLmNoYWxsZW5nZUludHJvVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9WaXNpYmxlLnNldChmYWxzZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQXZhdGFyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5ib3RQcm9maWxlQXZhdGFyKGJvdC5wcm9maWxlSWQpIDogJ+KZnyc7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQXZhdGFyU3JjKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5ib3RQcm9maWxlQXZhdGFyU3JjKGJvdC5wcm9maWxlSWQpIDogJyc7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxMaW5lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIWJvdCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZVJpdmFsTGluZScpXG4gICAgICAucmVwbGFjZSgne3N0eWxlfScsIHRoaXMuY2hhbGxlbmdlQm90U3R5bGVMaW5lKGJvdCkpXG4gICAgICAucmVwbGFjZSgne2RpZmZpY3VsdHl9JywgdGhpcy5jaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoYm90KSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlU3RyZWFrTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHgke3RoaXMuY2hhbGxlbmdlUnVuKCk/LmN1cnJlbnRTdHJlYWsgPz8gMH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZUJvYXJkTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpPy5ib2FyZFNpemUgPz8gdGhpcy5nYW1lKCkuYm9hcmRTaXplO1xuICAgIHJldHVybiBgJHtib2FyZFNpemV9eCR7Ym9hcmRTaXplfWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlVGltZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPVxuICAgICAgdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKT8ucm91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aFxuICAgICAgICA/IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EU1xuICAgICAgICA6IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVHVyblNlY29uZHMnKS5yZXBsYWNlKCd7c2Vjb25kc30nLCBTdHJpbmcoc2Vjb25kcykpO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke3RoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pfS8ke3RoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuICfimaUnLnJlcGVhdChNYXRoLm1heCgwLCBydW4ubGl2ZXNSZW1haW5pbmcpKSB8fCAnMCc7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkVGl0bGUnKTtcbiAgICBpZiAocGhhc2UgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25UaXRsZScpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdFRpdGxlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgYm9keUtleSA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdjb21wbGV0ZWQnXG4gICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoYm9keUtleSlcbiAgICAgIC5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpXG4gICAgICAucmVwbGFjZSgne2xpdmVzfScsIFN0cmluZyhydW4/LmxpdmVzUmVtYWluaW5nID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhydW4/LndpbnMgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcodGhpcy50b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cykpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXJTcmMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCkgOiAnJztcbiAgfVxuXG4gIGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJ1xuICAgICAgICA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KClcbiAgICAgICAgOiAodGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKSk7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCByb3VuZCA9IGJvdD8ucm91bmQgPz8gKHJ1biA/IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pIDogMSk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhZ2UnKVxuICAgICAgLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcocm91bmQpKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxWb2ljZScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VDb21wbGV0ZWRUaXRsZScpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUZhaWxlZFRpdGxlJyk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA/ICdXb24nIDogJ0xvc3QnO1xuICAgIGNvbnN0IGJvdFRpdGxlID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdUaXRsZScpO1xuICAgIGlmIChib3RUaXRsZSkgcmV0dXJuIGJvdFRpdGxlO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZVdvblRpdGxlJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VMb3N0VGl0bGUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VCb2R5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPyAnV29uJyA6ICdMb3N0JztcbiAgICBjb25zdCBib3RCb2R5ID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdCb2R5Jyk7XG4gICAgaWYgKGJvdEJvZHkpIHJldHVybiBib3RCb2R5LnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2NvbXBsZXRlZCdcbiAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlQ29tcGxldGVkQm9keSdcbiAgICAgICAgOiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdmYWlsZWQnXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VWb2ljZVRleHQoXG4gICAgYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkLFxuICAgIHJlc3VsdDogJ1dvbicgfCAnTG9zdCcsXG4gICAgcGFydDogJ1RpdGxlJyB8ICdCb2R5J1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghYm90KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGtleSA9IGBjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2Uke3Jlc3VsdH0ke3RoaXMuY2FwaXRhbGl6ZShib3QuaWQpfSR7cGFydH1gO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gdGV4dCA9PT0ga2V5ID8gdW5kZWZpbmVkIDogdGV4dDtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbExhYmVsJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlSaXZhbExhYmVsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5Uml2YWwnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4gJiYgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aClcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kQ3RhJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbCcpO1xuICB9XG5cbiAgY2hhbGxlbmdlTmV4dFJpdmFsSGludCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXRyeUhpbnQnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4gJiYgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aClcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kSGludCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxIaW50Jyk7XG4gIH1cblxuICBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKTtcbiAgfVxuXG4gIG1vZGVXaW5SYXRlTGFiZWwobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgbW9kZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzW21vZGVdO1xuICAgIGNvbnN0IHBsYXllZCA9IG1vZGVTdGF0cy5wbGF5ZWQ7XG4gICAgaWYgKCFwbGF5ZWQpIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke01hdGgucm91bmQoKG1vZGVTdGF0cy53aW5zIC8gcGxheWVkKSAqIDEwMCl9JWA7XG4gIH1cblxuICBtb2RlU3RhdHNMaW5lKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLm1vZGVTdGF0c1ttb2RlXTtcbiAgICBpZiAoIXN0YXRzLnBsYXllZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0VtcHR5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0xpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZWR9JywgU3RyaW5nKHN0YXRzLnBsYXllZCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLndpbnMpKVxuICAgICAgLnJlcGxhY2UoJ3tsb3NzZXN9JywgU3RyaW5nKHN0YXRzLmxvc3NlcykpO1xuICB9XG5cbiAgcHJvZ3Jlc3NQb3dlclN0YXRzKCk6IENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdlYWdsZScpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5lYWdsZSB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnYnVsbCcpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5idWxsIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdrYW5nYXJvbycpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5rYW5nYXJvbyB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnbGlvbicpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5saW9uIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQb3dlckNhcHR1cmVzJyksIHZhbHVlOiBzdGF0cy5wb3dlckNhcHR1cmVzIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQcm9tb3Rpb25zJyksIHZhbHVlOiBzdGF0cy5wcm9tb3Rpb25zIH0sXG4gICAgXTtcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5pdGVtcy5tYXAoaSA9PiBpLnZhbHVlKSwgMSk7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpID0+ICh7XG4gICAgICAuLi5pLFxuICAgICAgcGVyY2VudDogYCR7TWF0aC5tYXgoNCwgTWF0aC5yb3VuZCgoaS52YWx1ZSAvIG1heCkgKiAxMDApKX0lYCxcbiAgICB9KSk7XG4gIH1cblxuICBwYXRoSGlnaGxpZ2h0cygpOiBDaGVzc2ltYWxzUGF0aEhpZ2hsaWdodFZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgZmF2b3JpdGVQb3dlciA9IHRoaXMuZmF2b3JpdGVQb3dlckxhYmVsKCk7XG4gICAgY29uc3QgbmV4dEFjaGlldmVtZW50ID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKS5maW5kKGFjaGlldmVtZW50ID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhXaW5zVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFdpbnNCb2R5JykucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLnRvdGFsV2lucykpLFxuICAgICAgICB2YWx1ZTogU3RyaW5nKHN0YXRzLnRvdGFsV2lucyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC90cm9waHkucG5nJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoU3RyZWFrVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFN0cmVha0JvZHknKS5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyhzdGF0cy5iZXN0V2luU3RyZWFrKSksXG4gICAgICAgIHZhbHVlOiBzdGF0cy5iZXN0V2luU3RyZWFrID8gU3RyaW5nKHN0YXRzLmJlc3RXaW5TdHJlYWspIDogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFByYWN0aWNlVmFsdWUnKSxcbiAgICAgICAgaW1hZ2VTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3N0cmVhay5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhGYXZvcml0ZVBvd2VyVGl0bGUnKSxcbiAgICAgICAgYm9keTogZmF2b3JpdGVQb3dlclxuICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUGF0aEZhdm9yaXRlUG93ZXJCb2R5JykucmVwbGFjZSgne3Bvd2VyfScsIGZhdm9yaXRlUG93ZXIpXG4gICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRmF2b3JpdGVQb3dlckVtcHR5JyksXG4gICAgICAgIHZhbHVlOiBmYXZvcml0ZVBvd2VyIHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhQcmFjdGljZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9mYXZvcml0ZS1wb3dlci5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5VGl0bGUnKSxcbiAgICAgICAgYm9keTogbmV4dEFjaGlldmVtZW50Py5ib2R5IHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5RG9uZScpLFxuICAgICAgICB2YWx1ZTogbmV4dEFjaGlldmVtZW50Py50aXRsZSB8fCB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRG9uZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9wcm9ncmVzcy1tYXAucG5nJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGZhdm9yaXRlUG93ZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBvd2VycyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5wb3dlcnNVc2VkO1xuICAgIGNvbnN0IGVudHJpZXM6IEFycmF5PHsgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdmFsdWU6IG51bWJlciB9PiA9IFtcbiAgICAgIHsgYW5pbWFsOiAnZWFnbGUnLCB2YWx1ZTogcG93ZXJzLmVhZ2xlIH0sXG4gICAgICB7IGFuaW1hbDogJ2J1bGwnLCB2YWx1ZTogcG93ZXJzLmJ1bGwgfSxcbiAgICAgIHsgYW5pbWFsOiAna2FuZ2Fyb28nLCB2YWx1ZTogcG93ZXJzLmthbmdhcm9vIH0sXG4gICAgICB7IGFuaW1hbDogJ2xpb24nLCB2YWx1ZTogcG93ZXJzLmxpb24gfSxcbiAgICBdO1xuICAgIGNvbnN0IGZhdm9yaXRlID0gZW50cmllcy5yZWR1Y2UoKGJlc3QsIGVudHJ5KSA9PiAoZW50cnkudmFsdWUgPiBiZXN0LnZhbHVlID8gZW50cnkgOiBiZXN0KSwgZW50cmllc1swXSk7XG4gICAgcmV0dXJuIGZhdm9yaXRlLnZhbHVlID4gMCA/IHRoaXMuYW5pbWFsTGFiZWwoZmF2b3JpdGUuYW5pbWFsKSA6ICcnO1xuICB9XG5cbiAgcHJvZ3Jlc3NSaW5ncygpOiBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlld1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2NoYWxsZW5nZScsIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykpLFxuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2JvdCcsIHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSksXG4gICAgICB0aGlzLnByb2dyZXNzUmluZygnb25saW5lJywgdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJykpLFxuICAgIF07XG4gIH1cblxuICBwcm9ncmVzc01ldHJpY1BlcmNlbnQodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1lcmljVmFsdWUpIHx8IG51bWVyaWNWYWx1ZSA8PSAwKSByZXR1cm4gJzAlJztcbiAgICByZXR1cm4gYCR7TWF0aC5taW4oMTAwLCBNYXRoLm1heCg4LCBudW1lcmljVmFsdWUgKiAxMikpfSVgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9ncmVzc1JpbmcobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSwgbGFiZWw6IHN0cmluZyk6IENoZXNzaW1hbHNQcm9ncmVzc1JpbmdWaWV3IHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5tb2RlU3RhdHNbbW9kZV07XG4gICAgY29uc3Qgd2luUmF0ZSA9IHN0YXRzLnBsYXllZCA/IE1hdGgucm91bmQoKHN0YXRzLndpbnMgLyBzdGF0cy5wbGF5ZWQpICogMTAwKSA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsLFxuICAgICAgdmFsdWU6IHN0YXRzLnBsYXllZCA/IGAke3dpblJhdGV9JWAgOiAnLScsXG4gICAgICBkZXRhaWw6IHRoaXMubW9kZVN0YXRzTGluZShtb2RlKSxcbiAgICAgIHByb2dyZXNzOiBgJHt3aW5SYXRlfSVgLFxuICAgIH07XG4gIH1cblxuICBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBib3RTdGF0cyA9IHN0YXRzLm1vZGVTdGF0cy5ib3Q7XG4gICAgY29uc3Qgb25saW5lU3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMub25saW5lO1xuICAgIGNvbnN0IHRvdGFsUG93ZXJzID1cbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRGaXJzdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzEnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMudG90YWxXaW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFN0cmVha1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiAnMycsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5iZXN0V2luU3RyZWFrID49IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlclRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50UG93ZXJCb2R5JyksXG4gICAgICAgIGljb246ICdQJyxcbiAgICAgICAgdW5sb2NrZWQ6IHRvdGFsUG93ZXJzID49IDEwIHx8IHN0YXRzLnBvd2VyQ2FwdHVyZXMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRDaGFtcGlvbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMuY2hhbGxlbmdlc0NvbXBsZXRlZCA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ0InLFxuICAgICAgICB1bmxvY2tlZDogYm90U3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID49IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ08nLFxuICAgICAgICB1bmxvY2tlZDogb25saW5lU3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy5wbGF5ZWQgPj0gNSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNoYWxsZW5nZUZlYXR1cmVkQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3QgYWNoaWV2ZW1lbnRzID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcihhY2hpZXZlbWVudCA9PiBhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgICAuLi5hY2hpZXZlbWVudHMuZmlsdGVyKGFjaGlldmVtZW50ID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgXS5zbGljZSgwLCA0KTtcbiAgfVxuXG4gIGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgIT09ICdwbGF5aW5nJyAmJiBwaGFzZSAhPT0gJ2JldHdlZW4nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBuZXh0Qm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBsYXN0Qm90ID0gcGhhc2UgPT09ICdwbGF5aW5nJyA/IG5leHRCb3QgOiAodGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gbmV4dEJvdCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGxhc3RCb3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUobGFzdEJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG5cbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMYXN0TGlmZVRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxhc3RMaWZlQm9keScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGljb246ICfimaUnLFxuICAgICAgICBjcml0aWNhbDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlbWF0Y2hUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZW1hdGNoQm9keScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGljb246ICfihrsnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKTtcbiAgICBpZiAocm91bmRJbmRleCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJpdmFsVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSaXZhbEJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVCb2R5JyksXG4gICAgICAgIGljb246ICc3JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocnVuLmN1cnJlbnRTdHJlYWsgPj0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha1RpdGxlJykucmVwbGFjZSgne3N0cmVha30nLCBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFsbGVuZ2VIYXNOZXdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkKCk7XG4gIH1cblxuICB0b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cz86IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzKTogbnVtYmVyIHtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCBNYXRoLm1heCgxLCBydW4ucm91bmRJbmRleCA/PyBydW4uY3VycmVudFJvdW5kID8/IDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuUm91bmRzV29uKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHJ1bi5yb3VuZHNXb24gPz8gcnVuLndpbnMgPz8gMCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUdhbWVTY29yZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwbGF5ZXJQcmVmaXg/OiBzdHJpbmcpOiBDaGVzc2ltYWxzR2FtZVNjb3JlVmlldyB7XG4gICAgbGV0IHNjb3JlID0gMDtcbiAgICBsZXQgY29tYm8gPSAwO1xuICAgIGxldCBiZXN0Q29tYm8gPSAwO1xuICAgIGxldCBiZXN0TW92ZTogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlKSBjb250aW51ZTtcbiAgICAgIGlmIChwbGF5ZXJQcmVmaXggJiYgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKHBsYXllclByZWZpeCkpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBtb3ZlQ29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQobW92ZS5waWVjZUlkKTtcbiAgICAgIGNvbnN0IGlzUHJvbW90aW9uID1cbiAgICAgICAgZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgICBjb25zdCBtb3ZlU2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgaXNQcm9tb3Rpb24sIGNvbWJvKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgICBjb21ibyArPSAxO1xuICAgICAgICBiZXN0Q29tYm8gPSBNYXRoLm1heChiZXN0Q29tYm8sIGNvbWJvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbWJvID0gMDtcbiAgICAgIH1cblxuICAgICAgc2NvcmUgKz0gbW92ZVNjb3JlLnNjb3JlO1xuICAgICAgaWYgKCFiZXN0TW92ZSB8fCBtb3ZlU2NvcmUuc2NvcmUgPiBiZXN0TW92ZS5zY29yZSkgYmVzdE1vdmUgPSBtb3ZlU2NvcmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYmVzdENvbWJvLCBiZXN0TW92ZSwgc2NvcmUgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2NvcmVDaGVzc2ltYWxzTW92ZShtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgcHJvbW90aW9uOiBib29sZWFuLCBjdXJyZW50Q29tYm86IG51bWJlcik6IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHtcbiAgICBjb25zdCBjYXB0dXJlID0gISFtb3ZlLmNhcHR1cmVzUGllY2VJZDtcbiAgICBjb25zdCBjb21ibyA9IGNhcHR1cmUgPyBjdXJyZW50Q29tYm8gKyAxIDogMDtcbiAgICBjb25zdCBzY29yZSA9XG4gICAgICAxICtcbiAgICAgIChjYXB0dXJlID8gKG1vdmUuYW5pbWFsID8gNSA6IDMpIDogMCkgK1xuICAgICAgKG1vdmUuYW5pbWFsICYmICFjYXB0dXJlID8gMSA6IDApICtcbiAgICAgIChwcm9tb3Rpb24gPyA4IDogMCkgK1xuICAgICAgKGNvbWJvID4gMSA/IGNvbWJvIC0gMSA6IDApO1xuICAgIGNvbnN0IGxhYmVsS2V5ID0gcHJvbW90aW9uXG4gICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQcm9tb3Rpb24nXG4gICAgICA6IGNhcHR1cmUgJiYgbW92ZS5hbmltYWxcbiAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUG93ZXJDYXB0dXJlJ1xuICAgICAgICA6IGNhcHR1cmVcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVDYXB0dXJlJ1xuICAgICAgICAgIDogbW92ZS5hbmltYWxcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVBvd2VyTW92ZSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNTY29yZU1vdmUnO1xuICAgIHJldHVybiB7XG4gICAgICBjb21ibyxcbiAgICAgIGxhYmVsOiB0aGlzLnQobGFiZWxLZXkpLFxuICAgICAgc2NvcmUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JGcm9tUGllY2VJZChwaWVjZUlkOiBzdHJpbmcpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ1cnKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RXJykpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ0InKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RCJykpIHJldHVybiAnYmxhY2snO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQbGF5ZXJSb3VuZFN0YXRzKGdhbWUsICdXJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGxheWVyUHJlZml4OiBzdHJpbmcpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB7XG4gICAgY29uc3Qgcm91bmRTY29yZSA9IHRoaXMuY3JlYXRlR2FtZVNjb3JlKGdhbWUsIHBsYXllclByZWZpeCk7XG4gICAgY29uc3QgcGxheWVyQ29sb3IgPSBwbGF5ZXJQcmVmaXggPT09ICdCJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHN0YXRzOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyA9IHtcbiAgICAgIHBvd2Vyc1VzZWQ6IHsgZWFnbGU6IDAsIGJ1bGw6IDAsIGthbmdhcm9vOiAwLCBsaW9uOiAwIH0sXG4gICAgICBwb3dlckNhcHR1cmVzOiAwLFxuICAgICAgcHJvbW90aW9uczogZ2FtZS53aW5uZXIgPT09IHBsYXllckNvbG9yICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICAgIHNjb3JlOiByb3VuZFNjb3JlLnNjb3JlLFxuICAgICAgYmVzdE1vdmVTY29yZTogcm91bmRTY29yZS5iZXN0TW92ZT8uc2NvcmUgPz8gMCxcbiAgICAgIGJlc3RDb21ibzogcm91bmRTY29yZS5iZXN0Q29tYm8sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8ICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aChwbGF5ZXJQcmVmaXgpKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLm1vdmVzICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLmNhcHR1cmVzICs9IDE7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWRbbW92ZS5hbmltYWxdICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLnBvd2VyQ2FwdHVyZXMgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RlU3RhdHNSZXN1bHQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6XG4gICAgfCB7XG4gICAgICAgIG1vZGU6IEV4Y2x1ZGU8Q2hlc3NpbWFsc1N0YXRzTW9kZSwgJ2NoYWxsZW5nZSc+O1xuICAgICAgICB3b246IGJvb2xlYW47XG4gICAgICAgIHJvdW5kU3RhdHM6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzO1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnR1dG9yaWFsTW9kZSgpIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IG1vZGU6ICdib3QnLCB3b246IGdhbWUud2lubmVyID09PSAnd2hpdGUnLCByb3VuZFN0YXRzOiB0aGlzLmNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZSwgJ1cnKSB9O1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQ7XG4gICAgY29uc3Qgc2lkZSA9IHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpIDogdW5kZWZpbmVkO1xuICAgIGlmIChzaWRlICE9PSAnd2hpdGUnICYmIHNpZGUgIT09ICdibGFjaycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6ICdvbmxpbmUnLFxuICAgICAgd29uOiBnYW1lLndpbm5lciA9PT0gc2lkZSxcbiAgICAgIHJvdW5kU3RhdHM6IHRoaXMuY3JlYXRlUGxheWVyUm91bmRTdGF0cyhnYW1lLCBzaWRlID09PSAnd2hpdGUnID8gJ1cnIDogJ0InKSxcbiAgICB9O1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIGFuaW1hbEdseXBoKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbHlwaHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIGVhZ2xlOiAn4oaXJyxcbiAgICAgIGJ1bGw6ICfil4YnLFxuICAgICAga2FuZ2Fyb286ICfipLQnLFxuICAgICAgbGlvbjogJ+KZmicsXG4gICAgfTtcbiAgICByZXR1cm4gZ2x5cGhzW3R5cGVdO1xuICB9XG5cbiAgYW5pbWFsQXNzZXRTcmModHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBBTklNQUxTLmZpbmQoYW5pbWFsID0+IGFuaW1hbC50eXBlID09PSB0eXBlKT8uYXNzZXRTcmMgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIHBvd2VyQ2FsbG91dFRvbmUodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRvbmVzOiBSZWNvcmQ8Q2hlc3NpbWFsc0FuaW1hbFR5cGUsIHN0cmluZz4gPSB7XG4gICAgICBlYWdsZTogJzc5LCAxNjksIDIxOCcsXG4gICAgICBidWxsOiAnMjIwLCAxMTYsIDU4JyxcbiAgICAgIGthbmdhcm9vOiAnMTM5LCAxMTIsIDIyMicsXG4gICAgICBsaW9uOiAnMjIxLCAxNTgsIDI2JyxcbiAgICB9O1xuICAgIHJldHVybiB0b25lc1t0eXBlXTtcbiAgfVxuXG4gIGNhblJldmlld1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpID8/IDApID4gMDtcbiAgfVxuXG4gIGNhblJldmlld05leHQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4ICE9PSB1bmRlZmluZWQgJiYgaW5kZXggPCB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcmV2aWV3UHJldmlvdXNNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4IDw9IDApIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCAtIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXZpZXdOZXh0TW92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA+PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxKSByZXR1cm47XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQoaW5kZXggKyAxKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVwbGF5UG9zaXRpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLnJlcGxheUVudHJpZXMoKVtpbmRleF07XG4gICAgaWYgKCFlbnRyeSB8fCBlbnRyeS5tb3ZlTnVtYmVyID09PSAwKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVwbGF5U3RhcnQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVwbGF5TW92ZScpXG4gICAgICAucmVwbGFjZSgne21vdmV9JywgYCR7ZW50cnkubW92ZU51bWJlcn1gKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YCk7XG4gIH1cblxuICBzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVJvd0luZGV4KHJvdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSByb3cgOiByb3c7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2xJbmRleChjb2w6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxIC0gY29sIDogY29sO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoR2FtZShnYW1lSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lTm90Rm91bmQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnbGl2ZScpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QocHJldmlvdXMsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpKTtcbiAgICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnQ0hFU1NJTUFMU19HQU1FX0VYUElSRUQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRCb2R5Jyk7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9OT1RfRk9VTkQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZ2FtZS5zZXQoc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIGlmIChwcmV2aW91cy5pZCAhPT0gc3RhdGUuaWQgfHwgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMucmV2aWV3SW5kZXgoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB9XG4gICAgaWYgKHByZXZpb3VzLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICBjb25zdCBwcmV2aW91c1BlbmRpbmdLZXkgPVxuICAgICAgcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==
6818
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLG9CQUFvQixHQUNyQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0sK0JBQStCLENBQUM7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdStDVCwwbjNIQWgvQ0MsUUFBUSxzREFDUix3QkFBd0IscUZBQ3hCLHlCQUF5Qix1RkFDekIsb0JBQW9CLDhNQUNwQixtQkFBbUIseUdBQ25CLG9CQUFvQiwwRkFDcEIsZUFBZSwwR0FDZixtQkFBbUI7OzRGQTQxT1YsdUJBQXVCO2tCQXYyT25DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxRQUFRO3dCQUNSLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1K0NUO3dEQTY1TGlDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFrVFgsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRU8sYUFBYTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGFwcGx5Q2hlc3NpbWFsc01vdmUsXG4gIGNob29zZUNoZXNzaW1hbHNCb3RNb3ZlLFxuICBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUyxcbiAgY3JlYXRlQ2hlc3NpbWFsc1Jldmlld1N0YXRlLFxuICBjcmVhdGVDaGVzc2ltYWxzR2FtZSxcbiAgZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXMsXG4gIGdldENoZXNzaW1hbHNQaWVjZUF0LFxuICBwb3NpdGlvbktleSxcbiAgcmVzaWduQ2hlc3NpbWFsc0dhbWUsXG59IGZyb20gJy4vY2hlc3NpbWFscy1lbmdpbmUnO1xuaW1wb3J0IHsgQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtb25saW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlc3NpbWFsc0NoYWxsZW5nZVByb2dyZXNzU2VydmljZSB9IGZyb20gJy4vY2hlc3NpbWFscy1jaGFsbGVuZ2UtcHJvZ3Jlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWFkdmVudHVyZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMgfSBmcm9tICcuL2NoZXNzaW1hbHMtYWR2ZW50dXJlLWRhdGEnO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LCBNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLWNhbGxvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsIE1pbmlHYW1lU2NvcmVQb3BNZXRhZGF0YSB9IGZyb20gJy4vbWluaS1nYW1lLXNjb3JlLXBvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bixcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzTG9jYWxNb2RlLFxuICBDaGVzc2ltYWxzTW92ZSxcbiAgQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsXG4gIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbiAgQ2hlc3NpbWFsc1N0YXRzTW9kZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3JhbmdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0TWV0YWRhdGEsIFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbicgfCAnY2hhbGxlbmdlLW5ldyc7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG50eXBlIENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZSA9ICdpZGxlJyB8ICdwbGF5aW5nJyB8ICdiZXR3ZWVuJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG50eXBlIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlID0gQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkgfCAnbmlnaHRtYXJlJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB7XG4gIHBpZWNlSWQ6IHN0cmluZztcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNyaXRpY2FsOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0FjaGlldmVtZW50VmlldyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICB1bmxvY2tlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXcge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBwZXJjZW50OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlldyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc1BhdGhIaWdobGlnaHRWaWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBpbWFnZVNyYzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcge1xuICBjb21ibzogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc0dhbWVTY29yZVZpZXcge1xuICBiZXN0Q29tYm86IG51bWJlcjtcbiAgYmVzdE1vdmU/OiBDaGVzc2ltYWxzTW92ZVNjb3JlVmlldztcbiAgc2NvcmU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNCb3RPcHBvbmVudFZpZXcge1xuICBhdmF0YXI6IHN0cmluZztcbiAgYXZhdGFyU3JjOiBzdHJpbmc7XG4gIGV5ZWJyb3c6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyA9IDM2MDtcbmNvbnN0IENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyA9IDIyMDA7XG5jb25zdCBDSEVTU0lNQUxTX1NDT1JFX1BPUF9NUyA9IDExNTA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9USElOS0lOR19NUyA9IDYyMDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX0NPTE9SOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSAnYmxhY2snO1xuY29uc3QgQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUyA9IDc7XG5jb25zdCBDSEVTU0lNQUxTX09OTElORV9UVVJOX1NFQ09ORFMgPSA0NTtcbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUyA9IDMwO1xuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfRklOQUxfVFVSTl9TRUNPTkRTID0gMjA7XG5jb25zdCBDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0UgPSAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcG93ZXJzJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9lYWdsZS1wb3dlci5wbmdgLCB0b25lOiA2NTkuMjUgfSxcbiAgeyB0eXBlOiAnYnVsbCcsIGFzc2V0U3JjOiBgJHtDSEVTU0lNQUxTX1BPV0VSX0FTU0VUX0JBU0V9L2J1bGwtcG93ZXIucG5nYCwgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6IGAke0NIRVNTSU1BTFNfUE9XRVJfQVNTRVRfQkFTRX0va2FuZ2Fyb28tcG93ZXIucG5nYCwgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogYCR7Q0hFU1NJTUFMU19QT1dFUl9BU1NFVF9CQVNFfS9saW9uLXBvd2VyLnBuZ2AsIHRvbmU6IDM5MiB9LFxuXTtcblxuY29uc3QgQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90W10gPSBbXG4gIHtcbiAgICBpZDogJ3Nwcm91dCcsXG4gICAgcm91bmQ6IDEsXG4gICAgcHJvZmlsZUlkOiAnZXhwbG9yZXInLFxuICAgIGRpZmZpY3VsdHk6ICdlYXN5JyxcbiAgICBib2FyZFNpemU6IDYsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3Byb3V0SW50cm8nLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgcm91bmQ6IDIsXG4gICAgcHJvZmlsZUlkOiAnZ3VhcmRpYW4nLFxuICAgIGRpZmZpY3VsdHk6ICdub3JtYWwnLFxuICAgIGJvYXJkU2l6ZTogNixcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTZW50aW5lbEludHJvJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICByb3VuZDogMyxcbiAgICBwcm9maWxlSWQ6ICdodW50ZXInLFxuICAgIGRpZmZpY3VsdHk6ICdub3JtYWwnLFxuICAgIGJvYXJkU2l6ZTogNixcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RIdW50ZXJJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2p1bXBlcicsXG4gICAgcm91bmQ6IDQsXG4gICAgcHJvZmlsZUlkOiAnanVtcGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBib2FyZFNpemU6IDYsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90SnVtcGVySW50cm8nLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgcm91bmQ6IDUsXG4gICAgcHJvZmlsZUlkOiAncHJlZGF0b3InLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBib2FyZFNpemU6IDgsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90UHJlZGF0b3JJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ29yYWNsZScsXG4gICAgcm91bmQ6IDYsXG4gICAgcHJvZmlsZUlkOiAnc3RyYXRlZ2lzdCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGJvYXJkU2l6ZTogOCxcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RPcmFjbGVJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NwcmludGVyJyxcbiAgICByb3VuZDogNyxcbiAgICBwcm9maWxlSWQ6ICdjaGVldGFoJyxcbiAgICBkaWZmaWN1bHR5OiAnbWFzdGVyJyxcbiAgICBib2FyZFNpemU6IDgsXG4gICAgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3ByaW50ZXJJbnRybycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NoYW1waW9uJyxcbiAgICByb3VuZDogOCxcbiAgICBwcm9maWxlSWQ6ICdtYWdudXMnLFxuICAgIGRpZmZpY3VsdHk6ICdtYXN0ZXInLFxuICAgIGJvYXJkU2l6ZTogOCxcbiAgICBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RDaGFtcGlvbkludHJvJyxcbiAgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGVzc2ltYWxzLWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uTW9kYWwsXG4gICAgTWluaUdhbWVDYWxsb3V0Q29tcG9uZW50LFxuICAgIE1pbmlHYW1lU2NvcmVQb3BDb21wb25lbnQsXG4gICAgTW9kYWxMYXlvdXRDb21wb25lbnQsXG4gICAgUmFuZ2VJbnB1dENvbXBvbmVudCxcbiAgICBUb2dnbGVJbnB1dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVXNlckF2YXRhckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIiBbY2xhc3MuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uTW9kZVwiPlxuICAgICAgQGlmIChzY3JlZW4oKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fZW1ibGVtXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy1lbWJsZW0ucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9fX3dvcmRtYXJrXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvYnJhbmQvY2hlc3NpbWFscy13b3JkbWFyay5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhbmVsXCI+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0hvbWVDaG9vc2UnKVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gY2hlc3NpbWFscy1ob21lLWFjdGlvbi0tcGxheVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblBsYXlPcHRpb25zTW9kYWwoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tb2RlLWljb25zL3NvbG8tYm9yZGVybGVzcy5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNRdWlja1BsYXknKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1F1aWNrUGxheUJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5DaGFsbGVuZ2VWaWV3KClcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlLWljb25cIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21vZGUtaWNvbnMvY2hhbGxlbmdlLWJvcmRlcmxlc3MucG5nXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1hY3Rpb25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5QYXRoVmlldygpXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tb2RlLWljb25zL3BhdGgtYm9yZGVybGVzcy5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1RpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1N1YnRpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtYWN0aW9uIGNoZXNzaW1hbHMtaG9tZS1hY3Rpb24tLWFkdmVudHVyZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFkdmVudHVyZU1vZGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZS1pY29uIGNoZXNzaW1hbHMtbW9kZS1pY29uLS1hZHZlbnR1cmVcIlxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2JyYW5kL2NoZXNzaW1hbHMtZW1ibGVtLnBuZ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZUhvbWUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZUhvbWVCb2R5JykgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWhvd3RvXCI+XG4gICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzSG93VG9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxTdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUnVsZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8ZGV0YWlscyBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uc1wiPlxuICAgICAgICAgICAgPHN1bW1hcnk+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1BsYXlXaXRoRnJpZW5kJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3N1bW1hcnk+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19lcnJvclwiPnt7IG9ubGluZUVycm9yKCkgfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmdcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdjcmVhdGUnXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlT25saW5lR2FtZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZUhpbnQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2pvaW5cIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNKb2luT25saW5lVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNKb2luQ29kZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY2hlc3NpbWFsc0pvaW5Db2RlUGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKCkgfHwgIW9ubGluZUpvaW5Db2RlKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImpvaW5PbmxpbmVHYW1lQnlDb2RlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdqb2luJykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzSm9pbk9ubGluZScpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIDwvZGV0YWlscz5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeUJvZHknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zdW1tYXJ5PlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1oaXN0b3J5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5VGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2Ygb25saW5lSGlzdG9yeSgpLnNsaWNlKDAsIDQpOyB0cmFjayBlbnRyeS5nYW1lSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW1cIiAoY2xpY2spPVwib3Blbkhpc3RvcnlHYW1lKGVudHJ5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBlbnRyeS5nYW1lSWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5KSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeU9wZW4nKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3NNb2RhbCgpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkFib3V0TW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWJvdXQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAnY2hhbGxlbmdlJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXZpZXdcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1iYWNrLWxpbmsgY2hlc3NpbWFscy1jaGFsbGVuZ2UtYmFja1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZC0tZGVkaWNhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGVyb1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VFeWVicm93JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMgY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fYWN0aW9ucy0taGVyb1wiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCk7IGFzIGFjdGl2ZVJ1bikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzdW1lQ2hhbGxlbmdlKGFjdGl2ZVJ1bilcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlc3VtZScpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXcnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtZm9jdXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoYm90UHJvZmlsZUF2YXRhclNyYyhjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VNZW51Qm90KCkucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZUJvdFN0YXR1c0xhYmVsKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU1lbnVCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoY2hhbGxlbmdlTWVudUJvdCgpLmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9hcmRMYWJlbCcpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAne3NpemV9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZU1lbnVCb3QoKS5ib2FyZFNpemUgKyAneCcgKyBjaGFsbGVuZ2VNZW51Qm90KCkuYm9hcmRTaXplXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAsIHt7IGNoYWxsZW5nZUJvdERpZmZpY3VsdHlMYWJlbChjaGFsbGVuZ2VNZW51Qm90KCkpIH19XG4gICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz4zPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlV2luUmF0ZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlV2luUmF0ZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBhdGgnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdXRlSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJylcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChib3Qgb2YgY2hhbGxlbmdlTGFkZGVyOyB0cmFjayBib3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZU1lbnVDbGVhcmVkUm91bmQoKSA+PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY3VycmVudF09XCJjaGFsbGVuZ2VNZW51Qm90KCkucm91bmQgPT09IGJvdC5yb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1maW5hbF09XCJib3Qucm91bmQgPT09IGNoYWxsZW5nZUxhZGRlci5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjaGFsbGVuZ2VCb3ROYW1lKGJvdClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCk7IGFzIGF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHt7IGJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2UgaWYgKHNjcmVlbigpID09PSAncGF0aCcpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtdmlld1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLWJhY2stbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQmFja1RvTWVudScpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oZXJvXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydFwiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3BhdGgvcHJvZ3Jlc3MtbWFwLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVlvdXJQYXRoJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc0hlcm9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3Ryb3BoeS5wbmdcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNoYWxsZW5nZVN0YXRzKCkudG90YWxXaW5zIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8Yj57eyB0KCdjaGVzc2ltYWxzUGF0aFdpbnNTaG9ydCcpIH19PC9iPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgQGlmIChjaGFsbGVuZ2VTdGF0c0xvYWRlZCgpKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzUGF0aEhpZ2hsaWdodHMnKVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHBhdGhIaWdobGlnaHRzKCk7IHRyYWNrIGl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmltYWdlU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGl0ZW0udGl0bGUgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGl0ZW0udmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLWxvYWRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ3NcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlV2luUmF0ZXMnKVwiPlxuICAgICAgICAgICAgQGZvciAocmluZyBvZiBwcm9ncmVzc1JpbmdzKCk7IHRyYWNrIHJpbmcubGFiZWwpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcmluZ1wiIFtzdHlsZS4tLXJpbmctcHJvZ3Jlc3NdPVwicmluZy5wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJpbmcudmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByaW5nLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyByaW5nLmRldGFpbCB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1ncmlkXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbCBjaGVzc2ltYWxzLXBhdGgtcGFuZWwtLXdpZGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQ2hhbGxlbmdlSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUHJvZ3Jlc3NNb2Rlc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtc3RhdHNcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCZXN0U3RyZWFrJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWsgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZWNlbnRSdW5zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmNoYWxsZW5nZXNQbGF5ZWQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5jaGFsbGVuZ2VzQ29tcGxldGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtcGFuZWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNQcm9ncmVzc1Bvd2Vyc0hpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBhdGgtYmFyc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHBvd2VyIG9mIHByb2dyZXNzUG93ZXJTdGF0cygpOyB0cmFjayBwb3dlci5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLi0tYmFyLXByb2dyZXNzXT1cInBvd2VyLnBlcmNlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgcG93ZXIubGFiZWwgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwb3dlci52YWx1ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wYXRoLXBhbmVsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc1Byb2dyZXNzQWNoaWV2ZW1lbnRzSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIGNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzLS1wYXRoXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWNoaWV2ZW1lbnQgb2YgY2hhbGxlbmdlQWNoaWV2ZW1lbnRzKCk7IHRyYWNrIGFjaGlldmVtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtdW5sb2NrZWRdPVwiYWNoaWV2ZW1lbnQudW5sb2NrZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYWNoaWV2ZW1lbnQuaWNvbiB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhY2hpZXZlbWVudC50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBhY2hpZXZlbWVudC5ib2R5IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChjaGFsbGVuZ2VIaXN0b3J5KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGF0aC1wYW5lbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVjZW50UnVucycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IGNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnktLXBhdGhcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW4pIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lXCI+XG4gICAgICAgICAgQGlmICghcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtYmFjay1saW5rIGNoZXNzaW1hbHMtZ2FtZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJiYWNrVG9Ib21lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlQmFja1RvTWFwJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtYmFjay1saW5rIGNoZXNzaW1hbHMtZ2FtZS1iYWNrXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0Q2hhbmdlTW9kZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0JhY2tUb01lbnUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlc3VtZVNwbGFzaFZpc2libGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvXCJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9icmFuZC9jaGVzc2ltYWxzLWVtYmxlbS5wbmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMteW91ci10dXJuXT1cImlzQWN0aW9uYWJsZVR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FpdGluZy10dXJuXT1cImlzV2FpdGluZ0ZvclR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtdGltZXItbG93XT1cImlzVHVyblRpbWVyTG93KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwXCI+XG4gICAgICAgICAgICAgICAge3sgdHVyblN0YXRlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgICAgICAgICBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXG4gICAgICAgICAgICAgICAgICA/IGlzQ3VycmVudFBsYXllclZpY3RvcnkoKVxuICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNZb3VXb24nKVxuICAgICAgICAgICAgICAgICAgICA6IGlzQ3VycmVudFBsYXllckRlZmVhdCgpXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzWW91TG9zdCcpXG4gICAgICAgICAgICAgICAgICAgICAgOiB3aW5UaXRsZSgpXG4gICAgICAgICAgICAgICAgICA6IHR1cm5UaXRsZSgpXG4gICAgICAgICAgICAgIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHR1cm5TdGF0ZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgQGlmIChhZHZlbnR1cmVOb2RlSWQoKSAmJiBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGdhbWUoKS53aW5uZXIgPT09ICd3aGl0ZScpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFyc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmlzLWVhcm5lZF09XCJhZHZlbnR1cmVTdGFycygpID4gaVwiPnt7IGFkdmVudHVyZVN0YXJzKCkgPiBpID8gJ+KYhScgOiAn4piGJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fbWV0YVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3VsZFVzZVR1cm5QbGF5ZXJBdmF0YXIoKSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwidHVyblBsYXllckF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHR1cm5QbGF5ZXJGYWxsYmFja0F2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0dXJuUGxheWVyRXllYnJvdygpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXJuUGxheWVyTmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHR1cm5QbGF5ZXJIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdHVyblBsYXllckhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGJvdE9wcG9uZW50Q2FyZCgpOyBhcyBib3RQcm9maWxlKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGNoZXNzaW1hbHMtYm90LXJpdmFsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlLmF2YXRhclNyYykge1xuICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImJvdFByb2ZpbGUuYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZS5hdmF0YXIgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgYm90UHJvZmlsZS5leWVicm93IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGUudGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBib3RQcm9maWxlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgd2FpdGluZ1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdhaXRpbmdCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicGVuZGluZ0d1ZXN0QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwZW5kaW5nR3Vlc3RJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGVuZGluZ0d1ZXN0SGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkgfHwgdHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXMgY2hlc3NpbWFscy1zdGF0dXMtLXNpbXBsZVwiPlxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlUm91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVzTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAodHVyblNlY29uZHNSZW1haW5pbmcoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXN0YXR1c19fdGltZXJcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxvd109XCJpc1R1cm5UaW1lckxvdygpXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRpbWVyLXByb2dyZXNzXT1cInR1cm5UaW1lclByb2dyZXNzKClcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cInRpbWVyXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNUdXJuVGltZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHR1cm5UaW1lckxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93Q2hhbGxlbmdlSW5HYW1lUGFuZWwoKSkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUxpdmVBdmF0YXJTcmMoKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJTcmNcIiBhbHQ9XCJcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlTGl2ZUF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZUxpdmVSaXZhbExpbmUoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93T25saW5lU3RhdHVzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWVycm9yXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InIHx8IGdhbWUoKS5zdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9ubGluZVN0YXR1c1RpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBvbmxpbmVTdGF0dXNCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodHV0b3JpYWxNb2RlKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy10dXRvcmlhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0dXRvcmlhbFByb2dyZXNzTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXRvcmlhbFRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0dXRvcmlhbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhpdFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxFeGl0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwicmV2aWV3R2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cInJldmlld0dhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcG93ZXItYWltaW5nXT1cIiEhc2VsZWN0ZWRBbmltYWwoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1lZGdlLWNlbGxdPVwiaXNFZGdlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMl09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItM109XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGVnYWxdPVwiaXNMZWdhbENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImlzQ2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtdGhyZWF0XT1cImlzVGhyZWF0ZW5lZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1yZWFkeV09XCJpc0NhcHR1cmVSZWFkeUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13aW5uaW5nXT1cImlzV2lubmluZ0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImlzTGFzdE1vdmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbW92aW5nLXNvdXJjZV09XCJpc01vdmluZ1NvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtbW92ZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1zb3VyY2UtZWZmZWN0XT1cImlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2VhZ2xlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdidWxsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAna2FuZ2Fyb28nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2xpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25Nb2RlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICEhbW92aW5nUGllY2UoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3RUaGlua2luZygpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVTeW5jaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2VsbCh7IHJvdywgY29sIH0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChwb3dlckNhbGxvdXQoKTsgYXMgY2FsbG91dCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW1pbmktZ2FtZS1jYWxsb3V0IFtwcm9wc109XCJjYWxsb3V0XCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2NvcmVQb3AoKTsgYXMgcG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbWluaS1nYW1lLXNjb3JlLXBvcCBbcHJvcHNdPVwicG9wXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSW50cm9WaXNpYmxlKCkgJiYgYWN0aXZlQ2hhbGxlbmdlQm90KCk7IGFzIGludHJvQm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMoaW50cm9Cb3QucHJvZmlsZUlkKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihpbnRyb0JvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgY2hhbGxlbmdlUm91bmRTdGFnZUxhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoaW50cm9Cb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHQoaW50cm9Cb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm9hcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgaW50cm9Cb3QuYm9hcmRTaXplIH19eHt7IGludHJvQm90LmJvYXJkU2l6ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0JvdERpZmZpY3VsdHknKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGludHJvQm90KSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlSW50cm9DdGEnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiaXNDdXJyZW50UGxheWVyRGVmZWF0KClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tYVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1iXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWR2ZW50dXJlTm9kZUlkKCkgPyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlTW9kZUxhYmVsJykgOiB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFkdmVudHVyZU5vZGVJZCgpICYmIGFkdmVudHVyZUN1cnJlbnROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaXZhbC1uYW1lXCI+e3sgdChhZHZlbnR1cmVDdXJyZW50Tm9kZSgpIS50aXRsZUtleSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAod2lubmVyQXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz1cImhhcy1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIndpbm5lckF2YXRhclVybCgpXCIgW2FsdF09XCJ3aW5uZXJEaXNwbGF5TmFtZSgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgd2lubmVySW5pdGlhbHMoKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmVudHVyZU5vZGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gaXNDdXJyZW50UGxheWVyVmljdG9yeSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzWW91V29uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNZb3VMb3N0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB3aW5UaXRsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB3aW5uZXJTaWRlTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkgJiYgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtZWFybmVkXT1cImFkdmVudHVyZVN0YXJzKCkgPiBpXCI+e3sgYWR2ZW50dXJlU3RhcnMoKSA+IGkgPyAn4piFJyA6ICfimIYnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmVudHVyZVN0YXJzKCkgPj0gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlV29uM1N0YXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc0FkdmVudHVyZVdvbjJTdGFycycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkgJiYgaXNDdXJyZW50UGxheWVyRGVmZWF0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvblwiPnt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVMb3N0Q2FwdGlvbicpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpICYmICFpc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWR2ZW50dXJlTm9kZUlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdhbWUoKS53aW5uZXIgPT09ICd3aGl0ZScgJiYgYWR2ZW50dXJlTmV4dEJhdHRsZU5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0QWR2ZW50dXJlTm9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZU5leHRSaXZhbCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFja1RvSG9tZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlQmFja1RvTWFwJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGdhbWUoKS53aW5uZXIgIT09ICd3aGl0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc3RhcnRHYW1lKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdwbGF5QWdhaW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChnYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeSBjaGVzc2ltYWxzLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzdGFydEdhbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgncGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocmVtYXRjaFN0YXRlKCkgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5IGNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoQWN0aW9uTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgQGlmIChvbmxpbmVSb2xlKCkgIT09ICdzcGVjdGF0b3InICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIXBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cInBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVubG9jay1wdWxzZV09XCJwb3dlclVubG9ja1B1bHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0FuaW1hbENhcmRzJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHQoJ2NoZXNzaW1hbHNMb2NrZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHA+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwicG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIWNhblVzZVBvd2VyQ2FyZHMoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvd2VyVXNlc0xhYmVsKGFuaW1hbC50eXBlKTsgYXMgdXNlc0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXItdXNlc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHVzZXNMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGhhc1JlcGxheUNvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVwbGF5UG9zaXRpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3UHJldmlvdXMoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3UHJldmlvdXNNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlQcmV2aW91cycpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3TmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdOZXh0TW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5TmV4dCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdFwiIFtjbGFzcy5pcy1jaGFsbGVuZ2UtcmVzdWx0XT1cImlzQ2hhbGxlbmdlQWN0aXZlKClcIj5cbiAgICAgICAgICAgICAgQGlmICghaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgd2luVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXZpY3RvcnldPVwiY2hhbGxlbmdlTGFzdFdvbigpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiY2hhbGxlbmdlTGFzdFdvbigpID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm9cIiBbY2xhc3MuaXMtY2xlYXJlZF09XCJjaGFsbGVuZ2VMYXN0V29uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVN1bW1hcnlBdmF0YXJTcmMoKTsgYXMgYXZhdGFyU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlU3VtbWFyeUF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZU91dGNvbWVUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250aW51ZUNoYWxsZW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnkgY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdGFydENoYWxsZW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTsgYXMgdGVuc2lvbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvblwiIFtjbGFzcy5pcy1jcml0aWNhbF09XCJ0ZW5zaW9uLmNyaXRpY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGVuc2lvbi50aXRsZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdGVuc2lvbi5ib2R5IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nICYmIGFjdGl2ZUNoYWxsZW5nZUJvdCgpOyBhcyBuZXh0Qm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1ib3QtYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdFByb2ZpbGVBdmF0YXJTcmMobmV4dEJvdC5wcm9maWxlSWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclNyY1wiIGFsdD1cIlwiIGRyYWdnYWJsZT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKG5leHRCb3QucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKG5leHRCb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBjaGFsbGVuZ2VCb3RJbnRybyhuZXh0Qm90KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyBjaGFsbGVuZ2VOZXh0Uml2YWxIaW50KCkgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllc1wiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlbWF0Y2hTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c1wiIFtjbGFzcy5pcy1pbmNvbWluZ109XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ1RpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVGl0bGUnKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaEluY29taW5nQm9keScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEJvZHknKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllcyBjaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllclwiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cInJlbWF0Y2hPcHBvbmVudEF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIGNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNSaXZhbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVtYXRjaE9wcG9uZW50TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJiBjYW5Db250cm9sQ3VycmVudEdhbWUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXNpZ24oKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXNpZ24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5pZCAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZVByb2plY3Rpb25MaW5rKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVQcm9qZWN0aW9uJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUGxheU9wdGlvbnNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXBsYXktb3B0aW9ucy1tb2RhbFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJoYW5kbGVQbGF5T3B0aW9uc01vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1tb2RhbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNTb2xvT3B0aW9uc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU29sb09wdGlvbnNCb2R5JylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cIltdXCJcbiAgICAgICAgICBbZm9vdGVyXT1cInRydWVcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlUGxheU9wdGlvbnNNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1ib2FyZC1zaXplXCI+e3sgdCgnY2hlc3NpbWFsc0JvYXJkU2l6ZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2l6ZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWJvYXJkLXNpemVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChzaXplIG9mIGJvYXJkU2l6ZXM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvYXJkU2l6ZSgpID09PSBzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkQm9hcmRTaXplKCkgPT09IHNpemVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb2FyZFNpemUuc2V0KHNpemUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLW9wdGlvbi1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzaXplIH19eHt7IHNpemUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHNpemUgPT09IDYgPyB0KCdjaGVzc2ltYWxzU2l6ZVNtYWxsJykgOiB0KCdjaGVzc2ltYWxzU2l6ZUxhcmdlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LW1vZGVcIj57eyB0KCdjaGVzc2ltYWxzTW9kZVRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJjaGVzc2ltYWxzLXBsYXktbW9kZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG1vZGUgb2YgbG9jYWxNb2RlczsgdHJhY2sgbW9kZSkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkTG9jYWxNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZExvY2FsTW9kZS5zZXQobW9kZSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxvY2FsTW9kZUxhYmVsKG1vZGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5LW9wdGlvbnNfX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGgzIGlkPVwiY2hlc3NpbWFscy1wbGF5LWRpZmZpY3VsdHlcIj57eyB0KCdjaGVzc2ltYWxzQm90RGlmZmljdWx0eScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1kaWZmaWN1bHR5XCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJjaGVzc2ltYWxzLXBsYXktZGlmZmljdWx0eVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZGlmZmljdWx0eSBvZiBib3REaWZmaWN1bHRpZXM7IHRyYWNrIGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gZGlmZmljdWx0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSBkaWZmaWN1bHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Qm90RGlmZmljdWx0eShkaWZmaWN1bHR5KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1vcHRpb25zX19ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImNoZXNzaW1hbHMtcGxheS1ib3RcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQm90RGlmZmljdWx0eSgpID09PSAnbmlnaHRtYXJlJyA/IHQoJ2NoZXNzaW1hbHNOaWdodG1hcmVSaXZhbHMnKSA6IHQoJ2NoZXNzaW1hbHNCb3RTdHlsZScpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90c1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY2hlc3NpbWFscy1wbGF5LWJvdFwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gJ25pZ2h0bWFyZScpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAobW9kZSBvZiBuaWdodG1hcmVSaXZhbHM7IHRyYWNrIG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZE5pZ2h0bWFyZU1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChuaWdodG1hcmVNb2RlQXNzZXRTcmMobW9kZSk7IGFzIGFzc2V0U3JjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFzc2V0U3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuaWdodG1hcmVNb2RlR2x5cGgobW9kZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBuaWdodG1hcmVNb2RlTGFiZWwobW9kZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAocHJvZmlsZSBvZiBhdmFpbGFibGVCb3RQcm9maWxlcygpOyB0cmFjayBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChib3RQcm9maWxlQXZhdGFyU3JjKHByb2ZpbGUuaWQpOyBhcyBhdmF0YXJTcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXZhdGFyU3JjXCIgYWx0PVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmF2YXRhciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxkaXYgbW9kYWwtYWN0aW9ucyBjbGFzcz1cImNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZVBsYXlPcHRpb25zTW9kYWwoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjbG9zZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0U29sb0dhbWVGcm9tT3B0aW9ucygpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydFNvbG8nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUnVsZXNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLXJ1bGVzLW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgICAtLWlvbi10ZXh0LWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbZm9vdGVyXT1cInRydWVcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19oZXJvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdHV0b3JpYWwtc29sby1jbGVhbi5wbmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzUnVsZXNRdWlja0d1aWRlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19zdGVwc1wiPlxuICAgICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmlzaC5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUdvYWxUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvbW92ZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvY2FwdHVyZS5qcGdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcHR1cmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FwdHVyZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXJzXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcnVsZXMvcG93ZXJzLmpwZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc1J1bGVDYXJkc1RpdGxlJylcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9lYWdsZS1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUVhZ2xlQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9idWxsLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9rYW5nYXJvby1wb3dlci5wbmdcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUnVsZUthbmdhcm9vQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3Bvd2Vycy9saW9uLXBvd2VyLnBuZ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uQm9keScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19fbm90ZVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3J1bGVzL2ZpbmFsLXN0ZXAuanBnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8ZGl2IG1vZGFsLWFjdGlvbnMgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnlcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwicnVsZXNUdXRvcmlhbEFjdGlvbigpXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRUdXRvcmlhbEZyb21SdWxlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBjaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJydWxlc0Nsb3NlQWN0aW9uKClcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1NldHRpbmdzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmUgY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbFwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXJnYjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYik7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3Q6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktc2hhZGU6ICMyODVmMzY7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktdGludDogIzQzODA0ZjtcbiAgICAgIFwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU2V0dGluZ3NUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJmYWxzZVwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlU2V0dGluZ3NNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJtdXNpY1RvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJtdXNpY1ZvbHVtZVByb3BzKClcIiAocmFuZ2VDaGFuZ2UpPVwic2V0TXVzaWNWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHZhbC10b2dnbGUtaW5wdXQgW3Byb3BzXT1cInNmeFRvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJzZnhWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldFNmeFZvbHVtZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzQWJvdXRNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLWFib3V0LW1vZGFsXCJcbiAgICAgIHN0eWxlPVwiXG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnk6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0taW9uLWNvbG9yLXByaW1hcnktcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZTogIzI4NWYzNjtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS10aW50OiAjNDM4MDRmO1xuICAgICAgXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImhhbmRsZUFib3V0TW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJhYm91dEFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJoYW5kbGVBYm91dEFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2xvZ29cIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9icmFuZC9jaGVzc2ltYWxzLXdvcmRtYXJrLnBuZ1wiXG4gICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fdGhhbmtzXCI+e3sgdCgnY2hlc3NpbWFsc0Fib3V0VGhhbmtzJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNBYm91dEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2tcIj57eyB0KCdjaGVzc2ltYWxzQWJvdXRGZWVkYmFja1Byb21wdCcpIH19PC9wPlxuICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkdD57eyB0KCdjaGVzc2ltYWxzQWJvdXRMaWJWZXJzaW9uJykgfX08L2R0PlxuICAgICAgICAgICAgICAgIDxkZD57eyB2YWx0ZWNoQ29tcG9uZW50c1ZlcnNpb24gfX08L2RkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZSBjaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCBjaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeTogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlOiAjMjg1ZjM2O1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQ6ICM0MzgwNGY7XG4gICAgICBcIlxuICAgICAgKGRpZERpc21pc3MpPVwiaGFuZGxlQ29uZmlybU1vZGFsRGlzbWlzc2VkKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwiY29uZmlybVRpdGxlKClcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjb25maXJtQm9keSgpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJjb25maXJtQWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY29uZmlybVBlbmRpbmdBY3Rpb24oJGV2ZW50LmFjdGlvbj8udG9rZW4pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBhbmVsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogI2ZmZmFmMTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICMyZTNhMmM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tdXRlZDogIzUxNjQzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkOiAjMzdmMjhhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiOiA1NSwgMjQyLCAxMzg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYzogI2Y3ZDQ1YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYjogMjQ3LCAyMTIsIDkwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtaG90OiAjZmZmNTZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcDogI2I3N2ExODtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdmFsLW1pbmktZ2FtZXMtZm9udC1zaXplLCAxcmVtKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmZvbnQtc21hbGwpIHtcbiAgICAgICAgLS12YWwtbWluaS1nYW1lcy1mb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZm9udC1sYXJnZSkge1xuICAgICAgICAtLXZhbC1taW5pLWdhbWVzLWZvbnQtc2l6ZTogMS4xODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN1cmZhY2U6ICNmZmZhZjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICM1MTY0M2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4xKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lOiAjOGU5MzYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZDogIzM3ZjI4YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYjogNTUsIDI0MiwgMTM4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWM6ICNmN2Q0NWE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1yZ2I6IDI0NywgMjEyLCA5MDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdDogI2ZmZjU2ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXA6ICNiNzdhMTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy13YXJuaW5nOiAjZjRjNTQyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2I6IDI0NCwgMTk3LCA2NjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmU6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vdmUtcmdiOiB2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZTogIzFmY2RiMztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiOiAzMSwgMjA1LCAxNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjOGM2YjRmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDE0MCwgMTA3LCA3OTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM3Zjk0NGQ7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoNDYsIDU4LCA0NCwgMC4xNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YzZWFkYjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6IGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyNDI5MzY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTcxYjI1O1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OiBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpKSBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNvZnQ6IHJnYmEoMTExLCAxMjIsIDYwLCAwLjIyKTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreTogI2MwNmEzZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmUtcmdiOiAxNDIsIDE0NywgOTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNmM2Y0ZTg7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtZGFyazogIzdmOTQ0ZDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDIycmVtKSxcbiAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgOTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwLjlyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoX19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg1LjhyZW0sIDIwdncsIDcuMnJlbSk7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXJlc3VtZS1wdWxzZSAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC44cmVtIDEuMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtZ2xhc3MtaGlnaGxpZ2h0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6IGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjQ4KSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDAsIDAsIDAsIDAuMjQpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzIwMjYzMztcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxMTE2MjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93OiBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKSBkcm9wLXNoYWRvdygwIDAuMzRyZW0gMC40NHJlbSByZ2JhKDAsIDAsIDAsIDAuNTIpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnOiAjZmZmZGY3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtaW5uZXItYmc6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXI6IHJnYmEoMjQyLCAyMzAsIDIxMywgMC4yNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1maWx0ZXI6IGRyb3Atc2hhZG93KDAgMC4xMnJlbSAwLjE2cmVtIHJnYmEoMCwgMCwgMCwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcjogZ3JheXNjYWxlKDAuMzIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyN3JlbSwgODZ2dyk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvX19lbWJsZW0ge1xuICAgICAgICB3aWR0aDogbWluKDEyLjI1cmVtLCA0OHZ3KTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4ycmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fd29yZG1hcmsge1xuICAgICAgICB3aWR0aDogbWluKDIxcmVtLCA3NnZ3KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVybyBwLFxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAsXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMXJlbSwgNHZ3LCAxLjVyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjEyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNjhyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMTVyZW0gMXJlbSAxLjA1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc0KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA4KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbi0tcGxheSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC40Nik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxOCUgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEyKVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0LjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCksXG4gICAgICAgICAgMCAwLjU1cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNoYWRvdy1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDN2dywgMS40NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24gc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4xMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeTo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zW29wZW5dIHN1bW1hcnk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJy0nO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vcHRpb25zIHN1bW1hcnkgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9ucyBzdW1tYXJ5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgc3VtbWFyeSBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9wdGlvbnMgPiA6bm90KHN1bW1hcnkpIHtcbiAgICAgICAgbWFyZ2luOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMS4wNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXAge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9uc19fZ3JvdXAgaDMge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1zaXplIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1tb2RlIGJ1dHRvbixcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtaW4taGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDIuMXJlbSAwLjc4cmVtIDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4wOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA1KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQsXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE2JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc4KSwgdHJhbnNwYXJlbnQgMjUlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIzKSxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMylcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksXG4gICAgICAgICAgMCAwLjg1cmVtIDEuOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb3B0aW9uLWNoZWNrIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuNjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjY1cmVtO1xuICAgICAgICB3aWR0aDogMC43MnJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5pcy1zZWxlY3RlZCA+IC5jaGVzc2ltYWxzLW9wdGlvbi1jaGVjayB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4yOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAnaWNvbiB0aXRsZSdcbiAgICAgICAgICAnaWNvbiBib2R5JztcbiAgICAgICAgY29sdW1uLWdhcDogMC41NXJlbTtcbiAgICAgICAgcm93LWdhcDogMC4xMnJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtbmlnaHRtYXJlIHN0cm9uZyB7XG4gICAgICAgIGdyaWQtYXJlYTogdGl0bGU7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1vcHRpb25zIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZSBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogYm9keTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1uaWdodG1hcmVfX2ljb24ge1xuICAgICAgICBncmlkLWFyZWE6IGljb247XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1uaWdodG1hcmVfX2ljb24gaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUgYnV0dG9uLmlzLXNlbGVjdGVkIC5jaGVzc2ltYWxzLW5pZ2h0bWFyZV9faWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDYpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjA0KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCksXG4gICAgICAgICAgMCAwLjcycmVtIDEuMjVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMi40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW9wdGlvbnMgLmNoZXNzaW1hbHMtYm90cyBidXR0b24uaXMtc2VsZWN0ZWQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXktbW9kYWwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3NCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXN0cm9uZzogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UsICNmZmZmZmYpIDU4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsICMyZTNhMmMpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsICM1MTY0M2QpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYmFja2dyb3VuZC1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSkgOTIlLCAjZmZmKTtcbiAgICAgICAgLS1ib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLXZhbC1tb2RhbC1mb290ZXItZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWJvcmRlcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXIsIHJnYmEoNDYsIDU4LCA0NCwgMC4xOCkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0LCAjMmUzYTJjKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYjogNDYsIDExMSwgNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0OiAjZmZmYWYwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYjogMTY4LCAxNjAsIDEwNjtcbiAgICAgICAgLS1pb24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tY2FyZC1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQsICNmZmZmZmYpO1xuICAgICAgICAtLWlvbi10ZXh0LWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLXZhbC1tb2RhbC1mb290ZXItZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSg0NiwgNTgsIDQ0LCAwLjE4KSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy10ZXh0OiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsICMyZTNhMmMpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbXV0ZWQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQsICM1MTY0M2QpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS12YWwtbW9kYWwtZm9vdGVyLWdhcDogMC43cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmc6ICNmOGZiZjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjMmUzYTJjO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICM1ZjZmNTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXI6IHJnYmEoNDYsIDU4LCA0NCwgMC4xOCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1zaGFkb3c6IHJnYmEoNDYsIDU4LCA0NCwgMC4xNCk7XG4gICAgICAgIC0taW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtc3VyZmFjZSk7XG4gICAgICAgIC0taW9uLWNhcmQtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1pb24tdGV4dC1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyazogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDQ2LCA1OCwgNDQ7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bTogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZCk7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bS1yZ2I6IDk1LCAxMTEsIDgwO1xuICAgICAgICAtLWlvbi1ib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyKTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeTogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1pb24tY29sb3ItcHJpbWFyeS1yZ2I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0OiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlOiAjMjg1ZjM2O1xuICAgICAgICAtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQ6ICM0MzgwNGY7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICMxMjE4MTE7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQ6ICMxODIyMTc7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLWNhcmQtc3Ryb25nOiAjMWQyYTFjO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjZjZmM2U5O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1tdXRlZDogI2M4Y2ZiMTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM2KTtcbiAgICAgICAgICAtLWlvbi1jb2xvci1kYXJrLXJnYjogMjQ2LCAyNDMsIDIzMztcbiAgICAgICAgICAtLWlvbi1jb2xvci1tZWRpdW0tcmdiOiAyMDAsIDIwNywgMTc3O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2U6ICMxMjE4MTE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkOiAjMTgyMjE3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmc6ICMxZDJhMWM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0OiAjZjZmM2U5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbW9kYWwtbXV0ZWQ6ICNjOGNmYjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb2RhbC1ib3JkZXI6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM2KTtcbiAgICAgICAgLS1pb24tY29sb3ItZGFyay1yZ2I6IDI0NiwgMjQzLCAyMzM7XG4gICAgICAgIC0taW9uLWNvbG9yLW1lZGl1bS1yZ2I6IDIwMCwgMjA3LCAxNzc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi10b29sYmFyLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCAudmFsLW1vZGFsLWxheW91dF9fZm9vdGVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy10aGVtZWQtbW9kYWwgdmFsLW1vZGFsLXNoZWxsIGlvbi1jb250ZW50IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXN1cmZhY2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItaG92ZXI6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1kaXNwbGF5IGlvbi10ZXh0LFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtdGl0bGUgaW9uLXRleHQge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvbiBpb24tYnV0dG9uLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBpb24tYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMy40NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMC44NXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLWVuZDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24uYnV0dG9uLXNvbGlkLFxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXRoZW1lZC1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbi0tcHJpbWFyeSBpb24tYnV0dG9uIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24udmFsLW1vZGFsLWxheW91dF9fYnV0dG9uIGlvbi1idXR0b24uYnV0dG9uLW91dGxpbmUsXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtdGhlbWVkLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1zZWNvbmRhcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlcik7XG4gICAgICAgIC0tYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5LW1vZGFsX19hY3Rpb25zLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtcGxheS1tb2RhbF9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCAxMi41cmVtKTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uIHtcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1ydWxlcy1tb2RhbCB2YWwtYnV0dG9uLmNoZXNzaW1hbHMtcnVsZXNfX2FjdGlvbiBpb24tYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMy40NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMC44NXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLWVuZDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxLjM1cmVtO1xuICAgICAgICAtLXBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA6Om5nLWRlZXAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtcnVsZXMtbW9kYWwgdmFsLWJ1dHRvbi5jaGVzc2ltYWxzLXJ1bGVzX19hY3Rpb24tLXByaW1hcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA5MiUsICNmZmYpO1xuICAgICAgICAtLWJhY2tncm91bmQtYWN0aXZhdGVkOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KSA4OCUsICMwMDApO1xuICAgICAgICAtLWJveC1zaGFkb3c6IDAgMXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXJ1bGVzLW1vZGFsIHZhbC1idXR0b24uY2hlc3NpbWFscy1ydWxlc19fYWN0aW9uLS1zZWNvbmRhcnkgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMjQpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWwgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b24gaW9uLWJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNDVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDAuODVyZW07XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDEuMzVyZW07XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMS4zNXJlbTtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgOmhvc3RcbiAgICAgICAgOjpuZy1kZWVwXG4gICAgICAgIGlvbi1tb2RhbC5jaGVzc2ltYWxzLWNvbmZpcm0tbW9kYWxcbiAgICAgICAgdmFsLWJ1dHRvbi52YWwtbW9kYWwtbGF5b3V0X19idXR0b25cbiAgICAgICAgaW9uLWJ1dHRvbltkYXRhLXRlc3RpZD0nY29uZmlybSddIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWJhY2tncm91bmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDkyJSwgI2ZmZik7XG4gICAgICAgIC0tYmFja2dyb3VuZC1hY3RpdmF0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpIDg4JSwgIzAwMCk7XG4gICAgICAgIC0tYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIC0tY29sb3ItYWN0aXZhdGVkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWNvbG9yLWhvdmVyOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdFxuICAgICAgICA6Om5nLWRlZXBcbiAgICAgICAgaW9uLW1vZGFsLmNoZXNzaW1hbHMtY29uZmlybS1tb2RhbFxuICAgICAgICB2YWwtYnV0dG9uLnZhbC1tb2RhbC1sYXlvdXRfX2J1dHRvblxuICAgICAgICBpb24tYnV0dG9uW2RhdGEtdGVzdGlkPSdjYW5jZWwnXSB7XG4gICAgICAgIC0tYm9yZGVyLWNvbG9yOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMjQpO1xuICAgICAgICAtLWJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAtLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICAtLWNvbG9yLWFjdGl2YXRlZDogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgLS1jb2xvci1ob3ZlcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg3NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLS13YWl0aW5nIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4zNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBoMixcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIge1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fY3JlYXRlLFxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4gPiBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fZXJyb3Ige1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nIHNwYW4ge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXI6IDAuMTVyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiAwLjc1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1jb2RlIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZ2FtZS1jb2RlIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4zNXJlbSwgNnZ3LCAycmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3Rvcnkge1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW0gZW0ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzIHtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy43NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1ibGFjay10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTUlIDE4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxMzVkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTQpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKVxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgMTM1ZGVnLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLFxuICAgICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMilcbiAgICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWZpbmlzaGVkIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDgpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksXG4gICAgICAgICAgMCAwLjk1cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy15b3VyLXR1cm4gLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy10dXJuLXB1bHNlIDEuNDVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtdGltZXItbG93IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuNSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4xMnJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy10aW1lci1sb3cgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLWNvbnRyYXN0LCAjZmZmZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXdhaXRpbmctdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy10dXJuLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IG1pbigzMXJlbSwgNTglKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFycyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2FkdmVudHVyZS1zdGFycyBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMsICNmN2Q0NWEpO1xuICAgICAgICBvcGFjaXR5OiAwLjI4O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fYWR2ZW50dXJlLXN0YXJzIHNwYW4uaXMtZWFybmVkIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMy41dncsIDEuMjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMTByZW07XG4gICAgICAgIG1heC13aWR0aDogbWluKDE3cmVtLCAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNTVyZW0gMC4zcmVtIDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWxpZ2h0LXJnYiwgMjQ0LCAyNDUsIDI0OCksIDAuNzIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgdmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgMi4yNXJlbTtcbiAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHMge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXAgLmNoZXNzaW1hbHMtdHVybi1hdmF0YXIge1xuICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMDVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1zb2Z0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMik7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxNzIxMTY7XG4gICAgICAgIGNvbG9yOiAjZjZmM2U5O1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtaG93dG8gcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiAjYzhjZmIxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAxcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg0NiwgMTExLCA2MiwgMC4xKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NiwgMTExLCA2MiwgMC4yNSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fbW9kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LCAjMmU2ZjNlKTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fc3RhcnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFkdmVudHVyZS1yZXN1bHRfX3N0YXIge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLCAjZjdkNDVhKTtcbiAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWR2ZW50dXJlLXJlc3VsdF9fc3Rhci5pcy1lYXJuZWQge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hZHZlbnR1cmUtcmVzdWx0X19jYXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkLCAjNTE2NDNkKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbi1idXR0b24ge1xuICAgICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oMTAwJSwgMTIuNXJlbSk7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQuaXMtY2hhbGxlbmdlLXJlc3VsdCB7XG4gICAgICAgIGdhcDogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNThyZW0gMC42cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fZGV0YWlsIHtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gMCAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjQ1cmVtO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgPiBzcGFuIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yZXBvcnQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMge1xuICAgICAgICBvcmRlcjogMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM1cmVtIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA5KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyA+IHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDAuNzJyZW07XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMzhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMuaXMtc3luY2luZyA+IHNwYW4ge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIDkwMG1zIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLWVycm9yIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLWVycm9yID4gc3BhbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjM4cmVtIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXJpZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMuaXMtaW5jb21pbmcge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllcixcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c19fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjk1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBoMixcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4yZnIpIG1pbm1heCgxMHJlbSwgYXV0bykgYXV0bztcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQgNjIlKSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC43cmVtIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjA1cmVtLCAyLjV2dywgMS4zMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19jb3B5IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDMuOHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQycmVtIDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fbWV0YSBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19tZXRhIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDEwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjlyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YV9fcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jdGFfX3JpdmFsIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYmFjay1saW5rIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1iYWNrIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuOXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KSwgdHJhbnNwYXJlbnQgNTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLWdsYXNzLWhpZ2hsaWdodCksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXJlbSAyLjJyZW0gcmdiYSg3OSwgNTgsIDM1LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmQtLWRlZGljYXRlZCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oZXJvLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWZvY3VzLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMWZyKSBtaW5tYXgoMTRyZW0sIDAuOWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMjhyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzLjV2dywgMS45cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1mZWF0dXJlIHtcbiAgICAgICAgbWluLWhlaWdodDogOHJlbTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1yaXZhbCB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KTtcbiAgICAgICAgcGFkZGluZzogMC42MnJlbSAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4JSAxMiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCA3MCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJpdmFsID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzLjNyZW07XG4gICAgICAgIGhlaWdodDogMy4zcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC41KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC40cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1oaXN0b3J5IHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIHAge1xuICAgICAgICBmb250LXNpemU6IDAuODRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBlbSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE2cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnMtLWhlcm8ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm91dGUsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGFuZWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvdXRlID4gZGl2OmZpcnN0LWNoaWxkLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhbmVsX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3V0ZSA+IGRpdjpmaXJzdC1jaGlsZCA+IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDAuMXJlbTtcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjE1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMTVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zdHJvbmcpO1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWNsZWFyZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM0KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWN1cnJlbnQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC40OCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCBzcGFuLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ4cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcm9zdGVyIGFydGljbGUuaXMtY2xlYXJlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMjYpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWZpbmFsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci13YXJuaW5nLXJnYiwgMjU1LCAxOTYsIDkpLCAwLjM0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBhcnRpY2xlLmlzLWN1cnJlbnQgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yb3N0ZXIgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJvc3RlciBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZS13aW5yYXRlcyA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUtd2lucmF0ZXMgZW0ge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyA+IHNwYW4uaXMtdW5sb2NrZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCkpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgYiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjlyZW07XG4gICAgICAgIGhlaWdodDogMS45cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgLmlzLXVubG9ja2VkIGIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGNvbG9yOiAjZmZmYWYwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc3BhbiBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA2cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWNoaWV2ZW1lbnRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY2hpZXZlbWVudHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42N3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LS1jb21wYWN0IHtcbiAgICAgICAgbWluLWhlaWdodDogMi40NXJlbTtcbiAgICAgICAgcGFkZGluZy1ibG9jazogMC40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTMpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMThyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGEgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1jdGFfX2FjdGlvbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICB3aWR0aDogbWluKDEycmVtLCAxMDAlKTtcbiAgICAgICAgbWluLXdpZHRoOiA5LjVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAxLjFyZW07XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtdmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1sb2FkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWxvYWRpbmcgc3BhbiB7XG4gICAgICAgIGhlaWdodDogODhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBhdGgtc2hpbW1lciAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWxvYWRpbmcgc3BhbjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4ycztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBhdGgtc2hpbW1lciB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjI2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg4JSAxMCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDM0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE0KSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX2FydCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogY2xhbXAoNS4ycmVtLCAxNXZ3LCA3LjVyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDUuMnJlbSwgMTV2dywgNy41cmVtKTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvID4gZGl2Om5vdCguY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsKSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8gaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuN3JlbSwgNHZ3LCAyLjM1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8gcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDYuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogNi41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMSkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDE2cHggMjhweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2hhZG93LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm9fX21lZGFsIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjY1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWwgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWhpZ2hsaWdodHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxNXJlbSksIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNy41cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTIlIDQlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc3VuLXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDQuMjVyZW07XG4gICAgICAgIGhlaWdodDogNC4yNXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIGFydGljbGUgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMDhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oaWdobGlnaHRzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZ3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxNXJlbSksIDFmcikpO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1wYW5lbCxcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgJ3JpbmcgbGFiZWwnXG4gICAgICAgICAgJ3JpbmcgZGV0YWlsJztcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyA+IGRpdiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZ3JpZC1hcmVhOiByaW5nO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4zNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjM1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1za3kpIHZhcigtLXJpbmctcHJvZ3Jlc3MpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nID4gZGl2OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMzRyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHN0cm9uZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzcGFuLFxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGIge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXJpbmcgc3BhbiB7XG4gICAgICAgIGdyaWQtYXJlYTogbGFiZWw7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5nIHNtYWxsIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBkZXRhaWw7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtcmluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1ncmlkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4wNWZyKSBtaW5tYXgoMCwgMC45NWZyKTtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1wYW5lbC0td2lkZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KG1pbigxMDAlLCAxMC41cmVtKSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLXN0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMC45ZnIpIG1pbm1heCgzcmVtLCAxZnIpIGF1dG87XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBhdGgtYmFycyBpOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IHZhcigtLWJhci1wcm9ncmVzcyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXNreSksIHZhcigtLWNoZXNzaW1hbHMtc3VuKSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFjaGlldmVtZW50cy0tcGF0aCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeS0tcGF0aCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcm9ncmVzc19faGVhZGluZyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJvZ3Jlc3NfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXByb2dyZXNzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNnJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkuaXMtdmljdG9yeSxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVybyxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhcixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41NXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9faGVyby5pcy1jbGVhcmVkID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciBpbWcge1xuICAgICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxKSBzYXR1cmF0ZSgwLjE1KSBjb250cmFzdCgwLjk1KTtcbiAgICAgICAgb3BhY2l0eTogMC42MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8uaXMtY2xlYXJlZCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXI6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJ+Kckyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC0wLjA1cmVtO1xuICAgICAgICBib3R0b206IC0wLjA1cmVtO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19oZXJvIGRpdixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2Ugc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX2hlcm8gcCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC12b2ljZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLWVsZXZhdGVkLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19wbGF5IHtcbiAgICAgICAgbWluLWhlaWdodDogMy4zNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuOXJlbSAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLFxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wNyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0ID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzLjRyZW07XG4gICAgICAgIGhlaWdodDogMy40cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNCksXG4gICAgICAgICAgMCAwLjQ1cmVtIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LmlzLWNoYWxsZW5nZS1yZXN1bHQgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsLS1uZXh0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdC5pcy1jaGFsbGVuZ2UtcmVzdWx0IC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtdm9pY2UgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDIuMzVyZW07XG4gICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uLmlzLWNyaXRpY2FsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMzgpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgIDEzNWRlZyxcbiAgICAgICAgICAgIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xNiksXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24uaXMtY3JpdGljYWwgPiBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS10ZW5zaW9uIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXRlbnNpb24gcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC40NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBiIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dCBlbSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1sZWFybi1tb3JlIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSwgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNDIpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXI6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIDAgMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgaGVpZ2h0OiAwLjIycmVtO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCh2YXIoLS10aW1lci1wcm9ncmVzcywgMSkpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgbGluZWFyLFxuICAgICAgICAgIGJhY2tncm91bmQgMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC41OCkgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTYpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCkgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXR1cm4tcHVsc2UgODIwbXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIuaXMtbG93OjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lci5pcy1sb3cgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXNfX3Njb3JlLmlzLXBvcCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTYpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc2NvcmUtcHVsc2UgNjIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzX190aW1lciBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fdGltZXIgc3Ryb25nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZSB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjFmcikgbWlubWF4KDAsIDEuMzVmcik7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC42OHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTMpLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgPiAuY2hlc3NpbWFscy1ib3QtYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuN3JlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjdyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgc3Ryb25nIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX3JpdmFsIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTg7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogM3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNDVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtdGVuc2lvbi0tbGl2ZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtZGlmZmljdWx0eSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5LjVyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgJ2F2YXRhciB0aXRsZSdcbiAgICAgICAgICAnYXZhdGFyIGJvZHknXG4gICAgICAgICAgJ2F2YXRhciB0ZW5kZW5jeSc7XG4gICAgICAgIGNvbHVtbi1nYXA6IDAuNTVyZW07XG4gICAgICAgIHJvdy1nYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogNC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uID4gLmNoZXNzaW1hbHMtYm90LWF2YXRhciB7XG4gICAgICAgIGdyaWQtYXJlYTogYXZhdGFyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xcmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdHMgYnV0dG9uIHN0cm9uZyB7XG4gICAgICAgIGdyaWQtYXJlYTogdGl0bGU7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzbWFsbCB7XG4gICAgICAgIGdyaWQtYXJlYTogYm9keTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBwIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB0ZW5kZW5jeTtcbiAgICAgICAgbWFyZ2luOiAwLjEycmVtIDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk1cmVtLCAyLjV2dywgMS4ycmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXM6IG1pbigwLjg1cmVtLCAxNHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgZmxleDogMCAxIDU4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGNvbnRhaW46IHBhaW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgY2xpcC1wYXRoOiBpbnNldCgwIHJvdW5kIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKSk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQod2hpdGUsIGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAxNiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMzIlIDY4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN0b25lLXJnYiksIDAuMDUpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDY2JSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHRyYW5zcGFyZW50IDI0JSksIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLFxuICAgICAgICAgIDAgMC44NXJlbSAyLjFyZW0gdmFyKC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLXN5bmNpbmcgLmNoZXNzaW1hbHMtYm9hcmQge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFuayB7XG4gICAgICAgIHRvcDogMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjI0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGUge1xuICAgICAgICByaWdodDogMC4yNHJlbTtcbiAgICAgICAgYm90dG9tOiAwLjE4cmVtO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb3JpZW50LWJvYXJkIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDAuMDZyZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45ODUpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjkyO1xuICAgICAgICAgIGZpbHRlcjogYmx1cigwKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VudGVyLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDAuMDhyZW0gZGFzaGVkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuNTYpO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjI0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjYpKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmlzLWNhcHR1cmUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQ2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDEyMCwgMjEwLCAyNTUsIDAuNTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtYnVsbCB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE4OCwgMTMxLCA3NiwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMTc0LCAxMjQsIDI1NSwgMC44Nik7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24ge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjIxLCAxMjAsIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMjU1LCAxOTAsIDU2LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwgPiBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IHZhcigtLXRyYWlsLXkpO1xuICAgICAgICBsZWZ0OiB2YXIoLS10cmFpbC14KTtcbiAgICAgICAgd2lkdGg6IHZhcigtLXRyYWlsLWxlbmd0aCk7XG4gICAgICAgIGhlaWdodDogMC40NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSA0MiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MikpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHZhcigtLXRyYWlsLWdsb3cpLFxuICAgICAgICAgIDAgMCAxLjQ1cmVtIHZhcigtLXRyYWlsLWdsb3cpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDUwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXBvd2VyLXRyYWlsIDcyMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1lYWdsZSA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuMjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSA0NCUsIHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41OCkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDAgMC43cmVtLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpIDAuN3JlbSAwLjkycmVtKTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGNoZXNzaW1hbHMtZWFnbGUtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC43MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpIDAgMC4xOHJlbSwgdHJhbnNwYXJlbnQgMC4xOHJlbSAwLjQycmVtKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS10cmFpbC1jb2xvciksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1idWxsLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3Qta2FuZ2Fyb28gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBib3JkZXItdG9wOiAwLjE2cmVtIGRhc2hlZCB2YXIoLS10cmFpbC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjhyZW0gdmFyKC0tdHJhaWwtZ2xvdykpO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1rYW5nYXJvby10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWxpb24gPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSkgMCAwLjEycmVtLCB0cmFuc3BhcmVudCAwLjEycmVtIDAuMzRyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1saW9uLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWVhZ2xlLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC44Mikgc2tld1goLTEwZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxLjA1KSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1idWxsLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKSBzY2FsZVkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAzOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcpIHNjYWxlWSgxLjE4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKSBzY2FsZVkoMC44Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjRyZW0pIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM0JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMnJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1saW9uLXRyYWlsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzYlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS40KTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNzYpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtc2NvcmUtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCkgc2NhbGUoMS4wMzUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDc7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDAuNzVyZW0sIDR2dywgMS4zNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC40OCksIHJnYmEoOCwgMTgsIDEzLCAwLjM0KSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxLjVweCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8taW4gMjYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMThyZW0sIDkyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTQpLCB0cmFuc3BhcmVudCksIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAxLjFyZW0gMi4zcmVtIHJnYmEoMCwgMCwgMCwgMC4yNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDI0JSwgdmFyKC0tY2hlc3NpbWFscy1nbGFzcy1oaWdobGlnaHQpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNik7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpLFxuICAgICAgICAgIDAgMC43cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBmb250LXNpemU6IDIuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2NvcHkgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2ZhY3RzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19jb3B5IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI0O1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fZmFjdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgcGFkZGluZzogMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1lbGV2YXRlZC1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNDVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvLWluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtIDEuMjVyZW0gNS41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgIGZyb20gOGRlZyxcbiAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjE2KSA3ZGVnIDExZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDExZGVnIDIyZGVnXG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSA4ZGVnIDEyZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDEyZGVnIDI0ZGVnXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAxLjFyZW07XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIuNXJlbSk7XG4gICAgICAgIG1heC13aWR0aDogMjJyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtYWN0aW9uLWJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IG1pbigxMDAlLCA4cmVtKTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbSAxLjFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IC5jaGVzc2ltYWxzLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICAgICAgICBjb2xvcjogIzFhMmExYTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjVyZW0gMS41cmVtIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaXZhbC1uYW1lIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogLTAuMnJlbSAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43NXJlbSwgM3Z3LCAwLjlyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWR2LXN0YXJzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMC4xcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41cmVtLCA4dncsIDIuMnJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLCAjZjdkNDVhKTtcbiAgICAgICAgb3BhY2l0eTogMC4yODtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC40cmVtIHJnYmEoMjQ3LCAyMTIsIDkwLCAwKSk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgb3BhY2l0eSAwLjNzIGVhc2UsXG4gICAgICAgICAgZmlsdGVyIDAuM3MgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fYWR2LXN0YXJzIHNwYW4uaXMtZWFybmVkIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC41cmVtIHJnYmEoMjQ3LCAyMTIsIDkwLCAwLjcpKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXN0YXItcG9wIDAuNHMgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpIGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2Fkdi1zdGFycyBzcGFuLmlzLWVhcm5lZDpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtc3RhcnMgc3Bhbi5pcy1lYXJuZWQ6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXN0YXItcG9wIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpO1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19hZHYtY2FwdGlvbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjc1cmVtLCAzdncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX2Fkdi1jYXB0aW9uIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMTgwLCAyMDQsIDI0MCwgMC44OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMjZyZW0sIDkyJSk7XG4gICAgICAgIG1hcmdpbjogMC4ycmVtIGF1dG8gMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjA4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDJyZW0gMC40NnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQsXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGR0IHtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42OCk7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC41MnJlbSwgMi4xdncsIDAuNjZyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkZCB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNjhyZW0sIDIuOHZ3LCAwLjg4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXZpY3Rvcnktc3BhcmtzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNDY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjk1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4zNXJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yYXlzIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWZpbmFsZS1yaWJib24ge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC4xODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxLjRyZW0pIHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLW1lZGFsIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjE4cmVtKSBzY2FsZSgxLjA0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDI2JSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNzglIDc2JSwgcmdiYSg2MSwgNTQsIDM2LCAwLjA2KSwgdHJhbnNwYXJlbnQgMjglKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpLCB0cmFuc3BhcmVudCA1MiUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMTYwbXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDE2MG1zIGVhc2UsXG4gICAgICAgICAgdHJhbnNmb3JtIDE2MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNlbGw6OmFmdGVyIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgICAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHRyYW5zcGFyZW50IDE3JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDkpLCB0cmFuc3BhcmVudCAyNSUpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDQ1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNTJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksIHRyYW5zcGFyZW50IDQyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4wOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NSwgNjYsIDQyLCAwLjA1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xOHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwLjA4cmVtIDAuMDhyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLFxuICAgICAgICAgIGluc2V0IC0wLjA4cmVtIC0wLjA4cmVtIDAgcmdiYSg1MiwgNDQsIDI4LCAwLjA0NSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWVkZ2UtY2VsbCAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjU2O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHZhcigtLXdlYXIteCwgMjglKSB2YXIoLS13ZWFyLXksIDMyJSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14MiwgNzQlKSB2YXIoLS13ZWFyLXkyLCA2OCUpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMTQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzAsIDUyLCAyOCwgMC4wNTUpLCB0cmFuc3BhcmVudCA0NCUsIHJnYmEoNTIsIDQ0LCAyOCwgMC4wOSkpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodmFyKC0td2Vhci1hbmdsZSwgMjZkZWcpLCByZ2JhKDc1LCA2NiwgNDIsIDAuMDU1KSAwIDFweCwgdHJhbnNwYXJlbnQgMXB4IDAuNDhyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMCB7XG4gICAgICAgIC0td2Vhci14OiAyMiU7XG4gICAgICAgIC0td2Vhci15OiAyNCU7XG4gICAgICAgIC0td2Vhci14MjogNzglO1xuICAgICAgICAtLXdlYXIteTI6IDcyJTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAxOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTEge1xuICAgICAgICAtLXdlYXIteDogNjQlO1xuICAgICAgICAtLXdlYXIteTogMTglO1xuICAgICAgICAtLXdlYXIteDI6IDMwJTtcbiAgICAgICAgLS13ZWFyLXkyOiA3NiU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTI0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMiB7XG4gICAgICAgIC0td2Vhci14OiA0MiU7XG4gICAgICAgIC0td2Vhci15OiA1OCU7XG4gICAgICAgIC0td2Vhci14MjogODIlO1xuICAgICAgICAtLXdlYXIteTI6IDI2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA0MmRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTMge1xuICAgICAgICAtLXdlYXIteDogNzQlO1xuICAgICAgICAtLXdlYXIteTogNjglO1xuICAgICAgICAtLXdlYXIteDI6IDI0JTtcbiAgICAgICAgLS13ZWFyLXkyOiAyOCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTEyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNCB7XG4gICAgICAgIC0td2Vhci14OiAzNCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogNjIlO1xuICAgICAgICAtLXdlYXIteTI6IDg0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiA2NGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC53ZWFyLTUge1xuICAgICAgICAtLXdlYXIteDogMTglO1xuICAgICAgICAtLXdlYXIteTogNzAlO1xuICAgICAgICAtLXdlYXIteDI6IDcwJTtcbiAgICAgICAgLS13ZWFyLXkyOiAzNCU7XG4gICAgICAgIC0td2Vhci1hbmdsZTogLTQ4ZGVnO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUge1xuICAgICAgICBvcGFjaXR5OiAwLjM0O1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogc29mdC1saWdodDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1kYXJrLWNlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1iZzogdmFyKC0tY2hlc3NpbWFscy1jZWxsLWRhcmspO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yOCkgMCAzNiUsIHRyYW5zcGFyZW50IDYyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSxcbiAgICAgICAgICBpbnNldCAwIDAgMS44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjQyKSxcbiAgICAgICAgICAwIDAgMC41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC41NiksXG4gICAgICAgICAgMCAwIDEuNTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuMzYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCkgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjQlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMThyZW0gdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjhyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY2KSxcbiAgICAgICAgICBpbnNldCAwIDAgMS45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjUpLFxuICAgICAgICAgIDAgMCAwLjdyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpLFxuICAgICAgICAgIDAgMCAxLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGVnYWw6bm90KC5pcy1jYXB0dXJlKTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjk0KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43MnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjYyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDEzJTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjglKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vdmUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU1cmVtO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMC43NDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbGFzdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWxlZ2FsKTpub3QoLmlzLWNhcHR1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbGFzdC1yZ2IpLCAwLjE2KSAwIDQyJSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KSwgdHJhbnNwYXJlbnQgMzQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODQpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWF1cmEgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogNCU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjY0cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMjQpLCB0cmFuc3BhcmVudCA1OCUpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00MiUpIHNjYWxlKDAuOSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogOCU7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlcjogbWF4KDJweCwgMS41NSUpIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjJyZW07XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC41KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC43MnJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWZyYW1lIDEuMzVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLXJlYWR5Om5vdCguaXMtc2VsZWN0ZWQpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDE2JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjQ1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC42NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNTVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZy5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjc1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNDgpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjU4cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtd2lubmluZyAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDAuMjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yKSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjU2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4xNiksIHRyYW5zcGFyZW50IDUyJSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSkgLmNoZXNzaW1hbHMtcGllY2Uge1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKSB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSkgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3cpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKTo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuMjZyZW07XG4gICAgICAgIHJpZ2h0OiAwLjI2cmVtO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogMC40OHJlbTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC45Nik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMThyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1hdXJhIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC43OCksXG4gICAgICAgICAgICBpbnNldCAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIpLFxuICAgICAgICAgICAgMCAwIDAuNjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4yMik7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45NiksXG4gICAgICAgICAgICBpbnNldCAwIDAgMS4zNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAgIDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40OCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUyJSkgc2NhbGUoMC44OCk7XG4gICAgICAgIH1cblxuICAgICAgICA0MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNjY7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDglKSBzY2FsZSgwLjkyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1mcmFtZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1zb3VyY2UtZWZmZWN0Om5vdCguaXMtbW92aW5nLXNvdXJjZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjEyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjIyKSAwIDM0JSwgdHJhbnNwYXJlbnQgNjglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NiksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI2KSxcbiAgICAgICAgICAwIDAgMS4xcmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdDo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4xMnJlbTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKSwgdHJhbnNwYXJlbnQgNTglKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43Mik7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1pbXBhY3QgNzAwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMC4yOHJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjU4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM2KSxcbiAgICAgICAgICAwIDAgMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjMyKTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1wb3dlci1mcmFtZSA4NjBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1jYXB0dXJlLWhpdCA3ODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1lYWdsZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB0cmFuc3BhcmVudCAxMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43OCkgNDglLCB0cmFuc3BhcmVudCA1MiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNiksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWJ1bGw6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KSAwIDAuMTZyZW0sIHRyYW5zcGFyZW50IDAuMTZyZW0gMC4zNHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM4KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3Qta2FuZ2Fyb286OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNDIlIDQ0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU4KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU4JSA1NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksIHRyYW5zcGFyZW50IDY0JSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWxpb246OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDBkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksXG4gICAgICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgICAgIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNCksXG4gICAgICAgICAgICB0cmFuc3BhcmVudFxuICAgICAgICAgICksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSwgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKHZhcigtLWZyb20tY29sKSAqIDEwMCUpLCBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDY4JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpKSBzY2FsZSgxLjA3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLCBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKSkgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMjIlIDAsIDc4JSAwLCA5NiUgMTAwJSwgNCUgMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19oZWFkIHtcbiAgICAgICAgdG9wOiAxJTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgaGVpZ2h0OiA0MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzAlIDIyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKSAwIDEzJSwgdHJhbnNwYXJlbnQgMTQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IC0wLjE4cmVtIC0wLjEycmVtIDAgcmdiYSg4MiwgNjUsIDQ2LCAwLjA2KSxcbiAgICAgICAgICBpbnNldCAwIC0xcHggMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZS5pcy1ibGFjayAuY2hlc3NpbWFscy1waWVjZV9faGVhZCB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2NvbGxhciB7XG4gICAgICAgIHRvcDogMzclO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICB3aWR0aDogNzIlO1xuICAgICAgICBoZWlnaHQ6IDE1JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgI2Y1Y2Q3NyAwJSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQpIDU1JSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJVxuICAgICAgICApO1xuICAgICAgICBib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgNzIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI4KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjA4cmVtIDAgcmdiYSg3MCwgNDYsIDE4LCAwLjIyKSxcbiAgICAgICAgICAwIDAuMDhyZW0gMC4xOHJlbSByZ2JhKDcwLCA0NiwgMTgsIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICB3aWR0aDogNTIlO1xuICAgICAgICBoZWlnaHQ6IDMxJTtcbiAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDE2JSAwLCA4NCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkgMCAyOCUsIHRyYW5zcGFyZW50IDI5JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgMTgwZGVnLFxuICAgICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSxcbiAgICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSlcbiAgICAgICAgICApO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLFxuICAgICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKVxuICAgICAgICAgICk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwLjEycmVtIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSxcbiAgICAgICAgICBpbnNldCAwIC0wLjFyZW0gMCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10YXJnZXQge1xuICAgICAgICB3aWR0aDogMTYlO1xuICAgICAgICBoZWlnaHQ6IDE2JTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAuOXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbW92ZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCg1LjRyZW0sIDFmcikgYXV0bztcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBtaW4taGVpZ2h0OiA4LjE1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNTVyZW0gMC43cmVtO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjEyNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSwgdHJhbnNwYXJlbnQgMzYlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAxODBkZWcsXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yNCksXG4gICAgICAgICAgICByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtZGVlcCksIDAuMDgpIDU4JSxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50XG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xNHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDYpLFxuICAgICAgICAgIDAgMC41NXJlbSAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTQpO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAxODBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTgwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMjhyZW0gMC42MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tYWdpYy1ob3QpO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDE2JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKSwgdHJhbnNwYXJlbnQgMzAlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA3NiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCB0cmFuc3BhcmVudCA1NiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjgpLFxuICAgICAgICAgIDAgMCAxLjM1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICAwIDAuOXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjE4KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24uaXMtc2VsZWN0ZWQ6OmJlZm9yZSxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMC41cmVtO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiA+ICoge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyNCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjg4KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3OCUgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NiUgNjIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC43MikgMCAwLjA2cmVtLCB0cmFuc3BhcmVudCAwLjA4cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDI4JSA3OCUsIHJnYmEoMjU1LCAyNDUsIDExMSwgMC43OCkgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDU0JSA4JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KSAwIDAuMDVyZW0sIHRyYW5zcGFyZW50IDAuMDdyZW0pO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb25pYy1ncmFkaWVudChcbiAgICAgICAgICBmcm9tIDEyZGVnLFxuICAgICAgICAgIHRyYW5zcGFyZW50IDAgMTZkZWcsXG4gICAgICAgICAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMjJkZWcgNDRkZWdcbiAgICAgICAgKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogNS40cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXI6IDAuMTJyZW0gc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWRlZXApLCAwLjYyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC45cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgdHJhbnNwYXJlbnQgNDQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zOCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAtMC4xOHJlbSAwLjQ1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwKSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIGhlaWdodDogbWluKDUuNDVyZW0sIDg4JSk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZCAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1yZWFkeSAuY2hlc3NpbWFscy1jYXJkcyBidXR0b246bm90KC5pcy11c2VkKSAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSA5NCUsICMwMDApO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg2O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtbG9ja2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdXNlcyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDEuNzJyZW07XG4gICAgICAgIGhlaWdodDogMS4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMC4zOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuMzVyZW0gMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDIuM3Z3LCAxLjA4cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXNoZWxsOm5vdCguY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbikgLmNoZXNzaW1hbHMtYm9hcmQtZnJhbWUge1xuICAgICAgICAgIGZsZXgtYmFzaXM6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICB3aWR0aDogbWluKDEwMCUsIGNsYW1wKDI4cmVtLCBjYWxjKDEwMHZoIC0gMjJyZW0pLCA1MHJlbSkpO1xuICAgICAgICAgIG1heC13aWR0aDogbWluKDUwcmVtLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCBjbGFtcCgyOHJlbSwgY2FsYygxMDB2aCAtIDIycmVtKSwgNTByZW0pKTtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMTFyZW0sIDAuNjhmcikgbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjc4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbiB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMy44NXJlbSwgMWZyKSBhdXRvO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDUuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSB7XG4gICAgICAgICAgbWluLWhlaWdodDogMy44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIGltZyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigzLjg1cmVtLCA4OCUpO1xuICAgICAgICAgIGhlaWdodDogbWluKDMuODVyZW0sIDg4JSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxLjA1cmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2V0dGluZ3Mge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICBjaXJjbGUgYXQgMTQlIDglLFxuICAgICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZikgODIlLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAyOCVcbiAgICAgICAgICApLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4wNikpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZC1zdHJvbmcsIHZhcigtLWNoZXNzaW1hbHMtZWxldmF0ZWQtc3Ryb25nKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA0OCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tdG9vbGJhciB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgLS1jb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIHZhbC1tb2RhbC1zaGVsbCBpb24tY29udGVudCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCB2YWwtbW9kYWwtc2hlbGwgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0IDo6bmctZGVlcCBpb24tbW9kYWwuY2hlc3NpbWFscy1zZXR0aW5ncy1tb2RhbCAuY2hlc3NpbWFscy1zZXR0aW5ncyB2YWwtdG9nZ2xlLWlucHV0IGlvbi10b2dnbGUge1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICAtLXRyYWNrLWJhY2tncm91bmQtY2hlY2tlZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkKTtcbiAgICAgICAgLS1oYW5kbGUtYmFja2dyb3VuZC1jaGVja2VkOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tb2RhbC10ZXh0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIGlvbi1tb2RhbC5jaGVzc2ltYWxzLXNldHRpbmdzLW1vZGFsIC5jaGVzc2ltYWxzLXNldHRpbmdzIHZhbC1yYW5nZS1pbnB1dCBpb24tcmFuZ2Uge1xuICAgICAgICAtLWJhci1iYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgICAgLS1iYXItYmFja2dyb3VuZC1hY3RpdmU6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIC0tYmFyLWhlaWdodDogMC4zMnJlbTtcbiAgICAgICAgLS1iYXItYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIC0ta25vYi1iYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICAtLWtub2Itc2l6ZTogMS4yOHJlbTtcbiAgICAgICAgLS1waW4tYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgLS1waW4tY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogbWluKDI1cmVtLCA4OCUpO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMC41cmVtIDAuN3JlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXRfX3RoYW5rcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dF9fZmVlZGJhY2sge1xuICAgICAgICBtYXgtd2lkdGg6IDMwcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkdCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19oZXJvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuODVyZW0gMS44cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zdGVwcyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtYm9yZGVyLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbW9kYWwtY2FyZCwgI2ZmZmZmZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19zZWN0aW9uLXRpdGxlIHNwYW4ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yNHJlbSAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3NlY3Rpb24tdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc2VjdGlvbi10aXRsZSBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3N0ZXBzIGFydGljbGUge1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgcGFkZGluZzogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMgYXJ0aWNsZSA+IGltZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMgPiBpbWcsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSA+IGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNC43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiA0Ljc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjE1cmVtO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjY4KSxcbiAgICAgICAgICAwIDAuN3JlbSAxLjI1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fbm90ZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgcGFkZGluZzogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMzJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogOC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLWJvcmRlciwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjhyZW0gMC41MnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICBjaXJjbGUgYXQgNTAlIDAsXG4gICAgICAgICAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKSA3OCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAgIHRyYW5zcGFyZW50IDUyJVxuICAgICAgICAgICksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjE4KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLXN0cm9uZywgI2ZmZjhkZik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXRleHQsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1zdXJmYWNlLCAjZmZmZmZmKSA2NCUsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAwIDAuNTVyZW0gMS4xNXJlbSB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLXNoYWRvdywgcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX3Bvd2VyLWxpc3Qgc21hbGwge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjlyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MjA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19fcG93ZXItbGlzdCBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDMuMjVyZW07XG4gICAgICAgIGhlaWdodDogMy4yNXJlbTtcbiAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMjVyZW0gMC4zNXJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTYpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXNfX25vdGUge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1zdW4tcmdiKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN1bi1yZ2IpLCAwLjEpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1tb2RhbC1jYXJkLCAjZmZmZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHAsXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBsaSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1vZGFsLW11dGVkLCB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc2MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgdWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSxcbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMuNjI1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMS4xMjVyZW0gMi44cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcHJpbWFyeS5pcy13b3JraW5nLFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5LmlzLXdvcmtpbmcge1xuICAgICAgICBjdXJzb3I6IHdhaXQ7XG4gICAgICAgIG9wYWNpdHk6IDAuODI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGJvcmRlcjogMC4xNHJlbSBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtc3BpbiA3MjBtcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAuY2hlc3NpbWFscy1ob21lLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtaG9tZS1hY3Rpb24ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ydWxlc19fc3RlcHMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlcnMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19ub3RlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzX19wb3dlci1saXN0IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zaXplLFxuICAgICAgICAuY2hlc3NpbWFscy1tb2RlLFxuICAgICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXktb3B0aW9ucyAuY2hlc3NpbWFscy1uaWdodG1hcmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWN0YSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWN0YSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvLFxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWdyaWQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGlnaGxpZ2h0cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1yaW5ncyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWhlcm8ge1xuICAgICAgICAgIGp1c3RpZnktaXRlbXM6IHN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1oZXJvX19hcnQge1xuICAgICAgICAgIHdpZHRoOiA2LjI1cmVtO1xuICAgICAgICAgIGhlaWdodDogNi4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtY3RhX19hY3Rpb24ge1xuICAgICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBhdGgtaGVyb19fbWVkYWwge1xuICAgICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1LjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wYXRoLWJhcnMgc3BhbiB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGF0aC1iYXJzIGkge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19hY3Rpb25zIHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY3RhX19yaXZhbCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhlcm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1mb2N1cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCB7XG4gICAgICAgICAgcGFkZGluZzogMC44NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMC45NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19tZXRhIHtcbiAgICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMC4xOHJlbSAwLjVyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjZyZW07XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDQ1ZW07XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHN0cm9uZyB7XG4gICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjkycmVtLCA0LjR2dywgMS4xMnJlbSk7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgcCB7XG4gICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIge1xuICAgICAgICAgIGZsZXg6IDAgMCAxLjhyZW07XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBtaW4td2lkdGg6IDEuOHJlbTtcbiAgICAgICAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fdGV4dCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICAgIGdhcDogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIGRpdiB7XG4gICAgICAgICAgZ2FwOiAwLjE0cmVtO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjgycmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzRyZW0gMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHNtYWxsIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNThyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNzhyZW0sIDMuMnZ3LCAwLjk0cmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19yaXZhbCA+IC5jaGVzc2ltYWxzLWJvdC1hdmF0YXIge1xuICAgICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtbGl2ZV9fcml2YWwgcCB7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIHNwYW4ge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMzVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zMnJlbSAwLjM2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWxpdmVfX21ldHJpY3Mgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41NnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1saXZlX19tZXRyaWNzIGIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRybyB7XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY2FyZCB7XG4gICAgICAgICAgZ2FwOiAwLjQycmVtO1xuICAgICAgICAgIHdpZHRoOiBtaW4oMTUuNXJlbSwgOTQlKTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjZyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm9fX2F2YXRhciB7XG4gICAgICAgICAgd2lkdGg6IDMuMDVyZW07XG4gICAgICAgICAgaGVpZ2h0OiAzLjA1cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS42MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4wMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1pbnRyb19fY29weSBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWludHJvX19mYWN0cyBiIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8gLmNoZXNzaW1hbHMtcHJpbWFyeSB7XG4gICAgICAgICAgbWluLWhlaWdodDogMi4xNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMsXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwIHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHN0cm9uZyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0IHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5IHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9ucyB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgICAgZmxleDogMSAxIDhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMge1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyB7XG4gICAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZyBzcGFuIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjIycmVtIDAuNDhyZW07XG4gICAgICAgICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgzLjY1cmVtLCAxZnIpIGF1dG87XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogNS40cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuMjRyZW0gMC40MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzLjY1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIHdpZHRoOiBtaW4oMy41NXJlbSwgOTIlKTtcbiAgICAgICAgICBoZWlnaHQ6IG1pbigzLjU1cmVtLCA5MiUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuNjRyZW0sIDIuOHZ3LCAwLjc4cmVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlLFxuICAgICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaW50cm8sXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1c19fc2NvcmUuaXMtcG9wIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYyh2YXIoLS10by1jb2wpICogMTAwJSksIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYWxsZW5nZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkdmVudHVyZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNBZHZlbnR1cmVQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzY29yZVBvcENsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHBvd2VyVW5sb2NrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUludHJvVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHR1cm5UaW1lckludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgdHVyblRpbWVyS2V5ID0gJyc7XG4gIHByaXZhdGUgdHVyblRpbWVyRGVhZGxpbmUgPSAwO1xuICBwcml2YXRlIHR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgcHJpdmF0ZSB0dXJuVGltZXJFeHBpcmVkS2V5ID0gJyc7XG4gIHByaXZhdGUgcGVuZGluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5pbmdPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcGVuZWRPbmxpbmVHYW1lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0T3V0Y29tZVNvdW5kS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdENoYWxsZW5nZUhhbmRsZWRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0TW9kZVN0YXRzSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RBZHZlbnR1cmVIYW5kbGVkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGFkdmVudHVyZU5vZGVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBAVmlld0NoaWxkKCdib2FyZEFuY2hvcicpIHByaXZhdGUgYm9hcmRBbmNob3I/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICByZWFkb25seSBib2FyZFNpemVzOiBDaGVzc2ltYWxzQm9hcmRTaXplW10gPSBbNiwgOF07XG4gIHJlYWRvbmx5IGxvY2FsTW9kZXM6IENoZXNzaW1hbHNMb2NhbE1vZGVbXSA9IFsnb25lLWRldmljZScsICdib3QnXTtcbiAgcmVhZG9ubHkgYm90RGlmZmljdWx0aWVzOiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZVtdID0gWydlYXN5JywgJ25vcm1hbCcsICdoYXJkJywgJ21hc3RlcicsICduaWdodG1hcmUnXTtcbiAgcmVhZG9ubHkgbmlnaHRtYXJlUml2YWxzOiBFeGNsdWRlPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlLCAnbm9uZSc+W10gPSBbJ2h1bnQnLCAncHJpZGUnLCAnbWFnbnVzJ107XG4gIHJlYWRvbmx5IGJvdFByb2ZpbGVzID0gQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhZGRlciA9IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjtcbiAgcmVhZG9ubHkgYW5pbWFscyA9IEFOSU1BTFM7XG4gIHJlYWRvbmx5IHZhbHRlY2hDb21wb25lbnRzVmVyc2lvbiA9IFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OO1xuICByZWFkb25seSBzY3JlZW4gPSBzaWduYWw8J2hvbWUnIHwgJ2NoYWxsZW5nZScgfCAncGF0aCcgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHlDaG9pY2U+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWROaWdodG1hcmVNb2RlID0gc2lnbmFsPENoZXNzaW1hbHNOaWdodG1hcmVNb2RlPignbm9uZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGVJZCA9IHNpZ25hbDxDaGVzc2ltYWxzQm90UHJvZmlsZUlkPignaHVudGVyJyk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaGVzc2ltYWxzR2FtZVN0YXRlPihjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVBoYXNlID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVN0YXRzID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cz4odGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICByZWFkb25seSBjaGFsbGVuZ2VTdGF0c0xvYWRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJ1bltdPihbXSk7XG4gIHJlYWRvbmx5IGFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0V29uID0gc2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RCb3QgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMgPSBzaWduYWw8Q2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZU5ld1JlY29yZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUludHJvVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1cm5TZWNvbmRzUmVtYWluaW5nID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUGxheU9wdGlvbnNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1J1bGVzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTZXR0aW5nc01vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQWJvdXRNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHBlbmRpbmdTb2xvR2FtZVN0YXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgcGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2NvcmVQb3AgPSBzaWduYWw8TWluaUdhbWVTY29yZVBvcE1ldGFkYXRhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBwb3dlclVubG9ja1B1bHNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbW92ZVRyYWlsID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc01vdmVUcmFpbFZpZXcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICBpZiAoIWVmZmVjdCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJvYXJkU2l6ZSA9IHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmcm9tQ29sID0gdGhpcy5kaXNwbGF5Q29sSW5kZXgoZWZmZWN0LmZyb20uY29sKSArIDAuNTtcbiAgICBjb25zdCBmcm9tUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LmZyb20ucm93KSArIDAuNTtcbiAgICBjb25zdCB0b0NvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC50by5jb2wpICsgMC41O1xuICAgIGNvbnN0IHRvUm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgoZWZmZWN0LnRvLnJvdykgKyAwLjU7XG4gICAgY29uc3QgZnJvbVggPSAoZnJvbUNvbCAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZnJvbVkgPSAoZnJvbVJvdyAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgZHggPSAoKHRvQ29sIC0gZnJvbUNvbCkgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR5ID0gKCh0b1JvdyAtIGZyb21Sb3cpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heCgxMCwgTWF0aC5oeXBvdChkeCwgZHkpKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSAqICgxODAgLyBNYXRoLlBJKTtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBgJHtmcm9tWH0lYCxcbiAgICAgIHk6IGAke2Zyb21ZfSVgLFxuICAgICAgbGVuZ3RoOiBgJHtsZW5ndGh9JWAsXG4gICAgICBhbmdsZTogYCR7YW5nbGV9ZGVnYCxcbiAgICAgIGFuaW1hbDogZWZmZWN0LmFuaW1hbCxcbiAgICAgIGNhcHR1cmU6IGVmZmVjdC5jYXB0dXJlLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBwb3dlckNhbGxvdXQgPSBjb21wdXRlZDxNaW5pR2FtZUNhbGxvdXRNZXRhZGF0YSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0Py5hbmltYWwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYW5pbWFsS2V5ID0gdGhpcy5jYXBpdGFsaXplKGVmZmVjdC5hbmltYWwpO1xuICAgIGNvbnN0IHJlc3VsdEtleSA9IGVmZmVjdC5jYXB0dXJlID8gJ0NhcHR1cmUnIDogJyc7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoYGNoZXNzaW1hbHNQb3dlckNhbGxvdXQke2FuaW1hbEtleX0ke3Jlc3VsdEtleX1UaXRsZWApLFxuICAgICAgYm9keTogdGhpcy50KGBjaGVzc2ltYWxzUG93ZXJDYWxsb3V0JHthbmltYWxLZXl9JHtyZXN1bHRLZXl9Qm9keWApLFxuICAgICAgaW1wYWN0OiB0aGlzLnQoZWZmZWN0LmNhcHR1cmUgPyAnY2hlc3NpbWFsc1Bvd2VyQ2FsbG91dENhcHR1cmVJbXBhY3QnIDogJ2NoZXNzaW1hbHNQb3dlckNhbGxvdXRNb3ZlSW1wYWN0JyksXG4gICAgICBpY29uOiB0aGlzLmFuaW1hbEdseXBoKGVmZmVjdC5hbmltYWwpLFxuICAgICAgaWNvblNyYzogdGhpcy5hbmltYWxBc3NldFNyYyhlZmZlY3QuYW5pbWFsKSxcbiAgICAgIHRvbmVSZ2I6IHRoaXMucG93ZXJDYWxsb3V0VG9uZShlZmZlY3QuYW5pbWFsKSxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyxcbiAgICAgIHZhcmlhbnQ6IGVmZmVjdC5jYXB0dXJlID8gJ2NhcHR1cmUnIDogJ2RlZmF1bHQnLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBib3RUaGlua2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb24gPSBzaWduYWw8Q2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybWVkQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVBY3Rpb24gPSBzaWduYWw8J2NyZWF0ZScgfCAnam9pbicgfCAnYWNjZXB0JyB8ICdyZWplY3QnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdPihbXSk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZW1hdGNoTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVTeW5jaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQ29ubmVjdGlvblN0YXRlID0gc2lnbmFsPCdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdsaXZlJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IHJldmlld0luZGV4ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbG9nZ2VkSW5Vc2VyID0gdGhpcy5hdXRoLnVzZXI7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyUHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpKTtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5hdmF0YXIgPz8gJ/CfjJ8nKTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBpZiAodXNlcj8ubmFtZT8udHJpbSgpKSByZXR1cm4gdXNlci5uYW1lLnRyaW0oKTtcbiAgICBpZiAodXNlcj8uZW1haWw/LnRyaW0oKSkgcmV0dXJuIHVzZXIuZW1haWwudHJpbSgpO1xuICAgIHJldHVybiB0aGlzLnBsYXllclByb2ZpbGVzLmRpc3BsYXlOYW1lKHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSk7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJIYW5kbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgY29uc3QgaGFuZGxlID0gdXNlcj8uaGFuZGxlPy50cmltKCk7XG4gICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZS5zdGFydHNXaXRoKCdAJykgPyBoYW5kbGUgOiBgQCR7aGFuZGxlfWA7XG4gICAgaWYgKHVzZXI/LnVzZXJJZCkgcmV0dXJuIGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlci51c2VySWQpfWA7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uaWQ7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQocHJvZmlsZUlkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcyA9IGNvbXB1dGVkPFVzZXJBdmF0YXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB1c2VyOiB0aGlzLmxvZ2dlZEluVXNlcigpLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgY3NzQ2xhc3M6ICdjaGVzc2ltYWxzLXR1cm4tYXZhdGFyJyxcbiAgfSkpO1xuICByZWFkb25seSB0dXJuUGxheWVyUGFydGljaXBhbnQgPSBjb21wdXRlZDxDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltnYW1lLmN1cnJlbnRUdXJuXTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFVzZVR1cm5QbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gISF0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIHJldHVybiAhIXRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBwYXJ0aWNpcGFudCA9IHRoaXMudHVyblBsYXllclBhcnRpY2lwYW50KCk7XG4gICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgbmFtZTogcGFydGljaXBhbnQubmFtZSxcbiAgICAgICAgICBlbWFpbDogcGFydGljaXBhbnQuZW1haWwsXG4gICAgICAgICAgaGFuZGxlOiBwYXJ0aWNpcGFudC5oYW5kbGUsXG4gICAgICAgICAgYXZhdGFyVXJsOiBwYXJ0aWNpcGFudC5hdmF0YXJVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIGF2YXRhclVybDogcGFydGljaXBhbnQuYXZhdGFyVXJsLFxuICAgICAgICBiYWNrZ3JvdW5kOiBwYXJ0aWNpcGFudC5jb2xvcixcbiAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllckZhbGxiYWNrQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJylcbiAgICAgIHJldHVybiB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpPy5hdmF0YXIgPz8gdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKS5jaGFyQXQoMCk7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxQbGF5ZXJBdmF0YXIoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1cm5QbGF5ZXJFeWVicm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1cm4nKTtcbiAgICByZXR1cm4gdGhpcy50KHRoaXMubG9nZ2VkSW5Vc2VyKCkgPyAnbG9nZ2VkUGxheWVyJyA6ICdsb2NhbFBsYXllcicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHVyblBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdGhpcy5wbGF5ZXJEaXNwbGF5TmFtZShnYW1lLmN1cnJlbnRUdXJuKTtcbiAgICByZXR1cm4gdGhpcy5sb2dnZWRQbGF5ZXJOYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSB0dXJuUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRoaXMubG9nZ2VkUGxheWVySGFuZGxlKCk7XG4gICAgY29uc3QgcGFydGljaXBhbnQgPSB0aGlzLnR1cm5QbGF5ZXJQYXJ0aWNpcGFudCgpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlLnN0YXJ0c1dpdGgoJ0AnKSA/IGhhbmRsZSA6IGBAJHtoYW5kbGV9YDtcbiAgICBjb25zdCB1c2VySWQgPSBwYXJ0aWNpcGFudD8uYWNjb3VudFVzZXJJZCB8fCBwYXJ0aWNpcGFudD8udWlkIHx8IHBhcnRpY2lwYW50Py5wcm9maWxlSWQ7XG4gICAgcmV0dXJuIHVzZXJJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlcklkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8uc2Z4RW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzTXVzaWNFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4VG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1NmeEVuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY1ZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogdmFsdWUgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNTZnhWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiB2YWx1ZSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBhdmFpbGFibGVCb3RQcm9maWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ25pZ2h0bWFyZScpIHJldHVybiBbXTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ21hc3RlcicpIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbHRlcihwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09ICdtYWdudXMnKTtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maWx0ZXIocHJvZmlsZSA9PiBwcm9maWxlLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkgJiYgcHJvZmlsZS5pZCAhPT0gJ21hZ251cycpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbmQocHJvZmlsZSA9PiBwcm9maWxlLmlkID09PSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkpXG4gICk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMuZ2FtZUJvdFByb2ZpbGVJZCgpO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyB0aGlzLmJvdFByb2ZpbGVzLmZpbmQocHJvZmlsZSA9PiBwcm9maWxlLmlkID09PSBwcm9maWxlSWQpIDogdW5kZWZpbmVkO1xuICB9KTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSGVhZGVyQm90ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJykgcmV0dXJuIHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gIH0pO1xuICByZWFkb25seSBib3RPcHBvbmVudFByb2ZpbGUgPSBjb21wdXRlZDxDaGVzc2ltYWxzQm90UHJvZmlsZSB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY2hhbGxlbmdlQm90ID0gdGhpcy5jaGFsbGVuZ2VIZWFkZXJCb3QoKTtcbiAgICBpZiAoY2hhbGxlbmdlQm90KSByZXR1cm4gdGhpcy5jaGFsbGVuZ2VCb3RQcm9maWxlKGNoYWxsZW5nZUJvdCk7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZUJvdFByb2ZpbGUoKSA/PyB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRFeWVicm93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuY2hhbGxlbmdlSGVhZGVyQm90KCk7XG4gICAgaWYgKGNoYWxsZW5nZUJvdCkgcmV0dXJuIHRoaXMuY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGNoYWxsZW5nZUJvdCk7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5ib3RPcHBvbmVudFByb2ZpbGUoKTtcbiAgICBjb25zdCBib3ROYW1lID0gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH0pO1xuICByZWFkb25seSBib3RPcHBvbmVudERlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuY2hhbGxlbmdlSGVhZGVyQm90KCk7XG4gICAgaWYgKGNoYWxsZW5nZUJvdCkgcmV0dXJuIHRoaXMuY2hhbGxlbmdlQm90U3R5bGVMaW5lKGNoYWxsZW5nZUJvdCk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90T3Bwb25lbnRQcm9maWxlKCk7XG4gICAgcmV0dXJuIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlKSA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90T3Bwb25lbnRDYXJkID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc0JvdE9wcG9uZW50VmlldyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjaGFsbGVuZ2VCb3QgPSB0aGlzLmNoYWxsZW5nZUhlYWRlckJvdCgpO1xuICAgIGlmIChjaGFsbGVuZ2VCb3QpIHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoY2hhbGxlbmdlQm90KTtcbiAgICAgIGNvbnN0IGJvdE5hbWUgPSBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdmF0YXI6IHByb2ZpbGU/LmF2YXRhciA/PyAn4pmfJyxcbiAgICAgICAgYXZhdGFyU3JjOiBwcm9maWxlPy5hdmF0YXJTcmMgPz8gJycsXG4gICAgICAgIGV5ZWJyb3c6IHRoaXMuY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGNoYWxsZW5nZUJvdCksXG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNoYWxsZW5nZUJvdFN0eWxlTGluZShjaGFsbGVuZ2VCb3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBuaWdodG1hcmVNb2RlID0gdGhpcy5hY3RpdmVOaWdodG1hcmVNb2RlKCk7XG4gICAgaWYgKG5pZ2h0bWFyZU1vZGUgIT09ICdub25lJykge1xuICAgICAgY29uc3QgYm90TmFtZSA9IHRoaXMubmlnaHRtYXJlTW9kZUxhYmVsKG5pZ2h0bWFyZU1vZGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXZhdGFyOiB0aGlzLm5pZ2h0bWFyZU1vZGVHbHlwaChuaWdodG1hcmVNb2RlKSxcbiAgICAgICAgYXZhdGFyU3JjOiB0aGlzLm5pZ2h0bWFyZU1vZGVBc3NldFNyYyhuaWdodG1hcmVNb2RlKSxcbiAgICAgICAgZXllYnJvdzogdGhpcy5ib3REaWZmaWN1bHR5TGFiZWwoJ25pZ2h0bWFyZScpLFxuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5uaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obmlnaHRtYXJlTW9kZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdE9wcG9uZW50UHJvZmlsZSgpO1xuICAgIGlmICghcHJvZmlsZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgYXZhdGFyOiBwcm9maWxlLmF2YXRhcixcbiAgICAgIGF2YXRhclNyYzogcHJvZmlsZS5hdmF0YXJTcmMgPz8gJycsXG4gICAgICBleWVicm93OiB0aGlzLmJvdERpZmZpY3VsdHlMYWJlbCh0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpKSxcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRWcycpLnJlcGxhY2UoJ3tib3R9JywgdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuYm90UHJvZmlsZURlc2NyaXB0aW9uKHByb2ZpbGUpLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBhY3RpdmVDaGFsbGVuZ2VCb3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgLSAxKV07XG4gIH0pO1xuICByZWFkb25seSByZXN1bWFibGVDaGFsbGVuZ2VSdW4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkO1xuICB9KTtcblxuICBASW5wdXQoKSBzZXQgb25saW5lR2FtZUlkKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlID8/ICcnKTtcbiAgICBpZiAoIWdhbWVJZCkgcmV0dXJuO1xuICAgIHRoaXMucGVuZGluZ09ubGluZUdhbWVJZCA9IGdhbWVJZDtcbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcbiAgQElucHV0KCkgcHJvamVjdGlvbk1vZGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgYWR2ZW50dXJlTm9kZShcbiAgICBwYXJhbXM6XG4gICAgICB8IHtcbiAgICAgICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgICAgICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQ7XG4gICAgICAgICAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHk7XG4gICAgICAgICAgYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplO1xuICAgICAgICB9XG4gICAgICB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBpZiAoIXBhcmFtcz8ubm9kZUlkKSByZXR1cm47XG4gICAgdGhpcy5hZHZlbnR1cmVOb2RlSWQuc2V0KHBhcmFtcy5ub2RlSWQpO1xuICAgIHRoaXMuc3RhcnRBZHZlbnR1cmVCYXR0bGUocGFyYW1zLnByb2ZpbGVJZCwgcGFyYW1zLmRpZmZpY3VsdHksIHBhcmFtcy5ib2FyZFNpemUpO1xuICB9XG5cbiAgcmVhZG9ubHkgcmVwbGF5RW50cmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlUmV2aWV3SW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMucmVwbGF5RW50cmllcygpO1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgZW50cmllcy5sZW5ndGggPD0gMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmV2aWV3SW5kZXgoKSA/PyBlbnRyaWVzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGluZGV4LCAwKSwgZW50cmllcy5sZW5ndGggLSAxKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGhhc1JlcGxheUNvbnRyb2xzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQpO1xuICByZWFkb25seSByZXZpZXdHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGNvbnN0IGVudHJ5ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICByZXR1cm4gZW50cnkgPyBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUodGhpcy5nYW1lKCksIGVudHJ5KSA6IHRoaXMuZ2FtZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5nYW1lKCkuY3VycmVudFR1cm5dKTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXJDb2xvciA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJyA/IHJvbGUgOiBnYW1lLmN1cnJlbnRUdXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBwb3dlclBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5wb3dlclBsYXllckNvbG9yKCldKTtcbiAgcmVhZG9ubHkgY2FuVXNlUG93ZXJDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdhbWUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmXG4gICAgICB0aGlzLnBvd2VyUGxheWVyQ29sb3IoKSA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJlxuICAgICAgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJlxuICAgICAgIXRoaXMuYm90VGhpbmtpbmcoKSAmJlxuICAgICAgIXRoaXMubW92aW5nUGllY2UoKVxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIFtdO1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModGhpcy5nYW1lKCksIHBpZWNlSWQsIHRoaXMuc2VsZWN0ZWRBbmltYWwoKSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgaWYgKCFleHBlY3RlZCkgcmV0dXJuIG1vdmVzO1xuICAgIHJldHVybiBtb3Zlcy5maWx0ZXIoXG4gICAgICBtb3ZlID0+XG4gICAgICAgIG1vdmUucGllY2VJZCA9PT0gZXhwZWN0ZWQucGllY2VJZCAmJlxuICAgICAgICBwb3NpdGlvbktleShtb3ZlLnRvKSA9PT0gcG9zaXRpb25LZXkoZXhwZWN0ZWQudG8pICYmXG4gICAgICAgIChtb3ZlLmFuaW1hbCA/PyB1bmRlZmluZWQpID09PSAoZXhwZWN0ZWQuYW5pbWFsID8/IHVuZGVmaW5lZClcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkubWFwKG1vdmUgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVNb3ZlS2V5cyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICBuZXcgU2V0KFxuICAgICAgICB0aGlzLmxlZ2FsTW92ZXMoKVxuICAgICAgICAgIC5maWx0ZXIobW92ZSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKVxuICAgICAgICAgIC5tYXAobW92ZSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSlcbiAgICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgd2lubmluZ01vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBwcm9tb3Rpb25Sb3cgPSBnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gMCA6IGdhbWUuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gbmV3IFNldChcbiAgICAgIHRoaXMubGVnYWxNb3ZlcygpXG4gICAgICAgIC5maWx0ZXIobW92ZSA9PiBtb3ZlLnRvLnJvdyA9PT0gcHJvbW90aW9uUm93KVxuICAgICAgICAubWFwKG1vdmUgPT4gcG9zaXRpb25LZXkobW92ZS50bykpXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVSZWFkeVBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBtb3ZlcyA9IHRoaXMuYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pLmZpbHRlcihtb3ZlID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KG1vdmVzLm1hcChtb3ZlID0+IG1vdmUucGllY2VJZCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgdGhyZWF0ZW5lZFBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBvcHBvbmVudCA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICBjb25zdCB0aHJlYXRlbmVkID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgb3Bwb25lbnQpXG4gICAgICAubWFwKG1vdmUgPT4gbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICAuZmlsdGVyKChwaWVjZUlkKTogcGllY2VJZCBpcyBzdHJpbmcgPT4gISFwaWVjZUlkKTtcbiAgICByZXR1cm4gbmV3IFNldCh0aHJlYXRlbmVkKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGlzQWN0aW9uYWJsZVR1cm4gPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiYgIXRoaXMuYm90VGhpbmtpbmcoKSAmJiAhdGhpcy5tb3ZlU3luY2luZygpXG4gICk7XG4gIHJlYWRvbmx5IGlzV2FpdGluZ0ZvclR1cm4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgIXRoaXMuaXNBY3Rpb25hYmxlVHVybigpKTtcbiAgcmVhZG9ubHkgYm9hcmRSb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgYm9hcmRDb2xzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheVJvd3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZFJvd3MoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZFJvd3MoKVxuICApO1xuICByZWFkb25seSBkaXNwbGF5Q29scyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkQ29scygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkQ29scygpXG4gICk7XG4gIHJlYWRvbmx5IGJvYXJkT3JpZW50YXRpb25Db2xvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAodGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1aWQgPyAodGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3doaXRlJykgOiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVSb2xlID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8ICd3YWl0aW5nJyB8ICdwZW5kaW5nJyB8ICdzcGVjdGF0b3InIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuICdzcGVjdGF0b3InO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkpIHJldHVybiAnd2FpdGluZyc7XG4gICAgaWYgKHRoaXMub25saW5lLmlzUGVuZGluZ0d1ZXN0KGdhbWUsIHVpZCkpIHJldHVybiAncGVuZGluZyc7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICdzcGVjdGF0b3InO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuUGxheUN1cnJlbnRUdXJuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SICYmICF0aGlzLmJvdFRoaW5raW5nKCk7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBjYW5Db250cm9sQ3VycmVudEdhbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICByZXR1cm4gcm9sZSA9PT0gJ3doaXRlJyB8fCByb2xlID09PSAnYmxhY2snO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaFN0YXRlID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZT4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuICdub25lJztcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmICghdWlkIHx8IHRoaXMub25saW5lUm9sZSgpID09PSAnc3BlY3RhdG9yJykgcmV0dXJuICdub25lJztcblxuICAgIGNvbnN0IGhhc01pbmUgPSB0aGlzLm9ubGluZS5oYXNDdXJyZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcbiAgICBjb25zdCBoYXNPdGhlciA9IHRoaXMub25saW5lLmhhc09wcG9uZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcblxuICAgIGlmIChoYXNPdGhlciAmJiAhaGFzTWluZSkgcmV0dXJuICdpbmNvbWluZyc7XG4gICAgaWYgKGhhc01pbmUpIHJldHVybiAncmVxdWVzdGVkJztcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaEFjdGlvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5yZW1hdGNoU3RhdGUoKTtcbiAgICBpZiAodGhpcy5yZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KHN0YXRlID09PSAnaW5jb21pbmcnID8gJ2NoZXNzaW1hbHNBY2NlcHRpbmdSZW1hdGNoJyA6ICdjaGVzc2ltYWxzUmVxdWVzdGluZ1JlbWF0Y2gnKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnaW5jb21pbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQWNjZXB0UmVtYXRjaCcpO1xuICAgIGlmIChzdGF0ZSA9PT0gJ3JlcXVlc3RlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkQWN0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlbWF0Y2gnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dPbmxpbmVTdGF0dXMgPSBjb21wdXRlZChcbiAgICAoKSA9PiAhdGhpcy5wcm9qZWN0aW9uTW9kZSAmJiB0aGlzLmdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICd3YWl0aW5nJ1xuICApO1xuICByZWFkb25seSBvbmxpbmVTdGF0dXNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgdGhpcy5tb3ZlU3luY2luZygpKVxuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVN5bmNpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUZpbmlzaGVkVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGVuZGluZ1RpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3BlY3RhdG9yVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lQ29ubmVjdGVkVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IHRoaXMubW92ZVN5bmNpbmcoKSlcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nQm9keScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXhwaXJlZEJvZHknKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZEJvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lVmlld2VyJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxTdGVwSW5kZXggPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbih0aGlzLmdhbWUoKS5tb3ZlQ291bnQsIENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxQcm9ncmVzc0xhYmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxDb21wbGV0ZVByb2dyZXNzJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxQcm9ncmVzcycpXG4gICAgICAgICAgLnJlcGxhY2UoJ3tzdGVwfScsIFN0cmluZyh0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxKSlcbiAgICAgICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyhDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTKSlcbiAgKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfVRpdGxlYCk7XG4gIH0pO1xuICByZWFkb25seSB0dXRvcmlhbEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KGBjaGVzc2ltYWxzVHV0b3JpYWxTdGVwJHt0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxfUJvZHlgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRUdXJuVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLmN1cnJlbnRUdXJuKSlcbiAgKTtcbiAgcmVhZG9ubHkgd2luVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2NoZXNzaW1hbHNXaW5UaXRsZScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy53aW5uZXJEaXNwbGF5TmFtZSgpKSk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6IHJlYXNvbiA9PT0gJ2Jsb2NrZWQnXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzV2luQmxvY2tlZCdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNXaW5Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IHdpblJlYXNvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uUmVzaWduYXRpb24nXG4gICAgICAgICAgOiByZWFzb24gPT09ICdibG9ja2VkJ1xuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkJsb2NrZWQnXG4gICAgICAgICAgICA6ICdjaGVzc2ltYWxzUmVhc29uUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSBtb3Zlc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc01vdmVzU3VtbWFyeScpLnJlcGxhY2UoJ3ttb3Zlc30nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YClcbiAgKTtcbiAgcmVhZG9ubHkgY2FwdHVyZXNCeUNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlOiBSZWNvcmQ8Q2hlc3NpbWFsc1BsYXllckNvbG9yLCBudW1iZXI+ID0geyB3aGl0ZTogMCwgYmxhY2s6IDAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKSB7XG4gICAgICBjb25zdCBtb3ZlID0gZW50cnkubW92ZTtcbiAgICAgIGlmICghbW92ZT8uY2FwdHVyZXNQaWVjZUlkKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHBpZWNlID0gZW50cnkucGllY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgICAgaWYgKHBpZWNlPy5jb2xvcikgc2NvcmVbcGllY2UuY29sb3JdICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbiAgfSk7XG4gIHJlYWRvbmx5IHJlc3VsdENhcHR1cmVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGgpO1xuICByZWFkb25seSByZXN1bHRQb3dlcnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpXG4gICAgICAubWFwKGVudHJ5ID0+IGVudHJ5Lm1vdmU/LmFuaW1hbClcbiAgICAgIC5maWx0ZXIoKGFuaW1hbCk6IGFuaW1hbCBpcyBDaGVzc2ltYWxzQW5pbWFsVHlwZSA9PiAhIWFuaW1hbClcbiAgKTtcbiAgcmVhZG9ubHkgbGl2ZVNjb3JlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgPyB0aGlzLmNyZWF0ZUdhbWVTY29yZSh0aGlzLmdhbWUoKSwgJ1cnKS5zY29yZSA6IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKS5zY29yZVxuICApO1xuICByZWFkb25seSByZXN1bHRTY29yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JlYXRlR2FtZVNjb3JlKHRoaXMuZ2FtZSgpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFN0YXRzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRTY29yZScpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFNjb3JlKCkuc2NvcmUpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE1vdmVzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Q2FwdHVyZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRDYXB0dXJlcygpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRQb3dlcnMoKS5sZW5ndGgpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFJlYXNvbicpLFxuICAgICAgdmFsdWU6IHRoaXMud2luUmVhc29uTGFiZWwoKSxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcG93ZXJzID0gdGhpcy5yZXN1bHRQb3dlcnMoKTtcbiAgICBpZiAoIXBvd2Vycy5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHROb1Bvd2VycycpO1xuICAgIHJldHVybiBwb3dlcnMubWFwKGFuaW1hbCA9PiB0aGlzLmFuaW1hbExhYmVsKGFuaW1hbCkpLmpvaW4oJyDCtyAnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxpdmVTY29yZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gU3RyaW5nKHRoaXMubGl2ZVNjb3JlKCkpKTtcbiAgcmVhZG9ubHkgcmVzdWx0QmVzdE1vdmVMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBiZXN0TW92ZSA9IHRoaXMucmVzdWx0U2NvcmUoKS5iZXN0TW92ZTtcbiAgICBpZiAoIWJlc3RNb3ZlKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Tm9CZXN0TW92ZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRCZXN0TW92ZUxpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3tzY29yZX0nLCBTdHJpbmcoYmVzdE1vdmUuc2NvcmUpKVxuICAgICAgLnJlcGxhY2UoJ3ttb3ZlfScsIGJlc3RNb3ZlLmxhYmVsKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dCb3RSZXBvcnQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJyAmJlxuICAgICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmXG4gICAgICAhdGhpcy50dXRvcmlhbE1vZGUoKSAmJlxuICAgICAgISF0aGlzLmdhbWVCb3RQcm9maWxlKClcbiAgKTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKFxuICAgICAgJ3tib3R9JyxcbiAgICAgIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKVxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBib3RSZXBvcnRCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmdhbWVCb3RQcm9maWxlKCk7XG4gICAgY29uc3QgYm90TW92ZXMgPSB0aGlzLnJlcGxheUVudHJpZXMoKS5maWx0ZXIoZW50cnkgPT4gZW50cnkubW92ZT8ucGllY2VJZC5zdGFydHNXaXRoKCdCJykpO1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYm90TW92ZXMuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGg7XG4gICAgY29uc3QgcG93ZXJzID0gYm90TW92ZXMuZmlsdGVyKGVudHJ5ID0+ICEhZW50cnkubW92ZT8uYW5pbWFsKS5sZW5ndGg7XG4gICAgY29uc3Qgb3V0Y29tZUtleSA9XG4gICAgICB0aGlzLmdhbWUoKS53aW5uZXIgPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SID8gJ2NoZXNzaW1hbHNCb3RSZXBvcnRPdXRjb21lV29uJyA6ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZUxvc3QnO1xuXG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFJlcG9ydEJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3tvdXRjb21lfScsIHRoaXMudChvdXRjb21lS2V5KSlcbiAgICAgIC5yZXBsYWNlKCd7Y2FwdHVyZXN9JywgU3RyaW5nKGNhcHR1cmVzKSlcbiAgICAgIC5yZXBsYWNlKCd7cG93ZXJzfScsIFN0cmluZyhwb3dlcnMpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHlsZX0nLCBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZSkgOiAnJyk7XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNHYW1lcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHBvbmVudFVpZCA9IHRoaXMuY3VycmVudE9wcG9uZW50VWlkKCk7XG4gICAgaWYgKCFvcHBvbmVudFVpZCkgcmV0dXJuIFtdIGFzIENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVIaXN0b3J5KCkuZmlsdGVyKGVudHJ5ID0+IGVudHJ5Lm9wcG9uZW50VWlkID09PSBvcHBvbmVudFVpZCAmJiBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU2NvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZXMgPSB0aGlzLnNlcmllc0dhbWVzKCk7XG4gICAgaWYgKCFnYW1lcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbmU6IGdhbWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5vdXRjb21lID09PSAnd29uJykubGVuZ3RoLFxuICAgICAgcml2YWw6IGdhbWVzLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5vdXRjb21lID09PSAnbG9zdCcpLmxlbmd0aCxcbiAgICAgIHRvdGFsOiBnYW1lcy5sZW5ndGgsXG4gICAgfTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNlcmllc1Njb3JlKCk7XG4gICAgaWYgKCFzY29yZSB8fCBzY29yZS50b3RhbCA8IDIpIHJldHVybiAnJztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU2VyaWVzU2NvcmUnKVxuICAgICAgLnJlcGxhY2UoJ3ttaW5lfScsIFN0cmluZyhzY29yZS5taW5lKSlcbiAgICAgIC5yZXBsYWNlKCd7cml2YWx9JywgU3RyaW5nKHNjb3JlLnJpdmFsKSlcbiAgICAgIC5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucmVtYXRjaE9wcG9uZW50TmFtZSgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxhc3RTZXJpZXNXaW5uZXJMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5zZXJpZXNHYW1lcygpWzBdO1xuICAgIGlmICghbGFzdCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBsYXN0Lm91dGNvbWUgPT09ICd3b24nID8gdGhpcy50KCdjaGVzc2ltYWxzWW91JykgOiBsYXN0Lm9wcG9uZW50TmFtZSB8fCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1UaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydFRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzVGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb25maXJtTmV3VGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzaWduQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICBhY3Rpb24gPT09ICdyZXNpZ24nXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc1Jlc2lnbicpXG4gICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ3Jlc3RhcnQnXG4gICAgICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdnYW1lcydcbiAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKVxuICAgICAgICAgICAgICAgIDogYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldydcbiAgICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXdDb25maXJtJylcbiAgICAgICAgICAgICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc1R1dG9yaWFsQWN0aW9uID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50KCdjaGVzc2ltYWxzUnVsZXNUcnlUdXRvcmlhbCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAndHV0b3JpYWwnLFxuICB9KSk7XG4gIHJlYWRvbmx5IHJ1bGVzQ2xvc2VBY3Rpb24gPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgfSkpO1xuICByZWFkb25seSBhYm91dEFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNBYm91dEZlZWRiYWNrJyksXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdmZWVkYmFjaycsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8ucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubXVzaWNFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGVuYWJsZWQgPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvLnNldE11c2ljRW5hYmxlZChlbmFibGVkKTtcbiAgICAgICAgaWYgKGVuYWJsZWQpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShlbmFibGVkID0+IHRoaXMuYXVkaW8uc2V0U2Z4RW5hYmxlZChlbmFibGVkKSlcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKHRoaXMubXVzaWNWb2x1bWVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodm9sdW1lID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSkpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZvbHVtZSA9PiB0aGlzLnNldFNmeFZvbHVtZSh2b2x1bWUpKSk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICAgICAgdGhpcy53YXRjaENoYWxsZW5nZVN0YXRzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNMb2FkZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSk7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ3BsYXlpbmcnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ31gO1xuICAgICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSBrZXk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAncGxheWluZycpIHJldHVybjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tb2RlU3RhdHNSZXN1bHQoZ2FtZSk7XG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleSA9IGAke3Jlc3VsdC5tb2RlfToke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ31gO1xuICAgICAgICBpZiAodGhpcy5sYXN0TW9kZVN0YXRzSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICAgIHRoaXMubGFzdE1vZGVTdGF0c0hhbmRsZWRLZXkgPSBrZXk7XG4gICAgICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5yZWNvcmRNb2RlUmVzdWx0KHJlc3VsdC5tb2RlLCByZXN1bHQud29uLCByZXN1bHQucm91bmRTdGF0cykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG1vZGUgc3RhdHMgc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnN5bmNUdXJuVGltZXIoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhpcy5hZHZlbnR1cmVOb2RlSWQoKTtcbiAgICAgICAgaWYgKCFub2RlSWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICAgICAgY29uc3Qga2V5ID0gYCR7bm9kZUlkfToke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfWA7XG4gICAgICAgIGlmICh0aGlzLmxhc3RBZHZlbnR1cmVIYW5kbGVkS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICAgICAgdGhpcy5sYXN0QWR2ZW50dXJlSGFuZGxlZEtleSA9IGtleTtcbiAgICAgICAgY29uc3Qgd29uID0gZ2FtZS53aW5uZXIgPT09ICd3aGl0ZSc7XG4gICAgICAgIGlmICghd29uKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHN0YXJzID0gdGhpcy5hZHZlbnR1cmVTdGFyc0ZvckdhbWUoZ2FtZSk7XG4gICAgICAgIHZvaWQgdGhpcy5hZHZlbnR1cmVQcm9ncmVzcy5yZWNvcmROb2RlQ29tcGxldGVkKG5vZGVJZCwgc3RhcnMpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWR2ZW50dXJlIHByb2dyZXNzIHNhdmUgZmFpbGVkJywgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRBZHZlbnR1cmVCYXR0bGUoXG4gICAgcHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkLFxuICAgIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICAgIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZS5zZXQoJ2JvdCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KGJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpO1xuICAgIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlLnNldCgnbm9uZScpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGVJZCk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldChwcm9maWxlSWQpO1xuICAgIHRoaXMubGFzdEFkdmVudHVyZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZUNvbmZpZ3VyZWRMb2NhbEdhbWUoYm9hcmRTaXplKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgYWR2ZW50dXJlU3RhcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IG5vZGVJZCA9IHRoaXMuYWR2ZW50dXJlTm9kZUlkKCk7XG4gICAgaWYgKCFub2RlSWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgZ2FtZS53aW5uZXIgIT09ICd3aGl0ZScpIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLmFkdmVudHVyZVN0YXJzRm9yR2FtZShnYW1lKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWR2ZW50dXJlQ3VycmVudE5vZGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZUlkID0gdGhpcy5hZHZlbnR1cmVOb2RlSWQoKTtcbiAgICBpZiAoIW5vZGVJZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gQ0hFU1NJTUFMU19BRFZFTlRVUkVfQUNUUy5mbGF0TWFwKGEgPT4gYS5ub2RlcykuZmluZChuID0+IG4uaWQgPT09IG5vZGVJZCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFkdmVudHVyZU5leHRCYXR0bGVOb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVJZCA9IHRoaXMuYWR2ZW50dXJlTm9kZUlkKCk7XG4gICAgaWYgKCFub2RlSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY3VycmVudCA9IENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMuZmxhdE1hcChhID0+IGEubm9kZXMpLmZpbmQobiA9PiBuLmlkID09PSBub2RlSWQpO1xuICAgIGlmICghY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gQ0hFU1NJTUFMU19BRFZFTlRVUkVfQUNUUy5mbGF0TWFwKGEgPT4gYS5ub2RlcykuZmluZChcbiAgICAgIG4gPT4gY3VycmVudC5jb25uZWN0c1RvLmluY2x1ZGVzKG4uaWQpICYmIG4udHlwZSA9PT0gJ2JhdHRsZSdcbiAgICApO1xuICB9KTtcblxuICBwcml2YXRlIGFkdmVudHVyZVN0YXJzRm9yR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBtb3ZlcyA9IGdhbWUubW92ZUNvdW50O1xuICAgIGNvbnN0IHNpemUgPSBnYW1lLmJvYXJkU2l6ZTtcbiAgICBjb25zdCBmYXN0VGhyZXNob2xkID0gc2l6ZSA9PT0gNiA/IDE2IDogMjQ7XG4gICAgaWYgKG1vdmVzIDw9IGZhc3RUaHJlc2hvbGQpIHJldHVybiAzO1xuICAgIHJldHVybiAyO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG9ydFVzZXJJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkLmxlbmd0aCA8PSAxMCkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgcmV0dXJuIGAke25vcm1hbGl6ZWQuc2xpY2UoMCwgNCl94oCmJHtub3JtYWxpemVkLnNsaWNlKC00KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5nZVZhbHVlVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiBudW1iZXIge1xuICAgIGNvbnN0IHJhdyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6ICh2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwKTtcbiAgICByZXR1cm4gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKHJhdykpKTtcbiAgfVxuXG4gIHN0YXJ0Q2hhbGxlbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkpIHtcbiAgICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2NoYWxsZW5nZS1uZXcnKTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFsZVJ1biA9IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKHN0YWxlUnVuICYmICF0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKSkge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHN0YWxlUnVuKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHJlcXVlc3ROZXdDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzdW1hYmxlQ2hhbGxlbmdlUnVuKCkgfHwgdGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdjaGFsbGVuZ2UtbmV3Jyk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIG9wZW5DaGFsbGVuZ2VWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuLnNldCgnY2hhbGxlbmdlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBiYWNrVG9Ib21lKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgIGNvbnN0IGFkdmVudHVyZU5vZGUgPSB0aGlzLmFkdmVudHVyZU5vZGVJZCgpO1xuICAgIGlmIChhZHZlbnR1cmVOb2RlKSB7XG4gICAgICB0aGlzLmFkdmVudHVyZU5vZGVJZC5zZXQoJycpO1xuICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWluaS1nYW1lcy9jaGVzc2ltYWxzL2FkdmVudHVyZScpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgZ29Ub05leHRBZHZlbnR1cmVOb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmFkdmVudHVyZU5leHRCYXR0bGVOb2RlKCk7XG4gICAgaWYgKCFuZXh0KSByZXR1cm47XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5hZHZlbnR1cmVOb2RlSWQuc2V0KCcnKTtcbiAgICB2b2lkIHRoaXMucm91dGVyXG4gICAgICAubmF2aWdhdGUoWycvbWluaS1nYW1lcy9jaGVzc2ltYWxzJ10sIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBhZHZlbnR1cmVOb2RlOiBuZXh0LmlkLFxuICAgICAgICAgIHByb2ZpbGVJZDogbmV4dC5wcm9maWxlSWQsXG4gICAgICAgICAgZGlmZmljdWx0eTogbmV4dC5kaWZmaWN1bHR5LFxuICAgICAgICAgIGJvYXJkU2l6ZTogbmV4dC5ib2FyZFNpemUgPz8gNixcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMuc2NvcmVQb3BDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5zY29yZVBvcENsZWFyVGltZXIpO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgaWQgPSBgY2hhbGxlbmdlLSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbiAgICBjb25zdCBydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICBpZCxcbiAgICAgIHNjaGVtYVZlcnNpb246IDIsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNTdGFydDogMyxcbiAgICAgIGxpdmVzUmVtYWluaW5nOiAzLFxuICAgICAgcm91bmRJbmRleDogMSxcbiAgICAgIGN1cnJlbnRSb3VuZDogMSxcbiAgICAgIHJvdW5kc1dvbjogMCxcbiAgICAgIGhpZ2hlc3RSb3VuZFJlYWNoZWQ6IDEsXG4gICAgICBhY3RpdmVSb3VuZElkOiBgJHtpZH06MWAsXG4gICAgICB3aW5zOiAwLFxuICAgICAgbG9zc2VzOiAwLFxuICAgICAgYmVzdFN0cmVha0luUnVuOiAwLFxuICAgICAgY3VycmVudFN0cmVhazogMCxcbiAgICAgIGJvdExhZGRlcjogdGhpcy5jaGFsbGVuZ2VMYWRkZXIubWFwKGJvdCA9PiBib3QuaWQpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbXSxcbiAgICAgIHN0YXJ0ZWRBdDogbm93LFxuICAgICAgbGFzdEV2ZW50QXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5zdGFydENoYWxsZW5nZVJvdW5kKHJ1bik7XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnJlY29yZENoYWxsZW5nZVN0YXJ0ZWQodGhpcy5jaGFsbGVuZ2VSdW4oKSA/PyBydW4pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBydW4gc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2hhbGxlbmdlU2Vzc2lvblN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICByZXN1bWVDaGFsbGVuZ2UocnVuID0gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgY29uc3Qgc2F2ZWRHYW1lID0gdGhpcy5hY3RpdmVHYW1lRm9yUnVuKHJ1bik7XG4gICAgaWYgKHNhdmVkR2FtZSkge1xuICAgICAgdGhpcy5lbnRlckNoYWxsZW5nZVJvdW5kKHJ1biwgc2F2ZWRHYW1lLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgY29udGludWVDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdiZXR3ZWVuJykgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pIC0gMSldO1xuICAgIGlmICghYm90KSB7XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnY29tcGxldGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW50ZXJDaGFsbGVuZ2VSb3VuZChydW4sIGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvdC5ib2FyZFNpemUpLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50ZXJDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sIGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHNob3dJbnRybzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnYm90Jyk7XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoYm90LmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGJvdC5kaWZmaWN1bHR5KTtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQoJ25vbmUnKTtcbiAgICB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGdhbWUpO1xuICAgIHRoaXMucGVyc2lzdEFjdGl2ZUNoYWxsZW5nZUdhbWUoZ2FtZSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICBpZiAoc2hvd0ludHJvKSB0aGlzLnNob3dDaGFsbGVuZ2VJbnRybygpO1xuICAgIGVsc2UgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQpOiBydW4gaXMgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1biB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDApIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCA8IDEgfHwgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChydW4ud2lucyA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocnVuLmN1cnJlbnRSb3VuZCAhPT0gcnVuLndpbnMgKyAxKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICEhdGhpcy5jaGFsbGVuZ2VMYWRkZXJbcnVuLmN1cnJlbnRSb3VuZCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGdhbWUgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZShib2FyZFNpemUpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnKSByZXR1cm4gZ2FtZTtcbiAgICByZXR1cm4gdGhpcy5hcHBseU5pZ2h0bWFyZVByZXNldChnYW1lLCB0aGlzLmFjdGl2ZU5pZ2h0bWFyZU1vZGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TmlnaHRtYXJlUHJlc2V0KGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5nYW1lLFxuICAgICAgICBwbGF5ZXJzOiB7XG4gICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLFxuICAgICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgICBjYXJkczoge1xuICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMsXG4gICAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmVhZ2xlLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYnVsbDoge1xuICAgICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy53aGl0ZS5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAga2FuZ2Fyb286IHtcbiAgICAgICAgICAgICAgICAuLi5nYW1lLnBsYXllcnMud2hpdGUuY2FyZHMua2FuZ2Fyb28sXG4gICAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uZ2FtZS5wbGF5ZXJzLndoaXRlLmNhcmRzLmxpb24sXG4gICAgICAgICAgICAgICAgdXNlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgIT09ICdwcmlkZScpIHJldHVybiBnYW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdhbWUsXG4gICAgICBwbGF5ZXJzOiB7XG4gICAgICAgIC4uLmdhbWUucGxheWVycyxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5nYW1lLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgY2FyZHM6IHtcbiAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcyxcbiAgICAgICAgICAgIGVhZ2xlOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5lYWdsZSxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidWxsOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5idWxsLFxuICAgICAgICAgICAgICB1c2VkOiB0cnVlLFxuICAgICAgICAgICAgICB1c2VzUmVtYWluaW5nOiAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGthbmdhcm9vOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5rYW5nYXJvbyxcbiAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW9uOiB7XG4gICAgICAgICAgICAgIC4uLmdhbWUucGxheWVycy5ibGFjay5jYXJkcy5saW9uLFxuICAgICAgICAgICAgICB1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXNlc1JlbWFpbmluZzogNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZGlzbWlzc0NoYWxsZW5nZUludHJvKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkKCkgOiB1bmRlZmluZWQpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVDb25maWd1cmVkTG9jYWxHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghcnVuIHx8ICFib3QpIHJldHVybjtcblxuICAgIGNvbnN0IHJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKTtcbiAgICBjb25zdCByb3VuZHNXb24gPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kc1dvbihydW4pO1xuICAgIGNvbnN0IHdvbiA9IGdhbWUud2lubmVyID09PSAnd2hpdGUnO1xuICAgIGNvbnN0IHJvdW5kU3RhdHMgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZSk7XG4gICAgY29uc3QgbmV4dExpdmVzID0gd29uID8gcnVuLmxpdmVzUmVtYWluaW5nIDogTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nIC0gMSk7XG4gICAgY29uc3QgbmV4dFN0cmVhayA9IHdvbiA/IHJ1bi5jdXJyZW50U3RyZWFrICsgMSA6IDA7XG4gICAgY29uc3QgbmV4dFJvdW5kID0gd29uID8gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCByb3VuZEluZGV4ICsgMSkgOiByb3VuZEluZGV4O1xuICAgIGNvbnN0IG5leHRSb3VuZHNXb24gPSByb3VuZHNXb24gKyAod29uID8gMSA6IDApO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdvbiAmJiByb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aDtcbiAgICBjb25zdCBmYWlsZWQgPSAhd29uICYmIG5leHRMaXZlcyA8PSAwO1xuICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3Qgcm91bmRSZXN1bHQ6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCA9IHtcbiAgICAgIHJvdW5kOiByb3VuZEluZGV4LFxuICAgICAgYm90SWQ6IGJvdC5pZCxcbiAgICAgIHByb2ZpbGVJZDogYm90LnByb2ZpbGVJZCxcbiAgICAgIHdvbixcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICBzdGF0czogcm91bmRTdGF0cyxcbiAgICAgIGZpbmlzaGVkQXQsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgd2luczogcnVuLndpbnMgKyAod29uID8gMSA6IDApLFxuICAgICAgbG9zc2VzOiBydW4ubG9zc2VzICsgKHdvbiA/IDAgOiAxKSxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IG5leHRTdHJlYWssXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspLFxuICAgICAgcm91bmRJbmRleDogY29tcGxldGVkIHx8IGZhaWxlZCA/IHJvdW5kSW5kZXggOiBuZXh0Um91bmQsXG4gICAgICBjdXJyZW50Um91bmQ6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyByb3VuZEluZGV4IDogbmV4dFJvdW5kLFxuICAgICAgcm91bmRzV29uOiBuZXh0Um91bmRzV29uLFxuICAgICAgaGlnaGVzdFJvdW5kUmVhY2hlZDogTWF0aC5tYXgocnVuLmhpZ2hlc3RSb3VuZFJlYWNoZWQgPz8gcm91bmRJbmRleCwgcm91bmRJbmRleCksXG4gICAgICBhY3RpdmVSb3VuZElkOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gdW5kZWZpbmVkIDogYCR7cnVuLmlkfToke25leHRSb3VuZH1gLFxuICAgICAgcm91bmRSZXN1bHRzOiBbLi4ucnVuLnJvdW5kUmVzdWx0cywgcm91bmRSZXN1bHRdLFxuICAgICAgbGFzdEV2ZW50QXQ6IGZpbmlzaGVkQXQsXG4gICAgICBhY3RpdmVHYW1lOiB1bmRlZmluZWQsXG4gICAgICB1cGRhdGVkQXQ6IGZpbmlzaGVkQXQsXG4gICAgICBmaW5pc2hlZEF0OiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gZmluaXNoZWRBdCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChuZXh0UnVuLnN0YXR1cyA9PT0gJ2FjdGl2ZScgPyBuZXh0UnVuIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHdvbik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldChib3QpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHJvdW5kU3RhdHMpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChcbiAgICAgIHJvdW5kSW5kZXggPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fFxuICAgICAgICBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrXG4gICAgKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldChjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2JldHdlZW4nKTtcblxuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzc1xuICAgICAgLmFwcGx5Um91bmRSZXN1bHQoe1xuICAgICAgICBydW46IG5leHRSdW4sXG4gICAgICAgIHJvdW5kUmVhY2hlZDogcm91bmRJbmRleCxcbiAgICAgICAgd29uLFxuICAgICAgICBjb21wbGV0ZWQsXG4gICAgICAgIHJvdW5kU3RhdHMsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2lkbGUnKSByZXR1cm47XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bik7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuPzogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnKSByZXR1cm47XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBzdGF0dXM6ICdhYmFuZG9uZWQnLFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICBmaW5pc2hlZEF0OiBub3csXG4gICAgfTtcbiAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Muc2F2ZVJ1bihuZXh0UnVuKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgYWJhbmRvbiBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzZXRDaGFsbGVuZ2VTZXNzaW9uU3RhdGUoKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdvbmUtZGV2aWNlJyk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWxGcm9tUnVsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVJ1bGVzTW9kYWwoKTtcbiAgICB0aGlzLnN0YXJ0VHV0b3JpYWwoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoOCk7XG4gICAgICBjb25zdCBnYW1lID0gYXdhaXQgdGhpcy5vbmxpbmUuY3JlYXRlR2FtZSg4KTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZS5pZCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjcmVhdGUgb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQgfHwgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnY29ubmVjdGluZycpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5qb2luR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBvcGVuIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy5vbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ2FtZS5zZXQoXG4gICAgICB0aGlzLnR1dG9yaWFsTW9kZSgpID8gdGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSA6IHRoaXMuY3JlYXRlQ29uZmlndXJlZExvY2FsR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBleGl0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgfVxuXG4gIHJlc2V0VG9Nb2RlU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXR1cm5DaGFsbGVuZ2VUb01lbnUoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAodGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB9XG4gICAgdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5jYW5jZWxBY3RpdmVHYW1lcGxheUZlZWRiYWNrKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuY2FuY2VsQWN0aXZlR2FtZXBsYXlGZWVkYmFjaygpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQocmV0dXJuSG9tZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHwgZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHRoaXMuY3JlYXRlQ29uZmlndXJlZExvY2FsR2FtZShnYW1lLmJvYXJkU2l6ZSkpO1xuICAgIGlmIChyZXR1cm5Ib21lKSB7XG4gICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXN0YXJ0Jyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdtb2RlJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0Q2hhbmdlR2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdnYW1lcycpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdFJlc2lnbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnIHx8ICF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzaWduJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybWVkQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybjtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIGlmICh0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5DaGFsbGVuZ2VUb01lbnUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykge1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3Jykge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHRoaXMuY2hhbGxlbmdlUnVuKCkgPz8gdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSk7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybWVkQWN0aW9uLnNldChhY3Rpb24pO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzaWduR2FtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIHZvaWQgdGhpcy5vbmxpbmUucmVzaWduKGdhbWUuaWQpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5nYW1lLnNldChyZXNpZ25DaGVzc2ltYWxzR2FtZShnYW1lLCBnYW1lLmN1cnJlbnRUdXJuKSk7XG4gICAgdGhpcy5zaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICB9XG5cbiAgb3BlblBsYXlPcHRpb25zTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IGZhbHNlO1xuICAgIHRoaXMuaXNQbGF5T3B0aW9uc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVBsYXlPcHRpb25zTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BsYXlPcHRpb25zTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVQbGF5T3B0aW9uc01vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQbGF5T3B0aW9uc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCkgcmV0dXJuO1xuXG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRHYW1lKCk7XG4gIH1cblxuICBzdGFydFNvbG9HYW1lRnJvbU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nU29sb0dhbWVTdGFydCA9IHRydWU7XG4gICAgdGhpcy5jbG9zZVBsYXlPcHRpb25zTW9kYWwoKTtcbiAgfVxuXG4gIG9wZW5SdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZVJ1bGVzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1J1bGVzTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvcGVuU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VTZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblBhdGhWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuLnNldCgncGF0aCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgb3BlbkFkdmVudHVyZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWluaS1nYW1lcy9jaGVzc2ltYWxzL2FkdmVudHVyZScpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBvcGVuQWJvdXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBoYW5kbGVBYm91dE1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICghdGhpcy5wZW5kaW5nQWJvdXRGZWVkYmFja05hdmlnYXRpb24pIHJldHVybjtcblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvZmVlZGJhY2snKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgaGFuZGxlQWJvdXRBY3Rpb24oZXZlbnQ6IHsgYWN0aW9uPzogQnV0dG9uTWV0YWRhdGEgfSk6IHZvaWQge1xuICAgIGlmIChldmVudC5hY3Rpb24/LnRva2VuID09PSAnZmVlZGJhY2snKSB7XG4gICAgICB0aGlzLnBlbmRpbmdBYm91dEZlZWRiYWNrTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNsb3NlQWJvdXRNb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Fib3V0RmVlZGJhY2tOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZUFib3V0TW9kYWwoKTtcbiAgfVxuXG4gIHNldE11c2ljVm9sdW1lKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qgdm9sdW1lID0gdGhpcy5yYW5nZVZhbHVlVG9OdW1iZXIodmFsdWUpO1xuICAgIGlmICh0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRNdXNpY1ZvbHVtZSh2b2x1bWUgLyAxMDApO1xuICAgIGlmICh2b2x1bWUgPiAwICYmIHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCkpIHRoaXMuc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHNldFNmeFZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5zZnhWb2x1bWVDb250cm9sLnZhbHVlICE9PSB2b2x1bWUpIHtcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC5zZXRWYWx1ZSh2b2x1bWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5zZXRTZnhWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgdHV0b3JpYWxFeHBlY3RlZE1vdmUoKTogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHV0b3JpYWxNb2RlKCkgfHwgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0ZXBzOiBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmVbXSA9IFtcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMywgY29sOiAxIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMiwgY29sOiAyIH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMiwgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMSwgY29sOiA0IH0sIGFuaW1hbDogJ2thbmdhcm9vJyB9LFxuICAgICAgeyBwaWVjZUlkOiAnVEIyJywgdG86IHsgcm93OiAzLCBjb2w6IDUgfSB9LFxuICAgICAgeyBwaWVjZUlkOiAnVFcxJywgdG86IHsgcm93OiAwLCBjb2w6IDQgfSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHN0ZXBzW3RoaXMuZ2FtZSgpLm1vdmVDb3VudF07XG4gIH1cblxuICBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICByZXR1cm4gISFleHBlY3RlZD8uYW5pbWFsICYmIGV4cGVjdGVkLmFuaW1hbCAhPT0gYW5pbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUdXRvcmlhbEdhbWUoKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gICAgY29uc3QgYmFzZSA9IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKDYpO1xuICAgIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXG4gICAgICB7IGlkOiAnVFcxJywgY29sb3I6ICd3aGl0ZScsIHBvc2l0aW9uOiB7IHJvdzogNCwgY29sOiAxIH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMScsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogMiB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjInLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDUgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIzJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA0IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2UsXG4gICAgICBpZDogJ1RVVE9SSUFMJyxcbiAgICAgIHBpZWNlcyxcbiAgICAgIGN1cnJlbnRUdXJuOiAnd2hpdGUnLFxuICAgICAgbW92ZUNvdW50OiAwLFxuICAgICAgcGxheWVyczoge1xuICAgICAgICB3aGl0ZToge1xuICAgICAgICAgIC4uLmJhc2UucGxheWVycy53aGl0ZSxcbiAgICAgICAgICBwb3dlclVubG9ja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmxhY2s6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbW92ZUhpc3Rvcnk6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdmVOdW1iZXI6IDAsXG4gICAgICAgICAgcGllY2VzOiBwaWVjZXMubWFwKHBpZWNlID0+ICh7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9IH0pKSxcbiAgICAgICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgICAgICBzdGF0dXM6ICdpbl9wcm9ncmVzcycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJhc2ljTW92ZXNGb3JDb2xvcihnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gICAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gPyBnYW1lIDogeyAuLi5nYW1lLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICByZXR1cm4gdHVyblN0YXRlLnBpZWNlc1xuICAgICAgLmZpbHRlcihwaWVjZSA9PiBwaWVjZS5jb2xvciA9PT0gY29sb3IgJiYgIXBpZWNlLmNhcHR1cmVkKVxuICAgICAgLmZsYXRNYXAocGllY2UgPT4gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCkpO1xuICB9XG5cbiAgc2VsZWN0Q2VsbChwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvamVjdGlvbk1vZGUgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpIHx8XG4gICAgICB0aGlzLm1vdmVTeW5jaW5nKClcbiAgICApXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKGl0ZW0gPT4gcG9zaXRpb25LZXkoaXRlbS50bykgPT09IHBvc2l0aW9uS2V5KHBvc2l0aW9uKSk7XG4gICAgaWYgKCFtb3ZlKSByZXR1cm47XG5cbiAgICB0aGlzLmNvbW1pdENoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21taXRDaGVzc2ltYWxzTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9ubGluZSBtb3ZlIGZhaWxlZCcsIHsgZ2FtZUlkOiBnYW1lLmlkLCBtb3ZlLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY1R1cm5UaW1lcigpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnR1cm5UaW1lckR1cmF0aW9uU2Vjb25kcygpO1xuICAgIGlmIChcbiAgICAgICFkdXJhdGlvbiB8fFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgIXRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgfHxcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZlU3luY2luZygpIHx8XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlKClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJUdXJuVGltZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuY3VycmVudFR1cm59OiR7Z2FtZS5tb3ZlQ291bnR9OiR7ZHVyYXRpb259YDtcbiAgICBpZiAodGhpcy50dXJuVGltZXJLZXkgPT09IGtleSAmJiB0aGlzLnR1cm5UaW1lckludGVydmFsKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSBrZXk7XG4gICAgdGhpcy50dXJuVGltZXJEdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgIHRoaXMudHVyblRpbWVyRGVhZGxpbmUgPSBEYXRlLm5vdygpICsgZHVyYXRpb24gKiAxMDAwO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KGR1cmF0aW9uKTtcbiAgICB0aGlzLnR1cm5UaW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy50aWNrVHVyblRpbWVyKCksIDI1MCk7XG4gIH1cblxuICBwcml2YXRlIHRpY2tUdXJuVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykge1xuICAgICAgdGhpcy5jbGVhclR1cm5UaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgodGhpcy50dXJuVGltZXJEZWFkbGluZSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuICAgIHRoaXMudHVyblNlY29uZHNSZW1haW5pbmcuc2V0KHJlbWFpbmluZyk7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHJldHVybjtcblxuICAgIGNvbnN0IGV4cGlyZWRLZXkgPSB0aGlzLnR1cm5UaW1lcktleTtcbiAgICB0aGlzLmNsZWFyVHVyblRpbWVyKCk7XG4gICAgaWYgKCFleHBpcmVkS2V5IHx8IHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9PT0gZXhwaXJlZEtleSkgcmV0dXJuO1xuICAgIHRoaXMudHVyblRpbWVyRXhwaXJlZEtleSA9IGV4cGlyZWRLZXk7XG4gICAgdGhpcy5oYW5kbGVUdXJuVGltZXJFeHBpcmVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVHVyblRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR1cm5UaW1lckludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMudHVyblRpbWVySW50ZXJ2YWwpO1xuICAgIHRoaXMudHVyblRpbWVySW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50dXJuVGltZXJLZXkgPSAnJztcbiAgICB0aGlzLnR1cm5UaW1lckRlYWRsaW5lID0gMDtcbiAgICB0aGlzLnR1cm5UaW1lckR1cmF0aW9uID0gMDtcbiAgICB0aGlzLnR1cm5TZWNvbmRzUmVtYWluaW5nLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0dXJuVGltZXJEdXJhdGlvblNlY29uZHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy50dXRvcmlhbE1vZGUoKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5ib2FyZFNpemUgPT09IDggPyBDSEVTU0lNQUxTX0NIQUxMRU5HRV9GSU5BTF9UVVJOX1NFQ09ORFMgOiBDSEVTU0lNQUxTX0NIQUxMRU5HRV9UVVJOX1NFQ09ORFM7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gQ0hFU1NJTUFMU19PTkxJTkVfVFVSTl9TRUNPTkRTO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVR1cm5UaW1lckV4cGlyZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHxcbiAgICAgICF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpIHx8XG4gICAgICB0aGlzLmJvdFRoaW5raW5nKCkgfHxcbiAgICAgIHRoaXMubW92ZVN5bmNpbmcoKSB8fFxuICAgICAgdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZSA9IHRoaXMuY2hvb3NlQXV0b21hdGljVHVybk1vdmUoZ2FtZSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJOb01vdmUnKSxcbiAgICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgICAgZHVyYXRpb246IDIyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXJuVGltZXJBdXRvTW92ZScpLFxuICAgICAgY29sb3I6ICd3YXJuaW5nJyxcbiAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgIH0pO1xuICAgIHRoaXMuY29tbWl0Q2hlc3NpbWFsc01vdmUoZ2FtZSwgbW92ZSk7XG4gIH1cblxuICBwcml2YXRlIGNob29zZUF1dG9tYXRpY1R1cm5Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbW92ZXMgPSBnYW1lLnBpZWNlc1xuICAgICAgLmZpbHRlcihwaWVjZSA9PiBwaWVjZS5jb2xvciA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcChwaWVjZSA9PiBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyhnYW1lLCBwaWVjZS5pZCkpO1xuICAgIGNvbnN0IGJhc2ljTW92ZXMgPSBtb3Zlcy5maWx0ZXIobW92ZSA9PiBtb3ZlLmtpbmQgPT09ICdiYXNpYycpO1xuICAgIHJldHVybiAoXG4gICAgICBiYXNpY01vdmVzLmZpbmQobW92ZSA9PiB0aGlzLmlzUHJvbW90aW9uTW92ZShnYW1lLCBtb3ZlKSkgPz9cbiAgICAgIGJhc2ljTW92ZXMuZmluZChtb3ZlID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpID8/XG4gICAgICBiYXNpY01vdmVzWzBdID8/XG4gICAgICBtb3Zlcy5maW5kKG1vdmUgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCkgPz9cbiAgICAgIG1vdmVzWzBdXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQcm9tb3Rpb25Nb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBtb3ZlLnRvLnJvdyA9PT0gKGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAwIDogZ2FtZS5ib2FyZFNpemUgLSAxKTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZU1vdmUoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5xdWV1ZU1vdmVFZmZlY3QobW92ZSk7XG5cbiAgICBjb25zdCBtb3ZpbmdQaWVjZSA9IGdhbWUucGllY2VzLmZpbmQocGllY2UgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCk7XG4gICAgaWYgKCFtb3ZpbmdQaWVjZSkge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh7XG4gICAgICBjb2xvcjogbW92aW5nUGllY2UuY29sb3IsXG4gICAgICBmcm9tUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLmZyb20ucm93KSxcbiAgICAgIGZyb21Db2w6IHRoaXMuZGlzcGxheUNvbEluZGV4KG1vdmUuZnJvbS5jb2wpLFxuICAgICAgdG9Sb3c6IHRoaXMuZGlzcGxheVJvd0luZGV4KG1vdmUudG8ucm93KSxcbiAgICAgIHRvQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVBbmltYXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUFuaW1hdGVkTW92ZShnYW1lLCB1cGRhdGVkKTtcbiAgICB9LCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmltYXRlZE1vdmUocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQodXBkYXRlZCk7XG4gICAgdGhpcy5wZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZSh1cGRhdGVkKTtcbiAgICB0aGlzLnF1ZXVlU2NvcmVQb3AocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVHYW1lRm9yUnVuKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IENoZXNzaW1hbHNHYW1lU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgY29uc3QgZ2FtZSA9IHJ1bi5hY3RpdmVHYW1lO1xuICAgIGlmICghYm90IHx8ICFnYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5ib2FyZFNpemUgIT09IGJvdC5ib2FyZFNpemUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ29ubGluZScpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJzaXN0QWN0aXZlQ2hhbGxlbmdlR2FtZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBhY3RpdmVHYW1lOiB0aGlzLmNsb25lQ2hhbGxlbmdlR2FtZShnYW1lKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5zYXZlUnVuKG5leHRSdW4pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBzbmFwc2hvdCBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVDaGFsbGVuZ2VHYW1lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7IC4uLmdhbWUsIG9ubGluZTogdW5kZWZpbmVkIH0pKSBhcyBDaGVzc2ltYWxzR2FtZVN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHdoaXRlVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkO1xuICAgIGNvbnN0IGJsYWNrVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkO1xuICAgIGlmICh3aGl0ZVVubG9ja2VkIHx8IGJsYWNrVW5sb2NrZWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTtcbiAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpO1xuICAgICAgY29uc3Qgc3RhcnRQdWxzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSksIDEzNTApO1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGFydFB1bHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RhcnRQdWxzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnIHx8XG4gICAgICBnYW1lLm1vZGUgIT09ICdsb2NhbCcgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSAhPT0gJ2JvdCcgfHxcbiAgICAgIGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8XG4gICAgICBnYW1lLmN1cnJlbnRUdXJuICE9PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICkge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYWxsZW5nZUJvdCA9IHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbmlnaHRtYXJlTW9kZSA9IGNoYWxsZW5nZUJvdCA/ICdub25lJyA6IHRoaXMuYWN0aXZlTmlnaHRtYXJlTW9kZSgpO1xuICAgIGNvbnN0IG1vdmUgPSBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZShnYW1lLCB0aGlzLmVuZ2luZUJvdERpZmZpY3VsdHkoKSwgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpLCB7XG4gICAgICBjaGFsbGVuZ2VSb3VuZDogY2hhbGxlbmdlQm90Py5yb3VuZCxcbiAgICAgIG5pZ2h0bWFyZU1vZGUsXG4gICAgfSk7XG4gICAgaWYgKCFtb3ZlKSB7XG4gICAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIENIRVNTSU1BTFNfQk9UX0NPTE9SKSk7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIHRoaXMucGxheU1vdmVTb3VuZChtb3ZlLCB0cnVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJCb3RUdXJuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJCb2FyZE9yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcik7XG4gICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuaXNCb2FyZE9yaWVudGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldChmYWxzZSksIDM0MCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB0aGlzLmdhbWUoKSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0JvYXJkU29vbigpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmJvYXJkQW5jaG9yPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnNjcmVlbigpID09PSAnZ2FtZScpIHJldHVybjtcbiAgICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydENoZXNzaW1hbHNNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcmVlbigpICE9PSAnZ2FtZScpIHtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwbGF5TW92ZVNvdW5kKG1vdmU6IENoZXNzaW1hbHNNb3ZlLCBpc0JvdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKG1vdmUuYW5pbWFsKSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNQb3dlcihtb3ZlLmFuaW1hbCk7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpLCAxNTApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0NhcHR1cmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzQm90KSB7XG4gICAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNCb3RNb3ZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc01vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogdm9pZCB7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLnN0YXR1c306JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfToke2dhbWUubW92ZUNvdW50fWA7XG4gICAgaWYgKHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0ga2V5O1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKTtcbiAgICBpZiAoIXdpbm5lciB8fCAhc2lkZSB8fCB3aW5uZXIgPT09IHNpZGUpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1ZpY3RvcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzRGVmZWF0KCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUud2lubmVyUmVhc29uID09PSAncmVzaWduYXRpb24nID8gZ2FtZS5jdXJyZW50VHVybiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJSZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmdhbWUoKS5tb3ZlSGlzdG9yeSA/PyBbXTtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChlbnRyaWVzLmxlbmd0aCA+IDEgPyBlbnRyaWVzLmxlbmd0aCAtIDEgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZU1vdmVFZmZlY3QobW92ZTogQ2hlc3NpbWFsc01vdmUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG5cbiAgICBpZiAoIW1vdmUuYW5pbWFsICYmICFtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWxheU1zID0gTWF0aC5tYXgoMCwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyAtIDkwKTtcbiAgICB0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHtcbiAgICAgICAgYW5pbWFsOiBtb3ZlLmFuaW1hbCxcbiAgICAgICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICAgICAgdG86IHsgLi4ubW92ZS50byB9LFxuICAgICAgICBjYXB0dXJlOiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCksIENIRVNTSU1BTFNfUE9XRVJfQ0FMTE9VVF9NUyk7XG4gICAgfSwgZGVsYXlNcyk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlU2NvcmVQb3AocHJldmlvdXM6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHVwZGF0ZWQ6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZVBvcENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lcik7XG4gICAgY29uc3QgZW50cnkgPSB1cGRhdGVkLm1vdmVIaXN0b3J5Py5bdXBkYXRlZC5tb3ZlSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBtb3ZlID0gZW50cnk/Lm1vdmU7XG4gICAgaWYgKCFlbnRyeSB8fCAhbW92ZSB8fCBwcmV2aW91cy5tb3ZlQ291bnQgPT09IHVwZGF0ZWQubW92ZUNvdW50KSB7XG4gICAgICB0aGlzLnNjb3JlUG9wLnNldCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzQ29tYm8gPSB0aGlzLmNhcHR1cmVDb21ib0JlZm9yZU1vdmUocHJldmlvdXMsIG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgbW92ZUNvbG9yID0gdGhpcy5jb2xvckZyb21QaWVjZUlkKG1vdmUucGllY2VJZCk7XG4gICAgY29uc3QgcHJvbW90aW9uID0gZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgcHJvbW90aW9uLCBwcmV2aW91c0NvbWJvKTtcbiAgICBpZiAoc2NvcmUuc2NvcmUgPD0gMSkge1xuICAgICAgdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLnRvLmNvbCkgKyAwLjU7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS50by5yb3cpICsgMC41O1xuICAgIHRoaXMuc2NvcmVQb3Auc2V0KHtcbiAgICAgIHNjb3JlOiBzY29yZS5zY29yZSxcbiAgICAgIGxhYmVsOiBzY29yZS5sYWJlbCxcbiAgICAgIGRldGFpbDogc2NvcmUuY29tYm8gPiAxID8gdGhpcy5zY29yZUNvbWJvTGFiZWwoc2NvcmUuY29tYm8pIDogdW5kZWZpbmVkLFxuICAgICAgeDogYCR7KGNvbCAvIHVwZGF0ZWQuYm9hcmRTaXplKSAqIDEwMH0lYCxcbiAgICAgIHk6IGAkeyhyb3cgLyB1cGRhdGVkLmJvYXJkU2l6ZSkgKiAxMDB9JWAsXG4gICAgICB0b25lUmdiOiAnNzksIDE2OSwgMjE4JyxcbiAgICAgIGR1cmF0aW9uTXM6IENIRVNTSU1BTFNfU0NPUkVfUE9QX01TLFxuICAgICAgdmFyaWFudDogc2NvcmUuY29tYm8gPiAxID8gJ2NvbWJvJyA6IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gJ2NhcHR1cmUnIDogJ3Njb3JlJyxcbiAgICB9KTtcbiAgICB0aGlzLnNjb3JlUG9wQ2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY29yZVBvcC5zZXQodW5kZWZpbmVkKSwgQ0hFU1NJTUFMU19TQ09SRV9QT1BfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYXB0dXJlQ29tYm9CZWZvcmVNb3ZlKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQocGllY2VJZCk7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuIDA7XG4gICAgbGV0IGNvbWJvID0gMDtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8IHRoaXMuY29sb3JGcm9tUGllY2VJZChtb3ZlLnBpZWNlSWQpICE9PSBjb2xvcikgY29udGludWU7XG4gICAgICBjb21ibyA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkID8gY29tYm8gKyAxIDogMDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJvO1xuICB9XG5cbiAgdG9nZ2xlQW5pbWFsKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFZpZXcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCAhdGhpcy5jYW5Vc2VQb3dlckNhcmRzKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMucG93ZXJQbGF5ZXIoKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWwudHlwZV0udXNlZCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkQW5pbWFsKCk7XG4gICAgY29uc3QgbmV4dCA9IGN1cnJlbnQgPT09IGFuaW1hbC50eXBlID8gdW5kZWZpbmVkIDogYW5pbWFsLnR5cGU7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQobmV4dCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUGllY2VJZCgpKSB7XG4gICAgICBjb25zdCBmaXJzdFBpZWNlID0gdGhpcy5nYW1lKCkucGllY2VzLmZpbmQocGllY2UgPT4gIXBpZWNlLmNhcHR1cmVkICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybik7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQoZmlyc3RQaWVjZT8uaWQpO1xuICAgIH1cbiAgICBpZiAobmV4dCkgdGhpcy5hdWRpby5jaGVzc2ltYWxzUG93ZXJQcmV2aWV3KGFuaW1hbC50eXBlKTtcbiAgfVxuXG4gIHBpZWNlQXQocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogQ2hlc3NpbWFsc1BpZWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQodGhpcy5yZXZpZXdHYW1lKCksIHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc0RhcmtDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAocm93ICsgY29sKSAlIDIgPT09IDE7XG4gIH1cblxuICBpc0VkZ2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiByb3cgPT09IDAgfHwgY29sID09PSAwIHx8IHJvdyA9PT0gbGFzdCB8fCBjb2wgPT09IGxhc3Q7XG4gIH1cblxuICBjZWxsV2Vhcihyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmFicygocm93ICogMTcgKyBjb2wgKiAzMSArIHJvdyAqIGNvbCAqIDcpICUgNik7XG4gIH1cblxuICBpc1NlbGVjdGVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgcGllY2UuaWQgPT09IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gIH1cblxuICBpc0xlZ2FsQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sZWdhbE1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNDYXB0dXJlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXB0dXJlTW92ZUtleXMoKS5oYXMocG9zaXRpb25LZXkoeyByb3csIGNvbCB9KSk7XG4gIH1cblxuICBpc1RocmVhdGVuZWRDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiB0aGlzLnRocmVhdGVuZWRQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc0NhcHR1cmVSZWFkeUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmNvbG9yID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybiAmJiB0aGlzLmNhcHR1cmVSZWFkeVBpZWNlSWRzKCkuaGFzKHBpZWNlLmlkKTtcbiAgfVxuXG4gIGlzV2lubmluZ0NlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2lubmluZ01vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNMYXN0TW92ZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFzdE1vdmUgPSB0aGlzLnJldmlld0dhbWUoKS5sYXN0TW92ZTtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRQaWVjZUlkKCkgJiYgISFsYXN0TW92ZSAmJiBwb3NpdGlvbktleShsYXN0TW92ZS50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBpc01vdmluZ1NvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbW92aW5nID0gdGhpcy5tb3ZpbmdQaWVjZSgpO1xuICAgIGlmICghbW92aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVJvd0luZGV4KHJvdykgPT09IG1vdmluZy5mcm9tUm93ICYmIHRoaXMuZGlzcGxheUNvbEluZGV4KGNvbCkgPT09IG1vdmluZy5mcm9tQ29sO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIsIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYW5pbWFsICYmIGVmZmVjdC5hbmltYWwgIT09IGFuaW1hbCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0U291cmNlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBlZmZlY3QgPSB0aGlzLm1vdmVFZmZlY3QoKTtcbiAgICByZXR1cm4gISFlZmZlY3QgJiYgcG9zaXRpb25LZXkoZWZmZWN0LmZyb20pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0Py5jYXB0dXJlICYmIHBvc2l0aW9uS2V5KGVmZmVjdC50bykgPT09IHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSk7XG4gIH1cblxuICBmaWxlTGFiZWwoY29sOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY29sKTtcbiAgfVxuXG4gIHJhbmtMYWJlbChyb3c6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIHJvd31gO1xuICB9XG5cbiAgc2hvd1JhbmtMYWJlbChjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2wgPT09IHRoaXMuZGlzcGxheUNvbHMoKVswXTtcbiAgfVxuXG4gIHNob3dGaWxlTGFiZWwocm93OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kaXNwbGF5Um93cygpO1xuICAgIHJldHVybiByb3cgPT09IHJvd3Nbcm93cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHBsYXllckxhYmVsKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHRoaXMudCgnY2hlc3NpbWFsc1doaXRlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCbGFjaycpO1xuICB9XG5cbiAgY2FwdHVyZXNTY29yZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NvcmUgPSB0aGlzLmNhcHR1cmVzQnlDb2xvcigpO1xuICAgIHJldHVybiBgJHtzY29yZS53aGl0ZX0tJHtzY29yZS5ibGFja31gO1xuICB9XG5cbiAgdHVyblRpbWVyTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzID09PSB1bmRlZmluZWQgPyAnLScgOiBgJHtzZWNvbmRzfXNgO1xuICB9XG5cbiAgc2NvcmVDb21ib0xhYmVsKGNvbWJvOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTY29yZUNvbWJvJykucmVwbGFjZSgne2NvbWJvfScsIFN0cmluZyhjb21ibykpO1xuICB9XG5cbiAgdHVyblRpbWVyUHJvZ3Jlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50dXJuVGltZXJEdXJhdGlvbjtcbiAgICBpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IGR1cmF0aW9uIDw9IDApIHJldHVybiAnMSc7XG4gICAgcmV0dXJuIFN0cmluZyhNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBzZWNvbmRzIC8gZHVyYXRpb24pKSk7XG4gIH1cblxuICBpc1R1cm5UaW1lckxvdygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy50dXJuU2Vjb25kc1JlbWFpbmluZygpO1xuICAgIHJldHVybiBzZWNvbmRzICE9PSB1bmRlZmluZWQgJiYgc2Vjb25kcyA8PSA1O1xuICB9XG5cbiAgdHVyblN0YXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzRmluaXNoZWRDaGlwJyk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm4nKTtcbiAgICBpZiAodGhpcy5ib3RUaGlua2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgIGlmICh0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5pc1dhaXRpbmdGb3JUdXJuKCkgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybkxhYmVsJykgOiB0aGlzLm1vZGVDaGlwTGFiZWwoKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUJvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy53aW5Cb2R5KCk7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25hYmxlVHVybigpKSB7XG4gICAgICBpZiAodGhpcy5pc1R1cm5UaW1lckxvdygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHVyblRpbWVyTG93Qm9keScpO1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKHBhcnQgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgdGhpcy53aW5uZXJTaWRlTGFiZWwoKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHdpbm5lckF2YXRhclVybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB3aW5uZXIgPSBnYW1lLndpbm5lcjtcbiAgICBpZiAoIXdpbm5lciB8fCBnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Llt3aW5uZXJdPy5hdmF0YXJVcmw/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIGlzQ3VycmVudFBsYXllclZpY3RvcnkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSkgPT09IGdhbWUud2lubmVyO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyRGVmZWF0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgIWdhbWUud2lubmVyKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIHJldHVybiAhIXNpZGUgJiYgc2lkZSAhPT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBwcml2YXRlIHBsYXllckRpc3BsYXlOYW1lKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnQgPSBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bY29sb3JdO1xuICAgICAgY29uc3QgbmFtZSA9IHBhcnRpY2lwYW50Py5uYW1lPy50cmltKCk7XG4gICAgICBpZiAobmFtZSkgcmV0dXJuIG5hbWU7XG4gICAgICBjb25zdCBoYW5kbGUgPSBwYXJ0aWNpcGFudD8uaGFuZGxlPy50cmltKCk7XG4gICAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcpIHtcbiAgICAgIHJldHVybiBjb2xvciA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJykgOiB0aGlzLmxvZ2dlZFBsYXllck5hbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGxheWVyTGFiZWwoY29sb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1hdGNoT3Bwb25lbnQoKTogQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnIHx8IChyb2xlICE9PSAnd2hpdGUnICYmIHJvbGUgIT09ICdibGFjaycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wcG9uZW50U2lkZTogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gcm9sZSA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIHJldHVybiBnYW1lLm9ubGluZT8ucGFydGljaXBhbnRzPy5bb3Bwb25lbnRTaWRlXTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudE9wcG9uZW50VWlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LnVpZCA/PyAnJztcbiAgfVxuXG4gIG1vZGVDaGlwTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZScpIDogdGhpcy50KCdjaGVzc2ltYWxzT25lRGV2aWNlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICBpZiAocm9sZSA9PT0gJ3dhaXRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lV2FpdGluZycpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQZW5kaW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzU3BlY3RhdG9yJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBsYXllcicpO1xuICB9XG5cbiAgdHVyblRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyAmJiBnYW1lLmN1cnJlbnRUdXJuID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUikge1xuICAgICAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90VGhpbmtpbmdUaXRsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFR1cm5UaXRsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybicpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbChnYW1lLmN1cnJlbnRUdXJuKSk7XG4gIH1cblxuICBub3JtYWxpemVHYW1lSWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBjb3B5T25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCh1cmwpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzTGlua0NvcGllZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaGFyZU9ubGluZUxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUuc2hhcmVVcmwodGhpcy5nYW1lKCkuaWQsIHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCkpO1xuICAgIGlmIChuYXZpZ2F0b3Iuc2hhcmUpIHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5zaGFyZSh7IHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNUaXRsZScpLCB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNTaGFyZVRleHQnKSwgdXJsIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNvcHlPbmxpbmVMaW5rKCk7XG4gIH1cblxuICBhc3luYyBzaGFyZVByb2plY3Rpb25MaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnByb2plY3Rpb25TaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25UaXRsZScpLFxuICAgICAgICB0ZXh0OiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uU2hhcmVUZXh0JyksXG4gICAgICAgIHVybCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQcm9qZWN0aW9uTGlua0NvcGllZCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGNhblJldmlld1BlbmRpbmdHdWVzdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICByZXR1cm4gISF1aWQgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJyAmJiB0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkgJiYgISFnYW1lLm9ubGluZS5wZW5kaW5nR3Vlc3Q7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5uYW1lID8/IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKTtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEhhbmRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdD8uaGFuZGxlID8/ICcnO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5hdmF0YXJVcmwgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgY29uc3QgbmFtZSA9IChndWVzdD8ubmFtZSB8fCBndWVzdD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcChwYXJ0ID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIGluaXRpYWxzIHx8ICc/JztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEF2YXRhclByb3BzKCk6IFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiBndWVzdD8ubmFtZSxcbiAgICAgICAgaGFuZGxlOiBndWVzdD8uaGFuZGxlLFxuICAgICAgICBhdmF0YXJVcmw6IGd1ZXN0Py5hdmF0YXJVcmwsXG4gICAgICB9LFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/Lm5hbWU/LnRyaW0oKSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRIYW5kbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uaGFuZGxlPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8uYXZhdGFyVXJsPy50cmltKCkgPz8gJyc7XG4gIH1cblxuICByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wcG9uZW50ID0gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKTtcbiAgICBjb25zdCBuYW1lID0gKG9wcG9uZW50Py5uYW1lIHx8IG9wcG9uZW50Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKHBhcnQgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcChwYXJ0ID0+IHRoaXMuY2FwaXRhbGl6ZShwYXJ0KSlcbiAgICAgIC5qb2luKCcnKX1gO1xuICAgIGNvbnN0IG9wcG9uZW50ID0gZW50cnkub3Bwb25lbnROYW1lXG4gICAgICA/IGAgwrcgJHt0aGlzLnQoJ2NoZXNzaW1hbHNIaXN0b3J5QWdhaW5zdCcpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgZW50cnkub3Bwb25lbnROYW1lKX1gXG4gICAgICA6ICcnO1xuICAgIHJldHVybiBgJHt0aGlzLnQob3V0Y29tZUtleSl9JHtvcHBvbmVudH1gO1xuICB9XG5cbiAgYXN5bmMgcmVxdWVzdE9ubGluZVJlbWF0Y2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgaWYgKHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnIHx8IHRoaXMucmVtYXRjaExvYWRpbmcoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGFjY2VwdGluZyA9IHRoaXMucmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZyc7XG4gICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCB0aGlzLm9ubGluZS5yZXF1ZXN0UmVtYXRjaCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICBpZiAobmV4dD8uc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QodGhpcy5nYW1lKCksIG5leHQpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KGFjY2VwdGluZyA/ICdjaGVzc2ltYWxzUmVtYXRjaEFjY2VwdGVkJyA6ICdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRvYXN0JyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyNDAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVIaXN0b3J5V2F0Y2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKTtcbiAgICB0aGlzLmhpc3RvcnlXYXRjaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLndhdGNoT25saW5lSGlzdG9yeSgpLCAyMjApO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUhpc3RvcnkoKTogdm9pZCB7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmUuY3VycmVudFVpZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhpc3RvcnlVaWQgPT09IHVpZCAmJiB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmhpc3RvcnlVaWQgPSB1aWQ7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoSGlzdG9yeSgyNCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGhpc3RvcnkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChoaXN0b3J5KSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLm9ubGluZUhpc3Rvcnkuc2V0KFtdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hDaGFsbGVuZ2VTdGF0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRTdGF0c1N1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Mud2F0Y2hSZWNlbnRSdW5zKDQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBydW5zID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJ1biA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodGhpcy5pc1Jlc3VtYWJsZUNoYWxsZW5nZVJ1bihydW4pID8gcnVuIDogdW5kZWZpbmVkKSxcbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRTdGF0c1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHN0YXRzID0+IHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgICBpZiAoIXRoaXMuY2hhbGxlbmdlU3RhdHNMb2FkZWQoKSkgdGhpcy5jaGFsbGVuZ2VTdGF0c0xvYWRlZC5zZXQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgLy8gQXV0aCBpcyBndWFyYW50ZWVkIGJ5IGF1dGhHdWFyZCDigJQgZXJyb3JzIGFyZSB0cmFuc2llbnQuIFJlc2V0IGFuZCByZXRyeS5cbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQodGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5sb2dnZWRJblVzZXIoKSkgdGhpcy5zdGFydFN0YXRzU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH0sIDQwMDApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVubG9ja2VkTGFiZWwoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQgPyB0aGlzLnQoJ2NoZXNzaW1hbHNVbmxvY2tlZCcpIDogdGhpcy50KCdjaGVzc2ltYWxzTG9ja2VkJyk7XG4gIH1cblxuICBsb2NhbE1vZGVMYWJlbChtb2RlOiBDaGVzc2ltYWxzTG9jYWxNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGVCb2R5JykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2VCb2R5Jyk7XG4gIH1cblxuICBzZWxlY3RCb3REaWZmaWN1bHR5KGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5Q2hvaWNlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGRpZmZpY3VsdHkpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWROaWdodG1hcmUgPSB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZSgpO1xuICAgICAgdGhpcy5zZWxlY3ROaWdodG1hcmVSaXZhbChzZWxlY3RlZE5pZ2h0bWFyZSA9PT0gJ25vbmUnID8gJ2h1bnQnIDogc2VsZWN0ZWROaWdodG1hcmUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlLnNldCgnbm9uZScpO1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoaXRlbSA9PiBpdGVtLmRpZmZpY3VsdHkgPT09IGRpZmZpY3VsdHkpO1xuICAgIGlmIChwcm9maWxlKSB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChwcm9maWxlLmlkKTtcbiAgfVxuXG4gIHNlbGVjdE5pZ2h0bWFyZVJpdmFsKG1vZGU6IEV4Y2x1ZGU8Q2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUsICdub25lJz4pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTmlnaHRtYXJlTW9kZS5zZXQobW9kZSk7XG4gICAgaWYgKG1vZGUgPT09ICdodW50JykgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ2h1bnRlcicpO1xuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdwcmlkZScpIHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KCdwcmVkYXRvcicpO1xuICAgIGVsc2UgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoJ21hZ251cycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVOaWdodG1hcmVNb2RlKCk6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSAhPT0gJ25pZ2h0bWFyZScpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCkgPT09ICdub25lJyA/ICdodW50JyA6IHRoaXMuc2VsZWN0ZWROaWdodG1hcmVNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuZ2luZUJvdERpZmZpY3VsdHkoKTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkge1xuICAgIGNvbnN0IGRpZmZpY3VsdHkgPSB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpO1xuICAgIHJldHVybiBkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJyA/ICdoYXJkJyA6IGRpZmZpY3VsdHk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlTGFiZWwobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVQcmlkZScpO1xuICAgIGlmIChtb2RlID09PSAnbWFnbnVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc05pZ2h0bWFyZU1hZ251cycpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lJyk7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIGlmIChtb2RlID09PSAnaHVudCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVIdW50Qm9keScpO1xuICAgIGlmIChtb2RlID09PSAncHJpZGUnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlUHJpZGVCb2R5Jyk7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTmlnaHRtYXJlTWFnbnVzQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNOaWdodG1hcmVOb25lQm9keScpO1xuICB9XG5cbiAgbmlnaHRtYXJlTW9kZUFzc2V0U3JjKG1vZGU6IENoZXNzaW1hbHNOaWdodG1hcmVNb2RlKTogc3RyaW5nIHtcbiAgICBpZiAobW9kZSA9PT0gJ2h1bnQnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1odW50LnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdwcmlkZScpIHJldHVybiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvY2hhbGxlbmdlLWF2YXRhcnMvbmlnaHRtYXJlLXByaWRlLnBuZyc7XG4gICAgaWYgKG1vZGUgPT09ICdtYWdudXMnKSByZXR1cm4gJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzL25pZ2h0bWFyZS1tYWdudXMucG5nJztcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuaWdodG1hcmVNb2RlR2x5cGgobW9kZTogQ2hlc3NpbWFsc05pZ2h0bWFyZU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnbm9uZScgPyAnT0snIDogJyonO1xuICB9XG5cbiAgcG93ZXJVc2VzTGFiZWwoYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5wb3dlclBsYXllcigpLmNhcmRzW2FuaW1hbF0udXNlc1JlbWFpbmluZztcbiAgICByZXR1cm4gcmVtYWluaW5nICYmIHJlbWFpbmluZyA+IDEgPyAneCcgKyByZW1haW5pbmcgOiAnJztcbiAgfVxuXG4gIGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eUNob2ljZSk6IHN0cmluZyB7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEVhc3knKTtcbiAgICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90SGFyZCcpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbWFzdGVyJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE1hc3RlcicpO1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnbmlnaHRtYXJlJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdE5pZ2h0bWFyZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROb3JtYWwnKTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVMYWJlbChwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmxhYmVsS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVEZXNjcmlwdGlvbihwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChwcm9maWxlLmRlc2NyaXB0aW9uS2V5KTtcbiAgfVxuXG4gIGJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlOiBDaGVzc2ltYWxzQm90UHJvZmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0JvdCR7dGhpcy5jYXBpdGFsaXplKHByb2ZpbGUuaWQpfVRlbmRlbmN5YCk7XG4gIH1cblxuICBib3RQcm9maWxlQXZhdGFyKHByb2ZpbGVJZDogQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZChwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhciA/PyAn4pmfJztcbiAgfVxuXG4gIGJvdFByb2ZpbGVBdmF0YXJTcmMocHJvZmlsZUlkOiBDaGVzc2ltYWxzQm90UHJvZmlsZUlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib3RQcm9maWxlcy5maW5kKHByb2ZpbGUgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKT8uYXZhdGFyU3JjID8/ICcnO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90UHJvZmlsZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBDaGVzc2ltYWxzQm90UHJvZmlsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYm90UHJvZmlsZXMuZmluZChwcm9maWxlID0+IHByb2ZpbGUuaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3BlbmluZ0JvdCgpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbMF07XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51Qm90KCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3Qge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgoYWN0aXZlUnVuKTtcbiAgICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1pbihNYXRoLm1heChhY3RpdmVSb3VuZEluZGV4IC0gMSwgMCksIHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpXTtcbiAgICB9XG4gICAgY29uc3QgYmVzdFJvdW5kID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQ7XG4gICAgY29uc3QgbmV4dFJvdW5kSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChiZXN0Um91bmQsIDApLCB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbbmV4dFJvdW5kSW5kZXhdO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudVJvdW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jaGFsbGVuZ2VNZW51Qm90KCkucm91bmR9LyR7dGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RofWA7XG4gIH1cblxuICBjaGFsbGVuZ2VNZW51TGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5jaGFsbGVuZ2VNZW51UnVuKCk/LmxpdmVzUmVtYWluaW5nID8/IDMpO1xuICB9XG5cbiAgY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGFjdGl2ZVJ1biA9IHRoaXMuY2hhbGxlbmdlTWVudVJ1bigpO1xuICAgIGlmIChhY3RpdmVSdW4pIHJldHVybiBNYXRoLm1heCgwLCBhY3RpdmVSdW4uY3VycmVudFJvdW5kIC0gMSk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VNZW51UnVuKCk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGN1cnJlbnRSdW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICh0aGlzLmlzUmVzdW1hYmxlQ2hhbGxlbmdlUnVuKGN1cnJlbnRSdW4pKSByZXR1cm4gY3VycmVudFJ1bjtcbiAgICByZXR1cm4gdGhpcy5yZXN1bWFibGVDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdE5hbWUoYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5jaGFsbGVuZ2VCb3RQcm9maWxlKGJvdCk7XG4gICAgcmV0dXJuIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdEludHJvKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChib3QuaW50cm9LZXkpO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90RGlmZmljdWx0eUxhYmVsKGJvdDogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm90RGlmZmljdWx0eUxhYmVsKGJvdC5kaWZmaWN1bHR5KTtcbiAgfVxuXG4gIGNoYWxsZW5nZUJvdFN0eWxlTGluZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmNoYWxsZW5nZUJvdFByb2ZpbGUoYm90KTtcbiAgICByZXR1cm4gcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogdGhpcy50KGJvdC5pbnRyb0tleSk7XG4gIH1cblxuICBjaGFsbGVuZ2VCb3RTdGF0dXNMYWJlbChib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFyZWRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUNsZWFyZWRSb3VuZCgpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IHRoaXMuY2hhbGxlbmdlTWVudUJvdCgpLnJvdW5kO1xuICAgIGlmIChjbGVhcmVkUm91bmQgPj0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDbGVhcmVkJyk7XG4gICAgaWYgKGN1cnJlbnRSb3VuZCA9PT0gYm90LnJvdW5kKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxDdXJyZW50Jyk7XG4gICAgaWYgKGJvdC5yb3VuZCA9PT0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxGaW5hbCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSaXZhbFBlbmRpbmcnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1blN0YXR1c0xhYmVsKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHN0cmluZyB7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQ29tcGxldGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzRmFpbGVkJyk7XG4gICAgaWYgKHJ1bi5zdGF0dXMgPT09ICdhYmFuZG9uZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHVzQWJhbmRvbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FjdGl2ZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlUnVuTGluZShydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSdW5MaW5lJylcbiAgICAgIC5yZXBsYWNlKCd7cm91bmR9JywgU3RyaW5nKHJ1bi5oaWdoZXN0Um91bmRSZWFjaGVkID8/IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZHNXb24ocnVuKSkpO1xuICB9XG5cbiAgaXNDaGFsbGVuZ2VBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSAhPT0gJ2lkbGUnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHNob3VsZFNob3dDaGFsbGVuZ2VJbkdhbWVQYW5lbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5zY3JlZW4oKSA9PT0gJ2dhbWUnICYmIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ3BsYXlpbmcnICYmICEhdGhpcy5jaGFsbGVuZ2VSdW4oKVxuICAgICk7XG4gIH1cblxuICBzaG93Q2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAncGxheWluZycgfHwgIXRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyKTtcbiAgICB0aGlzLmNoYWxsZW5nZUludHJvVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VJbnRyb1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzQ2hhbGxlbmdlSW50cm8oKSk7XG4gICAgfSwgMjQwMCk7XG4gIH1cblxuICBkaXNtaXNzQ2hhbGxlbmdlSW50cm8oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2hhbGxlbmdlSW50cm9UaW1lcik7XG4gICAgICB0aGlzLmNoYWxsZW5nZUludHJvVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuY2hhbGxlbmdlSW50cm9WaXNpYmxlLnNldChmYWxzZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQXZhdGFyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5ib3RQcm9maWxlQXZhdGFyKGJvdC5wcm9maWxlSWQpIDogJ+KZnyc7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlQXZhdGFyU3JjKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5ib3RQcm9maWxlQXZhdGFyU3JjKGJvdC5wcm9maWxlSWQpIDogJyc7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICByZXR1cm4gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlUml2YWxMaW5lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIWJvdCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZVJpdmFsTGluZScpXG4gICAgICAucmVwbGFjZSgne3N0eWxlfScsIHRoaXMuY2hhbGxlbmdlQm90U3R5bGVMaW5lKGJvdCkpXG4gICAgICAucmVwbGFjZSgne2RpZmZpY3VsdHl9JywgdGhpcy5jaGFsbGVuZ2VCb3REaWZmaWN1bHR5TGFiZWwoYm90KSk7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlU3RyZWFrTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHgke3RoaXMuY2hhbGxlbmdlUnVuKCk/LmN1cnJlbnRTdHJlYWsgPz8gMH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZUJvYXJkTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpPy5ib2FyZFNpemUgPz8gdGhpcy5nYW1lKCkuYm9hcmRTaXplO1xuICAgIHJldHVybiBgJHtib2FyZFNpemV9eCR7Ym9hcmRTaXplfWA7XG4gIH1cblxuICBjaGFsbGVuZ2VMaXZlVGltZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlY29uZHMgPVxuICAgICAgdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKT8ucm91bmQgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aFxuICAgICAgICA/IENIRVNTSU1BTFNfQ0hBTExFTkdFX0ZJTkFMX1RVUk5fU0VDT05EU1xuICAgICAgICA6IENIRVNTSU1BTFNfQ0hBTExFTkdFX1RVUk5fU0VDT05EUztcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVHVyblNlY29uZHMnKS5yZXBsYWNlKCd7c2Vjb25kc30nLCBTdHJpbmcoc2Vjb25kcykpO1xuICB9XG5cbiAgY2hhbGxlbmdlUm91bmRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke3RoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pfS8ke3RoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aH1gO1xuICB9XG5cbiAgY2hhbGxlbmdlTGl2ZXNMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiAnLSc7XG4gICAgcmV0dXJuICfimaUnLnJlcGVhdChNYXRoLm1heCgwLCBydW4ubGl2ZXNSZW1haW5pbmcpKSB8fCAnMCc7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkVGl0bGUnKTtcbiAgICBpZiAocGhhc2UgPT09ICdmYWlsZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkVGl0bGUnKTtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKClcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25UaXRsZScpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdFRpdGxlJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VPdXRjb21lQm9keSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgYm9keUtleSA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdjb21wbGV0ZWQnXG4gICAgICAgID8gJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb21wbGV0ZWRCb2R5J1xuICAgICAgICA6IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2ZhaWxlZCdcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoYm9keUtleSlcbiAgICAgIC5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpXG4gICAgICAucmVwbGFjZSgne2xpdmVzfScsIFN0cmluZyhydW4/LmxpdmVzUmVtYWluaW5nID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3t3aW5zfScsIFN0cmluZyhydW4/LndpbnMgPz8gMCkpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcodGhpcy50b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cykpKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXIoYm90LnByb2ZpbGVJZCkgOiAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZVN1bW1hcnlBdmF0YXJTcmMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIHJldHVybiBib3QgPyB0aGlzLmJvdFByb2ZpbGVBdmF0YXJTcmMoYm90LnByb2ZpbGVJZCkgOiAnJztcbiAgfVxuXG4gIGNoYWxsZW5nZVJvdW5kU3RhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJvdCA9XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdwbGF5aW5nJ1xuICAgICAgICA/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KClcbiAgICAgICAgOiAodGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKSk7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCByb3VuZCA9IGJvdD8ucm91bmQgPz8gKHJ1biA/IHRoaXMuY2hhbGxlbmdlUnVuUm91bmRJbmRleChydW4pIDogMSk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhZ2UnKVxuICAgICAgLnJlcGxhY2UoJ3tyb3VuZH0nLCBTdHJpbmcocm91bmQpKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBTdHJpbmcodGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhc3RCb3QoKSA/PyB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGNvbnN0IGJvdE5hbWUgPSBib3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUoYm90KSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUml2YWxWb2ljZScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gIH1cblxuICBjaGFsbGVuZ2VSaXZhbFZvaWNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VDb21wbGV0ZWRUaXRsZScpO1xuICAgIGlmIChwaGFzZSA9PT0gJ2ZhaWxlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZUZhaWxlZFRpdGxlJyk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSA/ICdXb24nIDogJ0xvc3QnO1xuICAgIGNvbnN0IGJvdFRpdGxlID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdUaXRsZScpO1xuICAgIGlmIChib3RUaXRsZSkgcmV0dXJuIGJvdFRpdGxlO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VWb2ljZVdvblRpdGxlJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VMb3N0VGl0bGUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJpdmFsVm9pY2VCb2R5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgYm90ID0gdGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBib3ROYW1lID0gYm90ID8gdGhpcy5jaGFsbGVuZ2VCb3ROYW1lKGJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkgPyAnV29uJyA6ICdMb3N0JztcbiAgICBjb25zdCBib3RCb2R5ID0gdGhpcy5jaGFsbGVuZ2VWb2ljZVRleHQoYm90LCByZXN1bHQsICdCb2R5Jyk7XG4gICAgaWYgKGJvdEJvZHkpIHJldHVybiBib3RCb2R5LnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSk7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2NvbXBsZXRlZCdcbiAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlQ29tcGxldGVkQm9keSdcbiAgICAgICAgOiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdmYWlsZWQnXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlRmFpbGVkQm9keSdcbiAgICAgICAgICA6IHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2VXb25Cb2R5J1xuICAgICAgICAgICAgOiAnY2hlc3NpbWFsc0NoYWxsZW5nZVZvaWNlTG9zdEJvZHknO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KS5yZXBsYWNlKCd7Ym90fScsIGJvdE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFsbGVuZ2VWb2ljZVRleHQoXG4gICAgYm90OiBDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkLFxuICAgIHJlc3VsdDogJ1dvbicgfCAnTG9zdCcsXG4gICAgcGFydDogJ1RpdGxlJyB8ICdCb2R5J1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghYm90KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGtleSA9IGBjaGVzc2ltYWxzQ2hhbGxlbmdlVm9pY2Uke3Jlc3VsdH0ke3RoaXMuY2FwaXRhbGl6ZShib3QuaWQpfSR7cGFydH1gO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gdGV4dCA9PT0ga2V5ID8gdW5kZWZpbmVkIDogdGV4dDtcbiAgfVxuXG4gIGNoYWxsZW5nZU5leHRSaXZhbExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbExhYmVsJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmV0cnlSaXZhbExhYmVsJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VDb250aW51ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNoYWxsZW5nZUxhc3RXb24oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJldHJ5Uml2YWwnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4gJiYgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aClcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kQ3RhJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbCcpO1xuICB9XG5cbiAgY2hhbGxlbmdlTmV4dFJpdmFsSGludCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jaGFsbGVuZ2VMYXN0V29uKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXRyeUhpbnQnKTtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmIChydW4gJiYgdGhpcy5jaGFsbGVuZ2VSdW5Sb3VuZEluZGV4KHJ1bikgPT09IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aClcbiAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJvdW5kSGludCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxIaW50Jyk7XG4gIH1cblxuICBjaGFsbGVuZ2VXaW5SYXRlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlV2luUmF0ZUxhYmVsKCdjaGFsbGVuZ2UnKTtcbiAgfVxuXG4gIG1vZGVXaW5SYXRlTGFiZWwobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgbW9kZVN0YXRzID0gc3RhdHMubW9kZVN0YXRzW21vZGVdO1xuICAgIGNvbnN0IHBsYXllZCA9IG1vZGVTdGF0cy5wbGF5ZWQ7XG4gICAgaWYgKCFwbGF5ZWQpIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIGAke01hdGgucm91bmQoKG1vZGVTdGF0cy53aW5zIC8gcGxheWVkKSAqIDEwMCl9JWA7XG4gIH1cblxuICBtb2RlU3RhdHNMaW5lKG1vZGU6IENoZXNzaW1hbHNTdGF0c01vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLm1vZGVTdGF0c1ttb2RlXTtcbiAgICBpZiAoIXN0YXRzLnBsYXllZCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0VtcHR5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc01vZGVTdGF0c0xpbmUnKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZWR9JywgU3RyaW5nKHN0YXRzLnBsYXllZCkpXG4gICAgICAucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLndpbnMpKVxuICAgICAgLnJlcGxhY2UoJ3tsb3NzZXN9JywgU3RyaW5nKHN0YXRzLmxvc3NlcykpO1xuICB9XG5cbiAgcHJvZ3Jlc3NQb3dlclN0YXRzKCk6IENoZXNzaW1hbHNQcm9ncmVzc01ldHJpY1ZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdlYWdsZScpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5lYWdsZSB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnYnVsbCcpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5idWxsIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLmFuaW1hbExhYmVsKCdrYW5nYXJvbycpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5rYW5nYXJvbyB9LFxuICAgICAgeyBsYWJlbDogdGhpcy5hbmltYWxMYWJlbCgnbGlvbicpLCB2YWx1ZTogc3RhdHMucG93ZXJzVXNlZC5saW9uIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQb3dlckNhcHR1cmVzJyksIHZhbHVlOiBzdGF0cy5wb3dlckNhcHR1cmVzIH0sXG4gICAgICB7IGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQcm9tb3Rpb25zJyksIHZhbHVlOiBzdGF0cy5wcm9tb3Rpb25zIH0sXG4gICAgXTtcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5pdGVtcy5tYXAoaSA9PiBpLnZhbHVlKSwgMSk7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpID0+ICh7XG4gICAgICAuLi5pLFxuICAgICAgcGVyY2VudDogYCR7TWF0aC5tYXgoNCwgTWF0aC5yb3VuZCgoaS52YWx1ZSAvIG1heCkgKiAxMDApKX0lYCxcbiAgICB9KSk7XG4gIH1cblxuICBwYXRoSGlnaGxpZ2h0cygpOiBDaGVzc2ltYWxzUGF0aEhpZ2hsaWdodFZpZXdbXSB7XG4gICAgY29uc3Qgc3RhdHMgPSB0aGlzLmNoYWxsZW5nZVN0YXRzKCk7XG4gICAgY29uc3QgZmF2b3JpdGVQb3dlciA9IHRoaXMuZmF2b3JpdGVQb3dlckxhYmVsKCk7XG4gICAgY29uc3QgbmV4dEFjaGlldmVtZW50ID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKS5maW5kKGFjaGlldmVtZW50ID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhXaW5zVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFdpbnNCb2R5JykucmVwbGFjZSgne3dpbnN9JywgU3RyaW5nKHN0YXRzLnRvdGFsV2lucykpLFxuICAgICAgICB2YWx1ZTogU3RyaW5nKHN0YXRzLnRvdGFsV2lucyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC90cm9waHkucG5nJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoU3RyZWFrVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFN0cmVha0JvZHknKS5yZXBsYWNlKCd7c3RyZWFrfScsIFN0cmluZyhzdGF0cy5iZXN0V2luU3RyZWFrKSksXG4gICAgICAgIHZhbHVlOiBzdGF0cy5iZXN0V2luU3RyZWFrID8gU3RyaW5nKHN0YXRzLmJlc3RXaW5TdHJlYWspIDogdGhpcy50KCdjaGVzc2ltYWxzUGF0aFByYWN0aWNlVmFsdWUnKSxcbiAgICAgICAgaW1hZ2VTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9wYXRoL3N0cmVhay5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhGYXZvcml0ZVBvd2VyVGl0bGUnKSxcbiAgICAgICAgYm9keTogZmF2b3JpdGVQb3dlclxuICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUGF0aEZhdm9yaXRlUG93ZXJCb2R5JykucmVwbGFjZSgne3Bvd2VyfScsIGZhdm9yaXRlUG93ZXIpXG4gICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRmF2b3JpdGVQb3dlckVtcHR5JyksXG4gICAgICAgIHZhbHVlOiBmYXZvcml0ZVBvd2VyIHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhQcmFjdGljZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9mYXZvcml0ZS1wb3dlci5wbmcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5VGl0bGUnKSxcbiAgICAgICAgYm9keTogbmV4dEFjaGlldmVtZW50Py5ib2R5IHx8IHRoaXMudCgnY2hlc3NpbWFsc1BhdGhOZXh0VHJvcGh5RG9uZScpLFxuICAgICAgICB2YWx1ZTogbmV4dEFjaGlldmVtZW50Py50aXRsZSB8fCB0aGlzLnQoJ2NoZXNzaW1hbHNQYXRoRG9uZVZhbHVlJyksXG4gICAgICAgIGltYWdlU3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvcGF0aC9wcm9ncmVzcy1tYXAucG5nJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGZhdm9yaXRlUG93ZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBvd2VycyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5wb3dlcnNVc2VkO1xuICAgIGNvbnN0IGVudHJpZXM6IEFycmF5PHsgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdmFsdWU6IG51bWJlciB9PiA9IFtcbiAgICAgIHsgYW5pbWFsOiAnZWFnbGUnLCB2YWx1ZTogcG93ZXJzLmVhZ2xlIH0sXG4gICAgICB7IGFuaW1hbDogJ2J1bGwnLCB2YWx1ZTogcG93ZXJzLmJ1bGwgfSxcbiAgICAgIHsgYW5pbWFsOiAna2FuZ2Fyb28nLCB2YWx1ZTogcG93ZXJzLmthbmdhcm9vIH0sXG4gICAgICB7IGFuaW1hbDogJ2xpb24nLCB2YWx1ZTogcG93ZXJzLmxpb24gfSxcbiAgICBdO1xuICAgIGNvbnN0IGZhdm9yaXRlID0gZW50cmllcy5yZWR1Y2UoKGJlc3QsIGVudHJ5KSA9PiAoZW50cnkudmFsdWUgPiBiZXN0LnZhbHVlID8gZW50cnkgOiBiZXN0KSwgZW50cmllc1swXSk7XG4gICAgcmV0dXJuIGZhdm9yaXRlLnZhbHVlID4gMCA/IHRoaXMuYW5pbWFsTGFiZWwoZmF2b3JpdGUuYW5pbWFsKSA6ICcnO1xuICB9XG5cbiAgcHJvZ3Jlc3NSaW5ncygpOiBDaGVzc2ltYWxzUHJvZ3Jlc3NSaW5nVmlld1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2NoYWxsZW5nZScsIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykpLFxuICAgICAgdGhpcy5wcm9ncmVzc1JpbmcoJ2JvdCcsIHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSksXG4gICAgICB0aGlzLnByb2dyZXNzUmluZygnb25saW5lJywgdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJykpLFxuICAgIF07XG4gIH1cblxuICBwcm9ncmVzc01ldHJpY1BlcmNlbnQodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1lcmljVmFsdWUpIHx8IG51bWVyaWNWYWx1ZSA8PSAwKSByZXR1cm4gJzAlJztcbiAgICByZXR1cm4gYCR7TWF0aC5taW4oMTAwLCBNYXRoLm1heCg4LCBudW1lcmljVmFsdWUgKiAxMikpfSVgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9ncmVzc1JpbmcobW9kZTogQ2hlc3NpbWFsc1N0YXRzTW9kZSwgbGFiZWw6IHN0cmluZyk6IENoZXNzaW1hbHNQcm9ncmVzc1JpbmdWaWV3IHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5tb2RlU3RhdHNbbW9kZV07XG4gICAgY29uc3Qgd2luUmF0ZSA9IHN0YXRzLnBsYXllZCA/IE1hdGgucm91bmQoKHN0YXRzLndpbnMgLyBzdGF0cy5wbGF5ZWQpICogMTAwKSA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsLFxuICAgICAgdmFsdWU6IHN0YXRzLnBsYXllZCA/IGAke3dpblJhdGV9JWAgOiAnLScsXG4gICAgICBkZXRhaWw6IHRoaXMubW9kZVN0YXRzTGluZShtb2RlKSxcbiAgICAgIHByb2dyZXNzOiBgJHt3aW5SYXRlfSVgLFxuICAgIH07XG4gIH1cblxuICBjaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTogQ2hlc3NpbWFsc0FjaGlldmVtZW50Vmlld1tdIHtcbiAgICBjb25zdCBzdGF0cyA9IHRoaXMuY2hhbGxlbmdlU3RhdHMoKTtcbiAgICBjb25zdCBib3RTdGF0cyA9IHN0YXRzLm1vZGVTdGF0cy5ib3Q7XG4gICAgY29uc3Qgb25saW5lU3RhdHMgPSBzdGF0cy5tb2RlU3RhdHMub25saW5lO1xuICAgIGNvbnN0IHRvdGFsUG93ZXJzID1cbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWQuZWFnbGUgKyBzdGF0cy5wb3dlcnNVc2VkLmJ1bGwgKyBzdGF0cy5wb3dlcnNVc2VkLmthbmdhcm9vICsgc3RhdHMucG93ZXJzVXNlZC5saW9uO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEZpcnN0V2luVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRGaXJzdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzEnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMudG90YWxXaW5zID4gMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudFN0cmVha1RpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50U3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiAnMycsXG4gICAgICAgIHVubG9ja2VkOiBzdGF0cy5iZXN0V2luU3RyZWFrID49IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRQb3dlclRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0FjaGlldmVtZW50UG93ZXJCb2R5JyksXG4gICAgICAgIGljb246ICdQJyxcbiAgICAgICAgdW5sb2NrZWQ6IHRvdGFsUG93ZXJzID49IDEwIHx8IHN0YXRzLnBvd2VyQ2FwdHVyZXMgPj0gNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudENoYW1waW9uVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRDaGFtcGlvbkJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICB1bmxvY2tlZDogc3RhdHMuY2hhbGxlbmdlc0NvbXBsZXRlZCA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudEJvdFdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ0InLFxuICAgICAgICB1bmxvY2tlZDogYm90U3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRCb3RGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBib3RTdGF0cy53aW5zID49IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVXaW5UaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2hpZXZlbWVudE9ubGluZVdpbkJvZHknKSxcbiAgICAgICAgaWNvbjogJ08nLFxuICAgICAgICB1bmxvY2tlZDogb25saW5lU3RhdHMud2lucyA+IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQWNoaWV2ZW1lbnRPbmxpbmVGaXZlQm9keScpLFxuICAgICAgICBpY29uOiAnNScsXG4gICAgICAgIHVubG9ja2VkOiBvbmxpbmVTdGF0cy5wbGF5ZWQgPj0gNSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNoYWxsZW5nZUZlYXR1cmVkQWNoaWV2ZW1lbnRzKCk6IENoZXNzaW1hbHNBY2hpZXZlbWVudFZpZXdbXSB7XG4gICAgY29uc3QgYWNoaWV2ZW1lbnRzID0gdGhpcy5jaGFsbGVuZ2VBY2hpZXZlbWVudHMoKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uYWNoaWV2ZW1lbnRzLmZpbHRlcihhY2hpZXZlbWVudCA9PiBhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgICAuLi5hY2hpZXZlbWVudHMuZmlsdGVyKGFjaGlldmVtZW50ID0+ICFhY2hpZXZlbWVudC51bmxvY2tlZCksXG4gICAgXS5zbGljZSgwLCA0KTtcbiAgfVxuXG4gIGNoYWxsZW5nZVRlbnNpb25Nb21lbnQoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZVRlbnNpb25WaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaGFzZSA9IHRoaXMuY2hhbGxlbmdlUGhhc2UoKTtcbiAgICBpZiAocGhhc2UgIT09ICdwbGF5aW5nJyAmJiBwaGFzZSAhPT0gJ2JldHdlZW4nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4pIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBuZXh0Qm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBjb25zdCBsYXN0Qm90ID0gcGhhc2UgPT09ICdwbGF5aW5nJyA/IG5leHRCb3QgOiAodGhpcy5jaGFsbGVuZ2VMYXN0Qm90KCkgPz8gbmV4dEJvdCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGxhc3RCb3QgPyB0aGlzLmNoYWxsZW5nZUJvdE5hbWUobGFzdEJvdCkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG5cbiAgICBpZiAocnVuLmxpdmVzUmVtYWluaW5nIDw9IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMYXN0TGlmZVRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxhc3RMaWZlQm9keScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGljb246ICfimaUnLFxuICAgICAgICBjcml0aWNhbDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlbWF0Y2hUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZW1hdGNoQm9keScpLnJlcGxhY2UoJ3tib3R9JywgYm90TmFtZSksXG4gICAgICAgIGljb246ICfihrsnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJvdW5kSW5kZXggPSB0aGlzLmNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuKTtcbiAgICBpZiAocm91bmRJbmRleCA+PSB0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFJpdmFsVGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmluYWxSaXZhbEJvZHknKSxcbiAgICAgICAgaWNvbjogJzgnLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyb3VuZEluZGV4ID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVUaXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VGaW5hbFpvbmVCb2R5JyksXG4gICAgICAgIGljb246ICc3JyxcbiAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocnVuLmN1cnJlbnRTdHJlYWsgPj0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0cmVha1RpdGxlJykucmVwbGFjZSgne3N0cmVha30nLCBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspKSxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RyZWFrQm9keScpLFxuICAgICAgICBpY29uOiBTdHJpbmcocnVuLmN1cnJlbnRTdHJlYWspLFxuICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFsbGVuZ2VIYXNOZXdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkKCk7XG4gIH1cblxuICB0b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cz86IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzKTogbnVtYmVyIHtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gIH1cblxuICBwcml2YXRlIGNoYWxsZW5nZVJ1blJvdW5kSW5kZXgocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCBNYXRoLm1heCgxLCBydW4ucm91bmRJbmRleCA/PyBydW4uY3VycmVudFJvdW5kID8/IDEpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuUm91bmRzV29uKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHJ1bi5yb3VuZHNXb24gPz8gcnVuLndpbnMgPz8gMCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUdhbWVTY29yZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwbGF5ZXJQcmVmaXg/OiBzdHJpbmcpOiBDaGVzc2ltYWxzR2FtZVNjb3JlVmlldyB7XG4gICAgbGV0IHNjb3JlID0gMDtcbiAgICBsZXQgY29tYm8gPSAwO1xuICAgIGxldCBiZXN0Q29tYm8gPSAwO1xuICAgIGxldCBiZXN0TW92ZTogQ2hlc3NpbWFsc01vdmVTY29yZVZpZXcgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlKSBjb250aW51ZTtcbiAgICAgIGlmIChwbGF5ZXJQcmVmaXggJiYgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKHBsYXllclByZWZpeCkpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBtb3ZlQ29sb3IgPSB0aGlzLmNvbG9yRnJvbVBpZWNlSWQobW92ZS5waWVjZUlkKTtcbiAgICAgIGNvbnN0IGlzUHJvbW90aW9uID1cbiAgICAgICAgZW50cnkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIGVudHJ5Lndpbm5lclJlYXNvbiA9PT0gJ3Byb21vdGlvbicgJiYgZW50cnkud2lubmVyID09PSBtb3ZlQ29sb3I7XG4gICAgICBjb25zdCBtb3ZlU2NvcmUgPSB0aGlzLnNjb3JlQ2hlc3NpbWFsc01vdmUobW92ZSwgaXNQcm9tb3Rpb24sIGNvbWJvKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgICBjb21ibyArPSAxO1xuICAgICAgICBiZXN0Q29tYm8gPSBNYXRoLm1heChiZXN0Q29tYm8sIGNvbWJvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbWJvID0gMDtcbiAgICAgIH1cblxuICAgICAgc2NvcmUgKz0gbW92ZVNjb3JlLnNjb3JlO1xuICAgICAgaWYgKCFiZXN0TW92ZSB8fCBtb3ZlU2NvcmUuc2NvcmUgPiBiZXN0TW92ZS5zY29yZSkgYmVzdE1vdmUgPSBtb3ZlU2NvcmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYmVzdENvbWJvLCBiZXN0TW92ZSwgc2NvcmUgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2NvcmVDaGVzc2ltYWxzTW92ZShtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgcHJvbW90aW9uOiBib29sZWFuLCBjdXJyZW50Q29tYm86IG51bWJlcik6IENoZXNzaW1hbHNNb3ZlU2NvcmVWaWV3IHtcbiAgICBjb25zdCBjYXB0dXJlID0gISFtb3ZlLmNhcHR1cmVzUGllY2VJZDtcbiAgICBjb25zdCBjb21ibyA9IGNhcHR1cmUgPyBjdXJyZW50Q29tYm8gKyAxIDogMDtcbiAgICBjb25zdCBzY29yZSA9XG4gICAgICAxICtcbiAgICAgIChjYXB0dXJlID8gKG1vdmUuYW5pbWFsID8gNSA6IDMpIDogMCkgK1xuICAgICAgKG1vdmUuYW5pbWFsICYmICFjYXB0dXJlID8gMSA6IDApICtcbiAgICAgIChwcm9tb3Rpb24gPyA4IDogMCkgK1xuICAgICAgKGNvbWJvID4gMSA/IGNvbWJvIC0gMSA6IDApO1xuICAgIGNvbnN0IGxhYmVsS2V5ID0gcHJvbW90aW9uXG4gICAgICA/ICdjaGVzc2ltYWxzU2NvcmVQcm9tb3Rpb24nXG4gICAgICA6IGNhcHR1cmUgJiYgbW92ZS5hbmltYWxcbiAgICAgICAgPyAnY2hlc3NpbWFsc1Njb3JlUG93ZXJDYXB0dXJlJ1xuICAgICAgICA6IGNhcHR1cmVcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzU2NvcmVDYXB0dXJlJ1xuICAgICAgICAgIDogbW92ZS5hbmltYWxcbiAgICAgICAgICAgID8gJ2NoZXNzaW1hbHNTY29yZVBvd2VyTW92ZSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNTY29yZU1vdmUnO1xuICAgIHJldHVybiB7XG4gICAgICBjb21ibyxcbiAgICAgIGxhYmVsOiB0aGlzLnQobGFiZWxLZXkpLFxuICAgICAgc2NvcmUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JGcm9tUGllY2VJZChwaWVjZUlkOiBzdHJpbmcpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ1cnKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RXJykpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChwaWVjZUlkLnN0YXJ0c1dpdGgoJ0InKSB8fCBwaWVjZUlkLnN0YXJ0c1dpdGgoJ1RCJykpIHJldHVybiAnYmxhY2snO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQbGF5ZXJSb3VuZFN0YXRzKGdhbWUsICdXJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgcGxheWVyUHJlZml4OiBzdHJpbmcpOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB7XG4gICAgY29uc3Qgcm91bmRTY29yZSA9IHRoaXMuY3JlYXRlR2FtZVNjb3JlKGdhbWUsIHBsYXllclByZWZpeCk7XG4gICAgY29uc3QgcGxheWVyQ29sb3IgPSBwbGF5ZXJQcmVmaXggPT09ICdCJyA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIGNvbnN0IHN0YXRzOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyA9IHtcbiAgICAgIHBvd2Vyc1VzZWQ6IHsgZWFnbGU6IDAsIGJ1bGw6IDAsIGthbmdhcm9vOiAwLCBsaW9uOiAwIH0sXG4gICAgICBwb3dlckNhcHR1cmVzOiAwLFxuICAgICAgcHJvbW90aW9uczogZ2FtZS53aW5uZXIgPT09IHBsYXllckNvbG9yICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICAgIHNjb3JlOiByb3VuZFNjb3JlLnNjb3JlLFxuICAgICAgYmVzdE1vdmVTY29yZTogcm91bmRTY29yZS5iZXN0TW92ZT8uc2NvcmUgPz8gMCxcbiAgICAgIGJlc3RDb21ibzogcm91bmRTY29yZS5iZXN0Q29tYm8sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdhbWUubW92ZUhpc3RvcnkgPz8gW10pIHtcbiAgICAgIGNvbnN0IG1vdmUgPSBlbnRyeS5tb3ZlO1xuICAgICAgaWYgKCFtb3ZlIHx8ICFtb3ZlLnBpZWNlSWQuc3RhcnRzV2l0aChwbGF5ZXJQcmVmaXgpKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLm1vdmVzICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLmNhcHR1cmVzICs9IDE7XG4gICAgICBpZiAoIW1vdmUuYW5pbWFsKSBjb250aW51ZTtcbiAgICAgIHN0YXRzLnBvd2Vyc1VzZWRbbW92ZS5hbmltYWxdICs9IDE7XG4gICAgICBpZiAobW92ZS5jYXB0dXJlc1BpZWNlSWQpIHN0YXRzLnBvd2VyQ2FwdHVyZXMgKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RlU3RhdHNSZXN1bHQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6XG4gICAgfCB7XG4gICAgICAgIG1vZGU6IEV4Y2x1ZGU8Q2hlc3NpbWFsc1N0YXRzTW9kZSwgJ2NoYWxsZW5nZSc+O1xuICAgICAgICB3b246IGJvb2xlYW47XG4gICAgICAgIHJvdW5kU3RhdHM6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzO1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCB0aGlzLnR1dG9yaWFsTW9kZSgpIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnbG9jYWwnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpICE9PSAnYm90JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IG1vZGU6ICdib3QnLCB3b246IGdhbWUud2lubmVyID09PSAnd2hpdGUnLCByb3VuZFN0YXRzOiB0aGlzLmNyZWF0ZVBsYXllclJvdW5kU3RhdHMoZ2FtZSwgJ1cnKSB9O1xuICAgIH1cbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpID8/IHRoaXMub25saW5lLmN1cnJlbnRVaWQ7XG4gICAgY29uc3Qgc2lkZSA9IHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpIDogdW5kZWZpbmVkO1xuICAgIGlmIChzaWRlICE9PSAnd2hpdGUnICYmIHNpZGUgIT09ICdibGFjaycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6ICdvbmxpbmUnLFxuICAgICAgd29uOiBnYW1lLndpbm5lciA9PT0gc2lkZSxcbiAgICAgIHJvdW5kU3RhdHM6IHRoaXMuY3JlYXRlUGxheWVyUm91bmRTdGF0cyhnYW1lLCBzaWRlID09PSAnd2hpdGUnID8gJ1cnIDogJ0InKSxcbiAgICB9O1xuICB9XG5cbiAgYW5pbWFsTGFiZWwodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNBbmltYWwke3RoaXMuY2FwaXRhbGl6ZSh0eXBlKX1gKTtcbiAgfVxuXG4gIGFuaW1hbEdseXBoKHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBnbHlwaHM6IFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgc3RyaW5nPiA9IHtcbiAgICAgIGVhZ2xlOiAn4oaXJyxcbiAgICAgIGJ1bGw6ICfil4YnLFxuICAgICAga2FuZ2Fyb286ICfipLQnLFxuICAgICAgbGlvbjogJ+KZmicsXG4gICAgfTtcbiAgICByZXR1cm4gZ2x5cGhzW3R5cGVdO1xuICB9XG5cbiAgYW5pbWFsQXNzZXRTcmModHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBBTklNQUxTLmZpbmQoYW5pbWFsID0+IGFuaW1hbC50eXBlID09PSB0eXBlKT8uYXNzZXRTcmMgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIHBvd2VyQ2FsbG91dFRvbmUodHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRvbmVzOiBSZWNvcmQ8Q2hlc3NpbWFsc0FuaW1hbFR5cGUsIHN0cmluZz4gPSB7XG4gICAgICBlYWdsZTogJzc5LCAxNjksIDIxOCcsXG4gICAgICBidWxsOiAnMjIwLCAxMTYsIDU4JyxcbiAgICAgIGthbmdhcm9vOiAnMTM5LCAxMTIsIDIyMicsXG4gICAgICBsaW9uOiAnMjIxLCAxNTgsIDI2JyxcbiAgICB9O1xuICAgIHJldHVybiB0b25lc1t0eXBlXTtcbiAgfVxuXG4gIGNhblJldmlld1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpID8/IDApID4gMDtcbiAgfVxuXG4gIGNhblJldmlld05leHQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgcmV0dXJuIGluZGV4ICE9PSB1bmRlZmluZWQgJiYgaW5kZXggPCB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcmV2aWV3UHJldmlvdXNNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4IDw9IDApIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCAtIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXZpZXdOZXh0TW92ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA+PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxKSByZXR1cm47XG4gICAgdGhpcy5yZXZpZXdJbmRleC5zZXQoaW5kZXggKyAxKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVwbGF5UG9zaXRpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzLnJlcGxheUVudHJpZXMoKVtpbmRleF07XG4gICAgaWYgKCFlbnRyeSB8fCBlbnRyeS5tb3ZlTnVtYmVyID09PSAwKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVwbGF5U3RhcnQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVwbGF5TW92ZScpXG4gICAgICAucmVwbGFjZSgne21vdmV9JywgYCR7ZW50cnkubW92ZU51bWJlcn1gKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YCk7XG4gIH1cblxuICBzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gdGhpcy5yZXBsYXlFbnRyaWVzKCkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVJvd0luZGV4KHJvdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSByb3cgOiByb3c7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2xJbmRleChjb2w6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSAxIC0gY29sIDogY29sO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbiA9IHRoaXMub25saW5lLndhdGNoR2FtZShnYW1lSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lTm90Rm91bmQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnbGl2ZScpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2FtZSgpO1xuICAgICAgICAgIHRoaXMuYXBwbHlPbmxpbmVHYW1lU25hcHNob3QocHJldmlvdXMsIHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpKTtcbiAgICAgICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNhbmNlbEFjdGl2ZUdhbWVwbGF5RmVlZGJhY2soKTtcbiAgICAgICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbmxpbmVPcGVuRXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnQ0hFU1NJTUFMU19HQU1FX0VYUElSRUQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRCb2R5Jyk7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9OT1RfRk9VTkQnKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZ2FtZS5zZXQoc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgIGlmIChwcmV2aW91cy5pZCAhPT0gc3RhdGUuaWQgfHwgcHJldmlvdXMuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8IHRoaXMucmV2aWV3SW5kZXgoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB9XG4gICAgaWYgKHByZXZpb3VzLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJiBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc3RhdGUuYm9hcmRTaXplKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICBjb25zdCBwcmV2aW91c1BlbmRpbmdLZXkgPVxuICAgICAgcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==