valtech-components 4.0.434 → 4.0.435

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.
@@ -1,4 +1,5 @@
1
1
  import { Component, computed, inject, signal } from '@angular/core';
2
+ import { LightRippleDirective } from '../../../directives/light-ripple.directive';
2
3
  import { I18nService } from '../../../services/i18n';
3
4
  import { MINI_GAMES_I18N } from './mini-games.i18n';
4
5
  import * as i0 from "@angular/core";
@@ -115,6 +116,7 @@ export class ChristianityGameComponent {
115
116
  this.selectedAttacker = signal(null);
116
117
  this.selectedPreview = signal(null);
117
118
  this.previewTilt = signal({ rotateX: 5, rotateY: -5, shiftX: 0, shiftY: 0 });
119
+ this.hoveredHandIndex = signal(null);
118
120
  this.showHistory = signal(false);
119
121
  this.offeringsSeat = signal(null);
120
122
  this.player = computed(() => this.game().players.P1);
@@ -164,8 +166,40 @@ export class ChristianityGameComponent {
164
166
  const offset = index - center;
165
167
  const rotate = offset * 5;
166
168
  const lift = Math.abs(offset) * 0.25;
169
+ const hoverLift = opponent ? 0 : this.handWaveLift(index);
167
170
  const base = opponent ? 'rotate(180deg)' : '';
168
- return `${base} translateY(${lift}rem) rotate(${rotate}deg)`;
171
+ return `${base} translateY(${lift + hoverLift}rem) rotate(${rotate}deg)`;
172
+ }
173
+ handCardZIndex(index) {
174
+ const hovered = this.hoveredHandIndex();
175
+ if (hovered === null)
176
+ return 2;
177
+ const distance = Math.abs(index - hovered);
178
+ return Math.max(2, 8 - distance);
179
+ }
180
+ setHoveredHandIndex(index) {
181
+ this.hoveredHandIndex.set(index);
182
+ }
183
+ clearHoveredHandIndex() {
184
+ this.hoveredHandIndex.set(null);
185
+ }
186
+ releaseHoveredHand(event) {
187
+ if (event.pointerType !== 'mouse') {
188
+ window.setTimeout(() => this.clearHoveredHandIndex(), 180);
189
+ }
190
+ }
191
+ handWaveLift(index) {
192
+ const hovered = this.hoveredHandIndex();
193
+ if (hovered === null)
194
+ return 0;
195
+ const distance = Math.abs(index - hovered);
196
+ if (distance === 0)
197
+ return -1.15;
198
+ if (distance === 1)
199
+ return -0.58;
200
+ if (distance === 2)
201
+ return -0.22;
202
+ return 0;
169
203
  }
170
204
  readyOfferings(player) {
171
205
  return player.offerings.reduce((total, offering) => total + (offering.ready ? offering.value : 0), 0);
@@ -493,11 +527,16 @@ export class ChristianityGameComponent {
493
527
  </section>
494
528
 
495
529
  <section class="christianity-hand-shelf christianity-hand-shelf--opponent">
530
+ <div class="christianity-hand-meter christianity-hand-meter--opponent">
531
+ <span>{{ t('christianityHand') }}</span>
532
+ <strong>{{ opponentHandCount() }}</strong>
533
+ </div>
496
534
  <section class="christianity-hand-fan christianity-hand-fan--opponent" [attr.aria-label]="t('christianityOpponentHand')">
497
535
  @for (_ of hiddenHandCards(opponentHandCount()); track $index) {
498
536
  <button
499
537
  type="button"
500
538
  class="christianity-card-preview-card christianity-card-preview-card--back"
539
+ valLightRipple
501
540
  [style.transform]="fanTransform($index, opponentHandCount(), true)"
502
541
  [attr.aria-label]="t('christianityHiddenCard')"
503
542
  ></button>
@@ -509,7 +548,7 @@ export class ChristianityGameComponent {
509
548
  <section class="christianity-player-side christianity-player-side--opponent">
510
549
  <section class="christianity-player-rack christianity-player-rack--opponent">
511
550
  <div class="christianity-offerings-zone">
512
- <button type="button" class="christianity-offering-pile" (click)="openOfferings('P2')">
551
+ <button type="button" class="christianity-offering-pile" valLightRipple (click)="openOfferings('P2')">
513
552
  <i aria-hidden="true"></i>
514
553
  <i aria-hidden="true"></i>
515
554
  <i aria-hidden="true"></i>
@@ -517,14 +556,11 @@ export class ChristianityGameComponent {
517
556
  <strong>{{ readyOfferings(opponent()) }}/{{ totalOfferings(opponent()) }}</strong>
518
557
  </button>
519
558
  </div>
520
- <button type="button" class="christianity-leader-card" [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
559
+ <button type="button" class="christianity-leader-card" valLightRipple [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
521
560
  <span>{{ opponent().leaderName }}</span>
522
561
  <strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
523
562
  </button>
524
- <div class="christianity-hand-count">
525
- <span>{{ t('christianityHand') }}</span>
526
- <strong>{{ opponentHandCount() }}</strong>
527
- </div>
563
+ <span class="christianity-rack-spacer" aria-hidden="true"></span>
528
564
  </section>
529
565
 
530
566
  <section class="christianity-battle-zone christianity-battle-zone--opponent" [attr.aria-label]="t('christianityOpponentBattle')">
@@ -533,6 +569,7 @@ export class ChristianityGameComponent {
533
569
  <button
534
570
  type="button"
535
571
  class="christianity-card-preview-card christianity-card-preview-card--battle"
572
+ valLightRipple
536
573
  [class.is-target]="selectedAttacker()"
537
574
  (click)="handleOpponentCharacter(slot.card)"
538
575
  >
@@ -547,14 +584,14 @@ export class ChristianityGameComponent {
547
584
  </section>
548
585
 
549
586
  <section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
550
- <button type="button" class="christianity-zone-pile christianity-zone-pile--history" (click)="showHistory.set(true)">
587
+ <button type="button" class="christianity-zone-pile christianity-zone-pile--history" valLightRipple (click)="showHistory.set(true)">
551
588
  <i aria-hidden="true"></i>
552
589
  <i aria-hidden="true"></i>
553
590
  <i aria-hidden="true"></i>
554
591
  <span>{{ t('christianityHistory') }}</span>
555
592
  <strong>{{ game().historyZone.length }}</strong>
556
593
  </button>
557
- <button type="button" class="christianity-zone-pile christianity-zone-pile--deck" aria-live="polite" (click)="inspectDeck()">
594
+ <button type="button" class="christianity-zone-pile christianity-zone-pile--deck" valLightRipple aria-live="polite" (click)="inspectDeck()">
558
595
  <i aria-hidden="true"></i>
559
596
  <i aria-hidden="true"></i>
560
597
  <i aria-hidden="true"></i>
@@ -574,6 +611,7 @@ export class ChristianityGameComponent {
574
611
  <button
575
612
  type="button"
576
613
  class="christianity-card-preview-card christianity-card-preview-card--battle"
614
+ valLightRipple
577
615
  [class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
578
616
  [class.is-exhausted]="!slot.card.canAttack"
579
617
  (click)="selectAttacker(slot.card)"
@@ -589,7 +627,7 @@ export class ChristianityGameComponent {
589
627
 
590
628
  <section class="christianity-player-rack">
591
629
  <div class="christianity-offerings-zone">
592
- <button type="button" class="christianity-offering-pile" (click)="openOfferings('P1')">
630
+ <button type="button" class="christianity-offering-pile" valLightRipple (click)="openOfferings('P1')">
593
631
  <i aria-hidden="true"></i>
594
632
  <i aria-hidden="true"></i>
595
633
  <i aria-hidden="true"></i>
@@ -597,7 +635,7 @@ export class ChristianityGameComponent {
597
635
  <strong>{{ readyOfferings(player()) }}/{{ totalOfferings(player()) }}</strong>
598
636
  </button>
599
637
  </div>
600
- <button type="button" class="christianity-leader-card" (click)="inspectLeader('P1')">
638
+ <button type="button" class="christianity-leader-card" valLightRipple (click)="inspectLeader('P1')">
601
639
  <span>{{ player().leaderName }}</span>
602
640
  <strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
603
641
  </button>
@@ -619,15 +657,24 @@ export class ChristianityGameComponent {
619
657
  </section>
620
658
 
621
659
  <section class="christianity-hand-shelf">
622
- <section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')">
660
+ <div class="christianity-hand-meter">
661
+ <span>{{ t('christianityHand') }}</span>
662
+ <strong>{{ player().hand?.length ?? 0 }}</strong>
663
+ </div>
664
+ <section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')" (pointerleave)="clearHoveredHandIndex()">
623
665
  @for (cardId of player().hand ?? []; track cardId + $index) {
624
666
  @let card = cardDefinition(cardId);
625
667
  <button
626
668
  type="button"
627
669
  class="christianity-card-preview-card christianity-card-preview-card--hand"
670
+ valLightRipple
628
671
  [class.is-selected]="selectedHandCard() === cardId"
629
672
  [class.is-disabled]="!canPlay(card)"
673
+ [style.z-index]="handCardZIndex($index)"
630
674
  [style.transform]="fanTransform($index, player().hand?.length ?? 0, false)"
675
+ (pointerenter)="setHoveredHandIndex($index)"
676
+ (pointerdown)="setHoveredHandIndex($index)"
677
+ (pointerup)="releaseHoveredHand($event)"
631
678
  (click)="selectHandCard(cardId)"
632
679
  >
633
680
  <small>
@@ -662,6 +709,9 @@ export class ChristianityGameComponent {
662
709
  (pointermove)="tiltPreview($event)"
663
710
  (pointerleave)="resetPreviewTilt()"
664
711
  >
712
+ <button type="button" class="christianity-floating-card-close" (click)="closePreview()">
713
+ {{ t('close') }}
714
+ </button>
665
715
  <small>{{ selectedPreview()?.eyebrow }}</small>
666
716
  <strong>{{ selectedPreview()?.title }}</strong>
667
717
  <span>{{ selectedPreview()?.meta }}</span>
@@ -692,7 +742,7 @@ export class ChristianityGameComponent {
692
742
  <div class="christianity-history-grid">
693
743
  @for (cardId of game().historyZone; track cardId + $index) {
694
744
  @let card = cardDefinition(cardId);
695
- <button type="button" class="christianity-card-preview-card" (click)="inspectHistoryCard(cardId)">
745
+ <button type="button" class="christianity-card-preview-card" valLightRipple (click)="inspectHistoryCard(cardId)">
696
746
  <small>{{ card.type === 'offering' ? t('christianityOfferingCard') : t('christianityCharacterCard') }}</small>
697
747
  <span>{{ card.name }}</span>
698
748
  <strong>
@@ -722,7 +772,7 @@ export class ChristianityGameComponent {
722
772
  <div class="christianity-offering-list">
723
773
  @for (offering of offeringPlayer.offerings; track offering.instanceId) {
724
774
  <article class="christianity-offering-row" [class.is-exhausted]="!offering.ready">
725
- <button type="button" class="christianity-offering-card" (click)="inspectOffering(offering)">
775
+ <button type="button" class="christianity-offering-card" valLightRipple (click)="inspectOffering(offering)">
726
776
  <small>{{ t('christianityOfferingCard') }}</small>
727
777
  <span>{{ offering.name }}</span>
728
778
  <strong>+{{ offering.value }}</strong>
@@ -749,11 +799,11 @@ export class ChristianityGameComponent {
749
799
  </section>
750
800
  }
751
801
  </main>
752
- `, isInline: true, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-match-strip,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-match-player strong,.christianity-match-player small,.christianity-scoreboard span,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-match-strip{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:.45rem;border:1px solid rgba(36,48,68,.1);border-radius:.75rem;background:#fff}.christianity-match-player{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0}.christianity-match-player--opponent{direction:rtl}.christianity-match-player--opponent div{direction:ltr;text-align:right}.christianity-match-player div{display:grid;min-width:0}.christianity-match-player strong,.christianity-match-player small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-match-player small,.christianity-scoreboard span{color:#1f293394;font-size:.72rem}.christianity-scoreboard{display:grid;justify-items:center;min-width:4.2rem;padding:0 .55rem;border-right:1px solid rgba(36,48,68,.1);border-left:1px solid rgba(36,48,68,.1)}.christianity-scoreboard strong{font-size:1.2rem;line-height:1}.christianity-table{display:grid;gap:.45rem;padding:.45rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player-side{display:grid;gap:.35rem;padding:.35rem .3rem;border-radius:.7rem;background:#ffffff57;grid-template-rows:minmax(7rem,1fr) auto;min-height:13.75rem}.christianity-player-side--opponent{grid-template-rows:auto minmax(7rem,1fr)}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-shelf{display:grid;min-height:8.1rem;padding:.35rem .25rem 0;overflow:hidden}.christianity-hand-shelf--opponent{min-height:5.6rem;padding:0 .25rem .15rem}.christianity-hand-fan--opponent{min-height:4.4rem;align-items:start}.christianity-card-preview-card,.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{width:clamp(4rem,14vw,5.7rem);min-height:clamp(5rem,16vw,6.6rem);background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-offering-pile span,.christianity-offering-card span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-offering-pile strong,.christianity-offering-card strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(5.9rem,7rem) minmax(5rem,1fr) minmax(4.2rem,7rem);gap:.45rem;align-items:end;justify-items:stretch}.christianity-player-rack--opponent{align-items:start}.christianity-hand-count{display:grid;align-content:center;justify-items:center;width:100%;min-height:3.4rem;padding:.35rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#ffffffad}.christianity-hand-count span{color:#1f293394;font-size:.72rem}.christianity-hand-count strong{font-size:1.05rem}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-start;justify-self:start;width:100%}.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-offering-pile{position:relative;isolation:isolate;overflow:hidden;justify-self:start;width:min(100%,5.9rem);min-height:6.6rem;padding:.62rem .52rem .55rem;background:linear-gradient(180deg,#fff,#f8fafc),linear-gradient(135deg,rgba(250,204,21,.18),transparent 42%)}.christianity-offering-pile i{position:absolute;inset:.6rem auto auto .7rem;z-index:-1;width:2.55rem;height:3.55rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:linear-gradient(180deg,#ffffffeb,#f1f5f9eb),radial-gradient(circle at 78% 18%,#facc15 0 .38rem,transparent .4rem);box-shadow:0 .35rem .85rem #102a431a;transform:rotate(-5deg)}.christianity-offering-pile i:nth-child(2){transform:translate(.28rem,.08rem) rotate(3deg)}.christianity-offering-pile i:nth-child(3){transform:translate(.55rem,.18rem) rotate(-1deg)}.christianity-leader-card{width:min(100%,6.5rem);min-height:5.8rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-card,.christianity-zone-pile{min-height:6.45rem;padding:.62rem .52rem .55rem}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:.62rem .72rem auto auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(20rem,calc(100vw - 2rem));min-height:min(27rem,calc(100vh - 5rem));padding:1rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;touch-action:none;transform:translate(calc(-50% + var(--preview-shift-x, 0px)),calc(-50% + var(--preview-shift-y, 0px))) perspective(48rem) rotateX(var(--preview-rotate-x, 5deg)) rotateY(var(--preview-rotate-y, -5deg));transition:transform 90ms ease-out}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{font-size:clamp(1.35rem,8vw,2rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}.christianity-offerings-drawer{max-height:min(30rem,calc(100vh - 3rem))}.christianity-offering-list{display:grid;gap:.6rem;overflow-y:auto;padding:.1rem}.christianity-offering-row{display:grid;grid-template-columns:minmax(4.9rem,6.2rem) minmax(0,1fr);gap:.65rem;align-items:stretch;padding:.45rem;border:1px solid rgba(36,48,68,.12);border-radius:.65rem;background:#fff}.christianity-offering-row.is-exhausted{opacity:.68}.christianity-offering-card{min-height:7.4rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 82% 14%,#facc15 0 .48rem,transparent .5rem);box-shadow:0 .45rem 1rem #102a431a}.christianity-offering-card small{color:#1f293394;font-size:.66rem;text-transform:uppercase}.christianity-offering-card p,.christianity-offering-row p{margin:0}.christianity-offering-card p{align-self:end;color:#1f2933a3;font-size:.72rem;line-height:1.2}.christianity-offering-row>div{display:grid;gap:.35rem;align-content:center;min-width:0}.christianity-offering-row>div p{color:#1f2933b8;font-size:.85rem;line-height:1.3}.christianity-offering-row>div button{justify-self:start;min-height:2.2rem;padding:0 .7rem;border:1px solid rgba(16,42,67,.16);border-radius:.5rem;background:#102a43;color:#fff;font:inherit;font-weight:800}.christianity-offering-row>div button:disabled{background:#e2e8f0;color:#1f293394}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-match-strip{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.35rem;padding:.35rem}.christianity-match-player{gap:.35rem}.christianity-match-player small{display:none}.christianity-scoreboard{min-width:3.65rem;padding:0 .35rem}.christianity-scoreboard strong{font-size:1.05rem}.christianity-table{gap:.35rem}.christianity-player-side{padding:.3rem .25rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-hand-shelf{min-height:7.4rem;padding-top:.25rem}.christianity-hand-shelf--opponent{min-height:5rem;padding-top:0}.christianity-player-rack{grid-template-columns:minmax(4.7rem,5.9rem) minmax(4.8rem,1fr) minmax(3.7rem,5rem)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-offering-pile,.christianity-zone-card,.christianity-zone-pile{min-height:6.15rem;padding:.58rem .46rem .5rem}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-offering-row{grid-template-columns:minmax(4.5rem,5.5rem) minmax(0,1fr);gap:.5rem}.christianity-hand-fan--opponent{min-height:4rem}}\n"] }); }
802
+ `, isInline: true, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-match-strip,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-match-player strong,.christianity-match-player small,.christianity-scoreboard span,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-match-strip{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:.45rem;border:1px solid rgba(36,48,68,.1);border-radius:.75rem;background:#fff}.christianity-match-player{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0}.christianity-match-player--opponent{direction:rtl}.christianity-match-player--opponent div{direction:ltr;text-align:right}.christianity-match-player div{display:grid;min-width:0}.christianity-match-player strong,.christianity-match-player small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-match-player small,.christianity-scoreboard span{color:#1f293394;font-size:.72rem}.christianity-scoreboard{display:grid;justify-items:center;min-width:4.2rem;padding:0 .55rem;border-right:1px solid rgba(36,48,68,.1);border-left:1px solid rgba(36,48,68,.1)}.christianity-scoreboard strong{font-size:1.2rem;line-height:1}.christianity-table{display:grid;gap:.45rem;padding:.45rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player-side{display:grid;gap:.35rem;padding:.35rem .3rem;border-radius:.7rem;background:#ffffff57;grid-template-rows:minmax(7rem,1fr) auto;min-height:13.75rem}.christianity-player-side--opponent{grid-template-rows:auto minmax(7rem,1fr)}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-shelf{position:relative;display:grid;min-height:8.1rem;padding:.9rem .25rem 0;overflow:hidden}.christianity-hand-shelf--opponent{min-height:5.6rem;padding:.7rem .25rem .15rem}.christianity-hand-fan--opponent{min-height:4.4rem;align-items:start}.christianity-card-preview-card,.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{width:clamp(4rem,14vw,5.7rem);min-height:clamp(5rem,16vw,6.6rem);background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-offering-pile span,.christianity-offering-card span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{position:relative;z-index:2;font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-offering-pile strong,.christianity-offering-card strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{position:relative;z-index:3;justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(5.9rem,7rem) minmax(5rem,1fr) minmax(4.2rem,7rem);gap:.45rem;align-items:end;justify-items:stretch}.christianity-player-rack--opponent{align-items:start}.christianity-hand-meter{position:absolute;top:0;right:.35rem;z-index:4;display:inline-grid;grid-auto-flow:column;gap:.25rem;align-items:center;min-height:1.7rem;padding:.18rem .46rem;border:1px solid rgba(36,48,68,.12);border-radius:999px;background:#ffffffe6;box-shadow:0 .35rem .8rem #102a4314}.christianity-hand-meter--opponent{top:.15rem}.christianity-hand-meter span{color:#1f293394;font-size:.68rem}.christianity-hand-meter strong{font-size:.86rem}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-start;justify-self:start;width:100%}.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-offering-pile{position:relative;isolation:isolate;overflow:hidden;justify-self:start;width:min(100%,5.9rem);min-height:6.6rem;padding:.7rem .52rem .55rem;background:linear-gradient(180deg,#fff,#f8fafc),linear-gradient(135deg,rgba(250,204,21,.18),transparent 42%)}.christianity-offering-pile i{position:absolute;inset:auto auto 1.1rem .72rem;z-index:-1;width:2.55rem;height:3.55rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:linear-gradient(180deg,#ffffffeb,#f1f5f9eb),radial-gradient(circle at 78% 18%,#facc15 0 .38rem,transparent .4rem);box-shadow:0 .35rem .85rem #102a431a;transform:rotate(-5deg)}.christianity-offering-pile i:nth-child(2){transform:translate(.28rem,.08rem) rotate(3deg)}.christianity-offering-pile i:nth-child(3){transform:translate(.55rem,.18rem) rotate(-1deg)}.christianity-leader-card{align-self:center;justify-self:center;width:clamp(4.75rem,17vw,6rem);min-height:clamp(6.6rem,22vw,8.4rem)}.christianity-rack-spacer{display:block;min-height:1px}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-card,.christianity-zone-pile{min-height:6.45rem;padding:.7rem .52rem .55rem}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:auto .72rem 1.02rem auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(23rem,calc(100vw - 1.25rem));min-height:min(31rem,calc(100vh - 3.5rem));padding:1.15rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;touch-action:none;transform:translate(calc(-50% + var(--preview-shift-x, 0px)),calc(-50% + var(--preview-shift-y, 0px))) perspective(48rem) rotateX(var(--preview-rotate-x, 5deg)) rotateY(var(--preview-rotate-y, -5deg));transition:transform 90ms ease-out}.christianity-floating-card-close{position:absolute;top:.65rem;right:.65rem;z-index:2;min-height:2rem;padding:0 .6rem;border:1px solid rgba(36,48,68,.14);border-radius:999px;background:#ffffffe6;color:#1f2933c7;font:inherit;font-size:.76rem;font-weight:800;box-shadow:0 .45rem 1rem #102a431a}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{padding-right:4.4rem;font-size:clamp(1.55rem,8vw,2.35rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}.christianity-offerings-drawer{max-height:min(30rem,calc(100vh - 3rem))}.christianity-offering-list{display:grid;gap:.6rem;overflow-y:auto;padding:.1rem}.christianity-offering-row{display:grid;grid-template-columns:minmax(4.9rem,6.2rem) minmax(0,1fr);gap:.65rem;align-items:stretch;padding:.45rem;border:1px solid rgba(36,48,68,.12);border-radius:.65rem;background:#fff}.christianity-offering-row.is-exhausted{opacity:.68}.christianity-offering-card{min-height:7.4rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 82% 14%,#facc15 0 .48rem,transparent .5rem);box-shadow:0 .45rem 1rem #102a431a}.christianity-offering-card small{color:#1f293394;font-size:.66rem;text-transform:uppercase}.christianity-offering-card p,.christianity-offering-row p{margin:0}.christianity-offering-card p{align-self:end;color:#1f2933a3;font-size:.72rem;line-height:1.2}.christianity-offering-row>div{display:grid;gap:.35rem;align-content:center;min-width:0}.christianity-offering-row>div p{color:#1f2933b8;font-size:.85rem;line-height:1.3}.christianity-offering-row>div button{justify-self:start;min-height:2.2rem;padding:0 .7rem;border:1px solid rgba(16,42,67,.16);border-radius:.5rem;background:#102a43;color:#fff;font:inherit;font-weight:800}.christianity-offering-row>div button:disabled{background:#e2e8f0;color:#1f293394}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-match-strip{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.35rem;padding:.35rem}.christianity-match-player{gap:.35rem}.christianity-match-player small{display:none}.christianity-scoreboard{min-width:3.65rem;padding:0 .35rem}.christianity-scoreboard strong{font-size:1.05rem}.christianity-table{gap:.35rem}.christianity-player-side{padding:.3rem .25rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-hand-shelf{min-height:7.4rem;padding-top:.8rem}.christianity-hand-shelf--opponent{min-height:5rem;padding-top:.7rem}.christianity-player-rack{grid-template-columns:minmax(4.7rem,5.9rem) minmax(4.8rem,1fr) minmax(3.7rem,5rem)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-offering-pile,.christianity-zone-card,.christianity-zone-pile{min-height:6.15rem;padding:.58rem .46rem .5rem}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-leader-card{width:clamp(4.55rem,20vw,5.7rem);min-height:clamp(6.15rem,27vw,7.6rem)}.christianity-offering-row{grid-template-columns:minmax(4.5rem,5.5rem) minmax(0,1fr);gap:.5rem}.christianity-hand-fan--opponent{min-height:4rem}}\n"], dependencies: [{ kind: "directive", type: LightRippleDirective, selector: "[valLightRipple]" }] }); }
753
803
  }
754
804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChristianityGameComponent, decorators: [{
755
805
  type: Component,
756
- args: [{ selector: 'val-christianity-game', standalone: true, template: `
806
+ args: [{ selector: 'val-christianity-game', standalone: true, imports: [LightRippleDirective], template: `
757
807
  <main class="christianity-shell">
758
808
  <section class="christianity-header">
759
809
  <div>
@@ -788,11 +838,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
788
838
  </section>
789
839
 
790
840
  <section class="christianity-hand-shelf christianity-hand-shelf--opponent">
841
+ <div class="christianity-hand-meter christianity-hand-meter--opponent">
842
+ <span>{{ t('christianityHand') }}</span>
843
+ <strong>{{ opponentHandCount() }}</strong>
844
+ </div>
791
845
  <section class="christianity-hand-fan christianity-hand-fan--opponent" [attr.aria-label]="t('christianityOpponentHand')">
792
846
  @for (_ of hiddenHandCards(opponentHandCount()); track $index) {
793
847
  <button
794
848
  type="button"
795
849
  class="christianity-card-preview-card christianity-card-preview-card--back"
850
+ valLightRipple
796
851
  [style.transform]="fanTransform($index, opponentHandCount(), true)"
797
852
  [attr.aria-label]="t('christianityHiddenCard')"
798
853
  ></button>
@@ -804,7 +859,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
804
859
  <section class="christianity-player-side christianity-player-side--opponent">
805
860
  <section class="christianity-player-rack christianity-player-rack--opponent">
806
861
  <div class="christianity-offerings-zone">
807
- <button type="button" class="christianity-offering-pile" (click)="openOfferings('P2')">
862
+ <button type="button" class="christianity-offering-pile" valLightRipple (click)="openOfferings('P2')">
808
863
  <i aria-hidden="true"></i>
809
864
  <i aria-hidden="true"></i>
810
865
  <i aria-hidden="true"></i>
@@ -812,14 +867,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
812
867
  <strong>{{ readyOfferings(opponent()) }}/{{ totalOfferings(opponent()) }}</strong>
813
868
  </button>
814
869
  </div>
815
- <button type="button" class="christianity-leader-card" [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
870
+ <button type="button" class="christianity-leader-card" valLightRipple [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
816
871
  <span>{{ opponent().leaderName }}</span>
817
872
  <strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
818
873
  </button>
819
- <div class="christianity-hand-count">
820
- <span>{{ t('christianityHand') }}</span>
821
- <strong>{{ opponentHandCount() }}</strong>
822
- </div>
874
+ <span class="christianity-rack-spacer" aria-hidden="true"></span>
823
875
  </section>
824
876
 
825
877
  <section class="christianity-battle-zone christianity-battle-zone--opponent" [attr.aria-label]="t('christianityOpponentBattle')">
@@ -828,6 +880,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
828
880
  <button
829
881
  type="button"
830
882
  class="christianity-card-preview-card christianity-card-preview-card--battle"
883
+ valLightRipple
831
884
  [class.is-target]="selectedAttacker()"
832
885
  (click)="handleOpponentCharacter(slot.card)"
833
886
  >
@@ -842,14 +895,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
842
895
  </section>
843
896
 
844
897
  <section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
845
- <button type="button" class="christianity-zone-pile christianity-zone-pile--history" (click)="showHistory.set(true)">
898
+ <button type="button" class="christianity-zone-pile christianity-zone-pile--history" valLightRipple (click)="showHistory.set(true)">
846
899
  <i aria-hidden="true"></i>
847
900
  <i aria-hidden="true"></i>
848
901
  <i aria-hidden="true"></i>
849
902
  <span>{{ t('christianityHistory') }}</span>
850
903
  <strong>{{ game().historyZone.length }}</strong>
851
904
  </button>
852
- <button type="button" class="christianity-zone-pile christianity-zone-pile--deck" aria-live="polite" (click)="inspectDeck()">
905
+ <button type="button" class="christianity-zone-pile christianity-zone-pile--deck" valLightRipple aria-live="polite" (click)="inspectDeck()">
853
906
  <i aria-hidden="true"></i>
854
907
  <i aria-hidden="true"></i>
855
908
  <i aria-hidden="true"></i>
@@ -869,6 +922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
869
922
  <button
870
923
  type="button"
871
924
  class="christianity-card-preview-card christianity-card-preview-card--battle"
925
+ valLightRipple
872
926
  [class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
873
927
  [class.is-exhausted]="!slot.card.canAttack"
874
928
  (click)="selectAttacker(slot.card)"
@@ -884,7 +938,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
884
938
 
885
939
  <section class="christianity-player-rack">
886
940
  <div class="christianity-offerings-zone">
887
- <button type="button" class="christianity-offering-pile" (click)="openOfferings('P1')">
941
+ <button type="button" class="christianity-offering-pile" valLightRipple (click)="openOfferings('P1')">
888
942
  <i aria-hidden="true"></i>
889
943
  <i aria-hidden="true"></i>
890
944
  <i aria-hidden="true"></i>
@@ -892,7 +946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
892
946
  <strong>{{ readyOfferings(player()) }}/{{ totalOfferings(player()) }}</strong>
893
947
  </button>
894
948
  </div>
895
- <button type="button" class="christianity-leader-card" (click)="inspectLeader('P1')">
949
+ <button type="button" class="christianity-leader-card" valLightRipple (click)="inspectLeader('P1')">
896
950
  <span>{{ player().leaderName }}</span>
897
951
  <strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
898
952
  </button>
@@ -914,15 +968,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
914
968
  </section>
915
969
 
916
970
  <section class="christianity-hand-shelf">
917
- <section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')">
971
+ <div class="christianity-hand-meter">
972
+ <span>{{ t('christianityHand') }}</span>
973
+ <strong>{{ player().hand?.length ?? 0 }}</strong>
974
+ </div>
975
+ <section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')" (pointerleave)="clearHoveredHandIndex()">
918
976
  @for (cardId of player().hand ?? []; track cardId + $index) {
919
977
  @let card = cardDefinition(cardId);
920
978
  <button
921
979
  type="button"
922
980
  class="christianity-card-preview-card christianity-card-preview-card--hand"
981
+ valLightRipple
923
982
  [class.is-selected]="selectedHandCard() === cardId"
924
983
  [class.is-disabled]="!canPlay(card)"
984
+ [style.z-index]="handCardZIndex($index)"
925
985
  [style.transform]="fanTransform($index, player().hand?.length ?? 0, false)"
986
+ (pointerenter)="setHoveredHandIndex($index)"
987
+ (pointerdown)="setHoveredHandIndex($index)"
988
+ (pointerup)="releaseHoveredHand($event)"
926
989
  (click)="selectHandCard(cardId)"
927
990
  >
928
991
  <small>
@@ -957,6 +1020,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
957
1020
  (pointermove)="tiltPreview($event)"
958
1021
  (pointerleave)="resetPreviewTilt()"
959
1022
  >
1023
+ <button type="button" class="christianity-floating-card-close" (click)="closePreview()">
1024
+ {{ t('close') }}
1025
+ </button>
960
1026
  <small>{{ selectedPreview()?.eyebrow }}</small>
961
1027
  <strong>{{ selectedPreview()?.title }}</strong>
962
1028
  <span>{{ selectedPreview()?.meta }}</span>
@@ -987,7 +1053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
987
1053
  <div class="christianity-history-grid">
988
1054
  @for (cardId of game().historyZone; track cardId + $index) {
989
1055
  @let card = cardDefinition(cardId);
990
- <button type="button" class="christianity-card-preview-card" (click)="inspectHistoryCard(cardId)">
1056
+ <button type="button" class="christianity-card-preview-card" valLightRipple (click)="inspectHistoryCard(cardId)">
991
1057
  <small>{{ card.type === 'offering' ? t('christianityOfferingCard') : t('christianityCharacterCard') }}</small>
992
1058
  <span>{{ card.name }}</span>
993
1059
  <strong>
@@ -1017,7 +1083,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1017
1083
  <div class="christianity-offering-list">
1018
1084
  @for (offering of offeringPlayer.offerings; track offering.instanceId) {
1019
1085
  <article class="christianity-offering-row" [class.is-exhausted]="!offering.ready">
1020
- <button type="button" class="christianity-offering-card" (click)="inspectOffering(offering)">
1086
+ <button type="button" class="christianity-offering-card" valLightRipple (click)="inspectOffering(offering)">
1021
1087
  <small>{{ t('christianityOfferingCard') }}</small>
1022
1088
  <span>{{ offering.name }}</span>
1023
1089
  <strong>+{{ offering.value }}</strong>
@@ -1044,6 +1110,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1044
1110
  </section>
1045
1111
  }
1046
1112
  </main>
1047
- `, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-match-strip,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-match-player strong,.christianity-match-player small,.christianity-scoreboard span,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-match-strip{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:.45rem;border:1px solid rgba(36,48,68,.1);border-radius:.75rem;background:#fff}.christianity-match-player{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0}.christianity-match-player--opponent{direction:rtl}.christianity-match-player--opponent div{direction:ltr;text-align:right}.christianity-match-player div{display:grid;min-width:0}.christianity-match-player strong,.christianity-match-player small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-match-player small,.christianity-scoreboard span{color:#1f293394;font-size:.72rem}.christianity-scoreboard{display:grid;justify-items:center;min-width:4.2rem;padding:0 .55rem;border-right:1px solid rgba(36,48,68,.1);border-left:1px solid rgba(36,48,68,.1)}.christianity-scoreboard strong{font-size:1.2rem;line-height:1}.christianity-table{display:grid;gap:.45rem;padding:.45rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player-side{display:grid;gap:.35rem;padding:.35rem .3rem;border-radius:.7rem;background:#ffffff57;grid-template-rows:minmax(7rem,1fr) auto;min-height:13.75rem}.christianity-player-side--opponent{grid-template-rows:auto minmax(7rem,1fr)}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-shelf{display:grid;min-height:8.1rem;padding:.35rem .25rem 0;overflow:hidden}.christianity-hand-shelf--opponent{min-height:5.6rem;padding:0 .25rem .15rem}.christianity-hand-fan--opponent{min-height:4.4rem;align-items:start}.christianity-card-preview-card,.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{width:clamp(4rem,14vw,5.7rem);min-height:clamp(5rem,16vw,6.6rem);background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-offering-pile span,.christianity-offering-card span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-offering-pile strong,.christianity-offering-card strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(5.9rem,7rem) minmax(5rem,1fr) minmax(4.2rem,7rem);gap:.45rem;align-items:end;justify-items:stretch}.christianity-player-rack--opponent{align-items:start}.christianity-hand-count{display:grid;align-content:center;justify-items:center;width:100%;min-height:3.4rem;padding:.35rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#ffffffad}.christianity-hand-count span{color:#1f293394;font-size:.72rem}.christianity-hand-count strong{font-size:1.05rem}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-start;justify-self:start;width:100%}.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-offering-pile{position:relative;isolation:isolate;overflow:hidden;justify-self:start;width:min(100%,5.9rem);min-height:6.6rem;padding:.62rem .52rem .55rem;background:linear-gradient(180deg,#fff,#f8fafc),linear-gradient(135deg,rgba(250,204,21,.18),transparent 42%)}.christianity-offering-pile i{position:absolute;inset:.6rem auto auto .7rem;z-index:-1;width:2.55rem;height:3.55rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:linear-gradient(180deg,#ffffffeb,#f1f5f9eb),radial-gradient(circle at 78% 18%,#facc15 0 .38rem,transparent .4rem);box-shadow:0 .35rem .85rem #102a431a;transform:rotate(-5deg)}.christianity-offering-pile i:nth-child(2){transform:translate(.28rem,.08rem) rotate(3deg)}.christianity-offering-pile i:nth-child(3){transform:translate(.55rem,.18rem) rotate(-1deg)}.christianity-leader-card{width:min(100%,6.5rem);min-height:5.8rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-card,.christianity-zone-pile{min-height:6.45rem;padding:.62rem .52rem .55rem}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:.62rem .72rem auto auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(20rem,calc(100vw - 2rem));min-height:min(27rem,calc(100vh - 5rem));padding:1rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;touch-action:none;transform:translate(calc(-50% + var(--preview-shift-x, 0px)),calc(-50% + var(--preview-shift-y, 0px))) perspective(48rem) rotateX(var(--preview-rotate-x, 5deg)) rotateY(var(--preview-rotate-y, -5deg));transition:transform 90ms ease-out}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{font-size:clamp(1.35rem,8vw,2rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}.christianity-offerings-drawer{max-height:min(30rem,calc(100vh - 3rem))}.christianity-offering-list{display:grid;gap:.6rem;overflow-y:auto;padding:.1rem}.christianity-offering-row{display:grid;grid-template-columns:minmax(4.9rem,6.2rem) minmax(0,1fr);gap:.65rem;align-items:stretch;padding:.45rem;border:1px solid rgba(36,48,68,.12);border-radius:.65rem;background:#fff}.christianity-offering-row.is-exhausted{opacity:.68}.christianity-offering-card{min-height:7.4rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 82% 14%,#facc15 0 .48rem,transparent .5rem);box-shadow:0 .45rem 1rem #102a431a}.christianity-offering-card small{color:#1f293394;font-size:.66rem;text-transform:uppercase}.christianity-offering-card p,.christianity-offering-row p{margin:0}.christianity-offering-card p{align-self:end;color:#1f2933a3;font-size:.72rem;line-height:1.2}.christianity-offering-row>div{display:grid;gap:.35rem;align-content:center;min-width:0}.christianity-offering-row>div p{color:#1f2933b8;font-size:.85rem;line-height:1.3}.christianity-offering-row>div button{justify-self:start;min-height:2.2rem;padding:0 .7rem;border:1px solid rgba(16,42,67,.16);border-radius:.5rem;background:#102a43;color:#fff;font:inherit;font-weight:800}.christianity-offering-row>div button:disabled{background:#e2e8f0;color:#1f293394}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-match-strip{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.35rem;padding:.35rem}.christianity-match-player{gap:.35rem}.christianity-match-player small{display:none}.christianity-scoreboard{min-width:3.65rem;padding:0 .35rem}.christianity-scoreboard strong{font-size:1.05rem}.christianity-table{gap:.35rem}.christianity-player-side{padding:.3rem .25rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-hand-shelf{min-height:7.4rem;padding-top:.25rem}.christianity-hand-shelf--opponent{min-height:5rem;padding-top:0}.christianity-player-rack{grid-template-columns:minmax(4.7rem,5.9rem) minmax(4.8rem,1fr) minmax(3.7rem,5rem)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-offering-pile,.christianity-zone-card,.christianity-zone-pile{min-height:6.15rem;padding:.58rem .46rem .5rem}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-offering-row{grid-template-columns:minmax(4.5rem,5.5rem) minmax(0,1fr);gap:.5rem}.christianity-hand-fan--opponent{min-height:4rem}}\n"] }]
1113
+ `, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-match-strip,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-match-player strong,.christianity-match-player small,.christianity-scoreboard span,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-match-strip{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:.45rem;border:1px solid rgba(36,48,68,.1);border-radius:.75rem;background:#fff}.christianity-match-player{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.5rem;align-items:center;min-width:0}.christianity-match-player--opponent{direction:rtl}.christianity-match-player--opponent div{direction:ltr;text-align:right}.christianity-match-player div{display:grid;min-width:0}.christianity-match-player strong,.christianity-match-player small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-match-player small,.christianity-scoreboard span{color:#1f293394;font-size:.72rem}.christianity-scoreboard{display:grid;justify-items:center;min-width:4.2rem;padding:0 .55rem;border-right:1px solid rgba(36,48,68,.1);border-left:1px solid rgba(36,48,68,.1)}.christianity-scoreboard strong{font-size:1.2rem;line-height:1}.christianity-table{display:grid;gap:.45rem;padding:.45rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player-side{display:grid;gap:.35rem;padding:.35rem .3rem;border-radius:.7rem;background:#ffffff57;grid-template-rows:minmax(7rem,1fr) auto;min-height:13.75rem}.christianity-player-side--opponent{grid-template-rows:auto minmax(7rem,1fr)}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-shelf{position:relative;display:grid;min-height:8.1rem;padding:.9rem .25rem 0;overflow:hidden}.christianity-hand-shelf--opponent{min-height:5.6rem;padding:.7rem .25rem .15rem}.christianity-hand-fan--opponent{min-height:4.4rem;align-items:start}.christianity-card-preview-card,.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{width:clamp(4rem,14vw,5.7rem);min-height:clamp(5rem,16vw,6.6rem);background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-offering-pile span,.christianity-offering-card span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{position:relative;z-index:2;font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-offering-pile strong,.christianity-offering-card strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{position:relative;z-index:3;justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(5.9rem,7rem) minmax(5rem,1fr) minmax(4.2rem,7rem);gap:.45rem;align-items:end;justify-items:stretch}.christianity-player-rack--opponent{align-items:start}.christianity-hand-meter{position:absolute;top:0;right:.35rem;z-index:4;display:inline-grid;grid-auto-flow:column;gap:.25rem;align-items:center;min-height:1.7rem;padding:.18rem .46rem;border:1px solid rgba(36,48,68,.12);border-radius:999px;background:#ffffffe6;box-shadow:0 .35rem .8rem #102a4314}.christianity-hand-meter--opponent{top:.15rem}.christianity-hand-meter span{color:#1f293394;font-size:.68rem}.christianity-hand-meter strong{font-size:.86rem}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-start;justify-self:start;width:100%}.christianity-card-mini,.christianity-offering-pile,.christianity-offering-card,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-offering-pile{position:relative;isolation:isolate;overflow:hidden;justify-self:start;width:min(100%,5.9rem);min-height:6.6rem;padding:.7rem .52rem .55rem;background:linear-gradient(180deg,#fff,#f8fafc),linear-gradient(135deg,rgba(250,204,21,.18),transparent 42%)}.christianity-offering-pile i{position:absolute;inset:auto auto 1.1rem .72rem;z-index:-1;width:2.55rem;height:3.55rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:linear-gradient(180deg,#ffffffeb,#f1f5f9eb),radial-gradient(circle at 78% 18%,#facc15 0 .38rem,transparent .4rem);box-shadow:0 .35rem .85rem #102a431a;transform:rotate(-5deg)}.christianity-offering-pile i:nth-child(2){transform:translate(.28rem,.08rem) rotate(3deg)}.christianity-offering-pile i:nth-child(3){transform:translate(.55rem,.18rem) rotate(-1deg)}.christianity-leader-card{align-self:center;justify-self:center;width:clamp(4.75rem,17vw,6rem);min-height:clamp(6.6rem,22vw,8.4rem)}.christianity-rack-spacer{display:block;min-height:1px}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-card,.christianity-zone-pile{min-height:6.45rem;padding:.7rem .52rem .55rem}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:auto .72rem 1.02rem auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(23rem,calc(100vw - 1.25rem));min-height:min(31rem,calc(100vh - 3.5rem));padding:1.15rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;touch-action:none;transform:translate(calc(-50% + var(--preview-shift-x, 0px)),calc(-50% + var(--preview-shift-y, 0px))) perspective(48rem) rotateX(var(--preview-rotate-x, 5deg)) rotateY(var(--preview-rotate-y, -5deg));transition:transform 90ms ease-out}.christianity-floating-card-close{position:absolute;top:.65rem;right:.65rem;z-index:2;min-height:2rem;padding:0 .6rem;border:1px solid rgba(36,48,68,.14);border-radius:999px;background:#ffffffe6;color:#1f2933c7;font:inherit;font-size:.76rem;font-weight:800;box-shadow:0 .45rem 1rem #102a431a}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{padding-right:4.4rem;font-size:clamp(1.55rem,8vw,2.35rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}.christianity-offerings-drawer{max-height:min(30rem,calc(100vh - 3rem))}.christianity-offering-list{display:grid;gap:.6rem;overflow-y:auto;padding:.1rem}.christianity-offering-row{display:grid;grid-template-columns:minmax(4.9rem,6.2rem) minmax(0,1fr);gap:.65rem;align-items:stretch;padding:.45rem;border:1px solid rgba(36,48,68,.12);border-radius:.65rem;background:#fff}.christianity-offering-row.is-exhausted{opacity:.68}.christianity-offering-card{min-height:7.4rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 82% 14%,#facc15 0 .48rem,transparent .5rem);box-shadow:0 .45rem 1rem #102a431a}.christianity-offering-card small{color:#1f293394;font-size:.66rem;text-transform:uppercase}.christianity-offering-card p,.christianity-offering-row p{margin:0}.christianity-offering-card p{align-self:end;color:#1f2933a3;font-size:.72rem;line-height:1.2}.christianity-offering-row>div{display:grid;gap:.35rem;align-content:center;min-width:0}.christianity-offering-row>div p{color:#1f2933b8;font-size:.85rem;line-height:1.3}.christianity-offering-row>div button{justify-self:start;min-height:2.2rem;padding:0 .7rem;border:1px solid rgba(16,42,67,.16);border-radius:.5rem;background:#102a43;color:#fff;font:inherit;font-weight:800}.christianity-offering-row>div button:disabled{background:#e2e8f0;color:#1f293394}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-match-strip{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.35rem;padding:.35rem}.christianity-match-player{gap:.35rem}.christianity-match-player small{display:none}.christianity-scoreboard{min-width:3.65rem;padding:0 .35rem}.christianity-scoreboard strong{font-size:1.05rem}.christianity-table{gap:.35rem}.christianity-player-side{padding:.3rem .25rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-hand-shelf{min-height:7.4rem;padding-top:.8rem}.christianity-hand-shelf--opponent{min-height:5rem;padding-top:.7rem}.christianity-player-rack{grid-template-columns:minmax(4.7rem,5.9rem) minmax(4.8rem,1fr) minmax(3.7rem,5rem)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-offering-pile,.christianity-zone-card,.christianity-zone-pile{min-height:6.15rem;padding:.58rem .46rem .5rem}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-leader-card{width:clamp(4.55rem,20vw,5.7rem);min-height:clamp(6.15rem,27vw,7.6rem)}.christianity-offering-row{grid-template-columns:minmax(4.5rem,5.5rem) minmax(0,1fr);gap:.5rem}.christianity-hand-fan--opponent{min-height:4rem}}\n"] }]
1048
1114
  }], ctorParameters: () => [] });
1049
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyaXN0aWFuaXR5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NocmlzdGlhbml0eS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBd0JwRCxNQUFNLGFBQWEsR0FBK0M7SUFDaEUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUNuRyxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsYUFBYTtRQUNqQixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLEVBQUUsQ0FBQztRQUNQLFdBQVcsRUFBRSxpQ0FBaUM7UUFDOUMsV0FBVyxFQUFFLDJEQUEyRDtRQUN4RSxXQUFXLEVBQUUsQ0FBQztLQUNmO0lBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDekYsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDekYsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDL0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDekYsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Q0FDbkcsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsVUFBVTtJQUNWLFNBQVM7SUFDVCxhQUFhO0lBQ2IsVUFBVTtJQUNWLFNBQVM7SUFDVCxXQUFXO0lBQ1gsVUFBVTtJQUNWLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFlBQVk7SUFDWixTQUFTO0lBQ1QsVUFBVTtJQUNWLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtDQUNYLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBMEI7SUFDM0MsTUFBTSxFQUFFLG1CQUFtQjtJQUMzQixNQUFNLEVBQUUsYUFBYTtJQUNyQixJQUFJLEVBQUUsWUFBWTtJQUNsQixTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ1gsU0FBUyxFQUFFLENBQUM7SUFDWixVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDNUIsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxXQUFXLEVBQUUsRUFBRTtJQUNmLE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRTtZQUNGLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLFNBQVM7WUFDdEIsTUFBTSxFQUFFLEdBQUc7WUFDWCxXQUFXLEVBQUUsU0FBUztZQUN0QixVQUFVLEVBQUUsTUFBTTtZQUNsQixRQUFRLEVBQUUsRUFBRTtZQUNaLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFO2dCQUNULEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUNqSDtvQkFDRSxVQUFVLEVBQUUsaUJBQWlCO29CQUM3QixNQUFNLEVBQUUsYUFBYTtvQkFDckIsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsS0FBSyxFQUFFLElBQUk7b0JBQ1gsS0FBSyxFQUFFLElBQUk7b0JBQ1gsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsV0FBVyxFQUFFLDJEQUEyRDtvQkFDeEUsV0FBVyxFQUFFLENBQUM7aUJBQ2Y7YUFDRjtZQUNELHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDO1lBQ3JELFVBQVUsRUFBRSxFQUFFO1NBQ2Y7UUFDRCxFQUFFLEVBQUU7WUFDRixJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLE1BQU0sRUFBRSxHQUFHO1lBQ1gsV0FBVyxFQUFFLFNBQVM7WUFDdEIsVUFBVSxFQUFFLE1BQU07WUFDbEIsUUFBUSxFQUFFLEVBQUU7WUFDWixXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUgsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixTQUFTLEVBQUUsQ0FBQztZQUNaLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxVQUFVLEVBQUUsU0FBUztvQkFDckIsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxJQUFJO29CQUNYLFVBQVUsRUFBRSxJQUFJO29CQUNoQixNQUFNLEVBQUUsQ0FBQztvQkFDVCxTQUFTLEVBQUUsQ0FBQztvQkFDWixLQUFLLEVBQUUsQ0FBQztvQkFDUixTQUFTLEVBQUUsS0FBSztpQkFDakI7YUFDRjtTQUNGO0tBQ0Y7SUFDRCxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztDQUMzQixDQUFDO0FBNnBDRixNQUFNLE9BQU8seUJBQXlCO0lBaUNwQztRQWhDUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWhCLFNBQUksR0FBRyxNQUFNLENBQXdCLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLHFCQUFnQixHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDL0MscUJBQWdCLEdBQUcsTUFBTSxDQUF1QyxJQUFJLENBQUMsQ0FBQztRQUN0RSxvQkFBZSxHQUFHLE1BQU0sQ0FBaUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixrQkFBYSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7UUFFdEQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNFLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUMzRCxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUUsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkcsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNySCxDQUFDO1lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ3RHLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUdELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxDQUFDLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxjQUFjLENBQUMsTUFBYztRQUNyQyxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVTLFdBQVcsQ0FBQyxJQUFzQjtRQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLEtBQUssRUFBRTtZQUM3RCxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNuQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFUyxlQUFlLENBQUMsS0FBYTtRQUNyQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsUUFBaUI7UUFDcEUsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVELE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sR0FBRyxJQUFJLGVBQWUsSUFBSSxlQUFlLE1BQU0sTUFBTSxDQUFDO0lBQy9ELENBQUM7SUFFUyxjQUFjLENBQUMsTUFBK0I7UUFDdEQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFUyxjQUFjLENBQUMsTUFBK0I7UUFDdEQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFUyxPQUFPLENBQUMsSUFBZ0M7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsc0JBQXNCLENBQUM7UUFDM0UsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRVMsY0FBYyxDQUFDLE1BQWM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLFVBQVUsRUFBRSxlQUFlLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO29CQUM5QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDOUIsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUNqRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLEtBQUssRUFBRSxJQUFJO29CQUNYLFVBQVUsRUFBRSxJQUFJO29CQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNoQixTQUFTLEVBQUUsS0FBSztpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHO2dCQUNULElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLG9CQUFvQjtnQkFDdEcsR0FBRyxJQUFJLENBQUMsR0FBRzthQUNaLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNkLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFUyxjQUFjLENBQUMsSUFBbUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxJQUFtQztRQUNuRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN0QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVTtnQkFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7YUFDNUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RHLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RixZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksd0JBQXdCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQXFDO1FBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekUsVUFBVSxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQzVDLFlBQVksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxtQkFBbUIsVUFBVSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEcsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLE9BQU87UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RixPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRztnQkFDVCxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtnQkFDNUUsWUFBWSxPQUFPLENBQUMsV0FBVyxHQUFHO2dCQUNsQyxHQUFHLElBQUksQ0FBQyxHQUFHO2FBQ1osQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRVMsYUFBYSxDQUFDLElBQXNCO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxjQUFjO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxXQUFXLENBQUMsS0FBbUI7UUFDdkMsTUFBTSxNQUFNLEdBQUksS0FBSyxDQUFDLGFBQTZCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM1RSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQStCLEVBQUUsSUFBMkI7UUFDbkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVTLGFBQWEsQ0FBQyxJQUFzQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVTtZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztZQUN6QyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDaEQsSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztTQUMzSCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZUFBZSxDQUFDLFFBQXNDO1FBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztZQUMzQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDO1lBQ3BHLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUM7U0FDakUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLHFCQUFxQixDQUFDLFFBQXNDLEVBQUUsSUFBc0I7UUFDNUYsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRVMsa0JBQWtCLENBQUMsUUFBc0MsRUFBRSxJQUFzQjtRQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3RELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckgsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztZQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztZQUN6QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUN4QyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQWM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUM7WUFDNUcsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDN0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUM7U0FDMUcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGtCQUFrQixDQUFDLE1BQWM7UUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBbUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO1lBQzVDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN4QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1NBQ3ZHLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBK0IsRUFBRSxJQUFZO1FBQ2xFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO2dCQUFFLE9BQU8sUUFBUSxDQUFDO1lBQ3ZELFNBQVMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzVCLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9XVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpRkF4cEMxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbVNUOzs0RkFxM0JVLHlCQUF5QjtrQkEzcENyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFlBQ047Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1TVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQge1xuICBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbixcbiAgQ2hyaXN0aWFuaXR5Q2hhcmFjdGVySW5zdGFuY2UsXG4gIENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgQ2hyaXN0aWFuaXR5T2ZmZXJpbmdJbnN0YW5jZSxcbiAgQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUsXG4gIENocmlzdGlhbml0eVNlYXQsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ2hyaXN0aWFuaXR5Q2FyZFByZXZpZXcge1xuICB0aXRsZTogc3RyaW5nO1xuICBleWVicm93OiBzdHJpbmc7XG4gIG1ldGE6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hyaXN0aWFuaXR5UHJldmlld1RpbHQge1xuICByb3RhdGVYOiBudW1iZXI7XG4gIHJvdGF0ZVk6IG51bWJlcjtcbiAgc2hpZnRYOiBudW1iZXI7XG4gIHNoaWZ0WTogbnVtYmVyO1xufVxuXG5jb25zdCBTVEFSVEVSX0NBUkRTOiBSZWNvcmQ8c3RyaW5nLCBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbj4gPSB7XG4gIG9fc2ltcGxlOiB7IGlkOiAnb19zaW1wbGUnLCBuYW1lOiAnT2ZyZW5kYSBzaW1wbGUnLCB0eXBlOiAnb2ZmZXJpbmcnLCBjb3N0OiAwLCBhdHRhY2s6IDAsIGxpZmU6IDEgfSxcbiAgb19mb3JiaWRkZW46IHtcbiAgICBpZDogJ29fZm9yYmlkZGVuJyxcbiAgICBuYW1lOiAnRWwgZnJ1dG8gcHJvaGliaWRvJyxcbiAgICB0eXBlOiAnb2ZmZXJpbmcnLFxuICAgIGNvc3Q6IDAsXG4gICAgYXR0YWNrOiAwLFxuICAgIGxpZmU6IDIsXG4gICAgYWJpbGl0eU5hbWU6ICdDb25vY2ltaWVudG8gZGVsIGJpZW4geSBkZWwgbWFsJyxcbiAgICBhYmlsaXR5VGV4dDogJ0FsIHVzYXJsYSwgZGlzbWludXllIGVuIDEgbG9zIHB1bnRvcyBkZSB2aWRhIGRlIHR1IExpZGVyLicsXG4gICAgYWJpbGl0eUNvc3Q6IDAsXG4gIH0sXG4gIHBfc2NvdXQ6IHsgaWQ6ICdwX3Njb3V0JywgbmFtZTogJ1Njb3V0JywgdHlwZTogJ2NoYXJhY3RlcicsIGNvc3Q6IDEsIGF0dGFjazogMSwgbGlmZTogMSB9LFxuICBwX2d1YXJkOiB7IGlkOiAncF9ndWFyZCcsIG5hbWU6ICdHdWFyZCcsIHR5cGU6ICdjaGFyYWN0ZXInLCBjb3N0OiAyLCBhdHRhY2s6IDEsIGxpZmU6IDMgfSxcbiAgcF93YXJyaW9yOiB7IGlkOiAncF93YXJyaW9yJywgbmFtZTogJ1dhcnJpb3InLCB0eXBlOiAnY2hhcmFjdGVyJywgY29zdDogMiwgYXR0YWNrOiAyLCBsaWZlOiAyIH0sXG4gIHBfZWxkZXI6IHsgaWQ6ICdwX2VsZGVyJywgbmFtZTogJ0VsZGVyJywgdHlwZTogJ2NoYXJhY3RlcicsIGNvc3Q6IDMsIGF0dGFjazogMiwgbGlmZTogNCB9LFxuICBwX2NoYW1waW9uOiB7IGlkOiAncF9jaGFtcGlvbicsIG5hbWU6ICdDaGFtcGlvbicsIHR5cGU6ICdjaGFyYWN0ZXInLCBjb3N0OiA0LCBhdHRhY2s6IDQsIGxpZmU6IDQgfSxcbn07XG5cbmNvbnN0IFNUQVJUSU5HX1NIQVJFRF9ERUNLID0gW1xuICAnb19zaW1wbGUnLFxuICAncF9zY291dCcsXG4gICdvX2ZvcmJpZGRlbicsXG4gICdvX3NpbXBsZScsXG4gICdwX2d1YXJkJyxcbiAgJ3Bfd2FycmlvcicsXG4gICdvX3NpbXBsZScsXG4gICdwX2VsZGVyJyxcbiAgJ3Bfc2NvdXQnLFxuICAnb19zaW1wbGUnLFxuICAncF9jaGFtcGlvbicsXG4gICdwX2d1YXJkJyxcbiAgJ29fc2ltcGxlJyxcbiAgJ3Bfd2FycmlvcicsXG4gICdwX3Njb3V0JyxcbiAgJ29fc2ltcGxlJyxcbiAgJ3BfZWxkZXInLFxuICAncF9ndWFyZCcsXG4gICdvX3NpbXBsZScsXG5dO1xuXG5jb25zdCBTVEFSVElOR19HQU1FOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUgPSB7XG4gIGdhbWVJZDogJ21vY2stY2hyaXN0aWFuaXR5JyxcbiAgc3RhdHVzOiAnaW5fcHJvZ3Jlc3MnLFxuICBtb2RlOiAnbG9jYWxfcGFzcycsXG4gIHR1cm5Pd25lcjogJ1AxJyxcbiAgcmV2aXNpb246IDAsXG4gIHR1cm5Db3VudDogMSxcbiAgbWF0Y2hTY29yZTogeyBQMTogMSwgUDI6IDAgfSxcbiAgc2hhcmVkRGVjazogU1RBUlRJTkdfU0hBUkVEX0RFQ0ssXG4gIGhpc3Rvcnlab25lOiBbXSxcbiAgcGxheWVyczoge1xuICAgIFAxOiB7XG4gICAgICBzZWF0OiAnUDEnLFxuICAgICAgZGlzcGxheU5hbWU6ICdKdWdhZG9yJyxcbiAgICAgIGF2YXRhcjogJ0onLFxuICAgICAgYXZhdGFyQ29sb3I6ICcjMjU2M2ViJyxcbiAgICAgIGxlYWRlck5hbWU6ICdBZGFtJyxcbiAgICAgIGxlYWRlckhwOiAxNSxcbiAgICAgIGxlYWRlck1heEhwOiAxNSxcbiAgICAgIG9mZmVyaW5nczogW1xuICAgICAgICB7IGluc3RhbmNlSWQ6ICdwMV9vZmZlcmluZ18wMDEnLCBjYXJkSWQ6ICdvX3NpbXBsZScsIG5hbWU6ICdPZnJlbmRhIHNpbXBsZScsIG93bmVyOiAnUDEnLCByZWFkeTogdHJ1ZSwgdmFsdWU6IDEgfSxcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbmNlSWQ6ICdwMV9vZmZlcmluZ18wMDInLFxuICAgICAgICAgIGNhcmRJZDogJ29fZm9yYmlkZGVuJyxcbiAgICAgICAgICBuYW1lOiAnRWwgZnJ1dG8gcHJvaGliaWRvJyxcbiAgICAgICAgICBvd25lcjogJ1AxJyxcbiAgICAgICAgICByZWFkeTogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogMixcbiAgICAgICAgICBhYmlsaXR5TmFtZTogJ0Nvbm9jaW1pZW50byBkZWwgYmllbiB5IGRlbCBtYWwnLFxuICAgICAgICAgIGFiaWxpdHlUZXh0OiAnQWwgdXNhcmxhLCBkaXNtaW51eWUgZW4gMSBsb3MgcHVudG9zIGRlIHZpZGEgZGUgdHUgTGlkZXIuJyxcbiAgICAgICAgICBhYmlsaXR5Q29zdDogMCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvZmZlcmluZ1BsYXllZFRoaXNUdXJuOiBmYWxzZSxcbiAgICAgIGhhbmQ6IFsnb19zaW1wbGUnLCAncF9zY291dCcsICdwX3dhcnJpb3InLCAncF9ndWFyZCddLFxuICAgICAgYmF0dGxlWm9uZTogW10sXG4gICAgfSxcbiAgICBQMjoge1xuICAgICAgc2VhdDogJ1AyJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnUml2YWwnLFxuICAgICAgYXZhdGFyOiAnUicsXG4gICAgICBhdmF0YXJDb2xvcjogJyNiNDUzMDknLFxuICAgICAgbGVhZGVyTmFtZTogJ05vYWgnLFxuICAgICAgbGVhZGVySHA6IDE1LFxuICAgICAgbGVhZGVyTWF4SHA6IDE1LFxuICAgICAgb2ZmZXJpbmdzOiBbeyBpbnN0YW5jZUlkOiAncDJfb2ZmZXJpbmdfMDAxJywgY2FyZElkOiAnb19zaW1wbGUnLCBuYW1lOiAnT2ZyZW5kYSBzaW1wbGUnLCBvd25lcjogJ1AyJywgcmVhZHk6IHRydWUsIHZhbHVlOiAxIH1dLFxuICAgICAgb2ZmZXJpbmdQbGF5ZWRUaGlzVHVybjogZmFsc2UsXG4gICAgICBoYW5kQ291bnQ6IDQsXG4gICAgICBiYXR0bGVab25lOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiAnb3BwXzAwMScsXG4gICAgICAgICAgY2FyZElkOiAncF9zY291dCcsXG4gICAgICAgICAgbmFtZTogJ1Njb3V0JyxcbiAgICAgICAgICBvd25lcjogJ1AyJyxcbiAgICAgICAgICBjb250cm9sbGVyOiAnUDInLFxuICAgICAgICAgIGF0dGFjazogMSxcbiAgICAgICAgICBjdXJyZW50SHA6IDEsXG4gICAgICAgICAgbWF4SHA6IDEsXG4gICAgICAgICAgY2FuQXR0YWNrOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAgbG9nOiBbJ1BhcnRpZGEgaW5pY2lhZGEuJ10sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hyaXN0aWFuaXR5LWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXNoZWxsXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1oZWFkZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cD57eyB0KCdjaHJpc3RpYW5pdHlFeWVicm93JykgfX08L3A+XG4gICAgICAgICAgPGgxPnt7IHQoJ2NocmlzdGlhbml0eVRpdGxlJykgfX08L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS10dXJuXCIgW2NsYXNzLmlzLW93bi10dXJuXT1cImlzT3duVHVybigpXCI+XG4gICAgICAgICAgPHNwYW4+e3sgdCgnY2hyaXN0aWFuaXR5VHVybicpIH19PC9zcGFuPlxuICAgICAgICAgIDxzdHJvbmc+e3sgY3VycmVudFBsYXllcigpLmRpc3BsYXlOYW1lIH19PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1tYXRjaC1zdHJpcFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5TWF0Y2hTY29yZScpXCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWF2YXRhclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInBsYXllcigpLmF2YXRhckNvbG9yXCI+e3sgcGxheWVyKCkuYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHBsYXllcigpLmRpc3BsYXlOYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8c21hbGw+e3sgcGxheWVyKCkubGVhZGVyTmFtZSB9fSDCtyB7eyBwbGF5ZXIoKS5sZWFkZXJIcCB9fS97eyBwbGF5ZXIoKS5sZWFkZXJNYXhIcCB9fTwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1zY29yZWJvYXJkXCI+XG4gICAgICAgICAgPHNwYW4+e3sgdCgnY2hyaXN0aWFuaXR5TWF0Y2gnKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5tYXRjaFNjb3JlLlAxIH19LXt7IGdhbWUoKS5tYXRjaFNjb3JlLlAyIH19PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXIgY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllci0tb3Bwb25lbnRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNocmlzdGlhbml0eS1hdmF0YXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJvcHBvbmVudCgpLmF2YXRhckNvbG9yXCI+e3sgb3Bwb25lbnQoKS5hdmF0YXIgfX08L3NwYW4+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgb3Bwb25lbnQoKS5kaXNwbGF5TmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPHNtYWxsPnt7IG9wcG9uZW50KCkubGVhZGVyTmFtZSB9fSDCtyB7eyBvcHBvbmVudCgpLmxlYWRlckhwIH19L3t7IG9wcG9uZW50KCkubGVhZGVyTWF4SHAgfX08L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGYgY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGYtLW9wcG9uZW50XCI+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhhbmQtZmFuIGNocmlzdGlhbml0eS1oYW5kLWZhbi0tb3Bwb25lbnRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eU9wcG9uZW50SGFuZCcpXCI+XG4gICAgICAgICAgQGZvciAoXyBvZiBoaWRkZW5IYW5kQ2FyZHMob3Bwb25lbnRIYW5kQ291bnQoKSk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkLS1iYWNrXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJmYW5UcmFuc2Zvcm0oJGluZGV4LCBvcHBvbmVudEhhbmRDb3VudCgpLCB0cnVlKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5SGlkZGVuQ2FyZCcpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktdGFibGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eVRhYmxlJylcIj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktcGxheWVyLXNpZGUgY2hyaXN0aWFuaXR5LXBsYXllci1zaWRlLS1vcHBvbmVudFwiPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXBsYXllci1yYWNrIGNocmlzdGlhbml0eS1wbGF5ZXItcmFjay0tb3Bwb25lbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmdzLXpvbmVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZVwiIChjbGljayk9XCJvcGVuT2ZmZXJpbmdzKCdQMicpXCI+XG4gICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdzJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByZWFkeU9mZmVyaW5ncyhvcHBvbmVudCgpKSB9fS97eyB0b3RhbE9mZmVyaW5ncyhvcHBvbmVudCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktbGVhZGVyLWNhcmRcIiBbY2xhc3MuaXMtdGFyZ2V0XT1cInNlbGVjdGVkQXR0YWNrZXIoKSAmJiAhaGFzT3Bwb25lbnRHdWFyZHMoKVwiIChjbGljayk9XCJoYW5kbGVPcHBvbmVudExlYWRlcigpXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IG9wcG9uZW50KCkubGVhZGVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBvcHBvbmVudCgpLmxlYWRlckhwIH19L3t7IG9wcG9uZW50KCkubGVhZGVyTWF4SHAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1oYW5kLWNvdW50XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eUhhbmQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBvcHBvbmVudEhhbmRDb3VudCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1iYXR0bGUtem9uZSBjaHJpc3RpYW5pdHktYmF0dGxlLXpvbmUtLW9wcG9uZW50XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlPcHBvbmVudEJhdHRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzbG90IG9mIGJhdHRsZVNsb3RzKCdQMicpOyB0cmFjayBzbG90LnRyYWNrSWQpIHtcbiAgICAgICAgICAgICAgQGlmIChzbG90LmNhcmQpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkIGNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0tYmF0dGxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy10YXJnZXRdPVwic2VsZWN0ZWRBdHRhY2tlcigpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHBvbmVudENoYXJhY3RlcihzbG90LmNhcmQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBzbG90LmNhcmQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2xvdC5jYXJkLmF0dGFjayB9fSAvIHt7IHNsb3QuY2FyZC5jdXJyZW50SHAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaHJpc3RpYW5pdHktc2xvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXNoYXJlZC16b25lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlTaGFyZWRab25lJylcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS16b25lLXBpbGUgY2hyaXN0aWFuaXR5LXpvbmUtcGlsZS0taGlzdG9yeVwiIChjbGljayk9XCJzaG93SGlzdG9yeS5zZXQodHJ1ZSlcIj5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eUhpc3RvcnknKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmhpc3Rvcnlab25lLmxlbmd0aCB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSBjaHJpc3RpYW5pdHktem9uZS1waWxlLS1kZWNrXCIgYXJpYS1saXZlPVwicG9saXRlXCIgKGNsaWNrKT1cImluc3BlY3REZWNrKClcIj5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eURlY2snKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnNoYXJlZERlY2subGVuZ3RoIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS16b25lLWNhcmRcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eVBsYWNlJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NocmlzdGlhbml0eUVtcHR5JykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXBsYXllci1zaWRlXCI+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktYmF0dGxlLXpvbmVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eVlvdXJCYXR0bGUnKVwiPlxuICAgICAgICAgICAgQGZvciAoc2xvdCBvZiBiYXR0bGVTbG90cygnUDEnKTsgdHJhY2sgc2xvdC50cmFja0lkKSB7XG4gICAgICAgICAgICAgIEBpZiAoc2xvdC5jYXJkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCBjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQtLWJhdHRsZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRBdHRhY2tlcigpPy5pbnN0YW5jZUlkID09PSBzbG90LmNhcmQuaW5zdGFuY2VJZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZXhoYXVzdGVkXT1cIiFzbG90LmNhcmQuY2FuQXR0YWNrXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBdHRhY2tlcihzbG90LmNhcmQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBzbG90LmNhcmQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2xvdC5jYXJkLmF0dGFjayB9fSAvIHt7IHNsb3QuY2FyZC5jdXJyZW50SHAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaHJpc3RpYW5pdHktc2xvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXBsYXllci1yYWNrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hyaXN0aWFuaXR5LW9mZmVyaW5ncy16b25lXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGVcIiAoY2xpY2spPVwib3Blbk9mZmVyaW5ncygnUDEnKVwiPlxuICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eU9mZmVyaW5ncycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVhZHlPZmZlcmluZ3MocGxheWVyKCkpIH19L3t7IHRvdGFsT2ZmZXJpbmdzKHBsYXllcigpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktbGVhZGVyLWNhcmRcIiAoY2xpY2spPVwiaW5zcGVjdExlYWRlcignUDEnKVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwbGF5ZXIoKS5sZWFkZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBsYXllcigpLmxlYWRlckhwIH19L3t7IHBsYXllcigpLmxlYWRlck1heEhwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktcGxheWVyLWNvbW1hbmRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1wbGF5ZXItYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNocmlzdGlhbml0eS1hdmF0YXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJwbGF5ZXIoKS5hdmF0YXJDb2xvclwiPnt7IHBsYXllcigpLmF2YXRhciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBsYXllcigpLmRpc3BsYXlOYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaHJpc3RpYW5pdHktZW5kLXR1cm5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlbmRUdXJuKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hyaXN0aWFuaXR5RW5kVHVybicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGZcIj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGFuZC1mYW5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eVlvdXJIYW5kJylcIj5cbiAgICAgICAgICBAZm9yIChjYXJkSWQgb2YgcGxheWVyKCkuaGFuZCA/PyBbXTsgdHJhY2sgY2FyZElkICsgJGluZGV4KSB7XG4gICAgICAgICAgICBAbGV0IGNhcmQgPSBjYXJkRGVmaW5pdGlvbihjYXJkSWQpO1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkLS1oYW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkSGFuZENhcmQoKSA9PT0gY2FyZElkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cIiFjYW5QbGF5KGNhcmQpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJmYW5UcmFuc2Zvcm0oJGluZGV4LCBwbGF5ZXIoKS5oYW5kPy5sZW5ndGggPz8gMCwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEhhbmRDYXJkKGNhcmRJZClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgQGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NocmlzdGlhbml0eU9mZmVyaW5nQ2FyZCcpIH19XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaHJpc3RpYW5pdHlDb3N0JykgfX0ge3sgY2FyZC5jb3N0IH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgQGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICAgICAgICAgICAgICAgICt7eyBjYXJkLmxpZmUgfX1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHt7IGNhcmQuYXR0YWNrIH19IC8ge3sgY2FyZC5saWZlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICBAaWYgKHNlbGVjdGVkUHJldmlldygpKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXByZXZpZXctYmFja2Ryb3BcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eUNsb3NlUHJldmlldycpXCIgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCI+PC9idXR0b24+XG4gICAgICAgIDxhc2lkZVxuICAgICAgICAgIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmRcIlxuICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1yb3RhdGUteF09XCJwcmV2aWV3VGlsdCgpLnJvdGF0ZVggKyAnZGVnJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1yb3RhdGUteV09XCJwcmV2aWV3VGlsdCgpLnJvdGF0ZVkgKyAnZGVnJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1zaGlmdC14XT1cInByZXZpZXdUaWx0KCkuc2hpZnRYICsgJ3B4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1zaGlmdC15XT1cInByZXZpZXdUaWx0KCkuc2hpZnRZICsgJ3B4J1wiXG4gICAgICAgICAgKHBvaW50ZXJtb3ZlKT1cInRpbHRQcmV2aWV3KCRldmVudClcIlxuICAgICAgICAgIChwb2ludGVybGVhdmUpPVwicmVzZXRQcmV2aWV3VGlsdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbWFsbD57eyBzZWxlY3RlZFByZXZpZXcoKT8uZXllYnJvdyB9fTwvc21hbGw+XG4gICAgICAgICAgPHN0cm9uZz57eyBzZWxlY3RlZFByZXZpZXcoKT8udGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZFByZXZpZXcoKT8ubWV0YSB9fTwvc3Bhbj5cbiAgICAgICAgICA8cD57eyBzZWxlY3RlZFByZXZpZXcoKT8uYm9keSB9fTwvcD5cbiAgICAgICAgPC9hc2lkZT5cbiAgICAgIH1cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktYWN0aW9uc1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8cD57eyBzdGF0dXNUZXh0KCkgfX08L3A+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZEhhbmRDYXJkKCkgfHwgIWNhblBsYXlTZWxlY3RlZCgpXCIgKGNsaWNrKT1cInBsYXlTZWxlY3RlZENhcmQoKVwiPlxuICAgICAgICAgICAge3sgdCgnY2hyaXN0aWFuaXR5UGxheUNhcmQnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldE1vY2soKVwiPlxuICAgICAgICAgICAge3sgdCgnY2hyaXN0aWFuaXR5UmVzZXQnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgQGlmIChzaG93SGlzdG9yeSgpKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhpc3RvcnktYmFja2Ryb3BcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eUNsb3NlSGlzdG9yeScpXCIgKGNsaWNrKT1cInNob3dIaXN0b3J5LnNldChmYWxzZSlcIj48L2J1dHRvbj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXJcIj5cbiAgICAgICAgICA8aGVhZGVyPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ2NocmlzdGlhbml0eUhpc3RvcnknKSB9fTwvaDI+XG4gICAgICAgICAgICA8c3Bhbj57eyBnYW1lKCkuaGlzdG9yeVpvbmUubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICAgIEBpZiAoZ2FtZSgpLmhpc3Rvcnlab25lLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1oaXN0b3J5LWdyaWRcIj5cbiAgICAgICAgICAgICAgQGZvciAoY2FyZElkIG9mIGdhbWUoKS5oaXN0b3J5Wm9uZTsgdHJhY2sgY2FyZElkICsgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGxldCBjYXJkID0gY2FyZERlZmluaXRpb24oY2FyZElkKTtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZFwiIChjbGljayk9XCJpbnNwZWN0SGlzdG9yeUNhcmQoY2FyZElkKVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJyA/IHQoJ2NocmlzdGlhbml0eU9mZmVyaW5nQ2FyZCcpIDogdCgnY2hyaXN0aWFuaXR5Q2hhcmFjdGVyQ2FyZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNhcmQubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgK3t7IGNhcmQubGlmZSB9fVxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyBjYXJkLmF0dGFjayB9fSAvIHt7IGNhcmQubGlmZSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8cD57eyB0KCdjaHJpc3RpYW5pdHlIaXN0b3J5RW1wdHknKSB9fTwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChvZmZlcmluZ3NTZWF0KCkpIHtcbiAgICAgICAgQGxldCBvZmZlcmluZ1BsYXllciA9IGdhbWUoKS5wbGF5ZXJzW29mZmVyaW5nc1NlYXQoKSFdO1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1oaXN0b3J5LWJhY2tkcm9wXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlDbG9zZU9mZmVyaW5ncycpXCIgKGNsaWNrKT1cImNsb3NlT2ZmZXJpbmdzKClcIj48L2J1dHRvbj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXIgY2hyaXN0aWFuaXR5LW9mZmVyaW5ncy1kcmF3ZXJcIj5cbiAgICAgICAgICA8aGVhZGVyPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ2NocmlzdGlhbml0eU9mZmVyaW5ncycpIH19PC9oMj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHJlYWR5T2ZmZXJpbmdzKG9mZmVyaW5nUGxheWVyKSB9fS97eyB0b3RhbE9mZmVyaW5ncyhvZmZlcmluZ1BsYXllcikgfX08L3NwYW4+XG4gICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1vZmZlcmluZy1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChvZmZlcmluZyBvZiBvZmZlcmluZ1BsYXllci5vZmZlcmluZ3M7IHRyYWNrIG9mZmVyaW5nLmluc3RhbmNlSWQpIHtcbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93XCIgW2NsYXNzLmlzLWV4aGF1c3RlZF09XCIhb2ZmZXJpbmcucmVhZHlcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkXCIgKGNsaWNrKT1cImluc3BlY3RPZmZlcmluZyhvZmZlcmluZylcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0NhcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBvZmZlcmluZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz4re3sgb2ZmZXJpbmcudmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAob2ZmZXJpbmcuYWJpbGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgb2ZmZXJpbmcuYWJpbGl0eU5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgb2ZmZXJpbmcucmVhZHkgPyB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ1JlYWR5JykgOiB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0V4aGF1c3RlZCcpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8cD57eyBvZmZlcmluZy5hYmlsaXR5VGV4dCB8fCB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ05vQWJpbGl0eScpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgQGlmIChvZmZlcmluZy5hYmlsaXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Vc2VPZmZlcmluZ0FiaWxpdHkob2ZmZXJpbmcsIG9mZmVyaW5nc1NlYXQoKSEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlT2ZmZXJpbmdBYmlsaXR5KG9mZmVyaW5nLCBvZmZlcmluZ3NTZWF0KCkhKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaHJpc3RpYW5pdHlVc2VBYmlsaXR5JykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIDwvbWFpbj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6IHZhcigtLXZhbC10ZXh0LWNvbG9yLCAjMWYyOTMzKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1zaGVsbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC4yNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y2ZjhmYjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oZWFkZXIsXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXN0cmlwLFxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXJfX3N1bW1hcnksXG4gICAgICAuY2hyaXN0aWFuaXR5LXNoYXJlZC16b25lLFxuICAgICAgLmNocmlzdGlhbml0eS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGVhZGVyIGgxLFxuICAgICAgLmNocmlzdGlhbml0eS1oZWFkZXIgcCxcbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHNtYWxsLFxuICAgICAgLmNocmlzdGlhbml0eS1zY29yZWJvYXJkIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnkgaDIsXG4gICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oZWFkZXIgaDEge1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGVhZGVyIHAsXG4gICAgICAuY2hyaXN0aWFuaXR5LXR1cm4gc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmdzIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpZGRlbi1oYW5kIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWRlY2sgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktcGxhY2Ugc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktcGlsZSBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1sZWFkZXIgc3BhbiB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNjQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktdHVybixcbiAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZ3MsXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpZGRlbi1oYW5kLFxuICAgICAgLmNocmlzdGlhbml0eS1waWxlLFxuICAgICAgLmNocmlzdGlhbml0eS1kZWNrLFxuICAgICAgLmNocmlzdGlhbml0eS1wbGFjZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiA1LjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS10dXJuLmlzLW93bi10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE4LCAxMjgsIDEwOCwgMC4zNSk7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlY2ZkZjU7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtc3RyaXAge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyLS1vcHBvbmVudCB7XG4gICAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllci0tb3Bwb25lbnQgZGl2IHtcbiAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHNtYWxsLFxuICAgICAgLmNocmlzdGlhbml0eS1zY29yZWJvYXJkIHNwYW4ge1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjU4KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXNjb3JlYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogNC4ycmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNTVyZW07XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktc2NvcmVib2FyZCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktdGFibGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW0gMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2RjZWFmYjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItc2lkZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zNXJlbSAwLjNyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjM0KTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoN3JlbSwgMWZyKSBhdXRvO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMy43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItc2lkZS0tb3Bwb25lbnQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gbWlubWF4KDdyZW0sIDFmcik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWJhdHRsZS16b25lIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgbWlubWF4KDQuMnJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiA3cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc2KTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1zaGFyZWQtem9uZSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC40cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktZW5kLXR1cm4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMgYnV0dG9uLFxuICAgICAgLmNocmlzdGlhbml0eS1waWxlLFxuICAgICAgLmNocmlzdGlhbml0eS1sZWFkZXItLXRhcmdldCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuOHJlbTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuNXJlbSAxLjI1cmVtIHJnYmEoMzYsIDQ4LCA2OCwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZCBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkIHN0cm9uZyB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICBwYWRkaW5nOiAwLjE1cmVtIDAuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZWRmMmY3O1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMjU2M2ViO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzNywgOTksIDIzNSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC5pcy1kaXNhYmxlZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC5pcy1leGhhdXN0ZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjU1O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQuaXMtdGFyZ2V0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZGMyNjI2O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcbiAgICAgICAgZ3JpZC1hdXRvLWNvbHVtbnM6IDAuN3JlbTtcbiAgICAgICAgZ2FwOiAwLjE2cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xuICAgICAgICBtaW4taGVpZ2h0OiAxLjA1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmRzIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDAuNjVyZW07XG4gICAgICAgIGhlaWdodDogMC45NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgNDIsIDY3LCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkcyBpLmlzLXVzZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjY2JkNWUxO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1zbG90IHtcbiAgICAgICAgbWluLWhlaWdodDogNS44cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgzNiwgNDgsIDY4LCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLWF1dG8tY29sdW1uczogbWlubWF4KDZyZW0sIDhyZW0pO1xuICAgICAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1hY3Rpb25zIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktYWN0aW9ucyBidXR0b24sXG4gICAgICAuY2hyaXN0aWFuaXR5LWVuZC10dXJuIHtcbiAgICAgICAgbWluLWhlaWdodDogMi40cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktYWN0aW9ucyBidXR0b246bm90KDpkaXNhYmxlZCksXG4gICAgICAuY2hyaXN0aWFuaXR5LWVuZC10dXJuIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzEwMmE0MztcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1mYW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4taGVpZ2h0OiA3LjRyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC4yNXJlbTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4taGVpZ2h0OiA4LjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC4yNXJlbSAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGYtLW9wcG9uZW50IHtcbiAgICAgICAgbWluLWhlaWdodDogNS42cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuMjVyZW0gMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oYW5kLWZhbi0tb3Bwb25lbnQge1xuICAgICAgICBtaW4taGVpZ2h0OiA0LjRyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1taW5pLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkLFxuICAgICAgLmNocmlzdGlhbml0eS1sZWFkZXItY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1jYXJkLFxuICAgICAgLmNocmlzdGlhbml0eS16b25lLXBpbGUsXG4gICAgICAuY2hyaXN0aWFuaXR5LWVuZC10dXJuIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIHdpZHRoOiBjbGFtcCg0LjlyZW0sIDE3dncsIDcuMXJlbSk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGNsYW1wKDYuNnJlbSwgMjJ2dywgOC44cmVtKTtcbiAgICAgICAgbWFyZ2luLWlubGluZTogLTAuNDJyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNDhyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxMTUlO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIHRyYW5zZm9ybSAxNjBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTYwbXMgZWFzZSxcbiAgICAgICAgICBib3JkZXItY29sb3IgMTYwbXMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjVyZW0gMS4yNXJlbSByZ2JhKDM2LCA0OCwgNjgsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQtLWhhbmQ6aG92ZXIsXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkLS1oYW5kLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMjU2M2ViO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFyZW0gMnJlbSByZ2JhKDM3LCA5OSwgMjM1LCAwLjE4KTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0tYmFjayB7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg0cmVtLCAxNHZ3LCA1LjdyZW0pO1xuICAgICAgICBtaW4taGVpZ2h0OiBjbGFtcCg1cmVtLCAxNnZ3LCA2LjZyZW0pO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTYsIDQyLCA2NywgMC4xMiksIHJnYmEoMTYsIDQyLCA2NywgMC4wMikpLFxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsICNlMmU4ZjAgMCAwLjM1cmVtLCAjZjhmYWZjIDAuMzVyZW0gMC43cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0tYmF0dGxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuN3JlbTtcbiAgICAgICAgbWFyZ2luLWlubGluZTogMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLW1pbmkgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlci1jYXJkIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtY2FyZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS16b25lLXBpbGUgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgc3Ryb25nLFxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLW1pbmkgc3Ryb25nLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBzdHJvbmcsXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlci1jYXJkIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1jYXJkIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHN0cm9uZyB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICBwYWRkaW5nOiAwLjE1cmVtIDAuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZWRmMmY3O1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItcmFjayB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDUuOXJlbSwgN3JlbSkgbWlubWF4KDVyZW0sIDFmcikgbWlubWF4KDQuMnJlbSwgN3JlbSk7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogc3RyZXRjaDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItcmFjay0tb3Bwb25lbnQge1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1jb3VudCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogMy40cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42OCk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1jb3VudCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMzEsIDQxLCA1MSwgMC41OCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oYW5kLWNvdW50IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItYmFkZ2UsXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYXllci1jb21tYW5kIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItYmFkZ2Uge1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgY29sb3I6IHJnYmEoMzEsIDQxLCA1MSwgMC43Nik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItYmFkZ2UtLW9wcG9uZW50IHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYXllci1iYWRnZSBzdHJvbmcge1xuICAgICAgICBtYXgtd2lkdGg6IDYuNXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuODVyZW07XG4gICAgICAgIGhlaWdodDogMS44NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC4zNXJlbSAwLjlyZW0gcmdiYSgxNiwgNDIsIDY3LCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZ3Mtem9uZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtbWluaSxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyLWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgbWluLWhlaWdodDogNC45cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ4cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtbWluaSB7XG4gICAgICAgIHdpZHRoOiAzLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICB3aWR0aDogbWluKDEwMCUsIDUuOXJlbSk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDYuNnJlbTtcbiAgICAgICAgcGFkZGluZzogMC42MnJlbSAwLjUycmVtIDAuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2ZmZmZmZiwgI2Y4ZmFmYyksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTAsIDIwNCwgMjEsIDAuMTgpLCB0cmFuc3BhcmVudCA0MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUgaSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuNnJlbSBhdXRvIGF1dG8gMC43cmVtO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgd2lkdGg6IDIuNTVyZW07XG4gICAgICAgIGhlaWdodDogMy41NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgNDIsIDY3LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpLCByZ2JhKDI0MSwgMjQ1LCAyNDksIDAuOTIpKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAxOCUsICNmYWNjMTUgMCAwLjM4cmVtLCB0cmFuc3BhcmVudCAwLjRyZW0pO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuMzVyZW0gMC44NXJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlIGk6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMC4yOHJlbSwgMC4wOHJlbSkgcm90YXRlKDNkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUgaTpudGgtY2hpbGQoMykge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLjU1cmVtLCAwLjE4cmVtKSByb3RhdGUoLTFkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlci1jYXJkIHtcbiAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA2LjVyZW0pO1xuICAgICAgICBtaW4taGVpZ2h0OiA1LjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktYmF0dGxlLXpvbmUge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNHJlbSwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktc2hhcmVkLXpvbmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoNC4zcmVtLCAxZnIpKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1jYXJkLFxuICAgICAgLmNocmlzdGlhbml0eS16b25lLXBpbGUge1xuICAgICAgICBtaW4taGVpZ2h0OiA2LjQ1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjYycmVtIDAuNTJyZW0gMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS16b25lLXBpbGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgOTk5cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS16b25lLXBpbGUgaSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuNjJyZW0gMC43MnJlbSBhdXRvIGF1dG87XG4gICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICB3aWR0aDogMi43cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuN3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNiwgNDIsIDY3LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjM1cmVtIDAuODVyZW0gcmdiYSgxNiwgNDIsIDY3LCAwLjExKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIGk6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTAuMjhyZW0sIDAuMTJyZW0pIHJvdGF0ZSgtM2RlZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIGk6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDE2LCA0MiwgNjcsIDAuMTYpLCByZ2JhKDE2LCA0MiwgNjcsIDAuMDMpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjZGJlYWZlIDAgMC4zM3JlbSwgI2ZmZmZmZiAwLjMzcmVtIDAuNjZyZW0pO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMC41NHJlbSwgMC4yNHJlbSkgcm90YXRlKDJkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDIxO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIHdpZHRoOiBtaW4oMjByZW0sIGNhbGMoMTAwdncgLSAycmVtKSk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IG1pbigyN3JlbSwgY2FsYygxMDB2aCAtIDVyZW0pKTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCByZ2JhKDI0OCwgMjUwLCAyNTIsIDAuOTYpKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAwJSwgcmdiYSgzNywgOTksIDIzNSwgMC4xMiksIHRyYW5zcGFyZW50IDQ1JSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAyLjRyZW0gNXJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMzQpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMzVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcbiAgICAgICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06XG4gICAgICAgICAgdHJhbnNsYXRlKGNhbGMoLTUwJSArIHZhcigtLXByZXZpZXctc2hpZnQteCwgMHB4KSksIGNhbGMoLTUwJSArIHZhcigtLXByZXZpZXctc2hpZnQteSwgMHB4KSkpXG4gICAgICAgICAgcGVyc3BlY3RpdmUoNDhyZW0pXG4gICAgICAgICAgcm90YXRlWCh2YXIoLS1wcmV2aWV3LXJvdGF0ZS14LCA1ZGVnKSlcbiAgICAgICAgICByb3RhdGVZKHZhcigtLXByZXZpZXctcm90YXRlLXksIC01ZGVnKSk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA5MG1zIGVhc2Utb3V0O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXByZXZpZXctYmFja2Ryb3AsXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktYmFja2Ryb3Age1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuNDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQgc21hbGwsXG4gICAgICAuY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQgc3BhbiB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNjQpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjM1cmVtLCA4dncsIDJyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1mbG9hdGluZy1jYXJkIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oaXN0b3J5LWJhY2tkcm9wIHtcbiAgICAgICAgei1pbmRleDogMjI7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXIge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiBtYXgoMC41cmVtLCBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSk7XG4gICAgICAgIGJvdHRvbTogbWF4KDAuNXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtcbiAgICAgICAgbGVmdDogbWF4KDAuNXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KSk7XG4gICAgICAgIHotaW5kZXg6IDIzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1heC1oZWlnaHQ6IG1pbigyN3JlbSwgY2FsYygxMDB2aCAtIDRyZW0pKTtcbiAgICAgICAgcGFkZGluZzogMC44cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEuNXJlbSA0cmVtIHJnYmEoMTYsIDQyLCA2NywgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXIgaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXIgaDIsXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1kcmF3ZXIgaGVhZGVyIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDEuODVyZW07XG4gICAgICAgIGhlaWdodDogMS44NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlZGYyZjc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1ncmlkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoNS40cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwLjFyZW0gMC4xcmVtIDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmdzLWRyYXdlciB7XG4gICAgICAgIG1heC1oZWlnaHQ6IG1pbigzMHJlbSwgY2FsYygxMDB2aCAtIDNyZW0pKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjZyZW07XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAuMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCg0LjlyZW0sIDYuMnJlbSkgbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIHBhZGRpbmc6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93LmlzLWV4aGF1c3RlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjg7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDcuNHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCByZ2JhKDI0OCwgMjUwLCAyNTIsIDAuOTYpKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDgyJSAxNCUsICNmYWNjMTUgMCAwLjQ4cmVtLCB0cmFuc3BhcmVudCAwLjVyZW0pO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuNDVyZW0gMXJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNTgpO1xuICAgICAgICBmb250LXNpemU6IDAuNjZyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBwLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1yb3cgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkIHAge1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNjQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93ID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1yb3cgPiBkaXYgcCB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNzIpO1xuICAgICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93ID4gZGl2IGJ1dHRvbiB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuMnJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjdyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDQyLCA2NywgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogIzEwMmE0MztcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93ID4gZGl2IGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNTgpO1xuICAgICAgfVxuXG4gICAgICBidXR0b24ge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIG9wYWNpdHk6IDAuNTU7XG4gICAgICB9XG5cbiAgICAgIGJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMC4xODc1cmVtIHNvbGlkIHJnYmEoMzcsIDk5LCAyMzUsIDAuMjQpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMC4xMjVyZW07XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3MjBweCkge1xuICAgICAgICAuY2hyaXN0aWFuaXR5LXNoZWxsIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDA7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LWhlYWRlcixcbiAgICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXJfX3N1bW1hcnksXG4gICAgICAgIC5jaHJpc3RpYW5pdHktc2hhcmVkLXpvbmUsXG4gICAgICAgIC5jaHJpc3RpYW5pdHktYWN0aW9ucyB7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtc3RyaXAge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzbWFsbCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktc2NvcmVib2FyZCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAzLjY1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktc2NvcmVib2FyZCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktdGFibGUge1xuICAgICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLXNpZGUge1xuICAgICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1iYXR0bGUtem9uZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDMuMzVyZW0sIDFmcikpO1xuICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtZmFuIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA2LjhyZW07XG4gICAgICAgICAgb3ZlcmZsb3cteDogY2xpcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1zaGVsZiB7XG4gICAgICAgICAgbWluLWhlaWdodDogNy40cmVtO1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oYW5kLXNoZWxmLS1vcHBvbmVudCB7XG4gICAgICAgICAgbWluLWhlaWdodDogNXJlbTtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLXJhY2sge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDQuN3JlbSwgNS45cmVtKSBtaW5tYXgoNC44cmVtLCAxZnIpIG1pbm1heCgzLjdyZW0sIDVyZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1zaGFyZWQtem9uZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDMuN3JlbSwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUsXG4gICAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1jYXJkLFxuICAgICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSB7XG4gICAgICAgICAgbWluLWhlaWdodDogNi4xNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU4cmVtIDAuNDZyZW0gMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCB7XG4gICAgICAgICAgd2lkdGg6IGNsYW1wKDQuMnJlbSwgMjB2dywgNS43cmVtKTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiBjbGFtcCg1LjhyZW0sIDI2dncsIDcuNHJlbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoNC41cmVtLCA1LjVyZW0pIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oYW5kLWZhbi0tb3Bwb25lbnQge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaHJpc3RpYW5pdHlHYW1lQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaHJpc3RpYW5pdHlHYW1lU3RhdGU+KHN0cnVjdHVyZWRDbG9uZShTVEFSVElOR19HQU1FKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZEhhbmRDYXJkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRBdHRhY2tlciA9IHNpZ25hbDxDaHJpc3RpYW5pdHlDaGFyYWN0ZXJJbnN0YW5jZSB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRQcmV2aWV3ID0gc2lnbmFsPENocmlzdGlhbml0eUNhcmRQcmV2aWV3IHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwcmV2aWV3VGlsdCA9IHNpZ25hbDxDaHJpc3RpYW5pdHlQcmV2aWV3VGlsdD4oeyByb3RhdGVYOiA1LCByb3RhdGVZOiAtNSwgc2hpZnRYOiAwLCBzaGlmdFk6IDAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93SGlzdG9yeSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvZmZlcmluZ3NTZWF0ID0gc2lnbmFsPENocmlzdGlhbml0eVNlYXQgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVycy5QMSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcHBvbmVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnMuUDIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5nYW1lKCkudHVybk93bmVyXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc093blR1cm4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS50dXJuT3duZXIgPT09ICdQMScpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzT3Bwb25lbnRHdWFyZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wcG9uZW50KCkuYmF0dGxlWm9uZS5sZW5ndGggPiAwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wcG9uZW50SGFuZENvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHBvbmVudCgpLmhhbmRDb3VudCA/PyB0aGlzLm9wcG9uZW50KCkuaGFuZD8ubGVuZ3RoID8/IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhdHVzVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhdHRhY2tlciA9IHRoaXMuc2VsZWN0ZWRBdHRhY2tlcigpO1xuICAgIGNvbnN0IGhhbmRDYXJkID0gdGhpcy5zZWxlY3RlZEhhbmRDYXJkKCk7XG4gICAgaWYgKCF0aGlzLmlzT3duVHVybigpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KCdjaHJpc3RpYW5pdHlXYWl0VHVybicpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNrZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhc09wcG9uZW50R3VhcmRzKCkgPyB0aGlzLnQoJ2NocmlzdGlhbml0eUNob29zZUNoYXJhY3RlclRhcmdldCcpIDogdGhpcy50KCdjaHJpc3RpYW5pdHlDaG9vc2VUYXJnZXQnKTtcbiAgICB9XG4gICAgaWYgKGhhbmRDYXJkKSB7XG4gICAgICBjb25zdCBjYXJkID0gdGhpcy5jYXJkRGVmaW5pdGlvbihoYW5kQ2FyZCk7XG4gICAgICByZXR1cm4gdGhpcy5jYW5QbGF5KGNhcmQpID8gdGhpcy50KCdjaHJpc3RpYW5pdHlSZWFkeVRvUGxheScpIDogdGhpcy50KCdjaHJpc3RpYW5pdHlOZWVkT2ZmZXJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnQoJ2NocmlzdGlhbml0eUNob29zZUNhcmQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FyZERlZmluaXRpb24oY2FyZElkOiBzdHJpbmcpOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIFNUQVJURVJfQ0FSRFNbY2FyZElkXSA/PyBTVEFSVEVSX0NBUkRTWydwX3Njb3V0J107XG4gIH1cblxuICBwcm90ZWN0ZWQgYmF0dGxlU2xvdHMoc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IEFycmF5PHsgdHJhY2tJZDogc3RyaW5nOyBjYXJkPzogQ2hyaXN0aWFuaXR5Q2hhcmFjdGVySW5zdGFuY2UgfT4ge1xuICAgIGNvbnN0IGNhcmRzID0gdGhpcy5nYW1lKCkucGxheWVyc1tzZWF0XS5iYXR0bGVab25lO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiA0IH0sIChfLCBpbmRleCkgPT4gKHtcbiAgICAgIHRyYWNrSWQ6IGNhcmRzW2luZGV4XT8uaW5zdGFuY2VJZCA/PyBgJHtzZWF0fS1lbXB0eS0ke2luZGV4fWAsXG4gICAgICBjYXJkOiBjYXJkc1tpbmRleF0sXG4gICAgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhpZGRlbkhhbmRDYXJkcyhjb3VudDogbnVtYmVyKTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmFuVHJhbnNmb3JtKGluZGV4OiBudW1iZXIsIHRvdGFsOiBudW1iZXIsIG9wcG9uZW50OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAodG90YWwgPD0gMSkgcmV0dXJuIG9wcG9uZW50ID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICdub25lJztcbiAgICBjb25zdCBjZW50ZXIgPSAodG90YWwgLSAxKSAvIDI7XG4gICAgY29uc3Qgb2Zmc2V0ID0gaW5kZXggLSBjZW50ZXI7XG4gICAgY29uc3Qgcm90YXRlID0gb2Zmc2V0ICogNTtcbiAgICBjb25zdCBsaWZ0ID0gTWF0aC5hYnMob2Zmc2V0KSAqIDAuMjU7XG4gICAgY29uc3QgYmFzZSA9IG9wcG9uZW50ID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICcnO1xuICAgIHJldHVybiBgJHtiYXNlfSB0cmFuc2xhdGVZKCR7bGlmdH1yZW0pIHJvdGF0ZSgke3JvdGF0ZX1kZWcpYDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkeU9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGxheWVyLm9mZmVyaW5ncy5yZWR1Y2UoKHRvdGFsLCBvZmZlcmluZykgPT4gdG90YWwgKyAob2ZmZXJpbmcucmVhZHkgPyBvZmZlcmluZy52YWx1ZSA6IDApLCAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b3RhbE9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGxheWVyLm9mZmVyaW5ncy5yZWR1Y2UoKHRvdGFsLCBvZmZlcmluZykgPT4gdG90YWwgKyBvZmZlcmluZy52YWx1ZSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuUGxheShjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pc093blR1cm4oKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHJldHVybiAhdGhpcy5wbGF5ZXIoKS5vZmZlcmluZ1BsYXllZFRoaXNUdXJuO1xuICAgIHJldHVybiB0aGlzLnJlYWR5T2ZmZXJpbmdzKHRoaXMucGxheWVyKCkpID49IGNhcmQuY29zdCAmJiB0aGlzLnBsYXllcigpLmJhdHRsZVpvbmUubGVuZ3RoIDwgNDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYW5QbGF5U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSGFuZENhcmQoKTtcbiAgICByZXR1cm4gISFzZWxlY3RlZCAmJiB0aGlzLmNhblBsYXkodGhpcy5jYXJkRGVmaW5pdGlvbihzZWxlY3RlZCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEhhbmRDYXJkKGNhcmRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEF0dGFja2VyLnNldChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkSGFuZENhcmQuc2V0KHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZCgpID09PSBjYXJkSWQgPyBudWxsIDogY2FyZElkKTtcbiAgICB0aGlzLmluc3BlY3RIYW5kQ2FyZChjYXJkSWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBsYXlTZWxlY3RlZENhcmQoKTogdm9pZCB7XG4gICAgY29uc3QgY2FyZElkID0gdGhpcy5zZWxlY3RlZEhhbmRDYXJkKCk7XG4gICAgaWYgKCFjYXJkSWQpIHJldHVybjtcbiAgICBjb25zdCBjYXJkID0gdGhpcy5jYXJkRGVmaW5pdGlvbihjYXJkSWQpO1xuICAgIGlmICghdGhpcy5jYW5QbGF5KGNhcmQpKSByZXR1cm47XG5cbiAgICB0aGlzLmdhbWUudXBkYXRlKGdhbWUgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgICAgIGNvbnN0IHBsYXllciA9IG5leHQucGxheWVycy5QMTtcbiAgICAgIGNvbnN0IGhhbmRJbmRleCA9IHBsYXllci5oYW5kPy5pbmRleE9mKGNhcmRJZCkgPz8gLTE7XG4gICAgICBpZiAoaGFuZEluZGV4IDwgMCB8fCAhcGxheWVyLmhhbmQpIHJldHVybiBnYW1lO1xuICAgICAgcGxheWVyLmhhbmQuc3BsaWNlKGhhbmRJbmRleCwgMSk7XG4gICAgICBpZiAoY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnKSB7XG4gICAgICAgIHBsYXllci5vZmZlcmluZ3MucHVzaCh7XG4gICAgICAgICAgaW5zdGFuY2VJZDogYHAxX29mZmVyaW5nXyR7bmV4dC5yZXZpc2lvbiArIDF9YCxcbiAgICAgICAgICBjYXJkSWQ6IGNhcmQuaWQsXG4gICAgICAgICAgbmFtZTogY2FyZC5uYW1lLFxuICAgICAgICAgIG93bmVyOiAnUDEnLFxuICAgICAgICAgIHJlYWR5OiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBjYXJkLmxpZmUsXG4gICAgICAgICAgYWJpbGl0eU5hbWU6IGNhcmQuYWJpbGl0eU5hbWUsXG4gICAgICAgICAgYWJpbGl0eVRleHQ6IGNhcmQuYWJpbGl0eVRleHQsXG4gICAgICAgICAgYWJpbGl0eUNvc3Q6IGNhcmQuYWJpbGl0eUNvc3QsXG4gICAgICAgIH0pO1xuICAgICAgICBwbGF5ZXIub2ZmZXJpbmdQbGF5ZWRUaGlzVHVybiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNwZW5kT2ZmZXJpbmdzKHBsYXllciwgY2FyZC5jb3N0KTtcbiAgICAgICAgcGxheWVyLmJhdHRsZVpvbmUucHVzaCh7XG4gICAgICAgICAgaW5zdGFuY2VJZDogYHAxXyR7bmV4dC5yZXZpc2lvbiArIDF9XyR7cGxheWVyLmJhdHRsZVpvbmUubGVuZ3RofWAsXG4gICAgICAgICAgY2FyZElkOiBjYXJkLmlkLFxuICAgICAgICAgIG5hbWU6IGNhcmQubmFtZSxcbiAgICAgICAgICBvd25lcjogJ1AxJyxcbiAgICAgICAgICBjb250cm9sbGVyOiAnUDEnLFxuICAgICAgICAgIGF0dGFjazogY2FyZC5hdHRhY2ssXG4gICAgICAgICAgY3VycmVudEhwOiBjYXJkLmxpZmUsXG4gICAgICAgICAgbWF4SHA6IGNhcmQubGlmZSxcbiAgICAgICAgICBjYW5BdHRhY2s6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5leHQucmV2aXNpb24rKztcbiAgICAgIG5leHQubG9nID0gW1xuICAgICAgICBjYXJkLnR5cGUgPT09ICdvZmZlcmluZycgPyBgJHtjYXJkLm5hbWV9IHF1ZWRhIGxpc3RhIGNvbW8gb2ZyZW5kYS5gIDogYCR7Y2FyZC5uYW1lfSBlbnRyYSBlbiBiYXRhbGxhLmAsXG4gICAgICAgIC4uLm5leHQubG9nLFxuICAgICAgXS5zbGljZSgwLCA0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZC5zZXQobnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QXR0YWNrZXIoY2FyZDogQ2hyaXN0aWFuaXR5Q2hhcmFjdGVySW5zdGFuY2UpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSGFuZENhcmQuc2V0KG51bGwpO1xuICAgIHRoaXMuaW5zcGVjdENoYXJhY3RlcihjYXJkKTtcbiAgICBpZiAoIXRoaXMuaXNPd25UdXJuKCkgfHwgIWNhcmQuY2FuQXR0YWNrKSByZXR1cm47XG4gICAgdGhpcy5zZWxlY3RlZEF0dGFja2VyLnNldCh0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKT8uaW5zdGFuY2VJZCA9PT0gY2FyZC5pbnN0YW5jZUlkID8gbnVsbCA6IGNhcmQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wcG9uZW50Q2hhcmFjdGVyKGNhcmQ6IENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlKTogdm9pZCB7XG4gICAgdGhpcy5pbnNwZWN0Q2hhcmFjdGVyKGNhcmQpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKSkge1xuICAgICAgdGhpcy5hdHRhY2tDaGFyYWN0ZXIoY2FyZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wcG9uZW50TGVhZGVyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zcGVjdExlYWRlcignUDInKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEF0dGFja2VyKCkgJiYgIXRoaXMuaGFzT3Bwb25lbnRHdWFyZHMoKSkge1xuICAgICAgdGhpcy5hdHRhY2tMZWFkZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXR0YWNrTGVhZGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFja2VyID0gdGhpcy5zZWxlY3RlZEF0dGFja2VyKCk7XG4gICAgaWYgKCFhdHRhY2tlcikgcmV0dXJuO1xuICAgIGlmICh0aGlzLmhhc09wcG9uZW50R3VhcmRzKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICAgIHRpdGxlOiB0aGlzLm9wcG9uZW50KCkubGVhZGVyTmFtZSxcbiAgICAgICAgZXllYnJvdzogdGhpcy50KCdjaHJpc3RpYW5pdHlMZWFkZXJDYXJkJyksXG4gICAgICAgIG1ldGE6IGAke3RoaXMub3Bwb25lbnQoKS5sZWFkZXJIcH0vJHt0aGlzLm9wcG9uZW50KCkubGVhZGVyTWF4SHB9YCxcbiAgICAgICAgYm9keTogdGhpcy50KCdjaHJpc3RpYW5pdHlMZWFkZXJQcm90ZWN0ZWQnKSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmdhbWUudXBkYXRlKGdhbWUgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgICAgIGNvbnN0IGxpdmVBdHRhY2tlciA9IG5leHQucGxheWVycy5QMS5iYXR0bGVab25lLmZpbmQoY2FyZCA9PiBjYXJkLmluc3RhbmNlSWQgPT09IGF0dGFja2VyLmluc3RhbmNlSWQpO1xuICAgICAgaWYgKCFsaXZlQXR0YWNrZXIgfHwgIWxpdmVBdHRhY2tlci5jYW5BdHRhY2spIHJldHVybiBnYW1lO1xuICAgICAgbmV4dC5wbGF5ZXJzLlAyLmxlYWRlckhwID0gTWF0aC5tYXgoMCwgbmV4dC5wbGF5ZXJzLlAyLmxlYWRlckhwIC0gbGl2ZUF0dGFja2VyLmF0dGFjayk7XG4gICAgICBsaXZlQXR0YWNrZXIuY2FuQXR0YWNrID0gZmFsc2U7XG4gICAgICBuZXh0LnJldmlzaW9uKys7XG4gICAgICBuZXh0LmxvZyA9IFtgJHtsaXZlQXR0YWNrZXIubmFtZX0gYXRhY2EgYWwgbGlkZXIgcml2YWwuYCwgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEF0dGFja2VyLnNldChudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhdHRhY2tDaGFyYWN0ZXIodGFyZ2V0OiBDaHJpc3RpYW5pdHlDaGFyYWN0ZXJJbnN0YW5jZSk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFja2VyID0gdGhpcy5zZWxlY3RlZEF0dGFja2VyKCk7XG4gICAgaWYgKCFhdHRhY2tlcikgcmV0dXJuO1xuICAgIHRoaXMuZ2FtZS51cGRhdGUoZ2FtZSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICAgICAgY29uc3QgbGl2ZUF0dGFja2VyID0gbmV4dC5wbGF5ZXJzLlAxLmJhdHRsZVpvbmUuZmluZChjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gYXR0YWNrZXIuaW5zdGFuY2VJZCk7XG4gICAgICBjb25zdCBsaXZlVGFyZ2V0ID0gbmV4dC5wbGF5ZXJzLlAyLmJhdHRsZVpvbmUuZmluZChjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gdGFyZ2V0Lmluc3RhbmNlSWQpO1xuICAgICAgaWYgKCFsaXZlQXR0YWNrZXIgfHwgIWxpdmVUYXJnZXQgfHwgIWxpdmVBdHRhY2tlci5jYW5BdHRhY2spIHJldHVybiBnYW1lO1xuICAgICAgbGl2ZVRhcmdldC5jdXJyZW50SHAgLT0gbGl2ZUF0dGFja2VyLmF0dGFjaztcbiAgICAgIGxpdmVBdHRhY2tlci5jdXJyZW50SHAgLT0gbGl2ZVRhcmdldC5hdHRhY2s7XG4gICAgICBsaXZlQXR0YWNrZXIuY2FuQXR0YWNrID0gZmFsc2U7XG4gICAgICB0aGlzLmNsZWFudXBEZXN0cm95ZWQobmV4dC5wbGF5ZXJzLlAxLCBuZXh0KTtcbiAgICAgIHRoaXMuY2xlYW51cERlc3Ryb3llZChuZXh0LnBsYXllcnMuUDIsIG5leHQpO1xuICAgICAgbmV4dC5yZXZpc2lvbisrO1xuICAgICAgbmV4dC5sb2cgPSBbYCR7bGl2ZUF0dGFja2VyLm5hbWV9IGNvbWJhdGUgY29udHJhICR7bGl2ZVRhcmdldC5uYW1lfS5gLCAuLi5uZXh0LmxvZ10uc2xpY2UoMCwgNCk7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVuZFR1cm4oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEhhbmRDYXJkLnNldChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldChudWxsKTtcbiAgICB0aGlzLmdhbWUudXBkYXRlKGdhbWUgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgICAgIG5leHQudHVybk93bmVyID0gbmV4dC50dXJuT3duZXIgPT09ICdQMScgPyAnUDInIDogJ1AxJztcbiAgICAgIG5leHQudHVybkNvdW50Kys7XG4gICAgICBjb25zdCBjdXJyZW50ID0gbmV4dC5wbGF5ZXJzW25leHQudHVybk93bmVyXTtcbiAgICAgIGN1cnJlbnQub2ZmZXJpbmdQbGF5ZWRUaGlzVHVybiA9IGZhbHNlO1xuICAgICAgY3VycmVudC5vZmZlcmluZ3MgPSBjdXJyZW50Lm9mZmVyaW5ncy5tYXAob2ZmZXJpbmcgPT4gKHsgLi4ub2ZmZXJpbmcsIHJlYWR5OiB0cnVlIH0pKTtcbiAgICAgIGN1cnJlbnQuYmF0dGxlWm9uZSA9IGN1cnJlbnQuYmF0dGxlWm9uZS5tYXAoY2FyZCA9PiAoeyAuLi5jYXJkLCBjYW5BdHRhY2s6IHRydWUgfSkpO1xuICAgICAgY29uc3QgZHJhd25DYXJkID0gbmV4dC5zaGFyZWREZWNrLnNoaWZ0KCk7XG4gICAgICBpZiAoZHJhd25DYXJkKSB7XG4gICAgICAgIGlmIChjdXJyZW50LmhhbmQpIHtcbiAgICAgICAgICBjdXJyZW50LmhhbmQucHVzaChkcmF3bkNhcmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnQuaGFuZENvdW50ID0gKGN1cnJlbnQuaGFuZENvdW50ID8/IDApICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV4dC5yZXZpc2lvbisrO1xuICAgICAgbmV4dC5sb2cgPSBbXG4gICAgICAgIGRyYXduQ2FyZCA/IGAke2N1cnJlbnQuZGlzcGxheU5hbWV9IHJvYmEgdW5hIGNhcnRhLmAgOiBgRWwgbWF6byBlc3RhIHZhY2lvLmAsXG4gICAgICAgIGBUdXJubyBkZSAke2N1cnJlbnQuZGlzcGxheU5hbWV9LmAsXG4gICAgICAgIC4uLm5leHQubG9nLFxuICAgICAgXS5zbGljZSgwLCA0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0TW9jaygpOiB2b2lkIHtcbiAgICB0aGlzLmdhbWUuc2V0KHN0cnVjdHVyZWRDbG9uZShTVEFSVElOR19HQU1FKSk7XG4gICAgdGhpcy5zZWxlY3RlZEhhbmRDYXJkLnNldChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldChudWxsKTtcbiAgICB0aGlzLnNob3dIaXN0b3J5LnNldChmYWxzZSk7XG4gICAgdGhpcy5vZmZlcmluZ3NTZWF0LnNldChudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZVByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KG51bGwpO1xuICAgIHRoaXMucmVzZXRQcmV2aWV3VGlsdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5PZmZlcmluZ3Moc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldChudWxsKTtcbiAgICB0aGlzLnNob3dIaXN0b3J5LnNldChmYWxzZSk7XG4gICAgdGhpcy5vZmZlcmluZ3NTZWF0LnNldChzZWF0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZU9mZmVyaW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLm9mZmVyaW5nc1NlYXQuc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRpbHRQcmV2aWV3KGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBib3VuZHMgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IChldmVudC5jbGllbnRYIC0gYm91bmRzLmxlZnQpIC8gYm91bmRzLndpZHRoIC0gMC41O1xuICAgIGNvbnN0IHkgPSAoZXZlbnQuY2xpZW50WSAtIGJvdW5kcy50b3ApIC8gYm91bmRzLmhlaWdodCAtIDAuNTtcbiAgICB0aGlzLnByZXZpZXdUaWx0LnNldCh7XG4gICAgICByb3RhdGVYOiA1IC0geSAqIDE4LFxuICAgICAgcm90YXRlWTogLTUgKyB4ICogMTgsXG4gICAgICBzaGlmdFg6IHggKiAxMCxcbiAgICAgIHNoaWZ0WTogeSAqIDEwLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0UHJldmlld1RpbHQoKTogdm9pZCB7XG4gICAgdGhpcy5wcmV2aWV3VGlsdC5zZXQoeyByb3RhdGVYOiA1LCByb3RhdGVZOiAtNSwgc2hpZnRYOiAwLCBzaGlmdFk6IDAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBEZXN0cm95ZWQocGxheWVyOiBDaHJpc3RpYW5pdHlQbGF5ZXJTdGF0ZSwgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdHJveWVkID0gcGxheWVyLmJhdHRsZVpvbmUuZmlsdGVyKGNhcmQgPT4gY2FyZC5jdXJyZW50SHAgPD0gMCk7XG4gICAgaWYgKCFkZXN0cm95ZWQubGVuZ3RoKSByZXR1cm47XG4gICAgZ2FtZS5oaXN0b3J5Wm9uZS5wdXNoKC4uLmRlc3Ryb3llZC5tYXAoY2FyZCA9PiBjYXJkLmNhcmRJZCkpO1xuICAgIHBsYXllci5iYXR0bGVab25lID0gcGxheWVyLmJhdHRsZVpvbmUuZmlsdGVyKGNhcmQgPT4gY2FyZC5jdXJyZW50SHAgPiAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNwZWN0TGVhZGVyKHNlYXQ6IENocmlzdGlhbml0eVNlYXQpOiB2b2lkIHtcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmdhbWUoKS5wbGF5ZXJzW3NlYXRdO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICB0aXRsZTogcGxheWVyLmxlYWRlck5hbWUsXG4gICAgICBleWVicm93OiB0aGlzLnQoJ2NocmlzdGlhbml0eUxlYWRlckNhcmQnKSxcbiAgICAgIG1ldGE6IGAke3BsYXllci5sZWFkZXJIcH0vJHtwbGF5ZXIubGVhZGVyTWF4SHB9YCxcbiAgICAgIGJvZHk6IHNlYXQgPT09ICdQMicgJiYgdGhpcy5oYXNPcHBvbmVudEd1YXJkcygpID8gdGhpcy50KCdjaHJpc3RpYW5pdHlMZWFkZXJQcm90ZWN0ZWQnKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5TGVhZGVyQm9keScpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3BlY3RPZmZlcmluZyhvZmZlcmluZzogQ2hyaXN0aWFuaXR5T2ZmZXJpbmdJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICB0aXRsZTogb2ZmZXJpbmcubmFtZSxcbiAgICAgIGV5ZWJyb3c6IHRoaXMudCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdDYXJkJyksXG4gICAgICBtZXRhOiBvZmZlcmluZy5yZWFkeSA/IHRoaXMudCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdSZWFkeScpIDogdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0V4aGF1c3RlZCcpLFxuICAgICAgYm9keTogb2ZmZXJpbmcuYWJpbGl0eVRleHQgfHwgdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0JvZHknKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYW5Vc2VPZmZlcmluZ0FiaWxpdHkob2ZmZXJpbmc6IENocmlzdGlhbml0eU9mZmVyaW5nSW5zdGFuY2UsIHNlYXQ6IENocmlzdGlhbml0eVNlYXQpOiBib29sZWFuIHtcbiAgICBpZiAoc2VhdCAhPT0gJ1AxJyB8fCAhdGhpcy5pc093blR1cm4oKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghb2ZmZXJpbmcucmVhZHkgfHwgIW9mZmVyaW5nLmFiaWxpdHlOYW1lKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlPZmZlcmluZ3ModGhpcy5nYW1lKCkucGxheWVyc1tzZWF0XSkgPj0gKG9mZmVyaW5nLmFiaWxpdHlDb3N0ID8/IDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVzZU9mZmVyaW5nQWJpbGl0eShvZmZlcmluZzogQ2hyaXN0aWFuaXR5T2ZmZXJpbmdJbnN0YW5jZSwgc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5Vc2VPZmZlcmluZ0FiaWxpdHkob2ZmZXJpbmcsIHNlYXQpKSByZXR1cm47XG4gICAgdGhpcy5nYW1lLnVwZGF0ZShnYW1lID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gICAgICBjb25zdCBwbGF5ZXIgPSBuZXh0LnBsYXllcnNbc2VhdF07XG4gICAgICBjb25zdCBsaXZlT2ZmZXJpbmcgPSBwbGF5ZXIub2ZmZXJpbmdzLmZpbmQoY2FyZCA9PiBjYXJkLmluc3RhbmNlSWQgPT09IG9mZmVyaW5nLmluc3RhbmNlSWQpO1xuICAgICAgaWYgKCFsaXZlT2ZmZXJpbmcgfHwgIWxpdmVPZmZlcmluZy5yZWFkeSkgcmV0dXJuIGdhbWU7XG4gICAgICBjb25zdCBvZmZlcmluZ0lkID0gbGl2ZU9mZmVyaW5nLmluc3RhbmNlSWQ7XG4gICAgICB0aGlzLnNwZW5kT2ZmZXJpbmdzKHBsYXllciwgbGl2ZU9mZmVyaW5nLmFiaWxpdHlDb3N0ID8/IDApO1xuICAgICAgcGxheWVyLm9mZmVyaW5ncyA9IHBsYXllci5vZmZlcmluZ3MubWFwKGNhcmQgPT4gKGNhcmQuaW5zdGFuY2VJZCA9PT0gb2ZmZXJpbmdJZCA/IHsgLi4uY2FyZCwgcmVhZHk6IGZhbHNlIH0gOiBjYXJkKSk7XG4gICAgICBwbGF5ZXIubGVhZGVySHAgPSBNYXRoLm1heCgwLCBwbGF5ZXIubGVhZGVySHAgLSAxKTtcbiAgICAgIG5leHQucmV2aXNpb24rKztcbiAgICAgIG5leHQubG9nID0gW2Ake2xpdmVPZmZlcmluZy5uYW1lfTogJHtsaXZlT2ZmZXJpbmcuYWJpbGl0eU5hbWV9LmAsIC4uLm5leHQubG9nXS5zbGljZSgwLCA0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3BlY3REZWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICB0aXRsZTogdGhpcy50KCdjaHJpc3RpYW5pdHlEZWNrJyksXG4gICAgICBleWVicm93OiB0aGlzLnQoJ2NocmlzdGlhbml0eVNoYXJlZFpvbmUnKSxcbiAgICAgIG1ldGE6IGAke3RoaXMuZ2FtZSgpLnNoYXJlZERlY2subGVuZ3RofWAsXG4gICAgICBib2R5OiB0aGlzLnQoJ2NocmlzdGlhbml0eURlY2tCb2R5JyksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zcGVjdEhhbmRDYXJkKGNhcmRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY2FyZCA9IHRoaXMuY2FyZERlZmluaXRpb24oY2FyZElkKTtcbiAgICB0aGlzLnNlbGVjdGVkUHJldmlldy5zZXQoe1xuICAgICAgdGl0bGU6IGNhcmQubmFtZSxcbiAgICAgIGV5ZWJyb3c6IGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJyA/IHRoaXMudCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdDYXJkJykgOiB0aGlzLnQoJ2NocmlzdGlhbml0eUNoYXJhY3RlckNhcmQnKSxcbiAgICAgIG1ldGE6IGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJyA/IGArJHtjYXJkLmxpZmV9YCA6IGAke3RoaXMudCgnY2hyaXN0aWFuaXR5Q29zdCcpfSAke2NhcmQuY29zdH0gwrcgJHtjYXJkLmF0dGFja30vJHtjYXJkLmxpZmV9YCxcbiAgICAgIGJvZHk6IGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJyA/IHRoaXMudCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdCb2R5JykgOiB0aGlzLnQoJ2NocmlzdGlhbml0eUNoYXJhY3RlckJvZHknKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNwZWN0SGlzdG9yeUNhcmQoY2FyZElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dIaXN0b3J5LnNldChmYWxzZSk7XG4gICAgdGhpcy5pbnNwZWN0SGFuZENhcmQoY2FyZElkKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zcGVjdENoYXJhY3RlcihjYXJkOiBDaHJpc3RpYW5pdHlDaGFyYWN0ZXJJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICB0aXRsZTogY2FyZC5uYW1lLFxuICAgICAgZXllYnJvdzogdGhpcy50KCdjaHJpc3RpYW5pdHlDaGFyYWN0ZXJDYXJkJyksXG4gICAgICBtZXRhOiBgJHtjYXJkLmF0dGFja30vJHtjYXJkLmN1cnJlbnRIcH1gLFxuICAgICAgYm9keTogY2FyZC5jYW5BdHRhY2sgPyB0aGlzLnQoJ2NocmlzdGlhbml0eUNoYXJhY3RlclJlYWR5JykgOiB0aGlzLnQoJ2NocmlzdGlhbml0eUNoYXJhY3RlckV4aGF1c3RlZCcpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGVuZE9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlLCBjb3N0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgcmVtYWluaW5nID0gY29zdDtcbiAgICBwbGF5ZXIub2ZmZXJpbmdzID0gcGxheWVyLm9mZmVyaW5ncy5tYXAob2ZmZXJpbmcgPT4ge1xuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwIHx8ICFvZmZlcmluZy5yZWFkeSkgcmV0dXJuIG9mZmVyaW5nO1xuICAgICAgcmVtYWluaW5nIC09IG9mZmVyaW5nLnZhbHVlO1xuICAgICAgcmV0dXJuIHsgLi4ub2ZmZXJpbmcsIHJlYWR5OiBmYWxzZSB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
1115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyaXN0aWFuaXR5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NocmlzdGlhbml0eS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBd0JwRCxNQUFNLGFBQWEsR0FBK0M7SUFDaEUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUNuRyxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsYUFBYTtRQUNqQixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLEVBQUUsQ0FBQztRQUNQLFdBQVcsRUFBRSxpQ0FBaUM7UUFDOUMsV0FBVyxFQUFFLDJEQUEyRDtRQUN4RSxXQUFXLEVBQUUsQ0FBQztLQUNmO0lBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElB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LENBQUMsWUFDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtVFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMaWdodFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGlnaHQtcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHtcbiAgQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sXG4gIENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlLFxuICBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIENocmlzdGlhbml0eU9mZmVyaW5nSW5zdGFuY2UsXG4gIENocmlzdGlhbml0eVBsYXllclN0YXRlLFxuICBDaHJpc3RpYW5pdHlTZWF0LFxufSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIENocmlzdGlhbml0eUNhcmRQcmV2aWV3IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZXllYnJvdzogc3RyaW5nO1xuICBtZXRhOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENocmlzdGlhbml0eVByZXZpZXdUaWx0IHtcbiAgcm90YXRlWDogbnVtYmVyO1xuICByb3RhdGVZOiBudW1iZXI7XG4gIHNoaWZ0WDogbnVtYmVyO1xuICBzaGlmdFk6IG51bWJlcjtcbn1cblxuY29uc3QgU1RBUlRFUl9DQVJEUzogUmVjb3JkPHN0cmluZywgQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24+ID0ge1xuICBvX3NpbXBsZTogeyBpZDogJ29fc2ltcGxlJywgbmFtZTogJ09mcmVuZGEgc2ltcGxlJywgdHlwZTogJ29mZmVyaW5nJywgY29zdDogMCwgYXR0YWNrOiAwLCBsaWZlOiAxIH0sXG4gIG9fZm9yYmlkZGVuOiB7XG4gICAgaWQ6ICdvX2ZvcmJpZGRlbicsXG4gICAgbmFtZTogJ0VsIGZydXRvIHByb2hpYmlkbycsXG4gICAgdHlwZTogJ29mZmVyaW5nJyxcbiAgICBjb3N0OiAwLFxuICAgIGF0dGFjazogMCxcbiAgICBsaWZlOiAyLFxuICAgIGFiaWxpdHlOYW1lOiAnQ29ub2NpbWllbnRvIGRlbCBiaWVuIHkgZGVsIG1hbCcsXG4gICAgYWJpbGl0eVRleHQ6ICdBbCB1c2FybGEsIGRpc21pbnV5ZSBlbiAxIGxvcyBwdW50b3MgZGUgdmlkYSBkZSB0dSBMaWRlci4nLFxuICAgIGFiaWxpdHlDb3N0OiAwLFxuICB9LFxuICBwX3Njb3V0OiB7IGlkOiAncF9zY291dCcsIG5hbWU6ICdTY291dCcsIHR5cGU6ICdjaGFyYWN0ZXInLCBjb3N0OiAxLCBhdHRhY2s6IDEsIGxpZmU6IDEgfSxcbiAgcF9ndWFyZDogeyBpZDogJ3BfZ3VhcmQnLCBuYW1lOiAnR3VhcmQnLCB0eXBlOiAnY2hhcmFjdGVyJywgY29zdDogMiwgYXR0YWNrOiAxLCBsaWZlOiAzIH0sXG4gIHBfd2FycmlvcjogeyBpZDogJ3Bfd2FycmlvcicsIG5hbWU6ICdXYXJyaW9yJywgdHlwZTogJ2NoYXJhY3RlcicsIGNvc3Q6IDIsIGF0dGFjazogMiwgbGlmZTogMiB9LFxuICBwX2VsZGVyOiB7IGlkOiAncF9lbGRlcicsIG5hbWU6ICdFbGRlcicsIHR5cGU6ICdjaGFyYWN0ZXInLCBjb3N0OiAzLCBhdHRhY2s6IDIsIGxpZmU6IDQgfSxcbiAgcF9jaGFtcGlvbjogeyBpZDogJ3BfY2hhbXBpb24nLCBuYW1lOiAnQ2hhbXBpb24nLCB0eXBlOiAnY2hhcmFjdGVyJywgY29zdDogNCwgYXR0YWNrOiA0LCBsaWZlOiA0IH0sXG59O1xuXG5jb25zdCBTVEFSVElOR19TSEFSRURfREVDSyA9IFtcbiAgJ29fc2ltcGxlJyxcbiAgJ3Bfc2NvdXQnLFxuICAnb19mb3JiaWRkZW4nLFxuICAnb19zaW1wbGUnLFxuICAncF9ndWFyZCcsXG4gICdwX3dhcnJpb3InLFxuICAnb19zaW1wbGUnLFxuICAncF9lbGRlcicsXG4gICdwX3Njb3V0JyxcbiAgJ29fc2ltcGxlJyxcbiAgJ3BfY2hhbXBpb24nLFxuICAncF9ndWFyZCcsXG4gICdvX3NpbXBsZScsXG4gICdwX3dhcnJpb3InLFxuICAncF9zY291dCcsXG4gICdvX3NpbXBsZScsXG4gICdwX2VsZGVyJyxcbiAgJ3BfZ3VhcmQnLFxuICAnb19zaW1wbGUnLFxuXTtcblxuY29uc3QgU1RBUlRJTkdfR0FNRTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlID0ge1xuICBnYW1lSWQ6ICdtb2NrLWNocmlzdGlhbml0eScsXG4gIHN0YXR1czogJ2luX3Byb2dyZXNzJyxcbiAgbW9kZTogJ2xvY2FsX3Bhc3MnLFxuICB0dXJuT3duZXI6ICdQMScsXG4gIHJldmlzaW9uOiAwLFxuICB0dXJuQ291bnQ6IDEsXG4gIG1hdGNoU2NvcmU6IHsgUDE6IDEsIFAyOiAwIH0sXG4gIHNoYXJlZERlY2s6IFNUQVJUSU5HX1NIQVJFRF9ERUNLLFxuICBoaXN0b3J5Wm9uZTogW10sXG4gIHBsYXllcnM6IHtcbiAgICBQMToge1xuICAgICAgc2VhdDogJ1AxJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnSnVnYWRvcicsXG4gICAgICBhdmF0YXI6ICdKJyxcbiAgICAgIGF2YXRhckNvbG9yOiAnIzI1NjNlYicsXG4gICAgICBsZWFkZXJOYW1lOiAnQWRhbScsXG4gICAgICBsZWFkZXJIcDogMTUsXG4gICAgICBsZWFkZXJNYXhIcDogMTUsXG4gICAgICBvZmZlcmluZ3M6IFtcbiAgICAgICAgeyBpbnN0YW5jZUlkOiAncDFfb2ZmZXJpbmdfMDAxJywgY2FyZElkOiAnb19zaW1wbGUnLCBuYW1lOiAnT2ZyZW5kYSBzaW1wbGUnLCBvd25lcjogJ1AxJywgcmVhZHk6IHRydWUsIHZhbHVlOiAxIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiAncDFfb2ZmZXJpbmdfMDAyJyxcbiAgICAgICAgICBjYXJkSWQ6ICdvX2ZvcmJpZGRlbicsXG4gICAgICAgICAgbmFtZTogJ0VsIGZydXRvIHByb2hpYmlkbycsXG4gICAgICAgICAgb3duZXI6ICdQMScsXG4gICAgICAgICAgcmVhZHk6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IDIsXG4gICAgICAgICAgYWJpbGl0eU5hbWU6ICdDb25vY2ltaWVudG8gZGVsIGJpZW4geSBkZWwgbWFsJyxcbiAgICAgICAgICBhYmlsaXR5VGV4dDogJ0FsIHVzYXJsYSwgZGlzbWludXllIGVuIDEgbG9zIHB1bnRvcyBkZSB2aWRhIGRlIHR1IExpZGVyLicsXG4gICAgICAgICAgYWJpbGl0eUNvc3Q6IDAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgb2ZmZXJpbmdQbGF5ZWRUaGlzVHVybjogZmFsc2UsXG4gICAgICBoYW5kOiBbJ29fc2ltcGxlJywgJ3Bfc2NvdXQnLCAncF93YXJyaW9yJywgJ3BfZ3VhcmQnXSxcbiAgICAgIGJhdHRsZVpvbmU6IFtdLFxuICAgIH0sXG4gICAgUDI6IHtcbiAgICAgIHNlYXQ6ICdQMicsXG4gICAgICBkaXNwbGF5TmFtZTogJ1JpdmFsJyxcbiAgICAgIGF2YXRhcjogJ1InLFxuICAgICAgYXZhdGFyQ29sb3I6ICcjYjQ1MzA5JyxcbiAgICAgIGxlYWRlck5hbWU6ICdOb2FoJyxcbiAgICAgIGxlYWRlckhwOiAxNSxcbiAgICAgIGxlYWRlck1heEhwOiAxNSxcbiAgICAgIG9mZmVyaW5nczogW3sgaW5zdGFuY2VJZDogJ3AyX29mZmVyaW5nXzAwMScsIGNhcmRJZDogJ29fc2ltcGxlJywgbmFtZTogJ09mcmVuZGEgc2ltcGxlJywgb3duZXI6ICdQMicsIHJlYWR5OiB0cnVlLCB2YWx1ZTogMSB9XSxcbiAgICAgIG9mZmVyaW5nUGxheWVkVGhpc1R1cm46IGZhbHNlLFxuICAgICAgaGFuZENvdW50OiA0LFxuICAgICAgYmF0dGxlWm9uZTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5zdGFuY2VJZDogJ29wcF8wMDEnLFxuICAgICAgICAgIGNhcmRJZDogJ3Bfc2NvdXQnLFxuICAgICAgICAgIG5hbWU6ICdTY291dCcsXG4gICAgICAgICAgb3duZXI6ICdQMicsXG4gICAgICAgICAgY29udHJvbGxlcjogJ1AyJyxcbiAgICAgICAgICBhdHRhY2s6IDEsXG4gICAgICAgICAgY3VycmVudEhwOiAxLFxuICAgICAgICAgIG1heEhwOiAxLFxuICAgICAgICAgIGNhbkF0dGFjazogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIGxvZzogWydQYXJ0aWRhIGluaWNpYWRhLiddLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNocmlzdGlhbml0eS1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0xpZ2h0UmlwcGxlRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNocmlzdGlhbml0eS1zaGVsbFwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGVhZGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHA+e3sgdCgnY2hyaXN0aWFuaXR5RXllYnJvdycpIH19PC9wPlxuICAgICAgICAgIDxoMT57eyB0KCdjaHJpc3RpYW5pdHlUaXRsZScpIH19PC9oMT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktdHVyblwiIFtjbGFzcy5pcy1vd24tdHVybl09XCJpc093blR1cm4oKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eVR1cm4nKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3Ryb25nPnt7IGN1cnJlbnRQbGF5ZXIoKS5kaXNwbGF5TmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktbWF0Y2gtc3RyaXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eU1hdGNoU2NvcmUnKVwiPlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNocmlzdGlhbml0eS1hdmF0YXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJwbGF5ZXIoKS5hdmF0YXJDb2xvclwiPnt7IHBsYXllcigpLmF2YXRhciB9fTwvc3Bhbj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHN0cm9uZz57eyBwbGF5ZXIoKS5kaXNwbGF5TmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPHNtYWxsPnt7IHBsYXllcigpLmxlYWRlck5hbWUgfX0gwrcge3sgcGxheWVyKCkubGVhZGVySHAgfX0ve3sgcGxheWVyKCkubGVhZGVyTWF4SHAgfX08L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktc2NvcmVib2FyZFwiPlxuICAgICAgICAgIDxzcGFuPnt7IHQoJ2NocmlzdGlhbml0eU1hdGNoJykgfX08L3NwYW4+XG4gICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkubWF0Y2hTY29yZS5QMSB9fS17eyBnYW1lKCkubWF0Y2hTY29yZS5QMiB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIGNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXItLW9wcG9uZW50XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaHJpc3RpYW5pdHktYXZhdGFyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwib3Bwb25lbnQoKS5hdmF0YXJDb2xvclwiPnt7IG9wcG9uZW50KCkuYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IG9wcG9uZW50KCkuZGlzcGxheU5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDxzbWFsbD57eyBvcHBvbmVudCgpLmxlYWRlck5hbWUgfX0gwrcge3sgb3Bwb25lbnQoKS5sZWFkZXJIcCB9fS97eyBvcHBvbmVudCgpLmxlYWRlck1heEhwIH19PC9zbWFsbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1oYW5kLXNoZWxmIGNocmlzdGlhbml0eS1oYW5kLXNoZWxmLS1vcHBvbmVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhhbmQtbWV0ZXIgY2hyaXN0aWFuaXR5LWhhbmQtbWV0ZXItLW9wcG9uZW50XCI+XG4gICAgICAgICAgPHNwYW4+e3sgdCgnY2hyaXN0aWFuaXR5SGFuZCcpIH19PC9zcGFuPlxuICAgICAgICAgIDxzdHJvbmc+e3sgb3Bwb25lbnRIYW5kQ291bnQoKSB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGFuZC1mYW4gY2hyaXN0aWFuaXR5LWhhbmQtZmFuLS1vcHBvbmVudFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5T3Bwb25lbnRIYW5kJylcIj5cbiAgICAgICAgICBAZm9yIChfIG9mIGhpZGRlbkhhbmRDYXJkcyhvcHBvbmVudEhhbmRDb3VudCgpKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZCBjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQtLWJhY2tcIlxuICAgICAgICAgICAgICB2YWxMaWdodFJpcHBsZVxuICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cImZhblRyYW5zZm9ybSgkaW5kZXgsIG9wcG9uZW50SGFuZENvdW50KCksIHRydWUpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlIaWRkZW5DYXJkJylcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS10YWJsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5VGFibGUnKVwiPlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1wbGF5ZXItc2lkZSBjaHJpc3RpYW5pdHktcGxheWVyLXNpZGUtLW9wcG9uZW50XCI+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktcGxheWVyLXJhY2sgY2hyaXN0aWFuaXR5LXBsYXllci1yYWNrLS1vcHBvbmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1vZmZlcmluZ3Mtem9uZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlXCIgdmFsTGlnaHRSaXBwbGUgKGNsaWNrKT1cIm9wZW5PZmZlcmluZ3MoJ1AyJylcIj5cbiAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ3MnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJlYWR5T2ZmZXJpbmdzKG9wcG9uZW50KCkpIH19L3t7IHRvdGFsT2ZmZXJpbmdzKG9wcG9uZW50KCkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1sZWFkZXItY2FyZFwiIHZhbExpZ2h0UmlwcGxlIFtjbGFzcy5pcy10YXJnZXRdPVwic2VsZWN0ZWRBdHRhY2tlcigpICYmICFoYXNPcHBvbmVudEd1YXJkcygpXCIgKGNsaWNrKT1cImhhbmRsZU9wcG9uZW50TGVhZGVyKClcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgb3Bwb25lbnQoKS5sZWFkZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9wcG9uZW50KCkubGVhZGVySHAgfX0ve3sgb3Bwb25lbnQoKS5sZWFkZXJNYXhIcCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNocmlzdGlhbml0eS1yYWNrLXNwYWNlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1iYXR0bGUtem9uZSBjaHJpc3RpYW5pdHktYmF0dGxlLXpvbmUtLW9wcG9uZW50XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlPcHBvbmVudEJhdHRsZScpXCI+XG4gICAgICAgICAgICBAZm9yIChzbG90IG9mIGJhdHRsZVNsb3RzKCdQMicpOyB0cmFjayBzbG90LnRyYWNrSWQpIHtcbiAgICAgICAgICAgICAgQGlmIChzbG90LmNhcmQpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkIGNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0tYmF0dGxlXCJcbiAgICAgICAgICAgICAgICAgIHZhbExpZ2h0UmlwcGxlXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdGFyZ2V0XT1cInNlbGVjdGVkQXR0YWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3Bwb25lbnRDaGFyYWN0ZXIoc2xvdC5jYXJkKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgc2xvdC5jYXJkLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNsb3QuY2FyZC5hdHRhY2sgfX0gLyB7eyBzbG90LmNhcmQuY3VycmVudEhwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXNsb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1zaGFyZWQtem9uZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5U2hhcmVkWm9uZScpXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktem9uZS1waWxlIGNocmlzdGlhbml0eS16b25lLXBpbGUtLWhpc3RvcnlcIiB2YWxMaWdodFJpcHBsZSAoY2xpY2spPVwic2hvd0hpc3Rvcnkuc2V0KHRydWUpXCI+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdjaHJpc3RpYW5pdHlIaXN0b3J5JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5oaXN0b3J5Wm9uZS5sZW5ndGggfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS16b25lLXBpbGUgY2hyaXN0aWFuaXR5LXpvbmUtcGlsZS0tZGVja1wiIHZhbExpZ2h0UmlwcGxlIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIChjbGljayk9XCJpbnNwZWN0RGVjaygpXCI+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdjaHJpc3RpYW5pdHlEZWNrJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zaGFyZWREZWNrLmxlbmd0aCB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktem9uZS1jYXJkXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdjaHJpc3RpYW5pdHlQbGFjZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaHJpc3RpYW5pdHlFbXB0eScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNocmlzdGlhbml0eS1wbGF5ZXItc2lkZVwiPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWJhdHRsZS16b25lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlZb3VyQmF0dGxlJylcIj5cbiAgICAgICAgICAgIEBmb3IgKHNsb3Qgb2YgYmF0dGxlU2xvdHMoJ1AxJyk7IHRyYWNrIHNsb3QudHJhY2tJZCkge1xuICAgICAgICAgICAgICBAaWYgKHNsb3QuY2FyZCkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkLS1iYXR0bGVcIlxuICAgICAgICAgICAgICAgICAgdmFsTGlnaHRSaXBwbGVcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEF0dGFja2VyKCk/Lmluc3RhbmNlSWQgPT09IHNsb3QuY2FyZC5pbnN0YW5jZUlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1leGhhdXN0ZWRdPVwiIXNsb3QuY2FyZC5jYW5BdHRhY2tcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEF0dGFja2VyKHNsb3QuY2FyZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNsb3QuY2FyZC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzbG90LmNhcmQuYXR0YWNrIH19IC8ge3sgc2xvdC5jYXJkLmN1cnJlbnRIcCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNocmlzdGlhbml0eS1zbG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktcGxheWVyLXJhY2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmdzLXpvbmVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZVwiIHZhbExpZ2h0UmlwcGxlIChjbGljayk9XCJvcGVuT2ZmZXJpbmdzKCdQMScpXCI+XG4gICAgICAgICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdzJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByZWFkeU9mZmVyaW5ncyhwbGF5ZXIoKSkgfX0ve3sgdG90YWxPZmZlcmluZ3MocGxheWVyKCkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1sZWFkZXItY2FyZFwiIHZhbExpZ2h0UmlwcGxlIChjbGljayk9XCJpbnNwZWN0TGVhZGVyKCdQMScpXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHBsYXllcigpLmxlYWRlck5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGxheWVyKCkubGVhZGVySHAgfX0ve3sgcGxheWVyKCkubGVhZGVyTWF4SHAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNocmlzdGlhbml0eS1wbGF5ZXItY29tbWFuZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hyaXN0aWFuaXR5LXBsYXllci1iYWRnZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWF2YXRhclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInBsYXllcigpLmF2YXRhckNvbG9yXCI+e3sgcGxheWVyKCkuYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGxheWVyKCkuZGlzcGxheU5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNocmlzdGlhbml0eS1lbmQtdHVyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVuZFR1cm4oKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaHJpc3RpYW5pdHlFbmRUdXJuJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGFuZC1zaGVsZlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhhbmQtbWV0ZXJcIj5cbiAgICAgICAgICA8c3Bhbj57eyB0KCdjaHJpc3RpYW5pdHlIYW5kJykgfX08L3NwYW4+XG4gICAgICAgICAgPHN0cm9uZz57eyBwbGF5ZXIoKS5oYW5kPy5sZW5ndGggPz8gMCB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaHJpc3RpYW5pdHktaGFuZC1mYW5cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eVlvdXJIYW5kJylcIiAocG9pbnRlcmxlYXZlKT1cImNsZWFySG92ZXJlZEhhbmRJbmRleCgpXCI+XG4gICAgICAgICAgQGZvciAoY2FyZElkIG9mIHBsYXllcigpLmhhbmQgPz8gW107IHRyYWNrIGNhcmRJZCArICRpbmRleCkge1xuICAgICAgICAgICAgQGxldCBjYXJkID0gY2FyZERlZmluaXRpb24oY2FyZElkKTtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkIGNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0taGFuZFwiXG4gICAgICAgICAgICAgIHZhbExpZ2h0UmlwcGxlXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEhhbmRDYXJkKCkgPT09IGNhcmRJZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCIhY2FuUGxheShjYXJkKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS56LWluZGV4XT1cImhhbmRDYXJkWkluZGV4KCRpbmRleClcIlxuICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cImZhblRyYW5zZm9ybSgkaW5kZXgsIHBsYXllcigpLmhhbmQ/Lmxlbmd0aCA/PyAwLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAocG9pbnRlcmVudGVyKT1cInNldEhvdmVyZWRIYW5kSW5kZXgoJGluZGV4KVwiXG4gICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJzZXRIb3ZlcmVkSGFuZEluZGV4KCRpbmRleClcIlxuICAgICAgICAgICAgICAocG9pbnRlcnVwKT1cInJlbGVhc2VIb3ZlcmVkSGFuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEhhbmRDYXJkKGNhcmRJZClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgQGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NocmlzdGlhbml0eU9mZmVyaW5nQ2FyZCcpIH19XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaHJpc3RpYW5pdHlDb3N0JykgfX0ge3sgY2FyZC5jb3N0IH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgQGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICAgICAgICAgICAgICAgICt7eyBjYXJkLmxpZmUgfX1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHt7IGNhcmQuYXR0YWNrIH19IC8ge3sgY2FyZC5saWZlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICBAaWYgKHNlbGVjdGVkUHJldmlldygpKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LXByZXZpZXctYmFja2Ryb3BcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NocmlzdGlhbml0eUNsb3NlUHJldmlldycpXCIgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCI+PC9idXR0b24+XG4gICAgICAgIDxhc2lkZVxuICAgICAgICAgIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmRcIlxuICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1yb3RhdGUteF09XCJwcmV2aWV3VGlsdCgpLnJvdGF0ZVggKyAnZGVnJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1yb3RhdGUteV09XCJwcmV2aWV3VGlsdCgpLnJvdGF0ZVkgKyAnZGVnJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1zaGlmdC14XT1cInByZXZpZXdUaWx0KCkuc2hpZnRYICsgJ3B4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tcHJldmlldy1zaGlmdC15XT1cInByZXZpZXdUaWx0KCkuc2hpZnRZICsgJ3B4J1wiXG4gICAgICAgICAgKHBvaW50ZXJtb3ZlKT1cInRpbHRQcmV2aWV3KCRldmVudClcIlxuICAgICAgICAgIChwb2ludGVybGVhdmUpPVwicmVzZXRQcmV2aWV3VGlsdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VQcmV2aWV3KClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2Nsb3NlJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8c21hbGw+e3sgc2VsZWN0ZWRQcmV2aWV3KCk/LmV5ZWJyb3cgfX08L3NtYWxsPlxuICAgICAgICAgIDxzdHJvbmc+e3sgc2VsZWN0ZWRQcmV2aWV3KCk/LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgPHNwYW4+e3sgc2VsZWN0ZWRQcmV2aWV3KCk/Lm1ldGEgfX08L3NwYW4+XG4gICAgICAgICAgPHA+e3sgc2VsZWN0ZWRQcmV2aWV3KCk/LmJvZHkgfX08L3A+XG4gICAgICAgIDwvYXNpZGU+XG4gICAgICB9XG5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWFjdGlvbnNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPHA+e3sgc3RhdHVzVGV4dCgpIH19PC9wPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRIYW5kQ2FyZCgpIHx8ICFjYW5QbGF5U2VsZWN0ZWQoKVwiIChjbGljayk9XCJwbGF5U2VsZWN0ZWRDYXJkKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NocmlzdGlhbml0eVBsYXlDYXJkJykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXRNb2NrKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NocmlzdGlhbml0eVJlc2V0JykgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIEBpZiAoc2hvd0hpc3RvcnkoKSkge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNocmlzdGlhbml0eS1oaXN0b3J5LWJhY2tkcm9wXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaHJpc3RpYW5pdHlDbG9zZUhpc3RvcnknKVwiIChjbGljayk9XCJzaG93SGlzdG9yeS5zZXQoZmFsc2UpXCI+PC9idXR0b24+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyXCI+XG4gICAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaHJpc3RpYW5pdHlIaXN0b3J5JykgfX08L2gyPlxuICAgICAgICAgICAgPHNwYW4+e3sgZ2FtZSgpLmhpc3Rvcnlab25lLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5oaXN0b3J5Wm9uZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktaGlzdG9yeS1ncmlkXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGNhcmRJZCBvZiBnYW1lKCkuaGlzdG9yeVpvbmU7IHRyYWNrIGNhcmRJZCArICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBsZXQgY2FyZCA9IGNhcmREZWZpbml0aW9uKGNhcmRJZCk7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmRcIiB2YWxMaWdodFJpcHBsZSAoY2xpY2spPVwiaW5zcGVjdEhpc3RvcnlDYXJkKGNhcmRJZClcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBjYXJkLnR5cGUgPT09ICdvZmZlcmluZycgPyB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0NhcmQnKSA6IHQoJ2NocmlzdGlhbml0eUNoYXJhY3RlckNhcmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICt7eyBjYXJkLmxpZmUgfX1cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2FyZC5hdHRhY2sgfX0gLyB7eyBjYXJkLmxpZmUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHA+e3sgdCgnY2hyaXN0aWFuaXR5SGlzdG9yeUVtcHR5JykgfX08L3A+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAob2ZmZXJpbmdzU2VhdCgpKSB7XG4gICAgICAgIEBsZXQgb2ZmZXJpbmdQbGF5ZXIgPSBnYW1lKCkucGxheWVyc1tvZmZlcmluZ3NTZWF0KCkhXTtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktaGlzdG9yeS1iYWNrZHJvcFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hyaXN0aWFuaXR5Q2xvc2VPZmZlcmluZ3MnKVwiIChjbGljayk9XCJjbG9zZU9mZmVyaW5ncygpXCI+PC9idXR0b24+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIGNocmlzdGlhbml0eS1vZmZlcmluZ3MtZHJhd2VyXCI+XG4gICAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxoMj57eyB0KCdjaHJpc3RpYW5pdHlPZmZlcmluZ3MnKSB9fTwvaDI+XG4gICAgICAgICAgICA8c3Bhbj57eyByZWFkeU9mZmVyaW5ncyhvZmZlcmluZ1BsYXllcikgfX0ve3sgdG90YWxPZmZlcmluZ3Mob2ZmZXJpbmdQbGF5ZXIpIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmctbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAob2ZmZXJpbmcgb2Ygb2ZmZXJpbmdQbGF5ZXIub2ZmZXJpbmdzOyB0cmFjayBvZmZlcmluZy5pbnN0YW5jZUlkKSB7XG4gICAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvd1wiIFtjbGFzcy5pcy1leGhhdXN0ZWRdPVwiIW9mZmVyaW5nLnJlYWR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZFwiIHZhbExpZ2h0UmlwcGxlIChjbGljayk9XCJpbnNwZWN0T2ZmZXJpbmcob2ZmZXJpbmcpXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdDYXJkJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgb2ZmZXJpbmcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+K3t7IG9mZmVyaW5nLnZhbHVlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKG9mZmVyaW5nLmFiaWxpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IG9mZmVyaW5nLmFiaWxpdHlOYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9mZmVyaW5nLnJlYWR5ID8gdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdSZWFkeScpIDogdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdFeGhhdXN0ZWQnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgb2ZmZXJpbmcuYWJpbGl0eVRleHQgfHwgdCgnY2hyaXN0aWFuaXR5T2ZmZXJpbmdOb0FiaWxpdHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIEBpZiAob2ZmZXJpbmcuYWJpbGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXNlT2ZmZXJpbmdBYmlsaXR5KG9mZmVyaW5nLCBvZmZlcmluZ3NTZWF0KCkhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZU9mZmVyaW5nQWJpbGl0eShvZmZlcmluZywgb2ZmZXJpbmdzU2VhdCgpISlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hyaXN0aWFuaXR5VXNlQWJpbGl0eScpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiB2YXIoLS12YWwtdGV4dC1jb2xvciwgIzFmMjkzMyk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktc2hlbGwge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAuMjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmNmY4ZmI7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGVhZGVyLFxuICAgICAgLmNocmlzdGlhbml0eS1tYXRjaC1zdHJpcCxcbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyX19zdW1tYXJ5LFxuICAgICAgLmNocmlzdGlhbml0eS1zaGFyZWQtem9uZSxcbiAgICAgIC5jaHJpc3RpYW5pdHktYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhlYWRlciBoMSxcbiAgICAgIC5jaHJpc3RpYW5pdHktaGVhZGVyIHAsXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzdHJvbmcsXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzbWFsbCxcbiAgICAgIC5jaHJpc3RpYW5pdHktc2NvcmVib2FyZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1oaXN0b3J5IGgyLFxuICAgICAgLmNocmlzdGlhbml0eS1hY3Rpb25zIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGVhZGVyIGgxIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhlYWRlciBwLFxuICAgICAgLmNocmlzdGlhbml0eS10dXJuIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5ncyBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1oaWRkZW4taGFuZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1kZWNrIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYWNlIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LXBpbGUgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyIHNwYW4ge1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjY0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXR1cm4sXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlcixcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmdzLFxuICAgICAgLmNocmlzdGlhbml0eS1oaWRkZW4taGFuZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktcGlsZSxcbiAgICAgIC5jaHJpc3RpYW5pdHktZGVjayxcbiAgICAgIC5jaHJpc3RpYW5pdHktcGxhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTVyZW07XG4gICAgICAgIG1pbi13aWR0aDogNS4yNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktdHVybi5pcy1vd24tdHVybiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxOCwgMTI4LCAxMDgsIDAuMzUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZWNmZGY1O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXN0cmlwIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllci0tb3Bwb25lbnQge1xuICAgICAgICBkaXJlY3Rpb246IHJ0bDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXItLW9wcG9uZW50IGRpdiB7XG4gICAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXIgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzdHJvbmcsXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzbWFsbCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciBzbWFsbCxcbiAgICAgIC5jaHJpc3RpYW5pdHktc2NvcmVib2FyZCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMzEsIDQxLCA1MSwgMC41OCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1zY29yZWJvYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDQuMnJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjU1cmVtO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMSk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXNjb3JlYm9hcmQgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXRhYmxlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNkY2VhZmI7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLXNpZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC4zcmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDdyZW0sIDFmcikgYXV0bztcbiAgICAgICAgbWluLWhlaWdodDogMTMuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLXNpZGUtLW9wcG9uZW50IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIG1pbm1heCg3cmVtLCAxZnIpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1iYXR0bGUtem9uZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIG1pbm1heCg0LjJyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogN3JlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjRyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Nik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktc2hhcmVkLXpvbmUge1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtIDAuNHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LWVuZC10dXJuLFxuICAgICAgLmNocmlzdGlhbml0eS1hY3Rpb25zIGJ1dHRvbixcbiAgICAgIC5jaHJpc3RpYW5pdHktcGlsZSxcbiAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyLS10YXJnZXQge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtaW4taGVpZ2h0OiA1LjhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjVyZW0gMS4yNXJlbSByZ2JhKDM2LCA0OCwgNjgsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZCBzdHJvbmcge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGVuZDtcbiAgICAgICAgcGFkZGluZzogMC4xNXJlbSAwLjM1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2VkZjJmNztcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzI1NjNlYjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMzcsIDk5LCAyMzUsIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQuaXMtZGlzYWJsZWQsXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQuaXMtZXhoYXVzdGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC41NTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLmlzLXRhcmdldCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2RjMjYyNjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gICAgICAgIGdyaWQtYXV0by1jb2x1bW5zOiAwLjdyZW07XG4gICAgICAgIGdhcDogMC4xNnJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDtcbiAgICAgICAgbWluLWhlaWdodDogMS4wNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1jYXJkcyBpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAwLjY1cmVtO1xuICAgICAgICBoZWlnaHQ6IDAuOTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDQyLCA2NywgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMThyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZHMgaS5pcy11c2VkIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2NiZDVlMTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktc2xvdCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMzYsIDQ4LCA2OCwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ1KTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oYW5kIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC1hdXRvLWNvbHVtbnM6IG1pbm1heCg2cmVtLCA4cmVtKTtcbiAgICAgICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1hY3Rpb25zIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktYWN0aW9ucyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMgYnV0dG9uLFxuICAgICAgLmNocmlzdGlhbml0eS1lbmQtdHVybiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNHJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgLmNocmlzdGlhbml0eS1lbmQtdHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxMDJhNDM7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3Rvcnkge1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtZmFuIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLWhlaWdodDogNy40cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuMjVyZW07XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oYW5kLXNoZWxmIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4taGVpZ2h0OiA4LjFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuOXJlbSAwLjI1cmVtIDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1zaGVsZi0tb3Bwb25lbnQge1xuICAgICAgICBtaW4taGVpZ2h0OiA1LjZyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjI1cmVtIDAuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1mYW4tLW9wcG9uZW50IHtcbiAgICAgICAgbWluLWhlaWdodDogNC40cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtbWluaSxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyLWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtY2FyZCxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlLFxuICAgICAgLmNocmlzdGlhbml0eS1lbmQtdHVybiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzYsIDQ4LCA2OCwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB3aWR0aDogY2xhbXAoNC45cmVtLCAxN3Z3LCA3LjFyZW0pO1xuICAgICAgICBtaW4taGVpZ2h0OiBjbGFtcCg2LjZyZW0sIDIydncsIDguOHJlbSk7XG4gICAgICAgIG1hcmdpbi1pbmxpbmU6IC0wLjQycmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ4cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMTE1JTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMTYwbXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDE2MG1zIGVhc2UsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE2MG1zIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC41cmVtIDEuMjVyZW0gcmdiYSgzNiwgNDgsIDY4LCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkLS1oYW5kOmhvdmVyLFxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLXByZXZpZXctY2FyZC0taGFuZC5pcy1zZWxlY3RlZCB7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzI1NjNlYjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSgzNywgOTksIDIzNSwgMC4xOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQtLWJhY2sge1xuICAgICAgICB3aWR0aDogY2xhbXAoNHJlbSwgMTR2dywgNS43cmVtKTtcbiAgICAgICAgbWluLWhlaWdodDogY2xhbXAoNXJlbSwgMTZ2dywgNi42cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDE2LCA0MiwgNjcsIDAuMTIpLCByZ2JhKDE2LCA0MiwgNjcsIDAuMDIpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjZTJlOGYwIDAgMC4zNXJlbSwgI2Y4ZmFmYyAwLjM1cmVtIDAuN3JlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQtLWJhdHRsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiA1LjdyZW07XG4gICAgICAgIG1hcmdpbi1pbmxpbmU6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1taW5pIHNwYW4sXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS1sZWFkZXItY2FyZCBzcGFuLFxuICAgICAgLmNocmlzdGlhbml0eS16b25lLWNhcmQgc3BhbixcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktY2FyZC1wcmV2aWV3LWNhcmQgc3Ryb25nLFxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLW1pbmkgc3Ryb25nLFxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBzdHJvbmcsXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlci1jYXJkIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1jYXJkIHN0cm9uZyxcbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHN0cm9uZyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7XG4gICAgICAgIHBhZGRpbmc6IDAuMTVyZW0gMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlZGYyZjc7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYXllci1yYWNrIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoNS45cmVtLCA3cmVtKSBtaW5tYXgoNXJlbSwgMWZyKSBtaW5tYXgoNC4ycmVtLCA3cmVtKTtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogZW5kO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBzdHJldGNoO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXBsYXllci1yYWNrLS1vcHBvbmVudCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1oYW5kLW1ldGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwLjM1cmVtO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZ3JpZDtcbiAgICAgICAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4taGVpZ2h0OiAxLjdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMThyZW0gMC40NnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjM1cmVtIDAuOHJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtbWV0ZXItLW9wcG9uZW50IHtcbiAgICAgICAgdG9wOiAwLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtbWV0ZXIgc3BhbiB7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNTgpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGFuZC1tZXRlciBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLWJhZGdlLFxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItY29tbWFuZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLWJhZGdlIHtcbiAgICAgICAgYWxpZ24tY29udGVudDogc3RhcnQ7XG4gICAgICAgIGNvbG9yOiByZ2JhKDMxLCA0MSwgNTEsIDAuNzYpO1xuICAgICAgICBmb250LXNpemU6IDAuNzRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyLWJhZGdlLS1vcHBvbmVudCB7XG4gICAgICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgICAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItYmFkZ2Ugc3Ryb25nIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2LjVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjg1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuODVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuMzVyZW0gMC45cmVtIHJnYmEoMTYsIDQyLCA2NywgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmdzLXpvbmUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLW1pbmksXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUsXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LWxlYWRlci1jYXJkLFxuICAgICAgLmNocmlzdGlhbml0eS16b25lLWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuOXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40OHJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1jYXJkLW1pbmkge1xuICAgICAgICB3aWR0aDogMy41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA1LjlyZW0pO1xuICAgICAgICBtaW4taGVpZ2h0OiA2LjZyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjUycmVtIDAuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI2ZmZmZmZiwgI2Y4ZmFmYyksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTAsIDIwNCwgMjEsIDAuMTgpLCB0cmFuc3BhcmVudCA0MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXBpbGUgaSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IGF1dG8gYXV0byAxLjFyZW0gMC43MnJlbTtcbiAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgIHdpZHRoOiAyLjU1cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuNTVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDQyLCA2NywgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSwgcmdiYSgyNDEsIDI0NSwgMjQ5LCAwLjkyKSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA3OCUgMTglLCAjZmFjYzE1IDAgMC4zOHJlbSwgdHJhbnNwYXJlbnQgMC40cmVtKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjM1cmVtIDAuODVyZW0gcmdiYSgxNiwgNDIsIDY3LCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSBpOm50aC1jaGlsZCgyKSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAuMjhyZW0sIDAuMDhyZW0pIHJvdGF0ZSgzZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1vZmZlcmluZy1waWxlIGk6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMC41NXJlbSwgMC4xOHJlbSkgcm90YXRlKC0xZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1sZWFkZXItY2FyZCB7XG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCg0Ljc1cmVtLCAxN3Z3LCA2cmVtKTtcbiAgICAgICAgbWluLWhlaWdodDogY2xhbXAoNi42cmVtLCAyMnZ3LCA4LjRyZW0pO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXJhY2stc3BhY2VyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1iYXR0bGUtem9uZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg0cmVtLCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1zaGFyZWQtem9uZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCg0LjNyZW0sIDFmcikpO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS16b25lLWNhcmQsXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDYuNDVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjUycmVtIDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDk5OXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIGkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIDAuNzJyZW0gMS4wMnJlbSBhdXRvO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgd2lkdGg6IDIuN3JlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjdyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTYsIDQyLCA2NywgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMC4zNXJlbSAwLjg1cmVtIHJnYmEoMTYsIDQyLCA2NywgMC4xMSk7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDRkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSBpOm50aC1jaGlsZCgyKSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0wLjI4cmVtLCAwLjEycmVtKSByb3RhdGUoLTNkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LXpvbmUtcGlsZSBpOm50aC1jaGlsZCgzKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgxNiwgNDIsIDY3LCAwLjE2KSwgcmdiYSgxNiwgNDIsIDY3LCAwLjAzKSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg0NWRlZywgI2RiZWFmZSAwIDAuMzNyZW0sICNmZmZmZmYgMC4zM3JlbSAwLjY2cmVtKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTAuNTRyZW0sIDAuMjRyZW0pIHJvdGF0ZSgyZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmNocmlzdGlhbml0eS1mbG9hdGluZy1jYXJkIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB6LWluZGV4OiAyMTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjQ1cmVtO1xuICAgICAgICB3aWR0aDogbWluKDIzcmVtLCBjYWxjKDEwMHZ3IC0gMS4yNXJlbSkpO1xuICAgICAgICBtaW4taGVpZ2h0OiBtaW4oMzFyZW0sIGNhbGMoMTAwdmggLSAzLjVyZW0pKTtcbiAgICAgICAgcGFkZGluZzogMS4xNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCByZ2JhKDI0OCwgMjUwLCAyNTIsIDAuOTYpKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDIwJSAwJSwgcmdiYSgzNywgOTksIDIzNSwgMC4xMiksIHRyYW5zcGFyZW50IDQ1JSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAyLjRyZW0gNXJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMzQpLFxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMzVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcbiAgICAgICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06XG4gICAgICAgICAgdHJhbnNsYXRlKGNhbGMoLTUwJSArIHZhcigtLXByZXZpZXctc2hpZnQteCwgMHB4KSksIGNhbGMoLTUwJSArIHZhcigtLXByZXZpZXctc2hpZnQteSwgMHB4KSkpXG4gICAgICAgICAgcGVyc3BlY3RpdmUoNDhyZW0pXG4gICAgICAgICAgcm90YXRlWCh2YXIoLS1wcmV2aWV3LXJvdGF0ZS14LCA1ZGVnKSlcbiAgICAgICAgICByb3RhdGVZKHZhcigtLXByZXZpZXctcm90YXRlLXksIC01ZGVnKSk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA5MG1zIGVhc2Utb3V0O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWZsb2F0aW5nLWNhcmQtY2xvc2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC42NXJlbTtcbiAgICAgICAgcmlnaHQ6IDAuNjVyZW07XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDJyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC42cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjc4KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAuNDVyZW0gMXJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktcHJldmlldy1iYWNrZHJvcCxcbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1iYWNrZHJvcCB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40Nik7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktZmxvYXRpbmctY2FyZCBzbWFsbCxcbiAgICAgIC5jaHJpc3RpYW5pdHktZmxvYXRpbmctY2FyZCBzcGFuIHtcbiAgICAgICAgY29sb3I6IHJnYmEoMzEsIDQxLCA1MSwgMC42NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktZmxvYXRpbmctY2FyZCBzdHJvbmcge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0LjRyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41NXJlbSwgOHZ3LCAyLjM1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktZmxvYXRpbmctY2FyZCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktaGlzdG9yeS1iYWNrZHJvcCB7XG4gICAgICAgIHotaW5kZXg6IDIyO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogbWF4KDAuNXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkpO1xuICAgICAgICBib3R0b206IG1heCgwLjVyZW0sIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSk7XG4gICAgICAgIGxlZnQ6IG1heCgwLjVyZW0sIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCkpO1xuICAgICAgICB6LWluZGV4OiAyMztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiBtaW4oMjdyZW0sIGNhbGMoMTAwdmggLSA0cmVtKSk7XG4gICAgICAgIHBhZGRpbmc6IDAuOHJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgNDgsIDY4LCAwLjE2KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjVyZW0gNHJlbSByZ2JhKDE2LCA0MiwgNjcsIDAuMjgpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIGhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIGgyLFxuICAgICAgLmNocmlzdGlhbml0eS1oaXN0b3J5LWRyYXdlciBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZHJhd2VyIGhlYWRlciBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAxLjg1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuODVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZWRmMmY3O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LWhpc3RvcnktZ3JpZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDUuNHJlbSwgMWZyKSk7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogMC4xcmVtIDAuMXJlbSAwLjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5ncy1kcmF3ZXIge1xuICAgICAgICBtYXgtaGVpZ2h0OiBtaW4oMzByZW0sIGNhbGMoMTAwdmggLSAzcmVtKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC42cmVtO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwLjFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoNC45cmVtLCA2LjJyZW0pIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM2LCA0OCwgNjgsIDAuMTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjY1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdy5pcy1leGhhdXN0ZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmQge1xuICAgICAgICBtaW4taGVpZ2h0OiA3LjRyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KSwgcmdiYSgyNDgsIDI1MCwgMjUyLCAwLjk2KSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4MiUgMTQlLCAjZmFjYzE1IDAgMC40OHJlbSwgdHJhbnNwYXJlbnQgMC41cmVtKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjQ1cmVtIDFyZW0gcmdiYSgxNiwgNDIsIDY3LCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmQgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjU4KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLWNhcmQgcCxcbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctY2FyZCBwIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZW5kO1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjY0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdyA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcm93ID4gZGl2IHAge1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjcyKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdyA+IGRpdiBidXR0b24ge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjJyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC43cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2LCA0MiwgNjcsIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICMxMDJhNDM7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdyA+IGRpdiBidXR0b246ZGlzYWJsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTJlOGYwO1xuICAgICAgICBjb2xvcjogcmdiYSgzMSwgNDEsIDUxLCAwLjU4KTtcbiAgICAgIH1cblxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICBvcGFjaXR5OiAwLjU1O1xuICAgICAgfVxuXG4gICAgICBidXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IDAuMTg3NXJlbSBzb2xpZCByZ2JhKDM3LCA5OSwgMjM1LCAwLjI0KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDAuMTI1cmVtO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzIwcHgpIHtcbiAgICAgICAgLmNocmlzdGlhbml0eS1zaGVsbCB7XG4gICAgICAgICAgcGFkZGluZzogMC41NXJlbSAwO1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oZWFkZXIsXG4gICAgICAgIC5jaHJpc3RpYW5pdHktcGxheWVyX19zdW1tYXJ5LFxuICAgICAgICAuY2hyaXN0aWFuaXR5LXNoYXJlZC16b25lLFxuICAgICAgICAuY2hyaXN0aWFuaXR5LWFjdGlvbnMge1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXN0cmlwIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG8gbWlubWF4KDAsIDFmcik7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW1hdGNoLXBsYXllciB7XG4gICAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1tYXRjaC1wbGF5ZXIgc21hbGwge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LXNjb3JlYm9hcmQge1xuICAgICAgICAgIG1pbi13aWR0aDogMy42NXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LXNjb3JlYm9hcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IDEuMDVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LXRhYmxlIHtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LXBsYXllci1zaWRlIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktYmF0dGxlLXpvbmUge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgzLjM1cmVtLCAxZnIpKTtcbiAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oYW5kLWZhbiB7XG4gICAgICAgICAgbWluLWhlaWdodDogNi44cmVtO1xuICAgICAgICAgIG92ZXJmbG93LXg6IGNsaXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LWhhbmQtc2hlbGYge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDcuNHJlbTtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMC44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oYW5kLXNoZWxmLS1vcHBvbmVudCB7XG4gICAgICAgICAgbWluLWhlaWdodDogNXJlbTtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMC43cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1wbGF5ZXItcmFjayB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoNC43cmVtLCA1LjlyZW0pIG1pbm1heCg0LjhyZW0sIDFmcikgbWlubWF4KDMuN3JlbSwgNXJlbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LXNoYXJlZC16b25lIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMy43cmVtLCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktb2ZmZXJpbmctcGlsZSxcbiAgICAgICAgLmNocmlzdGlhbml0eS16b25lLWNhcmQsXG4gICAgICAgIC5jaHJpc3RpYW5pdHktem9uZS1waWxlIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA2LjE1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNThyZW0gMC40NnJlbSAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LWNhcmQtcHJldmlldy1jYXJkIHtcbiAgICAgICAgICB3aWR0aDogY2xhbXAoNC4ycmVtLCAyMHZ3LCA1LjdyZW0pO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IGNsYW1wKDUuOHJlbSwgMjZ2dywgNy40cmVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaHJpc3RpYW5pdHktbGVhZGVyLWNhcmQge1xuICAgICAgICAgIHdpZHRoOiBjbGFtcCg0LjU1cmVtLCAyMHZ3LCA1LjdyZW0pO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IGNsYW1wKDYuMTVyZW0sIDI3dncsIDcuNnJlbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hyaXN0aWFuaXR5LW9mZmVyaW5nLXJvdyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoNC41cmVtLCA1LjVyZW0pIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNocmlzdGlhbml0eS1oYW5kLWZhbi0tb3Bwb25lbnQge1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDRyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaHJpc3RpYW5pdHlHYW1lQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2FtZSA9IHNpZ25hbDxDaHJpc3RpYW5pdHlHYW1lU3RhdGU+KHN0cnVjdHVyZWRDbG9uZShTVEFSVElOR19HQU1FKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZEhhbmRDYXJkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRBdHRhY2tlciA9IHNpZ25hbDxDaHJpc3RpYW5pdHlDaGFyYWN0ZXJJbnN0YW5jZSB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRQcmV2aWV3ID0gc2lnbmFsPENocmlzdGlhbml0eUNhcmRQcmV2aWV3IHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwcmV2aWV3VGlsdCA9IHNpZ25hbDxDaHJpc3RpYW5pdHlQcmV2aWV3VGlsdD4oeyByb3RhdGVYOiA1LCByb3RhdGVZOiAtNSwgc2hpZnRYOiAwLCBzaGlmdFk6IDAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBob3ZlcmVkSGFuZEluZGV4ID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0hpc3RvcnkgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2ZmZXJpbmdzU2VhdCA9IHNpZ25hbDxDaHJpc3RpYW5pdHlTZWF0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnMuUDEpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3Bwb25lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzLlAyKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN1cnJlbnRQbGF5ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdhbWUoKS5wbGF5ZXJzW3RoaXMuZ2FtZSgpLnR1cm5Pd25lcl0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPd25UdXJuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkudHVybk93bmVyID09PSAnUDEnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc09wcG9uZW50R3VhcmRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHBvbmVudCgpLmJhdHRsZVpvbmUubGVuZ3RoID4gMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcHBvbmVudEhhbmRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3Bwb25lbnQoKS5oYW5kQ291bnQgPz8gdGhpcy5vcHBvbmVudCgpLmhhbmQ/Lmxlbmd0aCA/PyAwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXR1c1RleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYXR0YWNrZXIgPSB0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKTtcbiAgICBjb25zdCBoYW5kQ2FyZCA9IHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZCgpO1xuICAgIGlmICghdGhpcy5pc093blR1cm4oKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hyaXN0aWFuaXR5V2FpdFR1cm4nKTtcbiAgICB9XG4gICAgaWYgKGF0dGFja2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYXNPcHBvbmVudEd1YXJkcygpID8gdGhpcy50KCdjaHJpc3RpYW5pdHlDaG9vc2VDaGFyYWN0ZXJUYXJnZXQnKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5Q2hvb3NlVGFyZ2V0Jyk7XG4gICAgfVxuICAgIGlmIChoYW5kQ2FyZCkge1xuICAgICAgY29uc3QgY2FyZCA9IHRoaXMuY2FyZERlZmluaXRpb24oaGFuZENhcmQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2FuUGxheShjYXJkKSA/IHRoaXMudCgnY2hyaXN0aWFuaXR5UmVhZHlUb1BsYXknKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5TmVlZE9mZmVyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50KCdjaHJpc3RpYW5pdHlDaG9vc2VDYXJkJyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhcmREZWZpbml0aW9uKGNhcmRJZDogc3RyaW5nKTogQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24ge1xuICAgIHJldHVybiBTVEFSVEVSX0NBUkRTW2NhcmRJZF0gPz8gU1RBUlRFUl9DQVJEU1sncF9zY291dCddO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhdHRsZVNsb3RzKHNlYXQ6IENocmlzdGlhbml0eVNlYXQpOiBBcnJheTx7IHRyYWNrSWQ6IHN0cmluZzsgY2FyZD86IENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlIH0+IHtcbiAgICBjb25zdCBjYXJkcyA9IHRoaXMuZ2FtZSgpLnBsYXllcnNbc2VhdF0uYmF0dGxlWm9uZTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogNCB9LCAoXywgaW5kZXgpID0+ICh7XG4gICAgICB0cmFja0lkOiBjYXJkc1tpbmRleF0/Lmluc3RhbmNlSWQgPz8gYCR7c2VhdH0tZW1wdHktJHtpbmRleH1gLFxuICAgICAgY2FyZDogY2FyZHNbaW5kZXhdLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoaWRkZW5IYW5kQ2FyZHMoY291bnQ6IG51bWJlcik6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZhblRyYW5zZm9ybShpbmRleDogbnVtYmVyLCB0b3RhbDogbnVtYmVyLCBvcHBvbmVudDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgaWYgKHRvdGFsIDw9IDEpIHJldHVybiBvcHBvbmVudCA/ICdyb3RhdGUoMTgwZGVnKScgOiAnbm9uZSc7XG4gICAgY29uc3QgY2VudGVyID0gKHRvdGFsIC0gMSkgLyAyO1xuICAgIGNvbnN0IG9mZnNldCA9IGluZGV4IC0gY2VudGVyO1xuICAgIGNvbnN0IHJvdGF0ZSA9IG9mZnNldCAqIDU7XG4gICAgY29uc3QgbGlmdCA9IE1hdGguYWJzKG9mZnNldCkgKiAwLjI1O1xuICAgIGNvbnN0IGhvdmVyTGlmdCA9IG9wcG9uZW50ID8gMCA6IHRoaXMuaGFuZFdhdmVMaWZ0KGluZGV4KTtcbiAgICBjb25zdCBiYXNlID0gb3Bwb25lbnQgPyAncm90YXRlKDE4MGRlZyknIDogJyc7XG4gICAgcmV0dXJuIGAke2Jhc2V9IHRyYW5zbGF0ZVkoJHtsaWZ0ICsgaG92ZXJMaWZ0fXJlbSkgcm90YXRlKCR7cm90YXRlfWRlZylgO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRDYXJkWkluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLmhvdmVyZWRIYW5kSW5kZXgoKTtcbiAgICBpZiAoaG92ZXJlZCA9PT0gbnVsbCkgcmV0dXJuIDI7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLmFicyhpbmRleCAtIGhvdmVyZWQpO1xuICAgIHJldHVybiBNYXRoLm1heCgyLCA4IC0gZGlzdGFuY2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEhvdmVyZWRIYW5kSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJlZEhhbmRJbmRleC5zZXQoaW5kZXgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFySG92ZXJlZEhhbmRJbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWRIYW5kSW5kZXguc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbGVhc2VIb3ZlcmVkSGFuZChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnBvaW50ZXJUeXBlICE9PSAnbW91c2UnKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsZWFySG92ZXJlZEhhbmRJbmRleCgpLCAxODApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZFdhdmVMaWZ0KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLmhvdmVyZWRIYW5kSW5kZXgoKTtcbiAgICBpZiAoaG92ZXJlZCA9PT0gbnVsbCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLmFicyhpbmRleCAtIGhvdmVyZWQpO1xuICAgIGlmIChkaXN0YW5jZSA9PT0gMCkgcmV0dXJuIC0xLjE1O1xuICAgIGlmIChkaXN0YW5jZSA9PT0gMSkgcmV0dXJuIC0wLjU4O1xuICAgIGlmIChkaXN0YW5jZSA9PT0gMikgcmV0dXJuIC0wLjIyO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWR5T2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBwbGF5ZXIub2ZmZXJpbmdzLnJlZHVjZSgodG90YWwsIG9mZmVyaW5nKSA9PiB0b3RhbCArIChvZmZlcmluZy5yZWFkeSA/IG9mZmVyaW5nLnZhbHVlIDogMCksIDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvdGFsT2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBwbGF5ZXIub2ZmZXJpbmdzLnJlZHVjZSgodG90YWwsIG9mZmVyaW5nKSA9PiB0b3RhbCArIG9mZmVyaW5nLnZhbHVlLCAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYW5QbGF5KGNhcmQ6IENocmlzdGlhbml0eUNhcmREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlzT3duVHVybigpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJykgcmV0dXJuICF0aGlzLnBsYXllcigpLm9mZmVyaW5nUGxheWVkVGhpc1R1cm47XG4gICAgcmV0dXJuIHRoaXMucmVhZHlPZmZlcmluZ3ModGhpcy5wbGF5ZXIoKSkgPj0gY2FyZC5jb3N0ICYmIHRoaXMucGxheWVyKCkuYmF0dGxlWm9uZS5sZW5ndGggPCA0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhblBsYXlTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZCgpO1xuICAgIHJldHVybiAhIXNlbGVjdGVkICYmIHRoaXMuY2FuUGxheSh0aGlzLmNhcmREZWZpbml0aW9uKHNlbGVjdGVkKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0SGFuZENhcmQoY2FyZElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZC5zZXQodGhpcy5zZWxlY3RlZEhhbmRDYXJkKCkgPT09IGNhcmRJZCA/IG51bGwgOiBjYXJkSWQpO1xuICAgIHRoaXMuaW5zcGVjdEhhbmRDYXJkKGNhcmRJZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGxheVNlbGVjdGVkQ2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjYXJkSWQgPSB0aGlzLnNlbGVjdGVkSGFuZENhcmQoKTtcbiAgICBpZiAoIWNhcmRJZCkgcmV0dXJuO1xuICAgIGNvbnN0IGNhcmQgPSB0aGlzLmNhcmREZWZpbml0aW9uKGNhcmRJZCk7XG4gICAgaWYgKCF0aGlzLmNhblBsYXkoY2FyZCkpIHJldHVybjtcblxuICAgIHRoaXMuZ2FtZS51cGRhdGUoZ2FtZSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICAgICAgY29uc3QgcGxheWVyID0gbmV4dC5wbGF5ZXJzLlAxO1xuICAgICAgY29uc3QgaGFuZEluZGV4ID0gcGxheWVyLmhhbmQ/LmluZGV4T2YoY2FyZElkKSA/PyAtMTtcbiAgICAgIGlmIChoYW5kSW5kZXggPCAwIHx8ICFwbGF5ZXIuaGFuZCkgcmV0dXJuIGdhbWU7XG4gICAgICBwbGF5ZXIuaGFuZC5zcGxpY2UoaGFuZEluZGV4LCAxKTtcbiAgICAgIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICAgICAgcGxheWVyLm9mZmVyaW5ncy5wdXNoKHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBgcDFfb2ZmZXJpbmdfJHtuZXh0LnJldmlzaW9uICsgMX1gLFxuICAgICAgICAgIGNhcmRJZDogY2FyZC5pZCxcbiAgICAgICAgICBuYW1lOiBjYXJkLm5hbWUsXG4gICAgICAgICAgb3duZXI6ICdQMScsXG4gICAgICAgICAgcmVhZHk6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGNhcmQubGlmZSxcbiAgICAgICAgICBhYmlsaXR5TmFtZTogY2FyZC5hYmlsaXR5TmFtZSxcbiAgICAgICAgICBhYmlsaXR5VGV4dDogY2FyZC5hYmlsaXR5VGV4dCxcbiAgICAgICAgICBhYmlsaXR5Q29zdDogY2FyZC5hYmlsaXR5Q29zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHBsYXllci5vZmZlcmluZ1BsYXllZFRoaXNUdXJuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3BlbmRPZmZlcmluZ3MocGxheWVyLCBjYXJkLmNvc3QpO1xuICAgICAgICBwbGF5ZXIuYmF0dGxlWm9uZS5wdXNoKHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBgcDFfJHtuZXh0LnJldmlzaW9uICsgMX1fJHtwbGF5ZXIuYmF0dGxlWm9uZS5sZW5ndGh9YCxcbiAgICAgICAgICBjYXJkSWQ6IGNhcmQuaWQsXG4gICAgICAgICAgbmFtZTogY2FyZC5uYW1lLFxuICAgICAgICAgIG93bmVyOiAnUDEnLFxuICAgICAgICAgIGNvbnRyb2xsZXI6ICdQMScsXG4gICAgICAgICAgYXR0YWNrOiBjYXJkLmF0dGFjayxcbiAgICAgICAgICBjdXJyZW50SHA6IGNhcmQubGlmZSxcbiAgICAgICAgICBtYXhIcDogY2FyZC5saWZlLFxuICAgICAgICAgIGNhbkF0dGFjazogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbmV4dC5yZXZpc2lvbisrO1xuICAgICAgbmV4dC5sb2cgPSBbXG4gICAgICAgIGNhcmQudHlwZSA9PT0gJ29mZmVyaW5nJyA/IGAke2NhcmQubmFtZX0gcXVlZGEgbGlzdGEgY29tbyBvZnJlbmRhLmAgOiBgJHtjYXJkLm5hbWV9IGVudHJhIGVuIGJhdGFsbGEuYCxcbiAgICAgICAgLi4ubmV4dC5sb2csXG4gICAgICBdLnNsaWNlKDAsIDQpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEhhbmRDYXJkLnNldChudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RBdHRhY2tlcihjYXJkOiBDaHJpc3RpYW5pdHlDaGFyYWN0ZXJJbnN0YW5jZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRIYW5kQ2FyZC5zZXQobnVsbCk7XG4gICAgdGhpcy5pbnNwZWN0Q2hhcmFjdGVyKGNhcmQpO1xuICAgIGlmICghdGhpcy5pc093blR1cm4oKSB8fCAhY2FyZC5jYW5BdHRhY2spIHJldHVybjtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KHRoaXMuc2VsZWN0ZWRBdHRhY2tlcigpPy5pbnN0YW5jZUlkID09PSBjYXJkLmluc3RhbmNlSWQgPyBudWxsIDogY2FyZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3Bwb25lbnRDaGFyYWN0ZXIoY2FyZDogQ2hyaXN0aWFuaXR5Q2hhcmFjdGVySW5zdGFuY2UpOiB2b2lkIHtcbiAgICB0aGlzLmluc3BlY3RDaGFyYWN0ZXIoY2FyZCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBdHRhY2tlcigpKSB7XG4gICAgICB0aGlzLmF0dGFja0NoYXJhY3RlcihjYXJkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3Bwb25lbnRMZWFkZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnNwZWN0TGVhZGVyKCdQMicpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKSAmJiAhdGhpcy5oYXNPcHBvbmVudEd1YXJkcygpKSB7XG4gICAgICB0aGlzLmF0dGFja0xlYWRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhdHRhY2tMZWFkZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYXR0YWNrZXIgPSB0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKTtcbiAgICBpZiAoIWF0dGFja2VyKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGFzT3Bwb25lbnRHdWFyZHMoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KHtcbiAgICAgICAgdGl0bGU6IHRoaXMub3Bwb25lbnQoKS5sZWFkZXJOYW1lLFxuICAgICAgICBleWVicm93OiB0aGlzLnQoJ2NocmlzdGlhbml0eUxlYWRlckNhcmQnKSxcbiAgICAgICAgbWV0YTogYCR7dGhpcy5vcHBvbmVudCgpLmxlYWRlckhwfS8ke3RoaXMub3Bwb25lbnQoKS5sZWFkZXJNYXhIcH1gLFxuICAgICAgICBib2R5OiB0aGlzLnQoJ2NocmlzdGlhbml0eUxlYWRlclByb3RlY3RlZCcpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZ2FtZS51cGRhdGUoZ2FtZSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICAgICAgY29uc3QgbGl2ZUF0dGFja2VyID0gbmV4dC5wbGF5ZXJzLlAxLmJhdHRsZVpvbmUuZmluZChjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gYXR0YWNrZXIuaW5zdGFuY2VJZCk7XG4gICAgICBpZiAoIWxpdmVBdHRhY2tlciB8fCAhbGl2ZUF0dGFja2VyLmNhbkF0dGFjaykgcmV0dXJuIGdhbWU7XG4gICAgICBuZXh0LnBsYXllcnMuUDIubGVhZGVySHAgPSBNYXRoLm1heCgwLCBuZXh0LnBsYXllcnMuUDIubGVhZGVySHAgLSBsaXZlQXR0YWNrZXIuYXR0YWNrKTtcbiAgICAgIGxpdmVBdHRhY2tlci5jYW5BdHRhY2sgPSBmYWxzZTtcbiAgICAgIG5leHQucmV2aXNpb24rKztcbiAgICAgIG5leHQubG9nID0gW2Ake2xpdmVBdHRhY2tlci5uYW1lfSBhdGFjYSBhbCBsaWRlciByaXZhbC5gLCAuLi5uZXh0LmxvZ10uc2xpY2UoMCwgNCk7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNrZXIuc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFja0NoYXJhY3Rlcih0YXJnZXQ6IENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlKTogdm9pZCB7XG4gICAgY29uc3QgYXR0YWNrZXIgPSB0aGlzLnNlbGVjdGVkQXR0YWNrZXIoKTtcbiAgICBpZiAoIWF0dGFja2VyKSByZXR1cm47XG4gICAgdGhpcy5nYW1lLnVwZGF0ZShnYW1lID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gICAgICBjb25zdCBsaXZlQXR0YWNrZXIgPSBuZXh0LnBsYXllcnMuUDEuYmF0dGxlWm9uZS5maW5kKGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSBhdHRhY2tlci5pbnN0YW5jZUlkKTtcbiAgICAgIGNvbnN0IGxpdmVUYXJnZXQgPSBuZXh0LnBsYXllcnMuUDIuYmF0dGxlWm9uZS5maW5kKGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSB0YXJnZXQuaW5zdGFuY2VJZCk7XG4gICAgICBpZiAoIWxpdmVBdHRhY2tlciB8fCAhbGl2ZVRhcmdldCB8fCAhbGl2ZUF0dGFja2VyLmNhbkF0dGFjaykgcmV0dXJuIGdhbWU7XG4gICAgICBsaXZlVGFyZ2V0LmN1cnJlbnRIcCAtPSBsaXZlQXR0YWNrZXIuYXR0YWNrO1xuICAgICAgbGl2ZUF0dGFja2VyLmN1cnJlbnRIcCAtPSBsaXZlVGFyZ2V0LmF0dGFjaztcbiAgICAgIGxpdmVBdHRhY2tlci5jYW5BdHRhY2sgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xlYW51cERlc3Ryb3llZChuZXh0LnBsYXllcnMuUDEsIG5leHQpO1xuICAgICAgdGhpcy5jbGVhbnVwRGVzdHJveWVkKG5leHQucGxheWVycy5QMiwgbmV4dCk7XG4gICAgICBuZXh0LnJldmlzaW9uKys7XG4gICAgICBuZXh0LmxvZyA9IFtgJHtsaXZlQXR0YWNrZXIubmFtZX0gY29tYmF0ZSBjb250cmEgJHtsaXZlVGFyZ2V0Lm5hbWV9LmAsIC4uLm5leHQubG9nXS5zbGljZSgwLCA0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRBdHRhY2tlci5zZXQobnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5kVHVybigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSGFuZENhcmQuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRBdHRhY2tlci5zZXQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KG51bGwpO1xuICAgIHRoaXMuZ2FtZS51cGRhdGUoZ2FtZSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICAgICAgbmV4dC50dXJuT3duZXIgPSBuZXh0LnR1cm5Pd25lciA9PT0gJ1AxJyA/ICdQMicgOiAnUDEnO1xuICAgICAgbmV4dC50dXJuQ291bnQrKztcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBuZXh0LnBsYXllcnNbbmV4dC50dXJuT3duZXJdO1xuICAgICAgY3VycmVudC5vZmZlcmluZ1BsYXllZFRoaXNUdXJuID0gZmFsc2U7XG4gICAgICBjdXJyZW50Lm9mZmVyaW5ncyA9IGN1cnJlbnQub2ZmZXJpbmdzLm1hcChvZmZlcmluZyA9PiAoeyAuLi5vZmZlcmluZywgcmVhZHk6IHRydWUgfSkpO1xuICAgICAgY3VycmVudC5iYXR0bGVab25lID0gY3VycmVudC5iYXR0bGVab25lLm1hcChjYXJkID0+ICh7IC4uLmNhcmQsIGNhbkF0dGFjazogdHJ1ZSB9KSk7XG4gICAgICBjb25zdCBkcmF3bkNhcmQgPSBuZXh0LnNoYXJlZERlY2suc2hpZnQoKTtcbiAgICAgIGlmIChkcmF3bkNhcmQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQuaGFuZCkge1xuICAgICAgICAgIGN1cnJlbnQuaGFuZC5wdXNoKGRyYXduQ2FyZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudC5oYW5kQ291bnQgPSAoY3VycmVudC5oYW5kQ291bnQgPz8gMCkgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0LnJldmlzaW9uKys7XG4gICAgICBuZXh0LmxvZyA9IFtcbiAgICAgICAgZHJhd25DYXJkID8gYCR7Y3VycmVudC5kaXNwbGF5TmFtZX0gcm9iYSB1bmEgY2FydGEuYCA6IGBFbCBtYXpvIGVzdGEgdmFjaW8uYCxcbiAgICAgICAgYFR1cm5vIGRlICR7Y3VycmVudC5kaXNwbGF5TmFtZX0uYCxcbiAgICAgICAgLi4ubmV4dC5sb2csXG4gICAgICBdLnNsaWNlKDAsIDQpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRNb2NrKCk6IHZvaWQge1xuICAgIHRoaXMuZ2FtZS5zZXQoc3RydWN0dXJlZENsb25lKFNUQVJUSU5HX0dBTUUpKTtcbiAgICB0aGlzLnNlbGVjdGVkSGFuZENhcmQuc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRBdHRhY2tlci5zZXQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KG51bGwpO1xuICAgIHRoaXMuc2hvd0hpc3Rvcnkuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9mZmVyaW5nc1NlYXQuc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJldmlldy5zZXQobnVsbCk7XG4gICAgdGhpcy5yZXNldFByZXZpZXdUaWx0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3Blbk9mZmVyaW5ncyhzZWF0OiBDaHJpc3RpYW5pdHlTZWF0KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KG51bGwpO1xuICAgIHRoaXMuc2hvd0hpc3Rvcnkuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9mZmVyaW5nc1NlYXQuc2V0KHNlYXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlT2ZmZXJpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMub2ZmZXJpbmdzU2VhdC5zZXQobnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGlsdFByZXZpZXcoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGJvdW5kcyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gKGV2ZW50LmNsaWVudFggLSBib3VuZHMubGVmdCkgLyBib3VuZHMud2lkdGggLSAwLjU7XG4gICAgY29uc3QgeSA9IChldmVudC5jbGllbnRZIC0gYm91bmRzLnRvcCkgLyBib3VuZHMuaGVpZ2h0IC0gMC41O1xuICAgIHRoaXMucHJldmlld1RpbHQuc2V0KHtcbiAgICAgIHJvdGF0ZVg6IDUgLSB5ICogMTgsXG4gICAgICByb3RhdGVZOiAtNSArIHggKiAxOCxcbiAgICAgIHNoaWZ0WDogeCAqIDEwLFxuICAgICAgc2hpZnRZOiB5ICogMTAsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRQcmV2aWV3VGlsdCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdUaWx0LnNldCh7IHJvdGF0ZVg6IDUsIHJvdGF0ZVk6IC01LCBzaGlmdFg6IDAsIHNoaWZ0WTogMCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cERlc3Ryb3llZChwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlLCBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0cm95ZWQgPSBwbGF5ZXIuYmF0dGxlWm9uZS5maWx0ZXIoY2FyZCA9PiBjYXJkLmN1cnJlbnRIcCA8PSAwKTtcbiAgICBpZiAoIWRlc3Ryb3llZC5sZW5ndGgpIHJldHVybjtcbiAgICBnYW1lLmhpc3Rvcnlab25lLnB1c2goLi4uZGVzdHJveWVkLm1hcChjYXJkID0+IGNhcmQuY2FyZElkKSk7XG4gICAgcGxheWVyLmJhdHRsZVpvbmUgPSBwbGF5ZXIuYmF0dGxlWm9uZS5maWx0ZXIoY2FyZCA9PiBjYXJkLmN1cnJlbnRIcCA+IDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3BlY3RMZWFkZXIoc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IHZvaWQge1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuZ2FtZSgpLnBsYXllcnNbc2VhdF07XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KHtcbiAgICAgIHRpdGxlOiBwbGF5ZXIubGVhZGVyTmFtZSxcbiAgICAgIGV5ZWJyb3c6IHRoaXMudCgnY2hyaXN0aWFuaXR5TGVhZGVyQ2FyZCcpLFxuICAgICAgbWV0YTogYCR7cGxheWVyLmxlYWRlckhwfS8ke3BsYXllci5sZWFkZXJNYXhIcH1gLFxuICAgICAgYm9keTogc2VhdCA9PT0gJ1AyJyAmJiB0aGlzLmhhc09wcG9uZW50R3VhcmRzKCkgPyB0aGlzLnQoJ2NocmlzdGlhbml0eUxlYWRlclByb3RlY3RlZCcpIDogdGhpcy50KCdjaHJpc3RpYW5pdHlMZWFkZXJCb2R5JyksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zcGVjdE9mZmVyaW5nKG9mZmVyaW5nOiBDaHJpc3RpYW5pdHlPZmZlcmluZ0luc3RhbmNlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KHtcbiAgICAgIHRpdGxlOiBvZmZlcmluZy5uYW1lLFxuICAgICAgZXllYnJvdzogdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0NhcmQnKSxcbiAgICAgIG1ldGE6IG9mZmVyaW5nLnJlYWR5ID8gdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ1JlYWR5JykgOiB0aGlzLnQoJ2NocmlzdGlhbml0eU9mZmVyaW5nRXhoYXVzdGVkJyksXG4gICAgICBib2R5OiBvZmZlcmluZy5hYmlsaXR5VGV4dCB8fCB0aGlzLnQoJ2NocmlzdGlhbml0eU9mZmVyaW5nQm9keScpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhblVzZU9mZmVyaW5nQWJpbGl0eShvZmZlcmluZzogQ2hyaXN0aWFuaXR5T2ZmZXJpbmdJbnN0YW5jZSwgc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IGJvb2xlYW4ge1xuICAgIGlmIChzZWF0ICE9PSAnUDEnIHx8ICF0aGlzLmlzT3duVHVybigpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFvZmZlcmluZy5yZWFkeSB8fCAhb2ZmZXJpbmcuYWJpbGl0eU5hbWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5yZWFkeU9mZmVyaW5ncyh0aGlzLmdhbWUoKS5wbGF5ZXJzW3NlYXRdKSA+PSAob2ZmZXJpbmcuYWJpbGl0eUNvc3QgPz8gMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXNlT2ZmZXJpbmdBYmlsaXR5KG9mZmVyaW5nOiBDaHJpc3RpYW5pdHlPZmZlcmluZ0luc3RhbmNlLCBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblVzZU9mZmVyaW5nQWJpbGl0eShvZmZlcmluZywgc2VhdCkpIHJldHVybjtcbiAgICB0aGlzLmdhbWUudXBkYXRlKGdhbWUgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgICAgIGNvbnN0IHBsYXllciA9IG5leHQucGxheWVyc1tzZWF0XTtcbiAgICAgIGNvbnN0IGxpdmVPZmZlcmluZyA9IHBsYXllci5vZmZlcmluZ3MuZmluZChjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gb2ZmZXJpbmcuaW5zdGFuY2VJZCk7XG4gICAgICBpZiAoIWxpdmVPZmZlcmluZyB8fCAhbGl2ZU9mZmVyaW5nLnJlYWR5KSByZXR1cm4gZ2FtZTtcbiAgICAgIGNvbnN0IG9mZmVyaW5nSWQgPSBsaXZlT2ZmZXJpbmcuaW5zdGFuY2VJZDtcbiAgICAgIHRoaXMuc3BlbmRPZmZlcmluZ3MocGxheWVyLCBsaXZlT2ZmZXJpbmcuYWJpbGl0eUNvc3QgPz8gMCk7XG4gICAgICBwbGF5ZXIub2ZmZXJpbmdzID0gcGxheWVyLm9mZmVyaW5ncy5tYXAoY2FyZCA9PiAoY2FyZC5pbnN0YW5jZUlkID09PSBvZmZlcmluZ0lkID8geyAuLi5jYXJkLCByZWFkeTogZmFsc2UgfSA6IGNhcmQpKTtcbiAgICAgIHBsYXllci5sZWFkZXJIcCA9IE1hdGgubWF4KDAsIHBsYXllci5sZWFkZXJIcCAtIDEpO1xuICAgICAgbmV4dC5yZXZpc2lvbisrO1xuICAgICAgbmV4dC5sb2cgPSBbYCR7bGl2ZU9mZmVyaW5nLm5hbWV9OiAke2xpdmVPZmZlcmluZy5hYmlsaXR5TmFtZX0uYCwgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zcGVjdERlY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ2NocmlzdGlhbml0eURlY2snKSxcbiAgICAgIGV5ZWJyb3c6IHRoaXMudCgnY2hyaXN0aWFuaXR5U2hhcmVkWm9uZScpLFxuICAgICAgbWV0YTogYCR7dGhpcy5nYW1lKCkuc2hhcmVkRGVjay5sZW5ndGh9YCxcbiAgICAgIGJvZHk6IHRoaXMudCgnY2hyaXN0aWFuaXR5RGVja0JvZHknKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNwZWN0SGFuZENhcmQoY2FyZElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjYXJkID0gdGhpcy5jYXJkRGVmaW5pdGlvbihjYXJkSWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmV2aWV3LnNldCh7XG4gICAgICB0aXRsZTogY2FyZC5uYW1lLFxuICAgICAgZXllYnJvdzogY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnID8gdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0NhcmQnKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5Q2hhcmFjdGVyQ2FyZCcpLFxuICAgICAgbWV0YTogY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnID8gYCske2NhcmQubGlmZX1gIDogYCR7dGhpcy50KCdjaHJpc3RpYW5pdHlDb3N0Jyl9ICR7Y2FyZC5jb3N0fSDCtyAke2NhcmQuYXR0YWNrfS8ke2NhcmQubGlmZX1gLFxuICAgICAgYm9keTogY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnID8gdGhpcy50KCdjaHJpc3RpYW5pdHlPZmZlcmluZ0JvZHknKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5Q2hhcmFjdGVyQm9keScpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3BlY3RIaXN0b3J5Q2FyZChjYXJkSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0hpc3Rvcnkuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmluc3BlY3RIYW5kQ2FyZChjYXJkSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNwZWN0Q2hhcmFjdGVyKGNhcmQ6IENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXZpZXcuc2V0KHtcbiAgICAgIHRpdGxlOiBjYXJkLm5hbWUsXG4gICAgICBleWVicm93OiB0aGlzLnQoJ2NocmlzdGlhbml0eUNoYXJhY3RlckNhcmQnKSxcbiAgICAgIG1ldGE6IGAke2NhcmQuYXR0YWNrfS8ke2NhcmQuY3VycmVudEhwfWAsXG4gICAgICBib2R5OiBjYXJkLmNhbkF0dGFjayA/IHRoaXMudCgnY2hyaXN0aWFuaXR5Q2hhcmFjdGVyUmVhZHknKSA6IHRoaXMudCgnY2hyaXN0aWFuaXR5Q2hhcmFjdGVyRXhoYXVzdGVkJyksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNwZW5kT2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUsIGNvc3Q6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCByZW1haW5pbmcgPSBjb3N0O1xuICAgIHBsYXllci5vZmZlcmluZ3MgPSBwbGF5ZXIub2ZmZXJpbmdzLm1hcChvZmZlcmluZyA9PiB7XG4gICAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgIW9mZmVyaW5nLnJlYWR5KSByZXR1cm4gb2ZmZXJpbmc7XG4gICAgICByZW1haW5pbmcgLT0gb2ZmZXJpbmcudmFsdWU7XG4gICAgICByZXR1cm4geyAuLi5vZmZlcmluZywgcmVhZHk6IGZhbHNlIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==