@eui/showcase 17.0.0-next.5 → 17.0.0-next.7

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.
@@ -4,18 +4,17 @@ import { map, catchError } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
6
6
  import * as i2 from "@eui/core";
7
- import * as i3 from "@eui/components/eui-growl";
8
- import * as i4 from "@angular/cdk/clipboard";
9
- import * as i5 from "@angular/router";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "@eui/components/eui-card";
12
- import * as i8 from "@eui/components/eui-button";
13
- import * as i9 from "@eui/components/eui-tabs";
14
- import * as i10 from "@eui/components/eui-chip";
15
- import * as i11 from "@eui/components/eui-icon";
16
- import * as i12 from "@eui/components/eui-label";
17
- import * as i13 from "../eui-code-highlighter/eui-code-highlighter.component";
18
- import * as i14 from "../playground/playground.component";
7
+ import * as i3 from "@angular/cdk/clipboard";
8
+ import * as i4 from "@angular/router";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@eui/components/eui-card";
11
+ import * as i7 from "@eui/components/eui-button";
12
+ import * as i8 from "@eui/components/eui-tabs";
13
+ import * as i9 from "@eui/components/eui-chip";
14
+ import * as i10 from "@eui/components/eui-icon";
15
+ import * as i11 from "@eui/components/eui-label";
16
+ import * as i12 from "../eui-code-highlighter/eui-code-highlighter.component";
17
+ import * as i13 from "../playground/playground.component";
19
18
  export class DocSampleComponent {
20
19
  constructor(_http, asService, cd, growlService, clipboard, router) {
21
20
  this._http = _http;
@@ -141,7 +140,9 @@ export class DocSampleComponent {
141
140
  const moduleRegex = /@NgModule\(([\s\S]*?)\)\nexport class \w+ \{([\s\S]*?)\}/g;
142
141
  code = code.replace(moduleRegex, '');
143
142
  // filter out extra imports
143
+ // eslint-disable-next-line
144
144
  code = code.replace("import { EuiAllModule } from '@eui/components';\n", '');
145
+ // eslint-disable-next-line
145
146
  code = code.replace("import { NgModule } from '@angular/core';\n", '');
146
147
  return code;
147
148
  }
@@ -161,13 +162,13 @@ export class DocSampleComponent {
161
162
  ], [])
162
163
  : [];
163
164
  }
164
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: DocSampleComponent, deps: [{ token: i1.HttpClient }, { token: i2.UxAppShellService }, { token: i0.ChangeDetectorRef }, { token: i3.EuiGrowlService }, { token: i4.Clipboard }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
165
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.4", type: DocSampleComponent, selector: "eui-showcase-doc-sample", inputs: { id: "id", label: "label", styleClass: "styleClass", renderPlayground: "renderPlayground" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\">\n <strong>{{ label }}</strong>\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"doc-sample-title__items\">\n <button\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onToggleCode()\"\n [isLoading]=\"isCodeLoading\"\n [euiDisabled]=\"isCodeLoading\">\n <span *ngIf=\"!isCodeExpanded\" euiLabel>Code</span>\n <span *ngIf=\"isCodeExpanded\" euiLabel>Hide Code</span>\n <span euiIcon iconClass=\"eui-icon-code\"></span>\n </button>\n </div>\n</div>\n\n<ng-template [ngIf]=\"isCodeExpanded\">\n <eui-card euiNoContentPadding>\n <eui-card-content>\n <eui-tabs (tabSelect)=\"onSelectedTab($event)\">\n <eui-tab [isVisible]=\"htmlContent\">\n <euiTabLabel>\n HTML\n <euiTabSubLabel>HyperText Markup Language</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-markup\" euiCode>{{htmlContent}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab [isVisible]=\"tsContent\">\n <euiTabLabel>\n TS\n <euiTabSubLabel>Typescript</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-javascript\" euiCode>{{filterOutModuleAndImports(tsContent)}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab euiWarning [isVisible]=\"htmlContent && tsContent && renderPlayground\">\n <euiTabLabel>\n Playground\n <euiTabSubLabel>Stackblitz <eui-chip euiSizeS euiWarning>Experimental</eui-chip></euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <eui-playground\n [typescriptContent]=\"tsContent\"\n [htmlContent]=\"htmlContent\"\n [activated]=\"playground_activated\"></eui-playground>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n </eui-card-content>\n </eui-card>\n</ng-template>\n\n<ng-content></ng-content>\n", styles: [".eui-showcase-doc-sample{display:block;margin-bottom:var(--eui-base-spacing-2xl);width:100%}.eui-showcase-doc-sample .doc-sample-title{align-items:flex-end;display:flex;width:100%;margin-bottom:var(--eui-base-spacing-m);padding-bottom:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-15)}.eui-showcase-doc-sample .doc-sample-title__label{align-items:center;display:flex;font-size:var(--eui-base-font-size-xl);min-height:var(--eui-base-spacing-xl);width:100%}.eui-showcase-doc-sample .doc-sample-title__label:hover .doc-sample-title__link{opacity:1;transition:all .25s ease-in-out}.eui-showcase-doc-sample .doc-sample-title__items{display:flex;margin-left:auto}.eui-showcase-doc-sample .doc-sample-title__link{opacity:0;margin-left:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.EuiCardComponent, selector: "eui-card", inputs: ["e2eAttr", "euiSelected", "euiCollapsible", "euiCollapsed", "euiUrgent", "euiNoShadow", "euiNoContentPadding", "euiHoverable"], outputs: ["onCollapsed", "collapse"] }, { kind: "component", type: i7.EuiCardContentComponent, selector: "eui-card-content" }, { kind: "component", type: i8.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i9.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isHandleChangeTab", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i9.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i9.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "directive", type: i9.EuiTabSubLabelDirective, selector: "euiTabSubLabel" }, { kind: "component", type: i9.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i10.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i11.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i11.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i12.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i13.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i14.PlaygroundComponent, selector: "eui-playground", inputs: ["title", "htmlContent", "typescriptContent", "activated", "modules"] }], encapsulation: i0.ViewEncapsulation.None }); }
165
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: DocSampleComponent, deps: [{ token: i1.HttpClient }, { token: i2.EuiAppShellService }, { token: i0.ChangeDetectorRef }, { token: i2.EuiGrowlService }, { token: i3.Clipboard }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
166
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.4", type: DocSampleComponent, selector: "eui-showcase-doc-sample", inputs: { id: "id", label: "label", styleClass: "styleClass", renderPlayground: "renderPlayground" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\">\n <strong>{{ label }}</strong>\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"doc-sample-title__items\">\n <button\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onToggleCode()\"\n [isLoading]=\"isCodeLoading\"\n [euiDisabled]=\"isCodeLoading\">\n <span *ngIf=\"!isCodeExpanded\" euiLabel>Code</span>\n <span *ngIf=\"isCodeExpanded\" euiLabel>Hide Code</span>\n <span euiIcon iconClass=\"eui-icon-code\"></span>\n </button>\n </div>\n</div>\n\n<ng-template [ngIf]=\"isCodeExpanded\">\n <eui-card euiNoContentPadding>\n <eui-card-content>\n <eui-tabs (tabSelect)=\"onSelectedTab($event)\">\n <eui-tab [isVisible]=\"htmlContent\">\n <euiTabLabel>\n HTML\n <euiTabSubLabel>HyperText Markup Language</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-markup\" euiCode>{{htmlContent}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab [isVisible]=\"tsContent\">\n <euiTabLabel>\n TS\n <euiTabSubLabel>Typescript</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-javascript\" euiCode>{{filterOutModuleAndImports(tsContent)}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab euiWarning [isVisible]=\"htmlContent && tsContent && renderPlayground\">\n <euiTabLabel>\n Playground\n <euiTabSubLabel>Stackblitz <eui-chip euiSizeS euiWarning>Experimental</eui-chip></euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <eui-playground\n [typescriptContent]=\"tsContent\"\n [htmlContent]=\"htmlContent\"\n [activated]=\"playground_activated\"></eui-playground>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n </eui-card-content>\n </eui-card>\n</ng-template>\n\n<ng-content></ng-content>\n", styles: [".eui-showcase-doc-sample{display:block;margin-bottom:var(--eui-base-spacing-2xl);width:100%}.eui-showcase-doc-sample .doc-sample-title{align-items:flex-end;display:flex;width:100%;margin-bottom:var(--eui-base-spacing-m);padding-bottom:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-15)}.eui-showcase-doc-sample .doc-sample-title__label{align-items:center;display:flex;font-size:var(--eui-base-font-size-xl);min-height:var(--eui-base-spacing-xl);width:100%}.eui-showcase-doc-sample .doc-sample-title__label:hover .doc-sample-title__link{opacity:1;transition:all .25s ease-in-out}.eui-showcase-doc-sample .doc-sample-title__items{display:flex;margin-left:auto}.eui-showcase-doc-sample .doc-sample-title__link{opacity:0;margin-left:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.EuiCardComponent, selector: "eui-card", inputs: ["e2eAttr", "euiSelected", "euiCollapsible", "euiCollapsed", "euiUrgent", "euiNoShadow", "euiNoContentPadding", "euiHoverable"], outputs: ["onCollapsed", "collapse"] }, { kind: "component", type: i6.EuiCardContentComponent, selector: "eui-card-content" }, { kind: "component", type: i7.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i8.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isHandleChangeTab", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i8.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i8.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "directive", type: i8.EuiTabSubLabelDirective, selector: "euiTabSubLabel" }, { kind: "component", type: i8.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i9.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i10.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i10.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i11.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i12.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i13.PlaygroundComponent, selector: "eui-playground", inputs: ["title", "htmlContent", "typescriptContent", "activated", "modules"] }], encapsulation: i0.ViewEncapsulation.None }); }
166
167
  }
