@skyux/tabs 9.0.0-alpha.8 → 9.0.0-beta.0

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.
@@ -27,7 +27,7 @@ export class SkyTabsetComponent {
27
27
  }
28
28
  this.#_active = value;
29
29
  if (this.tabs) {
30
- this.#tabsetService.setActiveTabIndex(value);
30
+ this.#tabsetService.setActiveTabIndex({ tabIndex: value });
31
31
  }
32
32
  else {
33
33
  // On init, wait for children tabs to render before broadcasting the active tab index.
@@ -35,7 +35,7 @@ export class SkyTabsetComponent {
35
35
  if (this.#tabsetService.isValidTabIndex(value)) {
36
36
  // On init, yield to the permalink ID, if it exists.
37
37
  if (this.#getActiveTabIndexByPermalinkId() === undefined) {
38
- this.#tabsetService.setActiveTabIndex(value);
38
+ this.#tabsetService.setActiveTabIndex({ tabIndex: value });
39
39
  }
40
40
  }
41
41
  else {
@@ -151,7 +151,10 @@ export class SkyTabsetComponent {
151
151
  ngAfterViewInit() {
152
152
  this.#initTabComponents();
153
153
  const initialTabIndex = this.#getInitialTabIndex();
154
- this.#tabsetService.setActiveTabIndex(initialTabIndex);
154
+ this.#tabsetService.setActiveTabIndex({
155
+ tabIndex: initialTabIndex,
156
+ initial: true,
157
+ });
155
158
  this.#listenTabButtonsOverflowChange();
156
159
  this.#listenLocationPopStateChange();
157
160
  // If the currently active tab is getting unregistered, activate the next one.
@@ -193,7 +196,7 @@ export class SkyTabsetComponent {
193
196
  tabComponent?.close.emit();
194
197
  }
195
198
  onTabButtonClick(tabButton) {
196
- this.#tabsetService.setActiveTabIndex(tabButton.tabIndex);
199
+ this.#tabsetService.setActiveTabIndex({ tabIndex: tabButton.tabIndex });
197
200
  }
198
201
  onNewTabClick() {
199
202
  this.newTab.emit();
@@ -230,10 +233,10 @@ export class SkyTabsetComponent {
230
233
  return activeIndex;
231
234
  }
232
235
  #listenActiveIndexChange() {
233
- this.#tabsetService.activeTabIndex
236
+ this.#tabsetService.activeTabChange
234
237
  .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))
235
- .subscribe((activeIndex) => {
236
- this.#updateTabsetComponent(activeIndex);
238
+ .subscribe((tabChange) => {
239
+ this.#updateTabsetComponent(tabChange.tabIndex, false, tabChange.initial);
237
240
  const activeTab = this.#getActiveTabComponent();
238
241
  this.#updateLayout(activeTab?.layout);
239
242
  });
@@ -254,7 +257,7 @@ export class SkyTabsetComponent {
254
257
  // Wait for the tab components to render changes before finding the active one.
255
258
  setTimeout(() => {
256
259
  const tabIndex = this.#getActiveTabComponent()?.tabIndex;
257
- this.#tabsetService.setActiveTabIndex(tabIndex);
260
+ this.#tabsetService.setActiveTabIndex({ tabIndex });
258
261
  });
259
262
  });
260
263
  combineLatest(this.tabs.map((tab) => tab.tabIndexChange))
@@ -292,7 +295,9 @@ export class SkyTabsetComponent {
292
295
  }
293
296
  this.#initTabComponents();
294
297
  const activeIndex = this.#getActiveTabComponent()?.tabIndex;
295
- this.#tabsetService.setActiveTabIndex(activeIndex, {
298
+ this.#tabsetService.setActiveTabIndex({
299
+ tabIndex: activeIndex,
300
+ }, {
296
301
  emitChange: false,
297
302
  });
298
303
  this.#listenTabComponentsStateChange();
@@ -331,7 +336,9 @@ export class SkyTabsetComponent {
331
336
  }
332
337
  #setActiveTabIndexByPermalinkId() {
333
338
  const activeIndex = this.#getActiveTabIndexByPermalinkId();
334
- this.#tabsetService.setActiveTabIndex(activeIndex);
339
+ this.#tabsetService.setActiveTabIndex({
340
+ tabIndex: activeIndex,
341
+ });
335
342
  }
336
343
  #getActiveTabIndexByPermalinkId() {