167
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: DocSampleComponent, decorators: [{
168
169
  type: Component,
169
170
  args: [{ selector: 'eui-showcase-doc-sample', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-sample-title\">\n <div class=\"doc-sample-title__label\">\n <strong>{{ label }}</strong>\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiPrimary\n euiSizeS\n (click)=\"copyCurrentUrlToClipboard(id)\"\n class=\"doc-sample-title__link\"\n tabindex=\"-1\">\n <eui-icon-svg icon=\"link\" set=\"outline\" size=\"l\" fillColor=\"grey-75\"></eui-icon-svg>\n </button>\n </div>\n <div class=\"doc-sample-title__items\">\n <button\n type=\"button\"\n euiButton\n [euiOutline]=\"!isCodeExpanded\"\n euiPrimary\n euiSizeS\n (click)=\"onToggleCode()\"\n [isLoading]=\"isCodeLoading\"\n [euiDisabled]=\"isCodeLoading\">\n <span *ngIf=\"!isCodeExpanded\" euiLabel>Code</span>\n <span *ngIf=\"isCodeExpanded\" euiLabel>Hide Code</span>\n <span euiIcon iconClass=\"eui-icon-code\"></span>\n </button>\n </div>\n</div>\n\n<ng-template [ngIf]=\"isCodeExpanded\">\n <eui-card euiNoContentPadding>\n <eui-card-content>\n <eui-tabs (tabSelect)=\"onSelectedTab($event)\">\n <eui-tab [isVisible]=\"htmlContent\">\n <euiTabLabel>\n HTML\n <euiTabSubLabel>HyperText Markup Language</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-markup\" euiCode>{{htmlContent}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab [isVisible]=\"tsContent\">\n <euiTabLabel>\n TS\n <euiTabSubLabel>Typescript</euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <pre><code class=\"language-javascript\" euiCode>{{filterOutModuleAndImports(tsContent)}}</code></pre>\n </euiTabContent>\n </eui-tab>\n <eui-tab euiWarning [isVisible]=\"htmlContent && tsContent && renderPlayground\">\n <euiTabLabel>\n Playground\n <euiTabSubLabel>Stackblitz <eui-chip euiSizeS euiWarning>Experimental</eui-chip></euiTabSubLabel>\n </euiTabLabel>\n <euiTabContent>\n <eui-playground\n [typescriptContent]=\"tsContent\"\n [htmlContent]=\"htmlContent\"\n [activated]=\"playground_activated\"></eui-playground>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n </eui-card-content>\n </eui-card>\n</ng-template>\n\n<ng-content></ng-content>\n", styles: [".eui-showcase-doc-sample{display:block;margin-bottom:var(--eui-base-spacing-2xl);width:100%}.eui-showcase-doc-sample .doc-sample-title{align-items:flex-end;display:flex;width:100%;margin-bottom:var(--eui-base-spacing-m);padding-bottom:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-15)}.eui-showcase-doc-sample .doc-sample-title__label{align-items:center;display:flex;font-size:var(--eui-base-font-size-xl);min-height:var(--eui-base-spacing-xl);width:100%}.eui-showcase-doc-sample .doc-sample-title__label:hover .doc-sample-title__link{opacity:1;transition:all .25s ease-in-out}.eui-showcase-doc-sample .doc-sample-title__items{display:flex;margin-left:auto}.eui-showcase-doc-sample .doc-sample-title__link{opacity:0;margin-left:var(--eui-base-spacing-m)}\n"] }]
170
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.UxAppShellService }, { type: i0.ChangeDetectorRef }, { type: i3.EuiGrowlService }, { type: i4.Clipboard }, { type: i5.Router }]; }, propDecorators: { id: [{
171
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EuiAppShellService }, { type: i0.ChangeDetectorRef }, { type: i2.EuiGrowlService }, { type: i3.Clipboard }, { type: i4.Router }]; }, propDecorators: { id: [{
171
172
  type: Input
172
173
  }], label: [{
173
174
  type: Input
@@ -179,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.4",
179
180
  type: HostBinding,
180
181
  args: ['class']
181
182
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXNhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZG9jLXNhbXBsZS9kb2Mtc2FtcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBWWpELE1BQU0sT0FBTyxrQkFBa0I7SUFnQjNCLFlBQ1ksS0FBaUIsRUFDakIsU0FBNEIsRUFDNUIsRUFBcUIsRUFDckIsWUFBNkIsRUFDN0IsU0FBb0IsRUFDcEIsTUFBYztRQUxkLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXJCakIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUVaLFlBQU8sR0FBRyx5QkFBeUIsQ0FBQztRQUUxRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLEtBQUss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QUVsRSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFvQjtRQUNoQyxPQUFPLEtBQUs7WUFDUixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDUixDQUFDLE1BQU0sRUFBRSxJQUF1QixFQUFFLEVBQUUsQ0FBQztnQkFDakMsR0FBRyxNQUFNO2dCQUNUO29CQUNJLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDWCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2lCQUN4RDtnQkFDRCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNqQyxFQUNELEVBQUUsQ0FDTDtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDYixDQUFDO3dJQXpLUSxrQkFBa0I7NEhBQWxCLGtCQUFrQix3TkNoQi9CLHU2RkF5RUE7O2tHRHpEYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0kseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJOzRPQUc1QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVnQixPQUFPO3NCQUE1QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UsIEV1aU1lbnVJdGVtIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aVRhYkNvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktdGFicyc7XG5pbXBvcnQgeyBFdWlHcm93bFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWdyb3dsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXNob3djYXNlLWRvYy1zYW1wbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnZG9jLXNhbXBsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZG9jLXNhbXBsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvY1NhbXBsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBJbnB1dCgpIGlkID0gJyc7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XG4gICAgQElucHV0KCkgcmVuZGVyUGxheWdyb3VuZCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzZXMgPSAnZXVpLXNob3djYXNlLWRvYy1zYW1wbGUnO1xuXG4gICAgaXNDb2RlTG9hZGVkID0gZmFsc2U7XG4gICAgaXNDb2RlTG9hZGluZyA9IGZhbHNlO1xuICAgIGlzQ29kZUV4cGFuZGVkID0gZmFsc2U7XG4gICAgcGxheWdyb3VuZF9hY3RpdmF0ZWQgPSBmYWxzZTtcblxuICAgIHRzQ29udGVudDtcbiAgICBodG1sQ29udGVudDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGFzU2VydmljZTogVXhBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGdyb3dsU2VydmljZTogRXVpR3Jvd2xTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlDdXJyZW50VXJsVG9DbGlwYm9hcmQoaWQ6IHN0cmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYmFzZURvbWFpbiA9IHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbjtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJyMnKTtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBiYXNlRG9tYWluICsgY3VycmVudFVybFswXSArICcjJyArIGlkO1xuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmQuY29weShmdWxsVXJsKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5ncm93bCh7IHNldmVyaXR5OiAnZGFuZ2VyJywgc3VtbWFyeTogYENsaXBib2FyZCBzZXJ2aWNlIG5vdCBhdmFpbGFibGVgIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuZ3Jvd2woeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiBgTGluayBVUkwgY29waWVkIHRvIGNsaXBib2FyZGAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZUNvZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ29kZUxvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0NvZGVFeHBhbmRlZCA9ICF0aGlzLmlzQ29kZUV4cGFuZGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzQ29kZUxvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uO1xuICAgICAgICAgICAgY29uc3QgcGF0aE5hbWUgPSB1cmwucGF0aG5hbWU7XG4gICAgICAgICAgICBjb25zdCBwYXRoTmFtZUFycmF5ID0gcGF0aE5hbWUuc3BsaXQoJy8nKTtcblxuICAgICAgICAgICAgbGV0IHNhbXBsZVBhdGhBcnJheSA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBjbXBJZCA9IHBhdGhOYW1lQXJyYXlbcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGNtcCA9IHRoaXMuX2dldENvbXBvbmVudChjbXBJZCk7XG5cbiAgICAgICAgICAgIGlmIChjbXAgJiYgY21wLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgc2FtcGxlUGF0aEFycmF5ID0gY21wLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uLnNwbGl0KCcvJykucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGF0aE5hbWVBcnJheVtpXS5pbmRleE9mKCdldWktc2hvd2Nhc2UtJykgPiAtMSB8fCBwYXRoTmFtZUFycmF5W2ldLmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXRoTmFtZUFycmF5W2ldICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUGF0aEFycmF5LnB1c2gocGF0aE5hbWVBcnJheVtpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHNhbXBsZVBhdGhBcnJheSk7XG5cbiAgICAgICAgICAgIHNhbXBsZVBhdGhBcnJheSA9IHNhbXBsZVBhdGhBcnJheS5yZXZlcnNlKCk7XG4gICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkucHVzaCgnc2FtcGxlcycpO1xuICAgICAgICAgICAgc2FtcGxlUGF0aEFycmF5LnB1c2godGhpcy5pZCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNhbXBsZXNQYXRoID0gYGFzc2V0cy9zYW1wbGVzLyR7c2FtcGxlUGF0aEFycmF5LmpvaW4oJy8nKX1gO1xuXG4gICAgICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICAgICAgdHlwZXNjcmlwdDogdGhpcy5faHR0cC5nZXQoYCR7c2FtcGxlc1BhdGh9L2NvbXBvbmVudC50c2AsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgaHRtbDogdGhpcy5faHR0cC5nZXQoYCR7c2FtcGxlc1BhdGh9L2NvbXBvbmVudC5odG1sYCwge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2VzOiB7IHR5cGVzY3JpcHQ6IHN0cmluZzsgaHRtbDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlc2NyaXB0OiByZXNwb25zZXMudHlwZXNjcmlwdCwgaHRtbDogcmVzcG9uc2VzLmh0bWwgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuZ3Jvd2xFcnJvcihgSXNzdWUgd2hpbGUgZmV0Y2hpbmcgOiAke2Vycm9yLnVybH0gOiAke2Vycm9yLnN0YXR1c30tJHtlcnJvci5zdGF0dXNUZXh0fWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8UmVzcG9uc2U+KChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPFJlc3BvbnNlPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVtbzogeyB0eXBlc2NyaXB0OiBzdHJpbmc7IGh0bWw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHNDb250ZW50ID0gZGVtby50eXBlc2NyaXB0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmh0bWxDb250ZW50ID0gZGVtby5odG1sO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBvbiBwbGF5Z3JvdW5kIHRhYiBzZWxlY3RlZCBpbmZvcm0gdGhlIHBsYXlncm91bmQgY29tcG9uZW50IHRoYXQgaXRzIGNvbnRlbnQgaXMgcmVuZGVyZWRcbiAgICAgKiBUT0RPOiBmaXggdGhlIGJ1ZyBvbiBldWktdGFiIGltcGxlbWVudGF0aW9uIHdoZXJlIHRoZSBuZ0FmdGVyVmlld0luaXQgaXMgY2FsbGVkIHdpdGhvdXQgdGhlIHZpZXcgYWN0dWFsbHlcbiAgICAgKiAgYmVpbmcgcmVuZGVyZWQgb24gc2NyZWVuLiBJc3N1ZSBpcyB0aGF0IGluaXRpYWxseSB0aGUgdmlldyBpcyBiZWluZyByZW5kZXJlZCBhbmQgdGhlbiByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgKiAgSW50ZXJuYWxseSBldWktdGFicyBpcyBtb3ZpbmcgdGhlIHByb2plY3RlZCBjb250ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIFRoZSBzZWxlY3RlZCB0YWIgY29tcG9uZW50IHJlZmVyZW5jZSBhbmQgaXRzIGluZGV4IGluIHRoZSB0YWJzIGFycmF5LlxuICAgICAqL1xuICAgIG9uU2VsZWN0ZWRUYWIoc2VsZWN0ZWQ6IHsgdGFiOiBFdWlUYWJDb21wb25lbnQ7IGluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLnBsYXlncm91bmRfYWN0aXZhdGVkID0gc2VsZWN0ZWQuaW5kZXggPT09IDI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmlsdGVyIG91dCB0aGUgZXh0cmEgaW1wb3J0IGFuZCBtb2R1bGUgZnJvbSB0aGUgY29kZSBzYW1wbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlXG4gICAgICovXG4gICAgZmlsdGVyT3V0TW9kdWxlQW5kSW1wb3J0cyhjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IG1vZHVsZVxuICAgICAgICBjb25zdCBtb2R1bGVSZWdleCA9IC9ATmdNb2R1bGVcXCgoW1xcc1xcU10qPylcXClcXG5leHBvcnQgY2xhc3MgXFx3KyBcXHsoW1xcc1xcU10qPylcXH0vZztcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShtb2R1bGVSZWdleCwgJycpO1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IGV4dHJhIGltcG9ydHNcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShcImltcG9ydCB7IEV1aUFsbE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cyc7XFxuXCIsICcnKTtcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShcImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XFxuXCIsICcnKTtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29tcG9uZW50KGlkKTogRXVpTWVudUl0ZW0gfCBhbnkge1xuICAgICAgICBjb25zdCBmbGF0TGlua3MgPSB0aGlzLmZsYXR0ZW4odGhpcy5hc1NlcnZpY2Uuc3RhdGUuc2lkZWJhckxpbmtzKTtcblxuICAgICAgICByZXR1cm4gZmxhdExpbmtzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbihsaW5rczogRXVpTWVudUl0ZW1bXSk6IEV1aU1lbnVJdGVtW10gfCBhbnkge1xuICAgICAgICByZXR1cm4gbGlua3NcbiAgICAgICAgICAgID8gbGlua3MucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgKHJlc3VsdCwgaXRlbTogRXVpTWVudUl0ZW0gfCBhbnkpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb246IGl0ZW0uYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZsYXR0ZW4oaXRlbS5jaGlsZHJlbiksXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBbXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19sYWJlbFwiPlxuICAgICAgICA8c3Ryb25nPnt7IGxhYmVsIH19PC9zdHJvbmc+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAoY2xpY2spPVwiY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZClcIlxuICAgICAgICAgICAgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19saW5rXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImxpbmtcIiBzZXQ9XCJvdXRsaW5lXCIgc2l6ZT1cImxcIiBmaWxsQ29sb3I9XCJncmV5LTc1XCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkb2Mtc2FtcGxlLXRpdGxlX19pdGVtc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgW2V1aU91dGxpbmVdPVwiIWlzQ29kZUV4cGFuZGVkXCJcbiAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVDb2RlKClcIlxuICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0NvZGVMb2FkaW5nXCJcbiAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0NvZGVMb2FkaW5nXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0NvZGVFeHBhbmRlZFwiIGV1aUxhYmVsPkNvZGU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzQ29kZUV4cGFuZGVkXCIgZXVpTGFiZWw+SGlkZSBDb2RlPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gZXVpSWNvbiBpY29uQ2xhc3M9XCJldWktaWNvbi1jb2RlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwiaXNDb2RlRXhwYW5kZWRcIj5cbiAgICA8ZXVpLWNhcmQgZXVpTm9Db250ZW50UGFkZGluZz5cbiAgICAgICAgPGV1aS1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZXVpLXRhYnMgKHRhYlNlbGVjdCk9XCJvblNlbGVjdGVkVGFiKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYiBbaXNWaXNpYmxlXT1cImh0bWxDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJTdWJMYWJlbD5IeXBlclRleHQgTWFya3VwIExhbmd1YWdlPC9ldWlUYWJTdWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwibGFuZ3VhZ2UtbWFya3VwXCIgZXVpQ29kZT57e2h0bWxDb250ZW50fX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPGV1aS10YWIgW2lzVmlzaWJsZV09XCJ0c0NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgVFNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJTdWJMYWJlbD5UeXBlc2NyaXB0PC9ldWlUYWJTdWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwibGFuZ3VhZ2UtamF2YXNjcmlwdFwiIGV1aUNvZGU+e3tmaWx0ZXJPdXRNb2R1bGVBbmRJbXBvcnRzKHRzQ29udGVudCl9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYiBldWlXYXJuaW5nIFtpc1Zpc2libGVdPVwiaHRtbENvbnRlbnQgJiYgdHNDb250ZW50ICYmIHJlbmRlclBsYXlncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgUGxheWdyb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYlN1YkxhYmVsPlN0YWNrYmxpdHogPGV1aS1jaGlwIGV1aVNpemVTIGV1aVdhcm5pbmc+RXhwZXJpbWVudGFsPC9ldWktY2hpcD48L2V1aVRhYlN1YkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktcGxheWdyb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlc2NyaXB0Q29udGVudF09XCJ0c0NvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtodG1sQ29udGVudF09XCJodG1sQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2YXRlZF09XCJwbGF5Z3JvdW5kX2FjdGl2YXRlZFwiPjwvZXVpLXBsYXlncm91bmQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICA8L2V1aS10YWJzPlxuICAgICAgICA8L2V1aS1jYXJkLWNvbnRlbnQ+XG4gICAgPC9ldWktY2FyZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXNhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZG9jLXNhbXBsZS9kb2Mtc2FtcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFZakQsTUFBTSxPQUFPLGtCQUFrQjtJQWdCM0IsWUFDWSxLQUFpQixFQUNqQixTQUE2QixFQUM3QixFQUFxQixFQUNyQixZQUE2QixFQUM3QixTQUFvQixFQUNwQixNQUFjO1FBTGQsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckJqQixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRVosWUFBTyxHQUFHLHlCQUF5QixDQUFDO1FBRTFELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxD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QUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEUsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxPQUFPLENBQUMsS0FBb0I7UUFDaEMsT0FBTyxLQUFLO1lBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ1IsQ0FBQyxNQUFNLEVBQUUsSUFBdUIsRUFBRSxFQUFFLENBQUM7Z0JBQ2pDLEdBQUcsTUFBTTtnQkFDVDtvQkFDSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtpQkFDeEQ7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDakMsRUFDRCxFQUFFLENBQ0w7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2IsQ0FBQzt3SUEzS1Esa0JBQWtCOzRIQUFsQixrQkFBa0Isd05DaEIvQix1NkZBeUVBOztrR0R6RGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLHlCQUF5QixpQkFHcEIsaUJBQWlCLENBQUMsSUFBSTs2T0FHNUIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSwgRXVpTWVudUl0ZW0gfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpVGFiQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS10YWJzJztcbmltcG9ydCB7IEV1aUdyb3dsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1zaG93Y2FzZS1kb2Mtc2FtcGxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RvYy1zYW1wbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvYy1zYW1wbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NTYW1wbGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKSBpZCA9ICcnO1xuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgc3R5bGVDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIHJlbmRlclBsYXlncm91bmQgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc2VzID0gJ2V1aS1zaG93Y2FzZS1kb2Mtc2FtcGxlJztcblxuICAgIGlzQ29kZUxvYWRlZCA9IGZhbHNlO1xuICAgIGlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICBpc0NvZGVFeHBhbmRlZCA9IGZhbHNlO1xuICAgIHBsYXlncm91bmRfYWN0aXZhdGVkID0gZmFsc2U7XG5cbiAgICB0c0NvbnRlbnQ7XG4gICAgaHRtbENvbnRlbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBhc1NlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBFdWlHcm93bFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2xpcGJvYXJkOiBDbGlwYm9hcmQsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZChpZDogc3RyaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlRG9tYWluID0gd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnIycpO1xuICAgICAgICAgICAgY29uc3QgZnVsbFVybCA9IGJhc2VEb21haW4gKyBjdXJyZW50VXJsWzBdICsgJyMnICsgaWQ7XG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KGZ1bGxVcmwpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmdyb3dsKHsgc2V2ZXJpdHk6ICdkYW5nZXInLCBzdW1tYXJ5OiBgQ2xpcGJvYXJkIHNlcnZpY2Ugbm90IGF2YWlsYWJsZWAgfSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5ncm93bCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6IGBMaW5rIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkYCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlQ29kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29kZUV4cGFuZGVkID0gIXRoaXMuaXNDb2RlRXhwYW5kZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNDb2RlTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgICAgICBjb25zdCBwYXRoTmFtZSA9IHVybC5wYXRobmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhOYW1lQXJyYXkgPSBwYXRoTmFtZS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBsZXQgc2FtcGxlUGF0aEFycmF5ID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGNtcElkID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgY21wID0gdGhpcy5fZ2V0Q29tcG9uZW50KGNtcElkKTtcblxuICAgICAgICAgICAgaWYgKGNtcCAmJiBjbXAuYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkgPSBjbXAuYWx0ZXJuYXRlU2FtcGxlTG9jYXRpb24uc3BsaXQoJy8nKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXRoTmFtZUFycmF5W2ldLmluZGV4T2YoJ2V1aS1zaG93Y2FzZS0nKSA+IC0xIHx8IHBhdGhOYW1lQXJyYXlbaV0uaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGhOYW1lQXJyYXlbaV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkucHVzaChwYXRoTmFtZUFycmF5W2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coc2FtcGxlUGF0aEFycmF5KTtcblxuICAgICAgICAgICAgc2FtcGxlUGF0aEFycmF5ID0gc2FtcGxlUGF0aEFycmF5LnJldmVyc2UoKTtcbiAgICAgICAgICAgIHNhbXBsZVBhdGhBcnJheS5wdXNoKCdzYW1wbGVzJyk7XG4gICAgICAgICAgICBzYW1wbGVQYXRoQXJyYXkucHVzaCh0aGlzLmlkKTtcblxuICAgICAgICAgICAgY29uc3Qgc2FtcGxlc1BhdGggPSBgYXNzZXRzL3NhbXBsZXMvJHtzYW1wbGVQYXRoQXJyYXkuam9pbignLycpfWA7XG5cbiAgICAgICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgICAgICB0eXBlc2NyaXB0OiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50LnRzYCwge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBodG1sOiB0aGlzLl9odHRwLmdldChgJHtzYW1wbGVzUGF0aH0vY29tcG9uZW50Lmh0bWxgLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZXM6IHsgdHlwZXNjcmlwdDogc3RyaW5nOyBodG1sOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGVzY3JpcHQ6IHJlc3BvbnNlcy50eXBlc2NyaXB0LCBodG1sOiByZXNwb25zZXMuaHRtbCB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5ncm93bEVycm9yKGBJc3N1ZSB3aGlsZSBmZXRjaGluZyA6ICR7ZXJyb3IudXJsfSA6ICR7ZXJyb3Iuc3RhdHVzfS0ke2Vycm9yLnN0YXR1c1RleHR9YCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxSZXNwb25zZT4oKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8UmVzcG9uc2U+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkZW1vOiB7IHR5cGVzY3JpcHQ6IHN0cmluZzsgaHRtbDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50c0NvbnRlbnQgPSBkZW1vLnR5cGVzY3JpcHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbENvbnRlbnQgPSBkZW1vLmh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvZGVFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG9uIHBsYXlncm91bmQgdGFiIHNlbGVjdGVkIGluZm9ybSB0aGUgcGxheWdyb3VuZCBjb21wb25lbnQgdGhhdCBpdHMgY29udGVudCBpcyByZW5kZXJlZFxuICAgICAqIFRPRE86IGZpeCB0aGUgYnVnIG9uIGV1aS10YWIgaW1wbGVtZW50YXRpb24gd2hlcmUgdGhlIG5nQWZ0ZXJWaWV3SW5pdCBpcyBjYWxsZWQgd2l0aG91dCB0aGUgdmlldyBhY3R1YWxseVxuICAgICAqICBiZWluZyByZW5kZXJlZCBvbiBzY3JlZW4uIElzc3VlIGlzIHRoYXQgaW5pdGlhbGx5IHRoZSB2aWV3IGlzIGJlaW5nIHJlbmRlcmVkIGFuZCB0aGVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAqICBJbnRlcm5hbGx5IGV1aS10YWJzIGlzIG1vdmluZyB0aGUgcHJvamVjdGVkIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgVGhlIHNlbGVjdGVkIHRhYiBjb21wb25lbnQgcmVmZXJlbmNlIGFuZCBpdHMgaW5kZXggaW4gdGhlIHRhYnMgYXJyYXkuXG4gICAgICovXG4gICAgb25TZWxlY3RlZFRhYihzZWxlY3RlZDogeyB0YWI6IEV1aVRhYkNvbXBvbmVudDsgaW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxheWdyb3VuZF9hY3RpdmF0ZWQgPSBzZWxlY3RlZC5pbmRleCA9PT0gMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaWx0ZXIgb3V0IHRoZSBleHRyYSBpbXBvcnQgYW5kIG1vZHVsZSBmcm9tIHRoZSBjb2RlIHNhbXBsZVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGVcbiAgICAgKi9cbiAgICBmaWx0ZXJPdXRNb2R1bGVBbmRJbXBvcnRzKGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGZpbHRlciBvdXQgbW9kdWxlXG4gICAgICAgIGNvbnN0IG1vZHVsZVJlZ2V4ID0gL0BOZ01vZHVsZVxcKChbXFxzXFxTXSo/KVxcKVxcbmV4cG9ydCBjbGFzcyBcXHcrIFxceyhbXFxzXFxTXSo/KVxcfS9nO1xuICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKG1vZHVsZVJlZ2V4LCAnJyk7XG4gICAgICAgIC8vIGZpbHRlciBvdXQgZXh0cmEgaW1wb3J0c1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29kZSA9IGNvZGUucmVwbGFjZShcImltcG9ydCB7IEV1aUFsbE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cyc7XFxuXCIsICcnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIGNvZGUgPSBjb2RlLnJlcGxhY2UoXCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xcblwiLCAnJyk7XG4gICAgICAgIHJldHVybiBjb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldENvbXBvbmVudChpZCk6IEV1aU1lbnVJdGVtIHwgYW55IHtcbiAgICAgICAgY29uc3QgZmxhdExpbmtzID0gdGhpcy5mbGF0dGVuKHRoaXMuYXNTZXJ2aWNlLnN0YXRlLnNpZGViYXJMaW5rcyk7XG5cbiAgICAgICAgcmV0dXJuIGZsYXRMaW5rcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKVswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZsYXR0ZW4obGlua3M6IEV1aU1lbnVJdGVtW10pOiBFdWlNZW51SXRlbVtdIHwgYW55IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzXG4gICAgICAgICAgICA/IGxpbmtzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChyZXN1bHQsIGl0ZW06IEV1aU1lbnVJdGVtIHwgYW55KSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uOiBpdGVtLmFsdGVybmF0ZVNhbXBsZUxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5mbGF0dGVuKGl0ZW0uY2hpbGRyZW4pLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW107XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRvYy1zYW1wbGUtdGl0bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZV9fbGFiZWxcIj5cbiAgICAgICAgPHN0cm9uZz57eyBsYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICBldWlQcmltYXJ5XG4gICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlDdXJyZW50VXJsVG9DbGlwYm9hcmQoaWQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZV9fbGlua1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJsaW5rXCIgc2V0PVwib3V0bGluZVwiIHNpemU9XCJsXCIgZmlsbENvbG9yPVwiZ3JleS03NVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXNhbXBsZS10aXRsZV9faXRlbXNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cIiFpc0NvZGVFeHBhbmRlZFwiXG4gICAgICAgICAgICBldWlQcmltYXJ5XG4gICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ29kZSgpXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNDb2RlTG9hZGluZ1wiXG4gICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwiaXNDb2RlTG9hZGluZ1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNDb2RlRXhwYW5kZWRcIiBldWlMYWJlbD5Db2RlPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvZGVFeHBhbmRlZFwiIGV1aUxhYmVsPkhpZGUgQ29kZTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGV1aUljb24gaWNvbkNsYXNzPVwiZXVpLWljb24tY29kZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzQ29kZUV4cGFuZGVkXCI+XG4gICAgPGV1aS1jYXJkIGV1aU5vQ29udGVudFBhZGRpbmc+XG4gICAgICAgIDxldWktY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGV1aS10YWJzICh0YWJTZWxlY3QpPVwib25TZWxlY3RlZFRhYigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGV1aS10YWIgW2lzVmlzaWJsZV09XCJodG1sQ29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICBIVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiU3ViTGFiZWw+SHlwZXJUZXh0IE1hcmt1cCBMYW5ndWFnZTwvZXVpVGFiU3ViTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZSBjbGFzcz1cImxhbmd1YWdlLW1hcmt1cFwiIGV1aUNvZGU+e3todG1sQ29udGVudH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuICAgICAgICAgICAgICAgIDxldWktdGFiIFtpc1Zpc2libGVdPVwidHNDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRTXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiU3ViTGFiZWw+VHlwZXNjcmlwdDwvZXVpVGFiU3ViTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZSBjbGFzcz1cImxhbmd1YWdlLWphdmFzY3JpcHRcIiBldWlDb2RlPnt7ZmlsdGVyT3V0TW9kdWxlQW5kSW1wb3J0cyh0c0NvbnRlbnQpfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPGV1aS10YWIgZXVpV2FybmluZyBbaXNWaXNpYmxlXT1cImh0bWxDb250ZW50ICYmIHRzQ29udGVudCAmJiByZW5kZXJQbGF5Z3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYXlncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJTdWJMYWJlbD5TdGFja2JsaXR6IDxldWktY2hpcCBldWlTaXplUyBldWlXYXJuaW5nPkV4cGVyaW1lbnRhbDwvZXVpLWNoaXA+PC9ldWlUYWJTdWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLXBsYXlncm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZXNjcmlwdENvbnRlbnRdPVwidHNDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHRtbENvbnRlbnRdPVwiaHRtbENvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmF0ZWRdPVwicGxheWdyb3VuZF9hY3RpdmF0ZWRcIj48L2V1aS1wbGF5Z3JvdW5kPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuICAgICAgICAgICAgPC9ldWktdGFicz5cbiAgICAgICAgPC9ldWktY2FyZC1jb250ZW50PlxuICAgIDwvZXVpLWNhcmQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -175,13 +175,13 @@ export class PlaygroundComponent {
175
175
  // appends import of BrowserModule
176
176
  return `import { BrowserModule } from '@angular/platform-browser';\n${contents}`;
177
177
  }
178
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: PlaygroundComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.UxAppShellService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
178
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: PlaygroundComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.EuiAppShellService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
179
179
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.4", type: PlaygroundComponent, selector: "eui-playground", inputs: { title: "title", htmlContent: "htmlContent", typescriptContent: "typescriptContent", activated: "activated", modules: "modules" }, viewQueries: [{ propertyName: "stackblitzElWrapper", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<eui-block-content [isBlocked]=\"!isLoaded\">\n <iframe #container id=\"stackblitz\"></iframe>\n</eui-block-content>\n", dependencies: [{ kind: "component", type: i3.EuiBlockContentComponent, selector: "eui-block-content", inputs: ["isBlocked"] }] }); }
180
180
  }