337
344
  if (this.permalinkId) {
@@ -384,8 +391,11 @@ export class SkyTabsetComponent {
384
391
  * Setting this value to `false` will simply update the existing tab buttons. Setting this value
385
392
  * to `true` is only necessary when the underlying tab components have changed and the tab
386
393
  * buttons must reflect those changes.
394
+ * @param initial Indicates whether tabs are being updated during initialization of the tabset
395
+ * component. This is passed through to the permalink service where it prevents adding an extra
396
+ * item to browser history when the URL is updated with the selected tab's permalink value.
387
397
  */
388
- #updateTabsetComponent(activeIndex, regenerateTabButtons = false) {
398
+ #updateTabsetComponent(activeIndex, regenerateTabButtons, initial) {
389
399
  // Activate/deactivate tab components.
390
400
  this.tabs?.forEach((tab) => {
391
401
  this.#tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)
@@ -410,7 +420,7 @@ export class SkyTabsetComponent {
410
420
  return this.#tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);
411
421
  });
412
422
  if (activeTabComponent) {
413
- this.#permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValueOrDefault);
423
+ this.#permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValueOrDefault, initial);
414
424
  }
415
425
  }
416
426
  // Wait for tab button view models to render before gauging dimensions.
@@ -463,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
463
473
  type: HostBinding,
464
474
  args: ['class']
465
475
  }] } });
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQThCO1FBQzlDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFD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LENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLGdEQUFnRDtRQUNoRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7OEdBdmlCVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwwVkFSbEI7WUFDVCx1QkFBdUI7WUFDdkIseUJBQXlCO1lBQ3pCLGdCQUFnQjtTQUNqQiwrQ0FvSWdCLGVBQWUsNkJDNUtsQyx5dUdBc0dBOzsyRkQxRGEsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLFlBQVksYUFHWDt3QkFDVCx1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsZ0JBQWdCO3FCQUNqQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4T0FPMUIsTUFBTTtzQkFEaEIsS0FBSztnQkF3Q0MsU0FBUztzQkFEZixLQUFLO2dCQVdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBV0ssV0FBVztzQkFEckIsS0FBSztnQkFtQkssUUFBUTtzQkFEbEIsS0FBSztnQkFhQyxZQUFZO3NCQURsQixNQUFNO2dCQVNBLE1BQU07c0JBRFosTUFBTTtnQkFTQSxPQUFPO3NCQURiLE1BQU07Z0JBUUEsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQWFJLElBQUk7c0JBRGQsZUFBZTt1QkFBQyxlQUFlO2dCQWlCekIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMYXlvdXRIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgcmFjZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFiQnV0dG9uVmlld01vZGVsIH0gZnJvbSAnLi90YWItYnV0dG9uLXZpZXctbW9kZWwnO1xuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJMYXlvdXRUeXBlIH0gZnJvbSAnLi90YWItbGF5b3V0LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSB9IGZyb20gJy4vdGFic2V0LWJ1dHRvbnMtZGlzcGxheS1tb2RlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTdHlsZSB9IGZyb20gJy4vdGFic2V0LXN0eWxlJztcbmltcG9ydCB7IFNreVRhYnNldFRhYkluZGV4ZXNDaGFuZ2UgfSBmcm9tICcuL3RhYnNldC10YWItaW5kZXhlcy1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5VGFic2V0U2VydmljZSB9IGZyb20gJy4vdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGFic2V0JyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFic2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lUYWJzZXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlLFxuICAgIFNreVRhYnNldFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGl0cyBgdGFiSW5kZXhgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodmFsdWUsIHRoaXMuI19hY3RpdmUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jX2FjdGl2ZSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMudGFicykge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9uIGluaXQsIHdhaXQgZm9yIGNoaWxkcmVuIHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBicm9hZGNhc3RpbmcgdGhlIGFjdGl2ZSB0YWIgaW5kZXguXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuI3RhYnNldFNlcnZpY2UuaXNWYWxpZFRhYkluZGV4KHZhbHVlKSkge1xuICAgICAgICAgIC8vIE9uIGluaXQsIHlpZWxkIHRvIHRoZSBwZXJtYWxpbmsgSUQsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICBpZiAodGhpcy4jZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFjdGl2YXRlIHRoZSBmaXJzdCB0YWIgaWYgdGhlIG5ldyB0YWIgaW5kZXggaXMgaW52YWxpZC5cbiAgICAgICAgICB0aGlzLiNfYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmF0ZUZpcnN0VGFiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FjdGl2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERpc3Rpbmd1aXNoZXMgYSB0YWJzZXQncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAqIHRoYXQgaXMgd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmc+YC5cbiAgICogVGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHNlbGVjdGVkIHRhYidzIGhlYWRpbmcgdGV4dCxcbiAgICogYnV0IHlvdSBjYW4gc3VwcGx5IGEgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgZWFjaCB0YWIgd2l0aCBpdHMgYHBlcm1hbGlua1ZhbHVlYC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGVybWFsaW5rSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuI19wZXJtYWxpbmtJZCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWQgPSB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh2YWx1ZSk7XG4gICAgICB0aGlzLiNfcGVybWFsaW5rSWQgPSBgJHtzYW5pdGl6ZWR9LWFjdGl2ZS10YWJgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiZWhhdmlvciBmb3IgYSBzZXJpZXMgb2YgdGFicy5cbiAgICogQGRlZmF1bHQgXCJ0YWJzXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiU3R5bGUodmFsdWU6IFNreVRhYnNldFN0eWxlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYlN0eWxlID0gdmFsdWUgfHwgJ3RhYnMnO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJTdHlsZSgpOiBTa3lUYWJzZXRTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJTdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYkluZGV4PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHRhYi5cbiAgICogVGhlIG5ldyB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBvcGVuIGEgdGFiLlxuICAgKiBUaGUgb3BlbiB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuVGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFueSB0YWIncyBgdGFiSW5kZXhgIHZhbHVlIGNoYW5nZXMuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBzZXQgdGFiRGlzcGxheU1vZGUodmFsdWU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSkge1xuICAgIHRoaXMuI190YWJEaXNwbGF5TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJEaXNwbGF5TW9kZSgpOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUge1xuICAgIHJldHVybiB0aGlzLiNfdGFiRGlzcGxheU1vZGU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVRhYkNvbXBvbmVudClcbiAgcHVibGljIHNldCB0YWJzKHZhbHVlOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJzID0gdmFsdWU7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgIHZhbHVlPy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNyZXNldFRhYkNvbXBvbmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJzKCk6IFF1ZXJ5TGlzdDxTa3lUYWJDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYnM7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gJ3NreS10YWJzZXQtbGF5b3V0LW5vbmUnO1xuXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgZGVwcmVjYXRlZCB0YWJzZXQtbmF2LWJ1dHRvbiBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGxhc3RBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdID0gW107XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYWN0aXZlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX3Blcm1hbGlua0lkID0gJyc7XG5cbiAgI190YWJzOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjX3RhYkRpc3BsYXlNb2RlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUgPSAndGFicyc7XG5cbiAgI190YWJTdHlsZTogU2t5VGFic2V0U3R5bGUgPSAndGFicyc7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2U7XG4gICNwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcblxuICAjbGF5b3V0SG9zdFN2YyA9IGluamVjdChTa3lMYXlvdXRIb3N0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlID0gcGVybWFsaW5rU2VydmljZTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlID0gdGFic2V0U2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5pdFRhYkNvbXBvbmVudHMoKTtcblxuICAgIGNvbnN0IGluaXRpYWxUYWJJbmRleCA9IHRoaXMuI2dldEluaXRpYWxUYWJJbmRleCgpO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoaW5pdGlhbFRhYkluZGV4KTtcblxuICAgIHRoaXMuI2xpc3RlblRhYkJ1dHRvbnNPdmVyZmxvd0NoYW5nZSgpO1xuICAgIHRoaXMuI2xpc3RlbkxvY2F0aW9uUG9wU3RhdGVDaGFuZ2UoKTtcblxuICAgIC8vIElmIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpcyBnZXR0aW5nIHVucmVnaXN0ZXJlZCwgYWN0aXZhdGUgdGhlIG5leHQgb25lLlxuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZlVGFiVW5yZWdpc3RlcmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0YWIpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIG5ldyB0YWJzIHRvIHJlbmRlciBiZWZvcmUgYWN0aXZhdGluZy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmF0ZU5lYXJlc3RUYWIodGFiLmFycmF5SW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJMYXlvdXRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxheW91dCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVMYXlvdXQobGF5b3V0KTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTGV0IHRoZSB0YWJzZXQgcmVuZGVyIHRoZSBpbml0aWFsIGFjdGl2ZSBpbmRleCBiZWZvcmUgbGlzdGVuaW5nIGZvciBjaGFuZ2VzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jbGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgICB0aGlzLiNsaXN0ZW5BY3RpdmVJbmRleENoYW5nZSgpO1xuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS5pbml0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RhYkNvbXBvbmVudHNDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS5jbGVhclBhcmFtKHRoaXMucGVybWFsaW5rSWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5kZXRlY3RPdmVyZmxvdygpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQ2xvc2VDbGljayh0YWJCdXR0b246IFRhYkJ1dHRvblZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHRhYkNvbXBvbmVudCA9IHRoaXMudGFicz8uZmluZCgodGFiKSA9PlxuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJCdXR0b24udGFiSW5kZXgpXG4gICAgKTtcblxuICAgIHRhYkNvbXBvbmVudD8uY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHRhYkJ1dHRvbi50YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgb25OZXdUYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm5ld1RhYi5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25PcGVuVGFiQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuVGFiLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJpZ2h0S2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzTmV4dFRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgcHVibGljIG9uTGVmdEtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c1ByZXZUYWJCdG4odGhpcy50YWJCdXR0b25zKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkhvbWVLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNGaXJzdE9yTmVhcmVzdFRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgcHVibGljIG9uRW5kS2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzTGFzdE9yTmVhcmVzdFRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgYWN0aXZlIHRhYiBpbmRleCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGNyaXRlcmlhLlxuICAgKiAxLiBEb2VzIHRoZSBVUkwgaW5jbHVkZSBhIHF1ZXJ5IHBhcmFtIHRoYXQgcmVmbGVjdHMgdGhpcyB0YWJzZXQncyBhY3RpdmUgdGFiP1xuICAgKiAyLiBEb2VzIG9uZSBvZiB0aGUgdGFiIGNvbXBvbmVudHMgaGF2ZSB0aGVpciBgYWN0aXZlYCBwcm9wZXJ0eSBzZXQgdG8gYHRydWVgP1xuICAgKiAzLiBJcyB0aGUgdGFic2V0IGNvbXBvbmVudCdzIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBhIHNwZWNpZmljIHRhYiBpbmRleD9cbiAgICovXG4gICNnZXRJbml0aWFsVGFiSW5kZXgoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGxldCBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy4jZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgaWYgKGFjdGl2ZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgICAgaWYgKGFjdGl2ZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aXZlSW5kZXg7XG4gIH1cblxuICAjbGlzdGVuQWN0aXZlSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJJbmRleFxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aXZlSW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KGFjdGl2ZUluZGV4KTtcbiAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlTGF5b3V0KGFjdGl2ZVRhYj8ubGF5b3V0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUxheW91dChsYXlvdXQ/OiBTa3lUYWJMYXlvdXRUeXBlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xheW91dEhvc3RTdmMgJiYgbGF5b3V0KSB7XG4gICAgICB0aGlzLiNsYXlvdXRIb3N0U3ZjLnNldEhvc3RMYXlvdXRGb3JDaGlsZCh7XG4gICAgICAgIGxheW91dCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNzc0NsYXNzID0gYHNreS10YWJzZXQtbGF5b3V0LSR7bGF5b3V0fWA7XG4gICAgfVxuICB9XG5cbiAgI2xpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmFjdGl2ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UodGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMuI25nVW5zdWJzY3JpYmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh0YWJJbmRleCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZSh0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy4jbmdVbnN1YnNjcmliZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMuI2VtaXRUYWJJbmRleENoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnRhYnMubWFwKCh0YWIpID0+IHRhYi5zdGF0ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UodGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMuI25nVW5zdWJzY3JpYmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5jdXJyZW50QWN0aXZlVGFiSW5kZXgsXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNpbml0VGFiQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnM/LmZvckVhY2goKHRhYikgPT4gdGFiLmluaXQoKSk7XG4gIH1cblxuICAjcmVzZXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuI3Vuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS51bnJlZ2lzdGVyQWxsKCk7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGFiIGNvbXBvbmVudHMsIGRvIGEgaGFyZCByZXNldCBvZiB0aGUgdmlldy5cbiAgICBpZiAodGhpcy50YWJzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudCgwLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0VGFiQ29tcG9uZW50cygpO1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoYWN0aXZlSW5kZXgsIHtcbiAgICAgIGVtaXRDaGFuZ2U6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMuI2xpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgI2VtaXRUYWJJbmRleENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkluZGV4ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICB0YWJzOiB0aGlzLnRhYnM/Lm1hcCgodGFiKSA9PiAoe1xuICAgICAgICB0YWJIZWFkaW5nOiB0YWIudGFiSGVhZGluZyxcbiAgICAgICAgdGFiSW5kZXg6IHRhYi50YWJJbmRleCxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gICN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICAjbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlZ2lzdGVyVGFic2V0KHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLm92ZXJmbG93Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpc092ZXJmbG93aW5nKSA9PiB7XG4gICAgICAgIHRoaXMudGFiRGlzcGxheU1vZGUgPSBpc092ZXJmbG93aW5nID8gJ2Ryb3Bkb3duJyA6ICd0YWJzJztcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGJhY2svZm9yd2FyZCBoaXN0b3J5IGJ1dHRvbiBwcmVzc2VzIHRvIGRldGVjdCBxdWVyeSBwYXJhbSBjaGFuZ2VzIGluIHRoZSBVUkwuXG4gICAqL1xuICAjbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnBvcFN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KGFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy4jcGVybWFsaW5rU2VydmljZS5nZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgICAgIGlmIChwYXJhbVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnM/LmZpbmQoXG4gICAgICAgICAgKHRhYikgPT4gdGFiLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID09PSBwYXJhbVZhbHVlXG4gICAgICAgICk/LnRhYkluZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJDb21wb25lbnQoKTogU2t5VGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzXG4gICAgICA/LnRvQXJyYXkoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKHRhYikgPT4gdGFiLmFjdGl2ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICAjY3JlYXRlVGFiQnV0dG9ucyhcbiAgICBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWRcbiAgKTogVGFiQnV0dG9uVmlld01vZGVsW10ge1xuICAgIC8vIFNhZmV0eSBjaGVja1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLnRhYnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJzLm1hcCgodGFiLCBpbmRleCkgPT4gKHtcbiAgICAgIGFjdGl2ZTogdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBhY3RpdmVJbmRleCksXG4gICAgICBjbG9zZWFibGU6IHRhYi5pc0Nsb3NlYWJsZSgpLFxuICAgICAgYXJpYUNvbnRyb2xzOiB0YWIudGFiUGFuZWxJZCxcbiAgICAgIGRpc2FibGVkOiB0YWIuZGlzYWJsZWQsXG4gICAgICBidXR0b25IcmVmOiB0YWIuZGlzYWJsZWRcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy4jcGVybWFsaW5rU2VydmljZS5nZXRQYXJhbUhyZWYoXG4gICAgICAgICAgICB0aGlzLnBlcm1hbGlua0lkLFxuICAgICAgICAgICAgdGFiLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0XG4gICAgICAgICAgKSxcbiAgICAgIGJ1dHRvbklkOiB0YWIudGFiQnV0dG9uSWQsXG4gICAgICBidXR0b25UZXh0Q291bnQ6IHRhYi50YWJIZWFkZXJDb3VudCxcbiAgICAgIGJ1dHRvblRleHQ6IHRhYi50YWJIZWFkaW5nLFxuICAgICAgdGFiSW5kZXg6IHRhYi50YWJJbmRleCxcbiAgICAgIHRhYk51bWJlcjogaW5kZXggKyAxLFxuICAgICAgdG90YWxUYWJzQ291bnQ6IHRoaXMudGFicyEubGVuZ3RoLFxuICAgIH0pKTtcbiAgfVxuXG4gICN1cGRhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMudGFiQnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgIGJ1dHRvbi5hY3RpdmUgPSB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChcbiAgICAgICAgYnV0dG9uLnRhYkluZGV4LFxuICAgICAgICBhY3RpdmVJbmRleFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBhbmQgc3RhdGUgb2YgdGhlIHRhYnNldCBjb21wb25lbnQgYWZ0ZXIgdGhlIHRhYiBpbmRleCBvclxuICAgKiB0YWIgY29tcG9uZW50cyBoYXZlIGNoYW5nZWQuXG4gICAqIEBwYXJhbSBhY3RpdmVJbmRleCBUaGUgY3VycmVudGx5IGFjdGl2ZSB0YWIgaW5kZXguXG4gICAqIEBwYXJhbSByZWdlbmVyYXRlVGFiQnV0dG9ucyBJbmRpY2F0ZXMgaWYgdGFiIGJ1dHRvbiB2aWV3IG1vZGVscyBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBgZmFsc2VgIHdpbGwgc2ltcGx5IHVwZGF0ZSB0aGUgZXhpc3RpbmcgdGFiIGJ1dHRvbnMuIFNldHRpbmcgdGhpcyB2YWx1ZVxuICAgKiB0byBgdHJ1ZWAgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiB0aGUgdW5kZXJseWluZyB0YWIgY29tcG9uZW50cyBoYXZlIGNoYW5nZWQgYW5kIHRoZSB0YWJcbiAgICogYnV0dG9ucyBtdXN0IHJlZmxlY3QgdGhvc2UgY2hhbmdlcy5cbiAgICovXG4gICN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgLy8gQWN0aXZhdGUvZGVhY3RpdmF0ZSB0YWIgY29tcG9uZW50cy5cbiAgICB0aGlzLnRhYnM/LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBhY3RpdmVJbmRleClcbiAgICAgICAgPyB0YWIuYWN0aXZhdGUoKVxuICAgICAgICA6IHRhYi5kZWFjdGl2YXRlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHRhYiBidXR0b24gbW9kZWxzLlxuICAgIGlmIChyZWdlbmVyYXRlVGFiQnV0dG9ucyB8fCAhdGhpcy50YWJCdXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWJCdXR0b25zID0gdGhpcy4jY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZHJvcGRvd24gdHJpZ2dlciBidXR0b24gdGV4dC5cbiAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgPVxuICAgICAgdGhpcy50YWJCdXR0b25zLmZpbmQoKGIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pPy5idXR0b25UZXh0ID8/ICcnO1xuXG4gICAgLy8gU2V0IHRoZSBxdWVyeSBwYXJhbXMgYmFzZWQgb24gYWN0aXZlIHRhYi5cbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpO1xuICAgICAgfSk7XG4gICAgICBpZiAoYWN0aXZlVGFiQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2Uuc2V0UGFyYW0oXG4gICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICBhY3RpdmVUYWJDb21wb25lbnQucGVybWFsaW5rVmFsdWVPckRlZmF1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS10YWJzZXRcIlxuICByb2xlPVwidGFibGlzdFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgJ3NreS10YWJzZXQtbW9kZS0nICsgdGFiRGlzcGxheU1vZGUgKyAnIHNreS10YWJzZXQtc3R5bGUtJyArIHRhYlN0eWxlXG4gIFwiXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uV2luZG93UmVzaXplKClcIlxuICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cIm9uUmlnaHRLZXlEb3duKClcIlxuICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25MZWZ0S2V5RG93bigpXCJcbiAgKGtleWRvd24uaG9tZSk9XCJvbkhvbWVLZXlEb3duKClcIlxuICAoa2V5ZG93bi5lbmQpPVwib25FbmRLZXlEb3duKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtZHJvcGRvd25cIj5cbiAgICA8c2t5LWRyb3Bkb3duICpuZ0lmPVwidGFiRGlzcGxheU1vZGUgPT09ICdkcm9wZG93bidcIiBidXR0b25UeXBlPVwidGFiXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAge3sgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCB9fVxuICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiQnV0dG9uIG9mIHRhYkJ1dHRvbnNcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LXRhYi1kcm9wZG93bi1tZW51LWl0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXRhYi1kcm9wZG93bi1pdGVtLXNlbGVjdGVkJzogdGFiQnV0dG9uLmFjdGl2ZVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHRhYkJ1dHRvblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICA8L3NreS1kcm9wZG93bj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtdGFic1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYkJ1dHRvbiBvZiB0YWJCdXR0b25zXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdGFiQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJCdXR0b25cbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktdGFic2V0LWJ0bnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIm5ld1RhYi5vYnNlcnZlcnMubGVuZ3RoID4gMFwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW5ldyBza3ktbWFyZ2luLWlubGluZS1jb21wYWN0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGFiX2FkZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtc20nOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwib25OZXdUYWJDbGljaygpXCJcbiAgICA+XG4gICAgICA8c2t5LWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCIgc2l6ZT1cImxnXCI+IDwvc2t5LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvcGVuVGFiLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24gc2t5LXRhYnNldC1idG4tb3BlbiBza3ktbWFyZ2luLWlubGluZS1jb21wYWN0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGFiX29wZW4nIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cIm9uT3BlblRhYkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwiZm9sZGVyLW9wZW4tb1wiIHNpemU9XCJsZ1wiPiA8L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L3NwYW4+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPG5nLXRlbXBsYXRlIGxldC10YWJCdXR0b24gI3RhYkJ1dHRvblRlbXBsYXRlPlxuICA8c2t5LXRhYi1idXR0b25cbiAgICBbYWN0aXZlXT1cInRhYkJ1dHRvbi5hY3RpdmVcIlxuICAgIFthcmlhQ29udHJvbHNdPVwidGFiQnV0dG9uLmFyaWFDb250cm9sc1wiXG4gICAgW2J1dHRvbkhyZWZdPVwidGFiQnV0dG9uLmJ1dHRvbkhyZWZcIlxuICAgIFtidXR0b25JZF09XCJ0YWJCdXR0b24uYnV0dG9uSWRcIlxuICAgIFtidXR0b25UZXh0XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0XCJcbiAgICBbYnV0dG9uVGV4dENvdW50XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0Q291bnRcIlxuICAgIFtjbG9zZWFibGVdPVwidGFiQnV0dG9uLmNsb3NlYWJsZVwiXG4gICAgW2Rpc2FibGVkXT1cInRhYkJ1dHRvbi5kaXNhYmxlZFwiXG4gICAgW3RhYkluZGV4XT1cInRhYkJ1dHRvbi50YWJJbmRleFwiXG4gICAgW3RhYlN0eWxlXT1cInRhYlN0eWxlXCJcbiAgICBbdGFiTnVtYmVyXT1cInRhYkJ1dHRvbi50YWJOdW1iZXJcIlxuICAgIFt0b3RhbFRhYnNDb3VudF09XCJ0YWJCdXR0b24udG90YWxUYWJzQ291bnRcIlxuICAgIChidXR0b25DbGljayk9XCJvblRhYkJ1dHRvbkNsaWNrKHRhYkJ1dHRvbilcIlxuICAgIChjbG9zZUNsaWNrKT1cIm9uVGFiQ2xvc2VDbGljayh0YWJCdXR0b24pXCJcbiAgPjwvc2t5LXRhYi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQThCO1FBQzlDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFD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UUFBUTtzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMYXlvdXRIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgcmFjZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFiQnV0dG9uVmlld01vZGVsIH0gZnJvbSAnLi90YWItYnV0dG9uLXZpZXctbW9kZWwnO1xuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICcuL3RhYi1pbmRleCc7XG5pbXBvcnQgeyBTa3lUYWJMYXlvdXRUeXBlIH0gZnJvbSAnLi90YWItbGF5b3V0LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGFiQ29tcG9uZW50IH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSB9IGZyb20gJy4vdGFic2V0LWJ1dHRvbnMtZGlzcGxheS1tb2RlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTdHlsZSB9IGZyb20gJy4vdGFic2V0LXN0eWxlJztcbmltcG9ydCB7IFNreVRhYnNldFRhYkluZGV4ZXNDaGFuZ2UgfSBmcm9tICcuL3RhYnNldC10YWItaW5kZXhlcy1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5VGFic2V0U2VydmljZSB9IGZyb20gJy4vdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGFic2V0JyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFic2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lUYWJzZXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlLFxuICAgIFNreVRhYnNldFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGl0cyBgdGFiSW5kZXhgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodmFsdWUsIHRoaXMuI19hY3RpdmUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jX2FjdGl2ZSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMudGFicykge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh7IHRhYkluZGV4OiB2YWx1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT24gaW5pdCwgd2FpdCBmb3IgY2hpbGRyZW4gdGFicyB0byByZW5kZXIgYmVmb3JlIGJyb2FkY2FzdGluZyB0aGUgYWN0aXZlIHRhYiBpbmRleC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy4jdGFic2V0U2VydmljZS5pc1ZhbGlkVGFiSW5kZXgodmFsdWUpKSB7XG4gICAgICAgICAgLy8gT24gaW5pdCwgeWllbGQgdG8gdGhlIHBlcm1hbGluayBJRCwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgIGlmICh0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHZhbHVlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBY3RpdmF0ZSB0aGUgZmlyc3QgdGFiIGlmIHRoZSBuZXcgdGFiIGluZGV4IGlzIGludmFsaWQuXG4gICAgICAgICAgdGhpcy4jX2FjdGl2ZSA9IHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZhdGVGaXJzdFRhYigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZSgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hY3RpdmU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBEaXN0aW5ndWlzaGVzIGEgdGFic2V0J3MgdW5pcXVlIHN0YXRlIGluIHRoZSBVUkwgYnkgZ2VuZXJhdGluZyBhIHF1ZXJ5IHBhcmFtZXRlclxuICAgKiB0aGF0IGlzIHdyaXR0ZW4gYXMgYD88cXVlcnlQYXJhbT4tYWN0aXZlLXRhYj08c2FuaXRpemVkLXRhYi1oZWFkaW5nPmAuXG4gICAqIFRoZSBxdWVyeSBwYXJhbWV0ZXIncyB2YWx1ZSBpcyBwYXJzZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBzZWxlY3RlZCB0YWIncyBoZWFkaW5nIHRleHQsXG4gICAqIGJ1dCB5b3UgY2FuIHN1cHBseSBhIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXIgdmFsdWUgZm9yIGVhY2ggdGFiIHdpdGggaXRzIGBwZXJtYWxpbmtWYWx1ZWAuXG4gICAqIFRoaXMgaW5wdXQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1hbGlua0lkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLiNfcGVybWFsaW5rSWQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2FuaXRpemVkID0gdGhpcy4jcGVybWFsaW5rU2VydmljZS51cmxpZnkodmFsdWUpO1xuICAgICAgdGhpcy4jX3Blcm1hbGlua0lkID0gYCR7c2FuaXRpemVkfS1hY3RpdmUtdGFiYDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcm1hbGlua0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19wZXJtYWxpbmtJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmVoYXZpb3IgZm9yIGEgc2VyaWVzIG9mIHRhYnMuXG4gICAqIEBkZWZhdWx0IFwidGFic1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYlN0eWxlKHZhbHVlOiBTa3lUYWJzZXRTdHlsZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJTdHlsZSA9IHZhbHVlIHx8ICd0YWJzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiU3R5bGUoKTogU2t5VGFic2V0U3R5bGUge1xuICAgIHJldHVybiB0aGlzLiNfdGFiU3R5bGU7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHRhYiBjaGFuZ2VzLiBUaGlzIGV2ZW50IGVtaXRzIHRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJJbmRleD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbGljayB0aGUgYnV0dG9uIHRvIGFkZCBhIG5ldyB0YWIuXG4gICAqIFRoZSBuZXcgdGFiIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGFiIGFyZWEgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbmV3VGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gb3BlbiBhIHRhYi5cbiAgICogVGhlIG9wZW4gdGFiIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGFiIGFyZWEgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3BlblRhYiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhbnkgdGFiJ3MgYHRhYkluZGV4YCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdGFiSW5kZXhlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VGFic2V0VGFiSW5kZXhlc0NoYW5nZT4oKTtcblxuICBwdWJsaWMgc2V0IHRhYkRpc3BsYXlNb2RlKHZhbHVlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUpIHtcbiAgICB0aGlzLiNfdGFiRGlzcGxheU1vZGUgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiRGlzcGxheU1vZGUoKTogU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkRpc3BsYXlNb2RlO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lUYWJDb21wb25lbnQpXG4gIHB1YmxpYyBzZXQgdGFicyh2YWx1ZTogUXVlcnlMaXN0PFNreVRhYkNvbXBvbmVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGFicyA9IHZhbHVlO1xuICAgIHRoaXMuI3RhYkNvbXBvbmVudHNDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG5cbiAgICB2YWx1ZT8uY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI3RhYkNvbXBvbmVudHNDaGFuZ2VVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jcmVzZXRUYWJDb21wb25lbnRzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFicygpOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJzO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyBjc3NDbGFzcyA9ICdza3ktdGFic2V0LWxheW91dC1ub25lJztcblxuICBwdWJsaWMgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIGRlcHJlY2F0ZWQgdGFic2V0LW5hdi1idXR0b24gY29tcG9uZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBsYXN0QWN0aXZlVGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0YWJCdXR0b25zOiBUYWJCdXR0b25WaWV3TW9kZWxbXSA9IFtdO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2FjdGl2ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgI19wZXJtYWxpbmtJZCA9ICcnO1xuXG4gICNfdGFiczogUXVlcnlMaXN0PFNreVRhYkNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgI190YWJEaXNwbGF5TW9kZTogU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlID0gJ3RhYnMnO1xuXG4gICNfdGFiU3R5bGU6IFNreVRhYnNldFN0eWxlID0gJ3RhYnMnO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAjYWRhcHRlclNlcnZpY2U6IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlO1xuICAjcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2U7XG5cbiAgI2xheW91dEhvc3RTdmMgPSBpbmplY3QoU2t5TGF5b3V0SG9zdFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcGVybWFsaW5rU2VydmljZSA9IHBlcm1hbGlua1NlcnZpY2U7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZSA9IHRhYnNldFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVGFiSW5kZXggPSB0aGlzLiNnZXRJbml0aWFsVGFiSW5kZXgoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBpbml0aWFsVGFiSW5kZXgsXG4gICAgICBpbml0aWFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk7XG4gICAgdGhpcy4jbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGlzIGdldHRpbmcgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgbmV4dCBvbmUuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJVbnJlZ2lzdGVyZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgbmV3IHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBhY3RpdmF0aW5nLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlTmVhcmVzdFRhYih0YWIuYXJyYXlJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYkxheW91dFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUxheW91dChsYXlvdXQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBMZXQgdGhlIHRhYnNldCByZW5kZXIgdGhlIGluaXRpYWwgYWN0aXZlIGluZGV4IGJlZm9yZSBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmluaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmNsZWFyUGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRhYkJ1dHRvbi50YWJJbmRleClcbiAgICApO1xuXG4gICAgdGFiQ29tcG9uZW50Py5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJCdXR0b25DbGljayh0YWJCdXR0b246IFRhYkJ1dHRvblZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoeyB0YWJJbmRleDogdGFiQnV0dG9uLnRhYkluZGV4IH0pO1xuICB9XG5cbiAgcHVibGljIG9uTmV3VGFiQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5uZXdUYWIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uT3BlblRhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblRhYi5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25SaWdodEtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c05leHRUYWJCdG4odGhpcy50YWJCdXR0b25zKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxlZnRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNQcmV2VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25Ib21lS2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzRmlyc3RPck5lYXJlc3RUYWJCdG4odGhpcy50YWJCdXR0b25zKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVuZEtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c0xhc3RPck5lYXJlc3RUYWJCdG4odGhpcy50YWJCdXR0b25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIGFjdGl2ZSB0YWIgaW5kZXggYmFzZWQgb24gdGhlIGZvbGxvd2luZyBjcml0ZXJpYS5cbiAgICogMS4gRG9lcyB0aGUgVVJMIGluY2x1ZGUgYSBxdWVyeSBwYXJhbSB0aGF0IHJlZmxlY3RzIHRoaXMgdGFic2V0J3MgYWN0aXZlIHRhYj9cbiAgICogMi4gRG9lcyBvbmUgb2YgdGhlIHRhYiBjb21wb25lbnRzIGhhdmUgdGhlaXIgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGB0cnVlYD9cbiAgICogMy4gSXMgdGhlIHRhYnNldCBjb21wb25lbnQncyBgYWN0aXZlYCBwcm9wZXJ0eSBzZXQgdG8gYSBzcGVjaWZpYyB0YWIgaW5kZXg/XG4gICAqL1xuICAjZ2V0SW5pdGlhbFRhYkluZGV4KCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkID1cbiAgICAgIHRoaXMuI2dldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpO1xuICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhY3RpdmVJbmRleCA9IHRoaXMuI2dldEFjdGl2ZVRhYkNvbXBvbmVudCgpPy50YWJJbmRleDtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICB9XG5cbiAgI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZlVGFiQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0YWJDaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KFxuICAgICAgICAgIHRhYkNoYW5nZS50YWJJbmRleCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0YWJDaGFuZ2UuaW5pdGlhbFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKTtcblxuICAgICAgICB0aGlzLiN1cGRhdGVMYXlvdXQoYWN0aXZlVGFiPy5sYXlvdXQpO1xuICAgICAgfSk7XG4gIH1cblxuICAjdXBkYXRlTGF5b3V0KGxheW91dD86IFNreVRhYkxheW91dFR5cGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGF5b3V0SG9zdFN2YyAmJiBsYXlvdXQpIHtcbiAgICAgIHRoaXMuI2xheW91dEhvc3RTdmMuc2V0SG9zdExheW91dEZvckNoaWxkKHtcbiAgICAgICAgbGF5b3V0LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3NzQ2xhc3MgPSBgc2t5LXRhYnNldC1sYXlvdXQtJHtsYXlvdXR9YDtcbiAgICB9XG4gIH1cblxuICAjbGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYnMpIHtcbiAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuYWN0aXZlQ2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZSh0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy4jbmdVbnN1YnNjcmliZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHRhYiBjb21wb25lbnRzIHRvIHJlbmRlciBjaGFuZ2VzIGJlZm9yZSBmaW5kaW5nIHRoZSBhY3RpdmUgb25lLlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXg7XG4gICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXggfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZSh0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy4jbmdVbnN1YnNjcmliZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMuI2VtaXRUYWJJbmRleENoYW5nZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnRhYnMubWFwKCh0YWIpID0+IHRhYi5zdGF0ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UodGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMuI25nVW5zdWJzY3JpYmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgdGhpcy4jdGFic2V0U2VydmljZS5jdXJyZW50QWN0aXZlVGFiSW5kZXgsXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNpbml0VGFiQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnM/LmZvckVhY2goKHRhYikgPT4gdGFiLmluaXQoKSk7XG4gIH1cblxuICAjcmVzZXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuI3Vuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS51bnJlZ2lzdGVyQWxsKCk7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGFiIGNvbXBvbmVudHMsIGRvIGEgaGFyZCByZXNldCBvZiB0aGUgdmlldy5cbiAgICBpZiAodGhpcy50YWJzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudCgwLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0VGFiQ29tcG9uZW50cygpO1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoXG4gICAgICB7XG4gICAgICAgIHRhYkluZGV4OiBhY3RpdmVJbmRleCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGVtaXRDaGFuZ2U6IGZhbHNlLFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy4jbGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gIH1cblxuICAjZW1pdFRhYkluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFiSW5kZXhlc0NoYW5nZS5lbWl0KHtcbiAgICAgIHRhYnM6IHRoaXMudGFicz8ubWFwKCh0YWIpID0+ICh7XG4gICAgICAgIHRhYkhlYWRpbmc6IHRhYi50YWJIZWFkaW5nLFxuICAgICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4LFxuICAgICAgfSkpLFxuICAgIH0pO1xuICB9XG5cbiAgI3Vuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgfVxuXG4gICNsaXN0ZW5UYWJCdXR0b25zT3ZlcmZsb3dDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVnaXN0ZXJUYWJzZXQodGhpcy4jZWxlbWVudFJlZik7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uub3ZlcmZsb3dDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGlzT3ZlcmZsb3dpbmcpID0+IHtcbiAgICAgICAgdGhpcy50YWJEaXNwbGF5TW9kZSA9IGlzT3ZlcmZsb3dpbmcgPyAnZHJvcGRvd24nIDogJ3RhYnMnO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3IgYmFjay9mb3J3YXJkIGhpc3RvcnkgYnV0dG9uIHByZXNzZXMgdG8gZGV0ZWN0IHF1ZXJ5IHBhcmFtIGNoYW5nZXMgaW4gdGhlIFVSTC5cbiAgICovXG4gICNsaXN0ZW5Mb2NhdGlvblBvcFN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UucG9wU3RhdGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI3NldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuI2dldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoe1xuICAgICAgdGFiSW5kZXg6IGFjdGl2ZUluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgI2dldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucGVybWFsaW5rSWQpIHtcbiAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmdldFBhcmFtKHRoaXMucGVybWFsaW5rSWQpO1xuICAgICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicz8uZmluZChcbiAgICAgICAgICAodGFiKSA9PiB0YWIucGVybWFsaW5rVmFsdWVPckRlZmF1bHQgPT09IHBhcmFtVmFsdWVcbiAgICAgICAgKT8udGFiSW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2dldEFjdGl2ZVRhYkNvbXBvbmVudCgpOiBTa3lUYWJDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYnNcbiAgICAgID8udG9BcnJheSgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAuZmluZCgodGFiKSA9PiB0YWIuYWN0aXZlID09PSB0cnVlKTtcbiAgfVxuXG4gICNjcmVhdGVUYWJCdXR0b25zKFxuICAgIGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZFxuICApOiBUYWJCdXR0b25WaWV3TW9kZWxbXSB7XG4gICAgLy8gU2FmZXR5IGNoZWNrXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXRoaXMudGFicykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoe1xuICAgICAgYWN0aXZlOiB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KSxcbiAgICAgIGNsb3NlYWJsZTogdGFiLmlzQ2xvc2VhYmxlKCksXG4gICAgICBhcmlhQ29udHJvbHM6IHRhYi50YWJQYW5lbElkLFxuICAgICAgZGlzYWJsZWQ6IHRhYi5kaXNhYmxlZCxcbiAgICAgIGJ1dHRvbkhyZWY6IHRhYi5kaXNhYmxlZFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmdldFBhcmFtSHJlZihcbiAgICAgICAgICAgIHRoaXMucGVybWFsaW5rSWQsXG4gICAgICAgICAgICB0YWIucGVybWFsaW5rVmFsdWVPckRlZmF1bHRcbiAgICAgICAgICApLFxuICAgICAgYnV0dG9uSWQ6IHRhYi50YWJCdXR0b25JZCxcbiAgICAgIGJ1dHRvblRleHRDb3VudDogdGFiLnRhYkhlYWRlckNvdW50LFxuICAgICAgYnV0dG9uVGV4dDogdGFiLnRhYkhlYWRpbmcsXG4gICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4LFxuICAgICAgdGFiTnVtYmVyOiBpbmRleCArIDEsXG4gICAgICB0b3RhbFRhYnNDb3VudDogdGhpcy50YWJzIS5sZW5ndGgsXG4gICAgfSkpO1xuICB9XG5cbiAgI3VwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy50YWJCdXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgYnV0dG9uLmFjdGl2ZSA9IHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICBidXR0b24udGFiSW5kZXgsXG4gICAgICAgIGFjdGl2ZUluZGV4XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIGFuZCBzdGF0ZSBvZiB0aGUgdGFic2V0IGNvbXBvbmVudCBhZnRlciB0aGUgdGFiIGluZGV4IG9yXG4gICAqIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZC5cbiAgICogQHBhcmFtIGFjdGl2ZUluZGV4IFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpbmRleC5cbiAgICogQHBhcmFtIHJlZ2VuZXJhdGVUYWJCdXR0b25zIEluZGljYXRlcyBpZiB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBleGlzdGluZyB0YWIgYnV0dG9ucy4gU2V0dGluZyB0aGlzIHZhbHVlXG4gICAqIHRvIGB0cnVlYCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHRoZSB1bmRlcmx5aW5nIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZCBhbmQgdGhlIHRhYlxuICAgKiBidXR0b25zIG11c3QgcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW5pdGlhbCBJbmRpY2F0ZXMgd2hldGhlciB0YWJzIGFyZSBiZWluZyB1cGRhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFic2V0XG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgcGVybWFsaW5rIHNlcnZpY2Ugd2hlcmUgaXQgcHJldmVudHMgYWRkaW5nIGFuIGV4dHJhXG4gICAqIGl0ZW0gdG8gYnJvd3NlciBoaXN0b3J5IHdoZW4gdGhlIFVSTCBpcyB1cGRhdGVkIHdpdGggdGhlIHNlbGVjdGVkIHRhYidzIHBlcm1hbGluayB2YWx1ZS5cbiAgICovXG4gICN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zOiBib29sZWFuLFxuICAgIGluaXRpYWw/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIC8vIEFjdGl2YXRlL2RlYWN0aXZhdGUgdGFiIGNvbXBvbmVudHMuXG4gICAgdGhpcy50YWJzPy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpXG4gICAgICAgID8gdGFiLmFjdGl2YXRlKClcbiAgICAgICAgOiB0YWIuZGVhY3RpdmF0ZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIHRoZSB0YWIgYnV0dG9uIG1vZGVscy5cbiAgICBpZiAocmVnZW5lcmF0ZVRhYkJ1dHRvbnMgfHwgIXRoaXMudGFiQnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudGFiQnV0dG9ucyA9IHRoaXMuI2NyZWF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiN1cGRhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRyb3Bkb3duIHRyaWdnZXIgYnV0dG9uIHRleHQuXG4gICAgdGhpcy5kcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID1cbiAgICAgIHRoaXMudGFiQnV0dG9ucy5maW5kKChiKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChiLnRhYkluZGV4LCBhY3RpdmVJbmRleCk7XG4gICAgICB9KT8uYnV0dG9uVGV4dCA/PyAnJztcblxuICAgIC8vIFNldCB0aGUgcXVlcnkgcGFyYW1zIGJhc2VkIG9uIGFjdGl2ZSB0YWIuXG4gICAgaWYgKHRoaXMucGVybWFsaW5rSWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYkNvbXBvbmVudCA9IHRoaXMudGFicz8uZmluZCgodGFiKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGFjdGl2ZVRhYkNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnNldFBhcmFtKFxuICAgICAgICAgIHRoaXMucGVybWFsaW5rSWQsXG4gICAgICAgICAgYWN0aXZlVGFiQ29tcG9uZW50LnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0LFxuICAgICAgICAgIGluaXRpYWxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS10YWJzZXRcIlxuICByb2xlPVwidGFibGlzdFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgJ3NreS10YWJzZXQtbW9kZS0nICsgdGFiRGlzcGxheU1vZGUgKyAnIHNreS10YWJzZXQtc3R5bGUtJyArIHRhYlN0eWxlXG4gIFwiXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uV2luZG93UmVzaXplKClcIlxuICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cIm9uUmlnaHRLZXlEb3duKClcIlxuICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25MZWZ0S2V5RG93bigpXCJcbiAgKGtleWRvd24uaG9tZSk9XCJvbkhvbWVLZXlEb3duKClcIlxuICAoa2V5ZG93bi5lbmQpPVwib25FbmRLZXlEb3duKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtZHJvcGRvd25cIj5cbiAgICA8c2t5LWRyb3Bkb3duICpuZ0lmPVwidGFiRGlzcGxheU1vZGUgPT09ICdkcm9wZG93bidcIiBidXR0b25UeXBlPVwidGFiXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAge3sgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCB9fVxuICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiQnV0dG9uIG9mIHRhYkJ1dHRvbnNcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LXRhYi1kcm9wZG93bi1tZW51LWl0ZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXRhYi1kcm9wZG93bi1pdGVtLXNlbGVjdGVkJzogdGFiQnV0dG9uLmFjdGl2ZVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHRhYkJ1dHRvblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICA8L3NreS1kcm9wZG93bj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtdGFic1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYkJ1dHRvbiBvZiB0YWJCdXR0b25zXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdGFiQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJCdXR0b25cbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktdGFic2V0LWJ0bnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIm5ld1RhYi5vYnNlcnZlcnMubGVuZ3RoID4gMFwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW5ldyBza3ktbWFyZ2luLWlubGluZS1jb21wYWN0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGFiX2FkZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtc20nOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwib25OZXdUYWJDbGljaygpXCJcbiAgICA+XG4gICAgICA8c2t5LWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCIgc2l6ZT1cImxnXCI+IDwvc2t5LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvcGVuVGFiLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24gc2t5LXRhYnNldC1idG4tb3BlbiBza3ktbWFyZ2luLWlubGluZS1jb21wYWN0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfdGFiX29wZW4nIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cIm9uT3BlblRhYkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uPVwiZm9sZGVyLW9wZW4tb1wiIHNpemU9XCJsZ1wiPiA8L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L3NwYW4+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPG5nLXRlbXBsYXRlIGxldC10YWJCdXR0b24gI3RhYkJ1dHRvblRlbXBsYXRlPlxuICA8c2t5LXRhYi1idXR0b25cbiAgICBbYWN0aXZlXT1cInRhYkJ1dHRvbi5hY3RpdmVcIlxuICAgIFthcmlhQ29udHJvbHNdPVwidGFiQnV0dG9uLmFyaWFDb250cm9sc1wiXG4gICAgW2J1dHRvbkhyZWZdPVwidGFiQnV0dG9uLmJ1dHRvbkhyZWZcIlxuICAgIFtidXR0b25JZF09XCJ0YWJCdXR0b24uYnV0dG9uSWRcIlxuICAgIFtidXR0b25UZXh0XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0XCJcbiAgICBbYnV0dG9uVGV4dENvdW50XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0Q291bnRcIlxuICAgIFtjbG9zZWFibGVdPVwidGFiQnV0dG9uLmNsb3NlYWJsZVwiXG4gICAgW2Rpc2FibGVkXT1cInRhYkJ1dHRvbi5kaXNhYmxlZFwiXG4gICAgW3RhYkluZGV4XT1cInRhYkJ1dHRvbi50YWJJbmRleFwiXG4gICAgW3RhYlN0eWxlXT1cInRhYlN0eWxlXCJcbiAgICBbdGFiTnVtYmVyXT1cInRhYkJ1dHRvbi50YWJOdW1iZXJcIlxuICAgIFt0b3RhbFRhYnNDb3VudF09XCJ0YWJCdXR0b24udG90YWxUYWJzQ291bnRcIlxuICAgIChidXR0b25DbGljayk9XCJvblRhYkJ1dHRvbkNsaWNrKHRhYkJ1dHRvbilcIlxuICAgIChjbG9zZUNsaWNrKT1cIm9uVGFiQ2xvc2VDbGljayh0YWJCdXR0b24pXCJcbiAgPjwvc2t5LXRhYi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -5,19 +5,7 @@ import * as i0 from "@angular/core";
5
5
  * @internal
6
6
  */
7
7
  export class SkyTabsetService {
8
- get activeTabUnregistered() {
9
- return this.#activeTabUnregistered;
10
- }
11
- get activeTabIndex() {
12
- return this.#activeTabIndex;
13
- }
14
- get focusedTabBtnIndex() {
15
- return this.#focusedTabBtnIndex;
16
- }
17
- get activeTabLayout() {
18
- return this.#activeTabLayout;
19
- }
20
- #activeTabIndex;
8
+ #activeTabChange;
21
9
  #focusedTabBtnIndex;
22
10
  #activeTabUnregistered;
23
11
  #activeTabLayout;
@@ -26,16 +14,21 @@ export class SkyTabsetService {
26
14
  constructor() {
27
15
  this.currentActiveTabIndex = 0;
28
16
  this.currentFocusedTabBtnIndex = 0;
29
- this.#activeTabLayout = new Subject();
30
17
  this.#tabs = [];
31
18
  this.#tabCounter = 0;
32
- this.#activeTabIndex = new BehaviorSubject(0);
33
- this.#activeTabUnregistered =
34
- new Subject();
19
+ this.#activeTabChange = new BehaviorSubject({
20
+ tabIndex: 0,
21
+ });
22
+ this.#activeTabLayout = new Subject();
23
+ this.#activeTabUnregistered = new Subject();
35
24
  this.#focusedTabBtnIndex = new Subject();
25
+ this.activeTabChange = this.#activeTabChange.asObservable();
26
+ this.activeTabLayout = this.#activeTabLayout.asObservable();
27
+ this.activeTabUnregistered = this.#activeTabUnregistered.asObservable();
28
+ this.focusedTabBtnIndex = this.#focusedTabBtnIndex.asObservable();
36
29
  }