181
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.4", ngImport: i0, type: PlaygroundComponent, decorators: [{
182
182
  type: Component,
183
183
  args: [{ selector: 'eui-playground', template: "<eui-block-content [isBlocked]=\"!isLoaded\">\n <iframe #container id=\"stackblitz\"></iframe>\n</eui-block-content>\n" }]
184
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.UxAppShellService }, { type: i2.HttpClient }]; }, propDecorators: { title: [{
184
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.EuiAppShellService }, { type: i2.HttpClient }]; }, propDecorators: { title: [{
185
185
  type: Input
186
186
  }], htmlContent: [{
187
187
  type: Input
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.4",
195
195
  type: ViewChild,
196
196
  args: ['container', { read: ElementRef, static: true }]
197
197
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wbGF5Z3JvdW5kL3BsYXlncm91bmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0csT0FBTyxHQUFnQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBTXJILE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBQ1ksUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsUUFBMkIsRUFDM0IsSUFBZ0I7UUFIaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFuQnJCLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQU16QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFXckIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNI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Q0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUN2RixrQ0FBa0M7UUFDbEMsT0FBTywrREFBK0QsUUFBUSxFQUFFLENBQUM7SUFDckYsQ0FBQzt3SUEvTVEsbUJBQW1COzRIQUFuQixtQkFBbUIsK1JBWUksVUFBVSxnRUN2QjlDLDJIQUdBOztrR0RRYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0ksZ0JBQWdCO2tMQUtuQixLQUFLO3NCQURYLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFJRSxtQkFBbUI7c0JBRDFCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCBzZGssIHsgUHJvamVjdERlcGVuZGVuY2llcywgVk0gfSBmcm9tICdAc3RhY2tibGl0ei9zZGsnO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYW5ndWxhckpzb25GaWxlLCBpbmRleEh0bWxGaWxlLCBtYWluRmlsZSwgUEFDS0FHRV9KU09OLCBwb2x5ZmlsbHNGaWxlLCB0c0NvbmZpZyB9IGZyb20gJy4vc3RhY2tibGl0ei5maWxlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXBsYXlncm91bmQnLFxuICAgIHRlbXBsYXRlVXJsOiBgcGxheWdyb3VuZC5jb21wb25lbnQuaHRtbGAsXG59KVxuZXhwb3J0IGNsYXNzIFBsYXlncm91bmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRpdGxlID0gJ2VVSSBQbGF5Z3JvdW5kJztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBodG1sQ29udGVudDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGVzY3JpcHRDb250ZW50OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWN0aXZhdGVkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbW9kdWxlczogW3sgbmFtZTogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfV07XG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHN0YWNrYmxpdHpFbFdyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+O1xuICAgIC8qKiBpbnN0YW5jZSB0aGF0IGhvbGRzIHRoZSBzdGFja2JsaXR6IFZNIG9iamVjdCAqL1xuICAgIHByaXZhdGUgc3RhY2tibGl0ekluc3RhbmNlOiBWTTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBhcHBTaGVsbDogVXhBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuYWN0aXZhdGVkKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5hY3RpdmF0ZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U3RhY2tibGl0eigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTdGFja2JsaXR6KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFN0YWNrYmxpdHpEZXBlbmRlbmNpZXMoKVxuICAgICAgICAgICAgLnRoZW4oKGRlcHMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRlcGVuZGVuY2llcywgZGV2RGVwZW5kZW5jaWVzIH0gPSBkZXBzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0b3IgfSA9IHRoaXMuZXh0cmFjdENvbXBvbmVudE1ldGFkYXRhKHRoaXMudHlwZXNjcmlwdENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLmV4dHJhY3RNb2R1bGVOYW1lKHRoaXMudHlwZXNjcmlwdENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZGsuZW1iZWRQcm9qZWN0KFxuICAgICAgICAgICAgICAgICAgICAnc3RhY2tibGl0eicsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBbiBlVUkgZXhhbXBsZSBmb3IgdGhlICR7dGhpcy50aXRsZX0uYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiAnYW5ndWxhci1jbGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvbXBvbmVudC5odG1sJzogdGhpcy5odG1sQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvbXBvbmVudC50cyc6IHRoaXMuYXBwZW5kVml0YWxOZ01vZHVsZXModGhpcy50eXBlc2NyaXB0Q29udGVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ3NyYy9hcHAubW9kdWxlLnRzJzogbW9kdWxlRmlsZShjbGFzc05hbWUsIHRoaXMubW9kdWxlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9tYWluLnRzJzogbWFpbkZpbGUobW9kdWxlTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9wb2x5ZmlsbHMudHMnOiBwb2x5ZmlsbHNGaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvaW5kZXguaHRtbCc6IGluZGV4SHRtbEZpbGUoc2VsZWN0b3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmd1bGFyLmpzb24nOiBhbmd1bGFySnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2UuanNvbic6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5QQUNLQUdFX0pTT04sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZEZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0c2NvbmZpZy5qc29uJzogdHNDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJDb25zb2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbGU6IFsnY29tcG9uZW50LnRzJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKGluc3RhbmNlOiBWTSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tibGl0ekluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBvbmx5IHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBzdGFja2JsaXR6IHdpbGwgbmVlZCBmaWx0ZXJlZCBmcm9tIEBldWkvZGVwcy1iYXNlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RhY2tibGl0ekRlcGVuZGVuY2llcygpOiBQcm9taXNlPHtcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBQcm9qZWN0RGVwZW5kZW5jaWVzO1xuICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IFByb2plY3REZXBlbmRlbmNpZXM7XG4gICAgfT4ge1xuICAgICAgICAvLyBhIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIG9ubHkgc3RhY2tibGl0eiBuZWVkc1xuICAgICAgICBjb25zdCBzdGFja2JsaXR6RGVwZW5kZW5jaWVzID0gW1xuICAgICAgICAgICAgJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnLFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL2NkaycsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvY29tbW9uJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9jb21waWxlcicsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvY29yZScsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvZm9ybXMnLFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL21hdGVyaWFsJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcicsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcicsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9yb3V0ZXInLFxuICAgICAgICAgICAgJ0BldWkvYmFzZScsXG4gICAgICAgICAgICAnQGV1aS9jb21wb25lbnRzJyxcbiAgICAgICAgICAgICdAZXVpL2NvcmUnLFxuICAgICAgICAgICAgJ0BldWkvc3R5bGVzJyxcbiAgICAgICAgICAgICdAZXVpL3N0eWxlcy1iYXNlJyxcbiAgICAgICAgICAgICdAbmdyeC9lZmZlY3RzJyxcbiAgICAgICAgICAgICdAbmdyeC9zdG9yZScsXG4gICAgICAgICAgICAnQG5neC10cmFuc2xhdGUvY29yZScsXG4gICAgICAgICAgICAnbG9jYWxmb3JhZ2UnLFxuICAgICAgICAgICAgJ2xvZGFzaC1lcycsXG4gICAgICAgICAgICAncmVzZWxlY3QnLFxuICAgICAgICAgICAgJ3J4anMnLFxuICAgICAgICAgICAgJ3RzbGliJyxcbiAgICAgICAgICAgICd6b25lLmpzJyxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGFja2JsaXR6RGV2RGVwZW5kZW5jaWVzID0gWydAYW5ndWxhci1kZXZraXQvYnVpbGQtYW5ndWxhcicsICdAYW5ndWxhci9jbGknLCAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJywgJ3R5cGVzY3JpcHQnXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50U2hvd2Nhc2VFdWlWZXJzaW9uKClcbiAgICAgICAgICAgIC50aGVuKCh2ZXJzaW9uKSA9PiB0aGlzLnJldHJpZXZlUGFja2FnZURlcGVuZGVuY2llcyh2ZXJzaW9uKSlcbiAgICAgICAgICAgIC50aGVuKChkZXBlbmRlbmNpZXMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgZGVwZW5kZW5jaWVzIHRvIG9ubHkgd2hhdCBzdGFja2JsaXR6IG5lZWRzXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkQXJyID0gT2JqZWN0LmVudHJpZXMoZGVwZW5kZW5jaWVzKS5maWx0ZXIoKHYpID0+IHN0YWNrYmxpdHpEZXBlbmRlbmNpZXMuZmluZCgocykgPT4gcyA9PT0gdlswXSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkQXJyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYURlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdXVpZDogJzguMy4yJyxcbiAgICAgICAgICAgICAgICAgICAgJ25neC1kZXZpY2UtZGV0ZWN0b3InOiAnMy4wLjAnLFxuICAgICAgICAgICAgICAgICAgICAnbmd4LW1vbWVudCc6ICd+Ni4wLjAnLFxuICAgICAgICAgICAgICAgICAgICAnbmd4LW1hc2snOiAnXjE0LjAuMCcsXG4gICAgICAgICAgICAgICAgICAgICdjbGVhdmUuanMnOiAnXjEuNi4wJyxcbiAgICAgICAgICAgICAgICAgICAgbW9tZW50OiAnXjIuMTkuMycsXG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ14zLjAuMicsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgZGV2RGVwZW5kZW5jaWVzIHRvIG9ubHkgd2hhdCBzdGFja2JsaXR6IG5lZWRzXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRBcnIgPSBPYmplY3QuZW50cmllcyhkZXBlbmRlbmNpZXMpLmZpbHRlcigodikgPT4gc3RhY2tibGl0ekRldkRlcGVuZGVuY2llcy5maW5kKChzKSA9PiBzID09PSB2WzBdKSk7XG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0geyAuLi5leHRyYURlcGVuZGVuY2llcywgLi4uZmlsdGVyZWRPYmogfTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXZEZXBlbmRlbmNpZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWRBcnIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZGVwZW5kZW5jaWVzLCBkZXZEZXBlbmRlbmNpZXMgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgcGFja2FnZS5qc29uIGZpbGUgb2YgQGV1aS9kZXBzLWJhc2UgZm9yIHRoZSBnaXZlbiB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlcnNpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmV0cmlldmVQYWNrYWdlRGVwZW5kZW5jaWVzKHZlcnNpb24pOiBQcm9taXNlPFByb2plY3REZXBlbmRlbmNpZXM+IHtcbiAgICAgICAgcmV0dXJuIGZldGNoKGBodHRwczovL3VucGtnLmNvbS9AZXVpL2RlcHMtYmFzZUAke3ZlcnNpb259L3BhY2thZ2UuanNvbmApXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgICAgIC50aGVuKChwa2cpID0+IHBrZz8uZGVwZW5kZW5jaWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSB0aGUgZVVJIHZlcnNpb24gdXNlZCB0byBidWlsZCB0aGUgc2hvd2Nhc2UgZnJvbSBhcHBsaWNhdGlvbiBhcHAtbWV0YWRhdGEuanNvblxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEN1cnJlbnRTaG93Y2FzZUV1aVZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDx7IGFwcFZlcnNpb246IHN0cmluZyB9PignYXNzZXRzL2FwcC1tZXRhZGF0YS5qc29uJywgeyByZXNwb25zZVR5cGU6ICdqc29uJyB9KSkudGhlbihcbiAgICAgICAgICAgIChyZXMpID0+IHJlcz8uYXBwVmVyc2lvbiB8fCAnbGF0ZXN0J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lIGFuZCBzZWxlY3RvciBuYW1lIGZyb20gdGhlIHR5cGVzY3JpcHQgY29udGVudFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRlbnRzXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGV4dHJhY3RDb21wb25lbnRNZXRhZGF0YShjb250ZW50czogc3RyaW5nKToge1xuICAgICAgICBzZWxlY3Rvcjogc3RyaW5nO1xuICAgICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICB9IHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY29udGVudHMubWF0Y2goL2V4cG9ydCBjbGFzcyAoW1xcd1xcZF0rKS8pO1xuICAgICAgICBjb25zdCBzZWxlY3Rvck5hbWUgPSBjb250ZW50cy5tYXRjaCgvc2VsZWN0b3I6ICcoW1xcd1xcZC1dKyknLyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSA/IGNsYXNzTmFtZVsxXSA6ICcnLFxuICAgICAgICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yTmFtZSA/IHNlbGVjdG9yTmFtZVsxXSA6ICcnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4dHJhY3QgbW9kdWxlIGNsYXNzIG5hbWUgZnJvbSB0aGUgdHlwZXNjcmlwdCBjb250ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudHNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZXh0cmFjdE1vZHVsZU5hbWUoY29udGVudHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG1vZHVsZUNsYXNzID0gY29udGVudHMubWF0Y2goL2V4cG9ydCBjbGFzcyAoXFx3K01vZHVsZSkvKTtcbiAgICAgICAgcmV0dXJuIG1vZHVsZUNsYXNzID8gbW9kdWxlQ2xhc3NbMV0gOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZFZpdGFsTmdNb2R1bGVzKGNvbnRlbnRzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBjb25zdCBpbXBvcnRzID0gY29udGVudHMubWF0Y2goL2ltcG9ydHM6IFxcWyhbXFxzXFxTXSo/KVxcXS8pO1xuICAgICAgICAvLyBhcHBlbmRzIEJyb3dzZXJNb2R1bGUgdG8gaW1wb3J0c1xuICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoL2ltcG9ydHM6IFxcWyhbXFxzXFxTXSo/KVxcXS8sIGBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZSwgJDFdYCk7XG4gICAgICAgIC8vIGFwcGVuZHMgaW1wb3J0IG9mIEJyb3dzZXJNb2R1bGVcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XFxuJHtjb250ZW50c31gO1xuICAgIH1cbn1cbiIsIjxldWktYmxvY2stY29udGVudCBbaXNCbG9ja2VkXT1cIiFpc0xvYWRlZFwiPlxuICAgIDxpZnJhbWUgI2NvbnRhaW5lciBpZD1cInN0YWNrYmxpdHpcIj48L2lmcmFtZT5cbjwvZXVpLWJsb2NrLWNvbnRlbnQ+XG4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wbGF5Z3JvdW5kL3BsYXlncm91bmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0csT0FBTyxHQUFnQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBTXJILE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBQ1ksUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsUUFBNEIsRUFDNUIsSUFBZ0I7UUFIaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVk7UUFuQnJCLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQU16QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFXckIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNI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Q0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUN2RixrQ0FBa0M7UUFDbEMsT0FBTywrREFBK0QsUUFBUSxFQUFFLENBQUM7SUFDckYsQ0FBQzt3SUEvTVEsbUJBQW1COzRIQUFuQixtQkFBbUIsK1JBWUksVUFBVSxnRUN2QjlDLDJIQUdBOztrR0RRYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0ksZ0JBQWdCO21MQUtuQixLQUFLO3NCQURYLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFJRSxtQkFBbUI7c0JBRDFCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXVpQXBwU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgc2RrLCB7IFByb2plY3REZXBlbmRlbmNpZXMsIFZNIH0gZnJvbSAnQHN0YWNrYmxpdHovc2RrJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFuZ3VsYXJKc29uRmlsZSwgaW5kZXhIdG1sRmlsZSwgbWFpbkZpbGUsIFBBQ0tBR0VfSlNPTiwgcG9seWZpbGxzRmlsZSwgdHNDb25maWcgfSBmcm9tICcuL3N0YWNrYmxpdHouZmlsZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1wbGF5Z3JvdW5kJyxcbiAgICB0ZW1wbGF0ZVVybDogYHBsYXlncm91bmQuY29tcG9uZW50Lmh0bWxgLFxufSlcbmV4cG9ydCBjbGFzcyBQbGF5Z3JvdW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0aXRsZSA9ICdlVUkgUGxheWdyb3VuZCc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaHRtbENvbnRlbnQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0eXBlc2NyaXB0Q29udGVudDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjdGl2YXRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vZHVsZXM6IFt7IG5hbWU6IHN0cmluZzsgcGF0aDogc3RyaW5nIH1dO1xuICAgIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBzdGFja2JsaXR6RWxXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PjtcbiAgICAvKiogaW5zdGFuY2UgdGhhdCBob2xkcyB0aGUgc3RhY2tibGl0eiBWTSBvYmplY3QgKi9cbiAgICBwcml2YXRlIHN0YWNrYmxpdHpJbnN0YW5jZTogVk07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgYXBwU2hlbGw6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5hY3RpdmF0ZWQpIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLmFjdGl2YXRlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTdGFja2JsaXR6KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFN0YWNrYmxpdHooKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U3RhY2tibGl0ekRlcGVuZGVuY2llcygpXG4gICAgICAgICAgICAudGhlbigoZGVwcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVwZW5kZW5jaWVzLCBkZXZEZXBlbmRlbmNpZXMgfSA9IGRlcHM7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzZWxlY3RvciB9ID0gdGhpcy5leHRyYWN0Q29tcG9uZW50TWV0YWRhdGEodGhpcy50eXBlc2NyaXB0Q29udGVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMuZXh0cmFjdE1vZHVsZU5hbWUodGhpcy50eXBlc2NyaXB0Q29udGVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNkay5lbWJlZFByb2plY3QoXG4gICAgICAgICAgICAgICAgICAgICdzdGFja2JsaXR6JyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYEFuIGVVSSBleGFtcGxlIGZvciB0aGUgJHt0aGlzLnRpdGxlfS5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6ICdhbmd1bGFyLWNsaScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29tcG9uZW50Lmh0bWwnOiB0aGlzLmh0bWxDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29tcG9uZW50LnRzJzogdGhpcy5hcHBlbmRWaXRhbE5nTW9kdWxlcyh0aGlzLnR5cGVzY3JpcHRDb250ZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnc3JjL2FwcC5tb2R1bGUudHMnOiBtb2R1bGVGaWxlKGNsYXNzTmFtZSwgdGhpcy5tb2R1bGVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL21haW4udHMnOiBtYWluRmlsZShtb2R1bGVOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL3BvbHlmaWxscy50cyc6IHBvbHlmaWxsc0ZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9pbmRleC5odG1sJzogaW5kZXhIdG1sRmlsZShzZWxlY3RvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ3VsYXIuanNvbic6IGFuZ3VsYXJKc29uRmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2FnZS5qc29uJzogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlBBQ0tBR0VfSlNPTixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldkRlcGVuZGVuY2llcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RzY29uZmlnLmpzb24nOiB0c0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNvbnNvbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsZTogWydjb21wb25lbnQudHMnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNTAwLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoaW5zdGFuY2U6IFZNKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2JsaXR6SW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHN0YWNrYmxpdHogd2lsbCBuZWVkIGZpbHRlcmVkIGZyb20gQGV1aS9kZXBzLWJhc2VcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGFja2JsaXR6RGVwZW5kZW5jaWVzKCk6IFByb21pc2U8e1xuICAgICAgICBkZXBlbmRlbmNpZXM6IFByb2plY3REZXBlbmRlbmNpZXM7XG4gICAgICAgIGRldkRlcGVuZGVuY2llczogUHJvamVjdERlcGVuZGVuY2llcztcbiAgICB9PiB7XG4gICAgICAgIC8vIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgb25seSBzdGFja2JsaXR6IG5lZWRzXG4gICAgICAgIGNvbnN0IHN0YWNrYmxpdHpEZXBlbmRlbmNpZXMgPSBbXG4gICAgICAgICAgICAnQGFuZ3VsYXIvYW5pbWF0aW9ucycsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvY2RrJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9jb21tb24nLFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9jb3JlJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9mb3JtcycsXG4gICAgICAgICAgICAnQGFuZ3VsYXIvbWF0ZXJpYWwnLFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJyxcbiAgICAgICAgICAgICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWMnLFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL3JvdXRlcicsXG4gICAgICAgICAgICAnQGV1aS9iYXNlJyxcbiAgICAgICAgICAgICdAZXVpL2NvbXBvbmVudHMnLFxuICAgICAgICAgICAgJ0BldWkvY29yZScsXG4gICAgICAgICAgICAnQGV1aS9zdHlsZXMnLFxuICAgICAgICAgICAgJ0BldWkvc3R5bGVzLWJhc2UnLFxuICAgICAgICAgICAgJ0BuZ3J4L2VmZmVjdHMnLFxuICAgICAgICAgICAgJ0BuZ3J4L3N0b3JlJyxcbiAgICAgICAgICAgICdAbmd4LXRyYW5zbGF0ZS9jb3JlJyxcbiAgICAgICAgICAgICdsb2NhbGZvcmFnZScsXG4gICAgICAgICAgICAnbG9kYXNoLWVzJyxcbiAgICAgICAgICAgICdyZXNlbGVjdCcsXG4gICAgICAgICAgICAncnhqcycsXG4gICAgICAgICAgICAndHNsaWInLFxuICAgICAgICAgICAgJ3pvbmUuanMnLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHN0YWNrYmxpdHpEZXZEZXBlbmRlbmNpZXMgPSBbJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyJywgJ0Bhbmd1bGFyL2NsaScsICdAYW5ndWxhci9jb21waWxlci1jbGknLCAndHlwZXNjcmlwdCddO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRTaG93Y2FzZUV1aVZlcnNpb24oKVxuICAgICAgICAgICAgLnRoZW4oKHZlcnNpb24pID0+IHRoaXMucmV0cmlldmVQYWNrYWdlRGVwZW5kZW5jaWVzKHZlcnNpb24pKVxuICAgICAgICAgICAgLnRoZW4oKGRlcGVuZGVuY2llcykgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGZpbHRlciBkZXBlbmRlbmNpZXMgdG8gb25seSB3aGF0IHN0YWNrYmxpdHogbmVlZHNcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRBcnIgPSBPYmplY3QuZW50cmllcyhkZXBlbmRlbmNpZXMpLmZpbHRlcigodikgPT4gc3RhY2tibGl0ekRlcGVuZGVuY2llcy5maW5kKChzKSA9PiBzID09PSB2WzBdKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRPYmogPSBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWRBcnIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhRGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgICAgICAgICB1dWlkOiAnOC4zLjInLFxuICAgICAgICAgICAgICAgICAgICAnbmd4LWRldmljZS1kZXRlY3Rvcic6ICczLjAuMCcsXG4gICAgICAgICAgICAgICAgICAgICduZ3gtbW9tZW50JzogJ342LjAuMCcsXG4gICAgICAgICAgICAgICAgICAgICduZ3gtbWFzayc6ICdeMTQuMC4wJyxcbiAgICAgICAgICAgICAgICAgICAgJ2NsZWF2ZS5qcyc6ICdeMS42LjAnLFxuICAgICAgICAgICAgICAgICAgICBtb21lbnQ6ICdeMi4xOS4zJyxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kOiAnXjMuMC4yJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC8vIGZpbHRlciBkZXZEZXBlbmRlbmNpZXMgdG8gb25seSB3aGF0IHN0YWNrYmxpdHogbmVlZHNcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEFyciA9IE9iamVjdC5lbnRyaWVzKGRlcGVuZGVuY2llcykuZmlsdGVyKCh2KSA9PiBzdGFja2JsaXR6RGV2RGVwZW5kZW5jaWVzLmZpbmQoKHMpID0+IHMgPT09IHZbMF0pKTtcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgPSB7IC4uLmV4dHJhRGVwZW5kZW5jaWVzLCAuLi5maWx0ZXJlZE9iaiB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRldkRlcGVuZGVuY2llcyA9IE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZEFycik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBkZXBlbmRlbmNpZXMsIGRldkRlcGVuZGVuY2llcyB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgdGhlIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBvZiBAZXVpL2RlcHMtYmFzZSBmb3IgdGhlIGdpdmVuIHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmVyc2lvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXRyaWV2ZVBhY2thZ2VEZXBlbmRlbmNpZXModmVyc2lvbik6IFByb21pc2U8UHJvamVjdERlcGVuZGVuY2llcz4ge1xuICAgICAgICByZXR1cm4gZmV0Y2goYGh0dHBzOi8vdW5wa2cuY29tL0BldWkvZGVwcy1iYXNlQCR7dmVyc2lvbn0vcGFja2FnZS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgICAgICAgLnRoZW4oKHBrZykgPT4gcGtnPy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBlVUkgdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIHRoZSBzaG93Y2FzZSBmcm9tIGFwcGxpY2F0aW9uIGFwcC1tZXRhZGF0YS5qc29uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q3VycmVudFNob3djYXNlRXVpVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PHsgYXBwVmVyc2lvbjogc3RyaW5nIH0+KCdhc3NldHMvYXBwLW1ldGFkYXRhLmpzb24nLCB7IHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pKS50aGVuKFxuICAgICAgICAgICAgKHJlcykgPT4gcmVzPy5hcHBWZXJzaW9uIHx8ICdsYXRlc3QnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUgY29tcG9uZW50IGNsYXNzIG5hbWUgYW5kIHNlbGVjdG9yIG5hbWUgZnJvbSB0aGUgdHlwZXNjcmlwdCBjb250ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudHNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZXh0cmFjdENvbXBvbmVudE1ldGFkYXRhKGNvbnRlbnRzOiBzdHJpbmcpOiB7XG4gICAgICAgIHNlbGVjdG9yOiBzdHJpbmc7XG4gICAgICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBjb250ZW50cy5tYXRjaCgvZXhwb3J0IGNsYXNzIChbXFx3XFxkXSspLyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yTmFtZSA9IGNvbnRlbnRzLm1hdGNoKC9zZWxlY3RvcjogJyhbXFx3XFxkLV0rKScvKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lID8gY2xhc3NOYW1lWzFdIDogJycsXG4gICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0b3JOYW1lID8gc2VsZWN0b3JOYW1lWzFdIDogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXh0cmFjdCBtb2R1bGUgY2xhc3MgbmFtZSBmcm9tIHRoZSB0eXBlc2NyaXB0IGNvbnRlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250ZW50c1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0TW9kdWxlTmFtZShjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbW9kdWxlQ2xhc3MgPSBjb250ZW50cy5tYXRjaCgvZXhwb3J0IGNsYXNzIChcXHcrTW9kdWxlKS8pO1xuICAgICAgICByZXR1cm4gbW9kdWxlQ2xhc3MgPyBtb2R1bGVDbGFzc1sxXSA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kVml0YWxOZ01vZHVsZXMoY29udGVudHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGNvbnN0IGltcG9ydHMgPSBjb250ZW50cy5tYXRjaCgvaW1wb3J0czogXFxbKFtcXHNcXFNdKj8pXFxdLyk7XG4gICAgICAgIC8vIGFwcGVuZHMgQnJvd3Nlck1vZHVsZSB0byBpbXBvcnRzXG4gICAgICAgIGNvbnRlbnRzID0gY29udGVudHMucmVwbGFjZSgvaW1wb3J0czogXFxbKFtcXHNcXFNdKj8pXFxdLywgYGltcG9ydHM6IFtCcm93c2VyTW9kdWxlLCAkMV1gKTtcbiAgICAgICAgLy8gYXBwZW5kcyBpbXBvcnQgb2YgQnJvd3Nlck1vZHVsZVxuICAgICAgICByZXR1cm4gYGltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcXG4ke2NvbnRlbnRzfWA7XG4gICAgfVxufVxuIiwiPGV1aS1ibG9jay1jb250ZW50IFtpc0Jsb2NrZWRdPVwiIWlzTG9hZGVkXCI+XG4gICAgPGlmcmFtZSAjY29udGFpbmVyIGlkPVwic3RhY2tibGl0elwiPjwvaWZyYW1lPlxuPC9ldWktYmxvY2stY29udGVudD5cbiJdfQ==