37
30
  ngOnDestroy() {
38
- this.#activeTabIndex.complete();
31
+ this.#activeTabChange.complete();
39
32
  this.#activeTabUnregistered.complete();
40
33
  this.#focusedTabBtnIndex.complete();
41
34
  this.#activeTabLayout.complete();
@@ -46,14 +39,14 @@ export class SkyTabsetService {
46
39
  setActiveTabIndex(value, config = {
47
40
  emitChange: true,
48
41
  }) {
49
- if (value !== undefined &&
50
- !this.tabIndexesEqual(value, this.currentActiveTabIndex)) {
51
- this.currentActiveTabIndex = value;
42
+ if (value.tabIndex !== undefined &&
43
+ !this.tabIndexesEqual(value.tabIndex, this.currentActiveTabIndex)) {
44
+ this.currentActiveTabIndex = value.tabIndex;
52
45
  /* istanbul ignore else */
53
46
  if (config.emitChange) {
54
- this.#activeTabIndex.next(value);
47
+ this.#activeTabChange.next(value);
55
48
  }
56
- this.setFocusedTabBtnIndex(value);
49
+ this.setFocusedTabBtnIndex(value.tabIndex);
57
50
  }
58
51
  }
59
52
  focusNextTabBtn(tabButtons) {
@@ -158,7 +151,9 @@ export class SkyTabsetService {
158
151
  activateFirstTab() {
159
152
  const firstTabIndex = this.#tabs[0] && this.#tabs[0].tabIndex;
160
153
  if (firstTabIndex !== undefined) {
161
- this.setActiveTabIndex(firstTabIndex);
154
+ this.setActiveTabIndex({
155
+ tabIndex: firstTabIndex,
156
+ });
162
157
  return firstTabIndex;
163
158
  }
164
159
  return undefined;
@@ -195,4 +190,4 @@ export class SkyTabsetService {
195
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SkyTabsetService, decorators: [{
196
191
  type: Injectable
197
192
  }], ctorParameters: function () { return []; } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU81RDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQU1ELGVBQWUsQ0FBK0I7SUFFOUMsbUJBQW1CLENBQXVCO0lBRTFDLHNCQUFzQixDQUE4QztJQUVwRSxnQkFBZ0IsQ0FBbUM7SUFFbkQsS0FBSyxDQUVJO0lBRVQsV0FBVyxDQUFLO0lBRWhCO1FBbEJPLDBCQUFxQixHQUE0QixDQUFDLENBQUM7UUFFbkQsOEJBQXlCLEdBQWdCLENBQUMsQ0FBQztRQVFsRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUVuRCxVQUFLLEdBRUMsRUFBRSxDQUFDO1FBRVQsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFHZCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxzQkFBc0I7WUFDekIsSUFBSSxPQUFPLEVBQXND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QUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQscUJBQXFCLENBQUMsWUFBb0I7UUFDeEMsSUFBSSxTQUFTLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDakIsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBclFVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUYWJCdXR0b25WaWV3TW9kZWwgfSBmcm9tICcuL3RhYi1idXR0b24tdmlldy1tb2RlbCc7XG5pbXBvcnQgeyBTa3lUYWJJbmRleCB9IGZyb20gJy4vdGFiLWluZGV4JztcbmltcG9ydCB7IFNreVRhYkxheW91dFR5cGUgfSBmcm9tICcuL3RhYi1sYXlvdXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzIH0gZnJvbSAnLi90YWJzZXQtYWN0aXZlLXRhYi11bnJlZ2lzdGVyZWQtYXJncyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGdldCBhY3RpdmVUYWJVbnJlZ2lzdGVyZWQoKTogT2JzZXJ2YWJsZTxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogT2JzZXJ2YWJsZTxTa3lUYWJJbmRleD4ge1xuICAgIHJldHVybiB0aGlzLiNhY3RpdmVUYWJJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFRhYkJ0bkluZGV4KCk6IE9ic2VydmFibGU8U2t5VGFiSW5kZXg+IHtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNlZFRhYkJ0bkluZGV4O1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWJMYXlvdXQoKTogT2JzZXJ2YWJsZTxTa3lUYWJMYXlvdXRUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZVRhYkxheW91dDtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50QWN0aXZlVGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkID0gMDtcblxuICBwdWJsaWMgY3VycmVudEZvY3VzZWRUYWJCdG5JbmRleDogU2t5VGFiSW5kZXggPSAwO1xuXG4gICNhY3RpdmVUYWJJbmRleDogQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4PjtcblxuICAjZm9jdXNlZFRhYkJ0bkluZGV4OiBTdWJqZWN0PFNreVRhYkluZGV4PjtcblxuICAjYWN0aXZlVGFiVW5yZWdpc3RlcmVkOiBTdWJqZWN0PFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3M+O1xuXG4gICNhY3RpdmVUYWJMYXlvdXQgPSBuZXcgU3ViamVjdDxTa3lUYWJMYXlvdXRUeXBlPigpO1xuXG4gICN0YWJzOiB7XG4gICAgdGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkO1xuICB9W10gPSBbXTtcblxuICAjdGFiQ291bnRlciA9IDA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jYWN0aXZlVGFiSW5kZXggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4PigwKTtcblxuICAgIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZCA9XG4gICAgICBuZXcgU3ViamVjdDxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPigpO1xuXG4gICAgdGhpcy4jZm9jdXNlZFRhYkJ0bkluZGV4ID0gbmV3IFN1YmplY3Q8U2t5VGFiSW5kZXg+KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlVGFiSW5kZXguY29tcGxldGUoKTtcbiAgICB0aGlzLiNhY3RpdmVUYWJVbnJlZ2lzdGVyZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLiNmb2N1c2VkVGFiQnRuSW5kZXguY29tcGxldGUoKTtcbiAgICB0aGlzLiNhY3RpdmVUYWJMYXlvdXQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgdGFiIGJ5IGl0cyB1bmlxdWUgYHRhYkluZGV4YCBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyBzZXRBY3RpdmVUYWJJbmRleChcbiAgICB2YWx1ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQsXG4gICAgY29uZmlnID0ge1xuICAgICAgZW1pdENoYW5nZTogdHJ1ZSxcbiAgICB9XG4gICk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICF0aGlzLnRhYkluZGV4ZXNFcXVhbCh2YWx1ZSwgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXgpXG4gICAgKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCA9IHZhbHVlO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGNvbmZpZy5lbWl0Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMuI2FjdGl2ZVRhYkluZGV4Lm5leHQodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldEZvY3VzZWRUYWJCdG5JbmRleCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzTmV4dFRhYkJ0bih0YWJCdXR0b25zOiBUYWJCdXR0b25WaWV3TW9kZWxbXSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRUYWJBcnJheUluZGV4ID0gdGhpcy4jdGFicy5maW5kSW5kZXgoKHRhYikgPT5cbiAgICAgIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGhpcy5jdXJyZW50Rm9jdXNlZFRhYkJ0bkluZGV4KVxuICAgICk7XG5cbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSB0aGlzLiNnZXROZXh0VGFiQXJyYXlJbmRleChjdXJyZW50VGFiQXJyYXlJbmRleCk7XG4gICAgICBpICE9PSBjdXJyZW50VGFiQXJyYXlJbmRleDtcbiAgICAgIGkgPSB0aGlzLiNnZXROZXh0VGFiQXJyYXlJbmRleChpKVxuICAgICkge1xuICAgICAgY29uc3QgdGFiQnRuID0gdGFiQnV0dG9uc1tpXTtcbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNQcmV2VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRhYkFycmF5SW5kZXggPSB0aGlzLiN0YWJzLmZpbmRJbmRleCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0aGlzLmN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXgpXG4gICAgKTtcblxuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IHRoaXMuI2dldFByZXZUYWJBcnJheUluZGV4KGN1cnJlbnRUYWJBcnJheUluZGV4KTtcbiAgICAgIGkgIT09IGN1cnJlbnRUYWJBcnJheUluZGV4O1xuICAgICAgaSA9IHRoaXMuI2dldFByZXZUYWJBcnJheUluZGV4KGkpXG4gICAgKSB7XG4gICAgICBjb25zdCB0YWJCdG4gPSB0YWJCdXR0b25zW2ldO1xuICAgICAgaWYgKCF0YWJCdG4uZGlzYWJsZWQgJiYgdGFiQnRuLnRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZXRGb2N1c2VkVGFiQnRuSW5kZXgodGFiQnRuLnRhYkluZGV4KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0ZpcnN0T3JOZWFyZXN0VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJCdXR0b25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB0YWJCdG4gPSB0YWJCdXR0b25zW2ldO1xuXG4gICAgICBpZiAoIXRhYkJ0bi5kaXNhYmxlZCAmJiB0YWJCdG4udGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNldEZvY3VzZWRUYWJCdG5JbmRleCh0YWJCdG4udGFiSW5kZXgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzTGFzdE9yTmVhcmVzdFRhYkJ0bih0YWJCdXR0b25zOiBUYWJCdXR0b25WaWV3TW9kZWxbXSk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSB0YWJCdXR0b25zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB0YWJCdG4gPSB0YWJCdXR0b25zW2ldO1xuXG4gICAgICBpZiAoIXRhYkJ0bi5kaXNhYmxlZCAmJiB0YWJCdG4udGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNldEZvY3VzZWRUYWJCdG5JbmRleCh0YWJCdG4udGFiSW5kZXgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEZvY3VzZWRUYWJCdG5JbmRleCh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXggPSB0YWJJbmRleDtcbiAgICB0aGlzLiNmb2N1c2VkVGFiQnRuSW5kZXgubmV4dCh0YWJJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclRhYih0YWJJbmRleD86IFNreVRhYkluZGV4KTogU2t5VGFiSW5kZXgge1xuICAgIGlmICh0YWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YWJJbmRleCA9IHRoaXMuI3RhYkNvdW50ZXI7XG4gICAgICB0aGlzLiN0YWJDb3VudGVyKys7XG4gICAgfVxuXG4gICAgdGhpcy4jdGFicy5wdXNoKHsgdGFiSW5kZXggfSk7XG5cbiAgICByZXR1cm4gdGFiSW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFiSW5kZXgoXG4gICAgY3VycmVudFRhYkluZGV4OiBTa3lUYWJJbmRleCxcbiAgICBuZXdUYWJJbmRleDogU2t5VGFiSW5kZXhcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLiN0YWJzLmZpbmQoKHRhYikgPT5cbiAgICAgIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgY3VycmVudFRhYkluZGV4KVxuICAgICk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICBmb3VuZC50YWJJbmRleCA9IG5ld1RhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVUYWJMYXlvdXQobGF5b3V0OiBTa3lUYWJMYXlvdXRUeXBlKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlVGFiTGF5b3V0Lm5leHQobGF5b3V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVycyBhIHRhYiBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlclRhYih0YWJJbmRleDogU2t5VGFiSW5kZXgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuI3RhYnMuZmluZEluZGV4KCh0YWIpID0+XG4gICAgICB0aGlzLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRhYkluZGV4KVxuICAgICk7XG5cbiAgICAvLyBOb3RpZnkgdGhlIHRhYnNldCBjb21wb25lbnQgd2hlbiBhbiBhY3RpdmUgdGFiIGlzIHVucmVnaXN0ZXJlZC5cbiAgICBpZiAodGhpcy4jaXNUYWJJbmRleEFjdGl2ZSh0aGlzLiN0YWJzW2luZGV4XT8udGFiSW5kZXgpKSB7XG4gICAgICB0aGlzLiNhY3RpdmVUYWJVbnJlZ2lzdGVyZWQubmV4dCh7XG4gICAgICAgIGFycmF5SW5kZXg6IGluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4jdGFicy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGFsbCB0YWIgY29tcG9uZW50cyBhdCBvbmNlLlxuICAgKi9cbiAgcHVibGljIHVucmVnaXN0ZXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy4jdGFicyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHR3byB0YWIgaW5kZXhlcyBhbmQgcmV0dXJucyBgdHJ1ZWAgaWYgdGhleSBhcmUgZXF1YWwuXG4gICAqL1xuICBwdWJsaWMgdGFiSW5kZXhlc0VxdWFsKFxuICAgIHRhYkluZGV4MTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQsXG4gICAgdGFiSW5kZXgyOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGFiSW5kZXgxID09PSB0YWJJbmRleDIgfHxcbiAgICAgICh0YWJJbmRleDEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0YWJJbmRleDIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICArdGFiSW5kZXgxID09PSArdGFiSW5kZXgyKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYSBwcm92aWRlZCB0YWIgaW5kZXggaXMgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyBpc1ZhbGlkVGFiSW5kZXgodGFiSW5kZXg6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3RhYnMuc29tZSgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJJbmRleClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgZmlyc3QgcmVnaXN0ZXJlZCB0YWIuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVGaXJzdFRhYigpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmlyc3RUYWJJbmRleCA9IHRoaXMuI3RhYnNbMF0gJiYgdGhpcy4jdGFic1swXS50YWJJbmRleDtcbiAgICBpZiAoZmlyc3RUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYkluZGV4KGZpcnN0VGFiSW5kZXgpO1xuICAgICAgcmV0dXJuIGZpcnN0VGFiSW5kZXg7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBuZXh0IHJlZ2lzdGVyZWQgdGFiLCBvciB0aGUgcHJldmlvdXMgb25lIGJhc2VkIG9uIGEgcHJvdmlkZWQgYXJyYXkgaW5kZXguXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVOZWFyZXN0VGFiKGFycmF5SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMuI3RhYnNbYXJyYXlJbmRleF0gfHwgdGhpcy4jdGFic1thcnJheUluZGV4IC0gMV07XG4gICAgaWYgKG5ld0FjdGl2ZVRhYikge1xuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXggPSBuZXdBY3RpdmVUYWIudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgI2lzVGFiSW5kZXhBY3RpdmUodGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYkluZGV4LCB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCk7XG4gIH1cblxuICAjZ2V0TmV4dFRhYkFycmF5SW5kZXgoY3VycmVudEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gdGhpcy4jdGFicy5sZW5ndGgpIHtcbiAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRJbmRleDtcbiAgfVxuXG4gICNnZXRQcmV2VGFiQXJyYXlJbmRleChjdXJyZW50SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICBpZiAocHJldkluZGV4IDwgMCkge1xuICAgICAgcHJldkluZGV4ID0gdGhpcy4jdGFicy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2SW5kZXg7XG4gIH1cbn1cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVE1RDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsZ0JBQWdCLENBQWdEO0lBRWhFLG1CQUFtQixDQUF1QjtJQUUxQyxzQkFBc0IsQ0FBOEM7SUFFcEUsZ0JBQWdCLENBQTRCO0lBRTVDLEtBQUssQ0FFSTtJQUVULFdBQVcsQ0FBSztJQUVoQjtRQWxCTywwQkFBcUIsR0FBNEIsQ0FBQyxDQUFDO1FBRW5ELDhCQUF5QixHQUFnQixDQUFDLENBQUM7UUFVbEQsVUFBSyxHQUVDLEVBQUUsQ0FBQztRQUVULGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBR2QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUErQjtZQUN4RSxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXRDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxxQkFBcUIsR0FB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QVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25DLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDZjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxZQUFvQjtRQUN4QyxJQUFJLFNBQVMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtZQUNqQixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs4R0F2UVUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRhYkJ1dHRvblZpZXdNb2RlbCB9IGZyb20gJy4vdGFiLWJ1dHRvbi12aWV3LW1vZGVsJztcbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnLi90YWItaW5kZXgnO1xuaW1wb3J0IHsgU2t5VGFiTGF5b3V0VHlwZSB9IGZyb20gJy4vdGFiLWxheW91dC10eXBlJztcbmltcG9ydCB7IFNreVRhYnNldEFjdGl2ZVRhYkNoYW5nZUFyZ3MgfSBmcm9tICcuL3RhYnNldC1hY3RpdmUtdGFiLWNoYW5nZS1hcmdzJztcbmltcG9ydCB7IFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3MgfSBmcm9tICcuL3RhYnNldC1hY3RpdmUtdGFiLXVucmVnaXN0ZXJlZC1hcmdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlVGFiVW5yZWdpc3RlcmVkOiBPYnNlcnZhYmxlPFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3M+O1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVUYWJDaGFuZ2U6IE9ic2VydmFibGU8U2t5VGFic2V0QWN0aXZlVGFiQ2hhbmdlQXJncz47XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvY3VzZWRUYWJCdG5JbmRleDogT2JzZXJ2YWJsZTxTa3lUYWJJbmRleD47XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVRhYkxheW91dDogT2JzZXJ2YWJsZTxTa3lUYWJMYXlvdXRUeXBlPjtcblxuICBwdWJsaWMgY3VycmVudEFjdGl2ZVRhYkluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCA9IDA7XG5cbiAgcHVibGljIGN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXg6IFNreVRhYkluZGV4ID0gMDtcblxuICAjYWN0aXZlVGFiQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8U2t5VGFic2V0QWN0aXZlVGFiQ2hhbmdlQXJncz47XG5cbiAgI2ZvY3VzZWRUYWJCdG5JbmRleDogU3ViamVjdDxTa3lUYWJJbmRleD47XG5cbiAgI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZDogU3ViamVjdDxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPjtcblxuICAjYWN0aXZlVGFiTGF5b3V0OiBTdWJqZWN0PFNreVRhYkxheW91dFR5cGU+O1xuXG4gICN0YWJzOiB7XG4gICAgdGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkO1xuICB9W10gPSBbXTtcblxuICAjdGFiQ291bnRlciA9IDA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jYWN0aXZlVGFiQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lUYWJzZXRBY3RpdmVUYWJDaGFuZ2VBcmdzPih7XG4gICAgICB0YWJJbmRleDogMCxcbiAgICB9KTtcblxuICAgIHRoaXMuI2FjdGl2ZVRhYkxheW91dCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICB0aGlzLiNhY3RpdmVUYWJVbnJlZ2lzdGVyZWQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgdGhpcy4jZm9jdXNlZFRhYkJ0bkluZGV4ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHRoaXMuYWN0aXZlVGFiQ2hhbmdlID0gdGhpcy4jYWN0aXZlVGFiQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYWN0aXZlVGFiTGF5b3V0ID0gdGhpcy4jYWN0aXZlVGFiTGF5b3V0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYWN0aXZlVGFiVW5yZWdpc3RlcmVkID0gdGhpcy4jYWN0aXZlVGFiVW5yZWdpc3RlcmVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZm9jdXNlZFRhYkJ0bkluZGV4ID0gdGhpcy4jZm9jdXNlZFRhYkJ0bkluZGV4LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZVRhYkNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2ZvY3VzZWRUYWJCdG5JbmRleC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2FjdGl2ZVRhYkxheW91dC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSB0YWIgYnkgaXRzIHVuaXF1ZSBgdGFiSW5kZXhgIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZVRhYkluZGV4KFxuICAgIHZhbHVlOiBTa3lUYWJzZXRBY3RpdmVUYWJDaGFuZ2VBcmdzLFxuICAgIGNvbmZpZyA9IHtcbiAgICAgIGVtaXRDaGFuZ2U6IHRydWUsXG4gICAgfVxuICApOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZS50YWJJbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhdGhpcy50YWJJbmRleGVzRXF1YWwodmFsdWUudGFiSW5kZXgsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KVxuICAgICkge1xuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXggPSB2YWx1ZS50YWJJbmRleDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChjb25maWcuZW1pdENoYW5nZSkge1xuICAgICAgICB0aGlzLiNhY3RpdmVUYWJDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHZhbHVlLnRhYkluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNOZXh0VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRhYkFycmF5SW5kZXggPSB0aGlzLiN0YWJzLmZpbmRJbmRleCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0aGlzLmN1cnJlbnRGb2N1c2VkVGFiQnRuSW5kZXgpXG4gICAgKTtcblxuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IHRoaXMuI2dldE5leHRUYWJBcnJheUluZGV4KGN1cnJlbnRUYWJBcnJheUluZGV4KTtcbiAgICAgIGkgIT09IGN1cnJlbnRUYWJBcnJheUluZGV4O1xuICAgICAgaSA9IHRoaXMuI2dldE5leHRUYWJBcnJheUluZGV4KGkpXG4gICAgKSB7XG4gICAgICBjb25zdCB0YWJCdG4gPSB0YWJCdXR0b25zW2ldO1xuICAgICAgaWYgKCF0YWJCdG4uZGlzYWJsZWQgJiYgdGFiQnRuLnRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zZXRGb2N1c2VkVGFiQnRuSW5kZXgodGFiQnRuLnRhYkluZGV4KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c1ByZXZUYWJCdG4odGFiQnV0dG9uczogVGFiQnV0dG9uVmlld01vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VGFiQXJyYXlJbmRleCA9IHRoaXMuI3RhYnMuZmluZEluZGV4KCh0YWIpID0+XG4gICAgICB0aGlzLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRoaXMuY3VycmVudEZvY3VzZWRUYWJCdG5JbmRleClcbiAgICApO1xuXG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gdGhpcy4jZ2V0UHJldlRhYkFycmF5SW5kZXgoY3VycmVudFRhYkFycmF5SW5kZXgpO1xuICAgICAgaSAhPT0gY3VycmVudFRhYkFycmF5SW5kZXg7XG4gICAgICBpID0gdGhpcy4jZ2V0UHJldlRhYkFycmF5SW5kZXgoaSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHRhYkJ0biA9IHRhYkJ1dHRvbnNbaV07XG4gICAgICBpZiAoIXRhYkJ0bi5kaXNhYmxlZCAmJiB0YWJCdG4udGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNldEZvY3VzZWRUYWJCdG5JbmRleCh0YWJCdG4udGFiSW5kZXgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvY3VzRmlyc3RPck5lYXJlc3RUYWJCdG4odGFiQnV0dG9uczogVGFiQnV0dG9uVmlld01vZGVsW10pOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRhYkJ0biA9IHRhYkJ1dHRvbnNbaV07XG5cbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9jdXNMYXN0T3JOZWFyZXN0VGFiQnRuKHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IHRhYkJ1dHRvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IHRhYkJ0biA9IHRhYkJ1dHRvbnNbaV07XG5cbiAgICAgIGlmICghdGFiQnRuLmRpc2FibGVkICYmIHRhYkJ0bi50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkJ0bi50YWJJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9jdXNlZFRhYkJ0bkluZGV4KHRhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZvY3VzZWRUYWJCdG5JbmRleCA9IHRhYkluZGV4O1xuICAgIHRoaXMuI2ZvY3VzZWRUYWJCdG5JbmRleC5uZXh0KHRhYkluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0YWIgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyVGFiKHRhYkluZGV4PzogU2t5VGFiSW5kZXgpOiBTa3lUYWJJbmRleCB7XG4gICAgaWYgKHRhYkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhYkluZGV4ID0gdGhpcy4jdGFiQ291bnRlcjtcbiAgICAgIHRoaXMuI3RhYkNvdW50ZXIrKztcbiAgICB9XG5cbiAgICB0aGlzLiN0YWJzLnB1c2goeyB0YWJJbmRleCB9KTtcblxuICAgIHJldHVybiB0YWJJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVUYWJJbmRleChcbiAgICBjdXJyZW50VGFiSW5kZXg6IFNreVRhYkluZGV4LFxuICAgIG5ld1RhYkluZGV4OiBTa3lUYWJJbmRleFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuI3RhYnMuZmluZCgodGFiKSA9PlxuICAgICAgdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBjdXJyZW50VGFiSW5kZXgpXG4gICAgKTtcbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIGZvdW5kLnRhYkluZGV4ID0gbmV3VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVRhYkxheW91dChsYXlvdXQ6IFNreVRhYkxheW91dFR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVUYWJMYXlvdXQubmV4dChsYXlvdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyVGFiKHRhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy4jdGFicy5maW5kSW5kZXgoKHRhYikgPT5cbiAgICAgIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGFiSW5kZXgpXG4gICAgKTtcblxuICAgIC8vIE5vdGlmeSB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIGFuIGFjdGl2ZSB0YWIgaXMgdW5yZWdpc3RlcmVkLlxuICAgIGlmICh0aGlzLiNpc1RhYkluZGV4QWN0aXZlKHRoaXMuI3RhYnNbaW5kZXhdPy50YWJJbmRleCkpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZVRhYlVucmVnaXN0ZXJlZC5uZXh0KHtcbiAgICAgICAgYXJyYXlJbmRleDogaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiN0YWJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYWxsIHRhYiBjb21wb25lbnRzIGF0IG9uY2UuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIHRhYiBpbmRleGVzIGFuZCByZXR1cm5zIGB0cnVlYCBpZiB0aGV5IGFyZSBlcXVhbC5cbiAgICovXG4gIHB1YmxpYyB0YWJJbmRleGVzRXF1YWwoXG4gICAgdGFiSW5kZXgxOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDI6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0YWJJbmRleDEgPT09IHRhYkluZGV4MiB8fFxuICAgICAgKHRhYkluZGV4MSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHRhYkluZGV4MiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICt0YWJJbmRleDEgPT09ICt0YWJJbmRleDIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhIHByb3ZpZGVkIHRhYiBpbmRleCBpcyByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIGlzVmFsaWRUYWJJbmRleCh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jdGFicy5zb21lKCh0YWIpID0+XG4gICAgICB0aGlzLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRhYkluZGV4KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBmaXJzdCByZWdpc3RlcmVkIHRhYi5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZUZpcnN0VGFiKCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmaXJzdFRhYkluZGV4ID0gdGhpcy4jdGFic1swXSAmJiB0aGlzLiN0YWJzWzBdLnRhYkluZGV4O1xuICAgIGlmIChmaXJzdFRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlVGFiSW5kZXgoe1xuICAgICAgICB0YWJJbmRleDogZmlyc3RUYWJJbmRleCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZpcnN0VGFiSW5kZXg7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBuZXh0IHJlZ2lzdGVyZWQgdGFiLCBvciB0aGUgcHJldmlvdXMgb25lIGJhc2VkIG9uIGEgcHJvdmlkZWQgYXJyYXkgaW5kZXguXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVOZWFyZXN0VGFiKGFycmF5SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMuI3RhYnNbYXJyYXlJbmRleF0gfHwgdGhpcy4jdGFic1thcnJheUluZGV4IC0gMV07XG4gICAgaWYgKG5ld0FjdGl2ZVRhYikge1xuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXggPSBuZXdBY3RpdmVUYWIudGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgI2lzVGFiSW5kZXhBY3RpdmUodGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYkluZGV4LCB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCk7XG4gIH1cblxuICAjZ2V0TmV4dFRhYkFycmF5SW5kZXgoY3VycmVudEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gdGhpcy4jdGFicy5sZW5ndGgpIHtcbiAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRJbmRleDtcbiAgfVxuXG4gICNnZXRQcmV2VGFiQXJyYXlJbmRleChjdXJyZW50SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG5cbiAgICBpZiAocHJldkluZGV4IDwgMCkge1xuICAgICAgcHJldkluZGV4ID0gdGhpcy4jdGFicy5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIHJldHVybiBwcmV2SW5kZXg7XG4gIH1cbn1cbiJdfQ==
@@ -176,7 +176,7 @@ export class SkyVerticalTabComponent {
176
176
  provide: SkyMediaQueryService,
177
177
  useExisting: SkyVerticalTabMediaQueryService,
178
178
  },
179
- ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"isMobile && showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i6.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
179
+ ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"isMobile && showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i6.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
180
180
  }
181
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
182
182
  type: Component,
@@ -186,7 +186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
186
186
  provide: SkyMediaQueryService,
187
187
  useExisting: SkyVerticalTabMediaQueryService,
188
188
  },
189
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"isMobile && showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}\n"] }]
189
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"isMobile && showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"] }]
190
190
  }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyVerticalTabMediaQueryService }, { type: i4.SkyTabIdService, decorators: [{
191
191
  type: Optional
192
192
  }] }]; }, propDecorators: { active: [{