@valtimo/dossier 10.2.1 → 10.3.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.
- package/esm2020/lib/components/note-modal/note-modal.component.mjs +3 -3
- package/esm2020/lib/dossier-assign-user/dossier-assign-user.component.mjs +1 -1
- package/esm2020/lib/dossier-detail/dossier-detail.component.mjs +3 -3
- package/esm2020/lib/dossier-detail/tab/notes/notes.component.mjs +13 -11
- package/esm2020/lib/dossier-detail/tab/summary/summary.component.mjs +3 -3
- package/esm2020/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +1 -1
- package/esm2020/lib/dossier-detail-tab-enum.mjs +1 -1
- package/esm2020/lib/dossier-list/dossier-list.component.mjs +40 -19
- package/esm2020/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +3 -3
- package/esm2020/lib/dossier.module.mjs +4 -4
- package/esm2020/lib/models/dossier-parameters.model.mjs +17 -0
- package/esm2020/lib/models/index.mjs +2 -1
- package/esm2020/lib/models/notes.model.mjs +1 -1
- package/esm2020/lib/services/dossier-parameter.service.mjs +130 -0
- package/esm2020/lib/services/index.mjs +2 -1
- package/esm2020/lib/services/notes.service.mjs +1 -1
- package/fesm2015/valtimo-dossier.mjs +173 -40
- package/fesm2015/valtimo-dossier.mjs.map +1 -1
- package/fesm2020/valtimo-dossier.mjs +206 -41
- package/fesm2020/valtimo-dossier.mjs.map +1 -1
- package/lib/components/note-modal/note-modal.component.d.ts.map +1 -1
- package/lib/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/dossier-detail/tab/notes/notes.component.d.ts.map +1 -1
- package/lib/dossier-list/dossier-list.component.d.ts +7 -4
- package/lib/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/models/dossier-parameters.model.d.ts +14 -0
- package/lib/models/dossier-parameters.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/notes.model.d.ts.map +1 -1
- package/lib/services/dossier-parameter.service.d.ts +26 -0
- package/lib/services/dossier-parameter.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/notes.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { Component, ViewChild } from '@angular/core';
|
|
17
17
|
import { AdvancedDocumentSearchRequestImpl, } from '@valtimo/document';
|
|
18
18
|
import moment from 'moment';
|
|
19
|
-
import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map, of, switchMap, take, tap, } from 'rxjs';
|
|
19
|
+
import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map, of, Subject, switchMap, take, tap, } from 'rxjs';
|
|
20
20
|
import { DefaultTabs } from '../dossier-detail-tab-enum';
|
|
21
21
|
import * as i0 from "@angular/core";
|
|
22
22
|
import * as i1 from "@angular/router";
|
|
@@ -32,7 +32,7 @@ import * as i10 from "@ng-bootstrap/ng-bootstrap";
|
|
|
32
32
|
import * as i11 from "../dossier-process-start-modal/dossier-process-start-modal.component";
|
|
33
33
|
moment.locale(localStorage.getItem('langKey') || '');
|
|
34
34
|
export class DossierListComponent {
|
|
35
|
-
constructor(route, router, documentService, translateService, dossierService, logger, configService, dossierColumnService) {
|
|
35
|
+
constructor(route, router, documentService, translateService, dossierService, logger, configService, dossierColumnService, dossierParameterService) {
|
|
36
36
|
this.route = route;
|
|
37
37
|
this.router = router;
|
|
38
38
|
this.documentService = documentService;
|
|
@@ -41,6 +41,7 @@ export class DossierListComponent {
|
|
|
41
41
|
this.logger = logger;
|
|
42
42
|
this.configService = configService;
|
|
43
43
|
this.dossierColumnService = dossierColumnService;
|
|
44
|
+
this.dossierParameterService = dossierParameterService;
|
|
44
45
|
this.dossierVisibleTabs = null;
|
|
45
46
|
this.selectedProcessDocumentDefinition = null;
|
|
46
47
|
this.modalListenerAdded = false;
|
|
@@ -76,7 +77,6 @@ export class DossierListComponent {
|
|
|
76
77
|
const translationKey = `fieldLabels.${column.translationKey}`;
|
|
77
78
|
const translation = this.translateService.instant(translationKey);
|
|
78
79
|
const validTranslation = translation !== translationKey && translation;
|
|
79
|
-
console.log('column', column);
|
|
80
80
|
return {
|
|
81
81
|
key: hasEnvConfig ? column.propertyName : column.translationKey,
|
|
82
82
|
label: column.title || validTranslation || column.translationKey,
|
|
@@ -112,7 +112,7 @@ export class DossierListComponent {
|
|
|
112
112
|
sort: undefined,
|
|
113
113
|
};
|
|
114
114
|
this.pagination$ = new BehaviorSubject(undefined);
|
|
115
|
-
this.paginationCopy$ = this.pagination$.pipe(map(pagination => pagination && JSON.parse(JSON.stringify(pagination))));
|
|
115
|
+
this.paginationCopy$ = this.pagination$.pipe(map(pagination => pagination && JSON.parse(JSON.stringify(pagination))), tap(pagination => this.dossierParameterService.setPaginationParameters(pagination)));
|
|
116
116
|
this.documentSearchRequest$ = combineLatest([this.pagination$, this.documentDefinitionName$]).pipe(filter(([pagination]) => !!pagination), map(([pagination, documentDefinitionName]) => new AdvancedDocumentSearchRequestImpl(documentDefinitionName, pagination.page - 1, pagination.size, pagination.sort)));
|
|
117
117
|
this.searchFieldValues$ = new BehaviorSubject({});
|
|
118
118
|
this.assigneeFilter$ = new BehaviorSubject('ALL');
|
|
@@ -158,18 +158,20 @@ export class DossierListComponent {
|
|
|
158
158
|
else {
|
|
159
159
|
const docsToMap = documents;
|
|
160
160
|
return docsToMap.content.reduce((acc, curr) => {
|
|
161
|
-
const propsObject = {};
|
|
161
|
+
const propsObject = { id: curr.id };
|
|
162
162
|
curr.items.forEach(item => {
|
|
163
163
|
propsObject[item.key] = item.value;
|
|
164
164
|
});
|
|
165
165
|
return [...acc, propsObject];
|
|
166
166
|
}, []);
|
|
167
167
|
}
|
|
168
|
-
}), tap(
|
|
168
|
+
}), tap(() => this.loading$.next(false)));
|
|
169
|
+
this.setSearchFieldValuesSubject$ = new Subject();
|
|
169
170
|
this.dossierVisibleTabs = this.configService.config?.visibleDossierListTabs || null;
|
|
170
171
|
}
|
|
171
172
|
ngOnInit() {
|
|
172
173
|
this.modalListenerAdded = false;
|
|
174
|
+
this.setSearchFieldParametersInComponent();
|
|
173
175
|
}
|
|
174
176
|
pageChange(newPage) {
|
|
175
177
|
this.pagination$.pipe(take(1)).subscribe(pagination => {
|
|
@@ -228,6 +230,13 @@ export class DossierListComponent {
|
|
|
228
230
|
}
|
|
229
231
|
search(searchFieldValues) {
|
|
230
232
|
this.searchFieldValues$.next(searchFieldValues || {});
|
|
233
|
+
this.dossierParameterService.setSearchParameters(searchFieldValues);
|
|
234
|
+
}
|
|
235
|
+
tabChange(tab) {
|
|
236
|
+
this.pagination$.pipe(take(1)).subscribe(pagination => {
|
|
237
|
+
this.pagination$.next({ ...pagination, page: 1 });
|
|
238
|
+
});
|
|
239
|
+
this.assigneeFilter$.next(tab.nextId.toUpperCase());
|
|
231
240
|
}
|
|
232
241
|
mapSearchValuesToFilters(values) {
|
|
233
242
|
const filters = [];
|
|
@@ -236,6 +245,9 @@ export class DossierListComponent {
|
|
|
236
245
|
if (searchValue.start) {
|
|
237
246
|
filters.push({ key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end });
|
|
238
247
|
}
|
|
248
|
+
else if (Array.isArray(searchValue)) {
|
|
249
|
+
filters.push({ key: valueKey, values: searchValue });
|
|
250
|
+
}
|
|
239
251
|
else {
|
|
240
252
|
filters.push({ key: valueKey, values: [searchValue] });
|
|
241
253
|
}
|
|
@@ -253,13 +265,19 @@ export class DossierListComponent {
|
|
|
253
265
|
});
|
|
254
266
|
}
|
|
255
267
|
setPagination(documentDefinitionName) {
|
|
256
|
-
combineLatest([
|
|
268
|
+
combineLatest([
|
|
269
|
+
this.hasStoredSearchRequest$,
|
|
270
|
+
this.storedSearchRequestKey$,
|
|
271
|
+
this.columns$,
|
|
272
|
+
this.dossierParameterService.queryPaginationParams$,
|
|
273
|
+
])
|
|
257
274
|
.pipe(take(1))
|
|
258
|
-
.subscribe(([hasStoredSearchRequest, storedSearchRequestKey, columns]) => {
|
|
275
|
+
.subscribe(([hasStoredSearchRequest, storedSearchRequestKey, columns, queryPaginationParams]) => {
|
|
259
276
|
const defaultPagination = this.getDefaultPagination(columns);
|
|
260
277
|
const storedPagination = this.getStoredPagination(hasStoredSearchRequest, storedSearchRequestKey);
|
|
261
|
-
|
|
262
|
-
this.
|
|
278
|
+
const paginationToUse = queryPaginationParams || storedPagination || defaultPagination;
|
|
279
|
+
this.logger.debug(`Set pagination: ${JSON.stringify(paginationToUse)}`);
|
|
280
|
+
this.pagination$.next(paginationToUse);
|
|
263
281
|
});
|
|
264
282
|
}
|
|
265
283
|
getDefaultPagination(columns) {
|
|
@@ -301,20 +319,23 @@ export class DossierListComponent {
|
|
|
301
319
|
}
|
|
302
320
|
});
|
|
303
321
|
}
|
|
304
|
-
|
|
305
|
-
this.
|
|
306
|
-
|
|
322
|
+
setSearchFieldParametersInComponent() {
|
|
323
|
+
this.dossierParameterService.querySearchParams$.pipe(take(1)).subscribe(values => {
|
|
324
|
+
if (Object.keys(values || {}).length > 0) {
|
|
325
|
+
setTimeout(() => {
|
|
326
|
+
this.setSearchFieldValuesSubject$.next(values);
|
|
327
|
+
});
|
|
328
|
+
}
|
|
307
329
|
});
|
|
308
|
-
this.assigneeFilter$.next(tab.nextId.toUpperCase());
|
|
309
330
|
}
|
|
310
331
|
}
|
|
311
|
-
DossierListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DossierListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.DocumentService }, { token: i3.TranslateService }, { token: i4.DossierService }, { token: i5.NGXLogger }, { token: i6.ConfigService }, { token: i7.DossierColumnService }], target: i0.ɵɵFactoryTarget.Component });
|
|
312
|
-
DossierListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DossierListComponent, selector: "valtimo-dossier-list", viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div\n *ngIf=\"\n associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\n \"\n >\n <div class=\"text-right mt-m3px mb-3\">\n <button\n type=\"button\"\n class=\"btn btn-space btn-primary mr-0\"\n (click)=\"startDossier()\"\n [ngbTooltip]=\"associatedProcessDocumentDefinitions.length === 0 ? 'No action' : null\"\n placement=\"bottom\"\n [disabled]=\"associatedProcessDocumentDefinitions.length === 0 || obs.loading\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'Start Dossier' | translate }}\n </button>\n </div>\n\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <valtimo-spinner *ngIf=\"obs.loading\"></valtimo-spinner>\n <ng-container *ngTemplateOutlet=\"searchFields\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <valtimo-dossier-process-start-modal #processStartModal></valtimo-dossier-process-start-modal>\n</div>\n\n<ng-template #searchFields>\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"loadingDocumentSearchFields$ | async\"\n [searchFields]=\"documentSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"paginationCopy$ | async as pagination\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"documentItems$ | async as documentItems\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"documentItems\"\n [fields]=\"fields\"\n (rowClicked)=\"rowClick($event)\"\n [pagination]=\"pagination\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"dossierList\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n [initialSortState]=\"pagination.sort\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ (schema$ | async)?.title }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n pagination?.collectionSize || 0\n }}</sup>\n </h3>\n </div>\n <div tabs *ngIf=\"canHaveAssignee$ | async\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ul ngbNav [destroyOnHide]=\"false\" (navChange)=\"tabChange($event)\" class=\"nav-tabs\">\n <li\n *ngFor=\"let tab of dossierVisibleTabs\"\n [ngbNavItem]=\"tab\"\n [title]=\"'dossier.tabs.' + tab | translate\"\n >\n <a ngbNavLink>{{ 'dossier.tabs.' + tab | translate }}</a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabs>\n <ul\n *ngIf=\"dossierVisibleTabs === null; else configuredTabs\"\n ngbNav\n [destroyOnHide]=\"false\"\n (navChange)=\"tabChange($event)\"\n class=\"nav-tabs\"\n >\n <li ngbNavItem=\"all\" [title]=\"'dossier.tabs.ALL' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.ALL' | translate }}</a>\n </li>\n <li ngbNavItem=\"mine\" [title]=\"'dossier.tabs.MINE' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.MINE' | translate }}</a>\n </li>\n <li ngbNavItem=\"open\" [title]=\"'dossier.tabs.OPEN' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.OPEN' | translate }}</a>\n </li>\n </ul>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i9.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i9.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "documentDefinitionName"], outputs: ["doSearch"] }, { kind: "directive", type: i10.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i10.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i10.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i11.DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
332
|
+
DossierListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DossierListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.DocumentService }, { token: i3.TranslateService }, { token: i4.DossierService }, { token: i5.NGXLogger }, { token: i6.ConfigService }, { token: i7.DossierColumnService }, { token: i7.DossierParameterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
333
|
+
DossierListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DossierListComponent, selector: "valtimo-dossier-list", viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div\n *ngIf=\"\n associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\n \"\n >\n <div class=\"text-right mt-m3px mb-3\">\n <button\n type=\"button\"\n class=\"btn btn-space btn-primary mr-0\"\n (click)=\"startDossier()\"\n [ngbTooltip]=\"associatedProcessDocumentDefinitions.length === 0 ? 'No action' : null\"\n placement=\"bottom\"\n [disabled]=\"associatedProcessDocumentDefinitions.length === 0 || obs.loading\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'Start Dossier' | translate }}\n </button>\n </div>\n\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <valtimo-spinner *ngIf=\"obs.loading\"></valtimo-spinner>\n <ng-container *ngTemplateOutlet=\"searchFields\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <valtimo-dossier-process-start-modal #processStartModal></valtimo-dossier-process-start-modal>\n</div>\n\n<ng-template #searchFields>\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"loadingDocumentSearchFields$ | async\"\n [searchFields]=\"documentSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"paginationCopy$ | async as pagination\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"documentItems$ | async as documentItems\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"documentItems\"\n [fields]=\"fields\"\n (rowClicked)=\"rowClick($event)\"\n [pagination]=\"pagination\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"dossierList\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n [initialSortState]=\"pagination.sort\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ (schema$ | async)?.title }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n pagination?.collectionSize || 0\n }}</sup>\n </h3>\n </div>\n <div tabs *ngIf=\"canHaveAssignee$ | async\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ul ngbNav [destroyOnHide]=\"false\" (navChange)=\"tabChange($event)\" class=\"nav-tabs\">\n <li\n *ngFor=\"let tab of dossierVisibleTabs\"\n [ngbNavItem]=\"tab\"\n [title]=\"'dossier.tabs.' + tab | translate\"\n >\n <a ngbNavLink>{{ 'dossier.tabs.' + tab | translate }}</a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabs>\n <ul\n *ngIf=\"dossierVisibleTabs === null; else configuredTabs\"\n ngbNav\n [destroyOnHide]=\"false\"\n (navChange)=\"tabChange($event)\"\n class=\"nav-tabs\"\n >\n <li ngbNavItem=\"all\" [title]=\"'dossier.tabs.ALL' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.ALL' | translate }}</a>\n </li>\n <li ngbNavItem=\"mine\" [title]=\"'dossier.tabs.MINE' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.MINE' | translate }}</a>\n </li>\n <li ngbNavItem=\"open\" [title]=\"'dossier.tabs.OPEN' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.OPEN' | translate }}</a>\n </li>\n </ul>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i9.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i9.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "documentDefinitionName", "setValuesSubject$"], outputs: ["doSearch"] }, { kind: "directive", type: i10.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i10.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i10.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i11.DossierProcessStartModalComponent, selector: "valtimo-dossier-process-start-modal" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
313
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DossierListComponent, decorators: [{
|
|
314
335
|
type: Component,
|
|
315
|
-
args: [{ selector: 'valtimo-dossier-list', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div\n *ngIf=\"\n associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\n \"\n >\n <div class=\"text-right mt-m3px mb-3\">\n <button\n type=\"button\"\n class=\"btn btn-space btn-primary mr-0\"\n (click)=\"startDossier()\"\n [ngbTooltip]=\"associatedProcessDocumentDefinitions.length === 0 ? 'No action' : null\"\n placement=\"bottom\"\n [disabled]=\"associatedProcessDocumentDefinitions.length === 0 || obs.loading\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'Start Dossier' | translate }}\n </button>\n </div>\n\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <valtimo-spinner *ngIf=\"obs.loading\"></valtimo-spinner>\n <ng-container *ngTemplateOutlet=\"searchFields\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <valtimo-dossier-process-start-modal #processStartModal></valtimo-dossier-process-start-modal>\n</div>\n\n<ng-template #searchFields>\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"loadingDocumentSearchFields$ | async\"\n [searchFields]=\"documentSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"paginationCopy$ | async as pagination\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"documentItems$ | async as documentItems\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"documentItems\"\n [fields]=\"fields\"\n (rowClicked)=\"rowClick($event)\"\n [pagination]=\"pagination\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"dossierList\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n [initialSortState]=\"pagination.sort\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ (schema$ | async)?.title }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n pagination?.collectionSize || 0\n }}</sup>\n </h3>\n </div>\n <div tabs *ngIf=\"canHaveAssignee$ | async\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ul ngbNav [destroyOnHide]=\"false\" (navChange)=\"tabChange($event)\" class=\"nav-tabs\">\n <li\n *ngFor=\"let tab of dossierVisibleTabs\"\n [ngbNavItem]=\"tab\"\n [title]=\"'dossier.tabs.' + tab | translate\"\n >\n <a ngbNavLink>{{ 'dossier.tabs.' + tab | translate }}</a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabs>\n <ul\n *ngIf=\"dossierVisibleTabs === null; else configuredTabs\"\n ngbNav\n [destroyOnHide]=\"false\"\n (navChange)=\"tabChange($event)\"\n class=\"nav-tabs\"\n >\n <li ngbNavItem=\"all\" [title]=\"'dossier.tabs.ALL' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.ALL' | translate }}</a>\n </li>\n <li ngbNavItem=\"mine\" [title]=\"'dossier.tabs.MINE' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.MINE' | translate }}</a>\n </li>\n <li ngbNavItem=\"open\" [title]=\"'dossier.tabs.OPEN' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.OPEN' | translate }}</a>\n </li>\n </ul>\n</ng-template>\n" }]
|
|
316
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.DocumentService }, { type: i3.TranslateService }, { type: i4.DossierService }, { type: i5.NGXLogger }, { type: i6.ConfigService }, { type: i7.DossierColumnService }]; }, propDecorators: { processStart: [{
|
|
336
|
+
args: [{ selector: 'valtimo-dossier-list', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div\n *ngIf=\"\n associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\n \"\n >\n <div class=\"text-right mt-m3px mb-3\">\n <button\n type=\"button\"\n class=\"btn btn-space btn-primary mr-0\"\n (click)=\"startDossier()\"\n [ngbTooltip]=\"associatedProcessDocumentDefinitions.length === 0 ? 'No action' : null\"\n placement=\"bottom\"\n [disabled]=\"associatedProcessDocumentDefinitions.length === 0 || obs.loading\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'Start Dossier' | translate }}\n </button>\n </div>\n\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <valtimo-spinner *ngIf=\"obs.loading\"></valtimo-spinner>\n <ng-container *ngTemplateOutlet=\"searchFields\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <valtimo-dossier-process-start-modal #processStartModal></valtimo-dossier-process-start-modal>\n</div>\n\n<ng-template #searchFields>\n <div class=\"mb-3\">\n <valtimo-search-fields\n [loading]=\"loadingDocumentSearchFields$ | async\"\n [searchFields]=\"documentSearchFields$ | async\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n ></valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"paginationCopy$ | async as pagination\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"documentItems$ | async as documentItems\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"documentItems\"\n [fields]=\"fields\"\n (rowClicked)=\"rowClick($event)\"\n [pagination]=\"pagination\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"dossierList\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n [initialSortState]=\"pagination.sort\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ (schema$ | async)?.title }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n pagination?.collectionSize || 0\n }}</sup>\n </h3>\n </div>\n <div tabs *ngIf=\"canHaveAssignee$ | async\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ul ngbNav [destroyOnHide]=\"false\" (navChange)=\"tabChange($event)\" class=\"nav-tabs\">\n <li\n *ngFor=\"let tab of dossierVisibleTabs\"\n [ngbNavItem]=\"tab\"\n [title]=\"'dossier.tabs.' + tab | translate\"\n >\n <a ngbNavLink>{{ 'dossier.tabs.' + tab | translate }}</a>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #tabs>\n <ul\n *ngIf=\"dossierVisibleTabs === null; else configuredTabs\"\n ngbNav\n [destroyOnHide]=\"false\"\n (navChange)=\"tabChange($event)\"\n class=\"nav-tabs\"\n >\n <li ngbNavItem=\"all\" [title]=\"'dossier.tabs.ALL' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.ALL' | translate }}</a>\n </li>\n <li ngbNavItem=\"mine\" [title]=\"'dossier.tabs.MINE' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.MINE' | translate }}</a>\n </li>\n <li ngbNavItem=\"open\" [title]=\"'dossier.tabs.OPEN' | translate\">\n <a ngbNavLink>{{ 'dossier.tabs.OPEN' | translate }}</a>\n </li>\n </ul>\n</ng-template>\n" }]
|
|
337
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.DocumentService }, { type: i3.TranslateService }, { type: i4.DossierService }, { type: i5.NGXLogger }, { type: i6.ConfigService }, { type: i7.DossierColumnService }, { type: i7.DossierParameterService }]; }, propDecorators: { processStart: [{
|
|
317
338
|
type: ViewChild,
|
|
318
339
|
args: ['processStartModal']
|
|
319
340
|
}] } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBYTNELE9BQU8sRUFFTCxpQ0FBaUMsR0FNbEMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBV3ZELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sb0JBQW9CO0lBNlAvQixZQUNtQixLQUFxQixFQUNyQixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLE1BQWlCLEVBQ2pCLGFBQTRCLEVBQzVCLG9CQUEwQztRQVAxQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hD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Q0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBMkI7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7a0hBdmJVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtLQ3JFakMsbXRNQW9LQTs0RkQvRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHNCQUFzQjsyU0FLQSxZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXNzaWduZWVGaWx0ZXIsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERlZmluaXRpb25Db2x1bW4sXG4gIERvc3NpZXJMaXN0VGFiLFxuICBTZWFyY2hGaWVsZCxcbiAgU2VhcmNoRmllbGRWYWx1ZXMsXG4gIFNlYXJjaEZpbHRlcixcbiAgU2VhcmNoRmlsdGVyUmFuZ2UsXG59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3RJbXBsLFxuICBEb2N1bWVudHMsXG4gIERvY3VtZW50U2VydmljZSxcbiAgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbixcbiAgU29ydFN0YXRlLFxuICBTcGVjaWZpZWREb2N1bWVudHMsXG59IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZWZhdWx0VGFic30gZnJvbSAnLi4vZG9zc2llci1kZXRhaWwtdGFiLWVudW0nO1xuaW1wb3J0IHtEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llclNlcnZpY2V9IGZyb20gJy4uL2Rvc3NpZXIuc2VydmljZSc7XG5pbXBvcnQge0xpc3RGaWVsZCwgUGFnaW5hdGlvbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge05nYk5hdkNoYW5nZUV2ZW50fSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge0Rvc3NpZXJDb2x1bW5TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12YXJcbmRlY2xhcmUgdmFyICQ7XG5cbm1vbWVudC5sb2NhbGUobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmdLZXknKSB8fCAnJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbGlzdC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgncHJvY2Vzc1N0YXJ0TW9kYWwnKSBwcm9jZXNzU3RhcnQ6IERvc3NpZXJQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudDtcblxuICBwdWJsaWMgZG9zc2llclZpc2libGVUYWJzOiBBcnJheTxEb3NzaWVyTGlzdFRhYj4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG1vZGFsTGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGxvYWRpbmdEb2N1bWVudFNlYXJjaEZpZWxkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgfHwgJycpLFxuICAgIHRhcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucmVzZXRQYWdpbmF0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzRW52Q29sdW1uQ29uZmlnJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSB8fCAnJyksXG4gICAgbWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9zc2llckNvbHVtblNlcnZpY2UuaGFzRW52aXJvbm1lbnRDb25maWcoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICApXG4gICk7XG5cbiAgcmVhZG9ubHkgY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FzZVNldHRpbmdzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoY2FzZVNldHRpbmdzID0+IGNhc2VTZXR0aW5ncz8uY2FuSGF2ZUFzc2lnbmVlKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50U2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4gfCBudWxsPiA9XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdEb2N1bWVudFNlYXJjaEZpZWxkcyQubmV4dCh0cnVlKSksXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudFNlYXJjaEZpZWxkcyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdEb2N1bWVudFNlYXJjaEZpZWxkcyQubmV4dChmYWxzZSkpXG4gICAgKTtcblxuICByZWFkb25seSBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24+PiA9XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZVxuICAgICAgICAgID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICAgOiBvZihbXSlcbiAgICAgICksXG4gICAgICBtYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMuZmlsdGVyKGRlZmluaXRpb24gPT4gZGVmaW5pdGlvbi5jYW5Jbml0aWFsaXplRG9jdW1lbnQpXG4gICAgICApXG4gICAgKTtcblxuICByZWFkb25seSBzY2hlbWEkID0gdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudERlZmluaXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICApLFxuICAgIG1hcChkb2N1bWVudERlZmluaXRpb24gPT4gZG9jdW1lbnREZWZpbml0aW9uPy5zY2hlbWEpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgIG1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+IGBsaXN0LXNlYXJjaC0ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9YClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhc1N0b3JlZFNlYXJjaFJlcXVlc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdG9yZWRTZWFyY2hSZXF1ZXN0S2V5JC5waXBlKFxuICAgIG1hcChzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5ID0+IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXkpICE9PSBudWxsKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzQXBpQ29sdW1uQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sdW1ucyQ6IE9ic2VydmFibGU8QXJyYXk8RGVmaW5pdGlvbkNvbHVtbj4+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvc3NpZXJDb2x1bW5TZXJ2aWNlLmdldERlZmluaXRpb25Db2x1bW5zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuaGFzQXBpQ29sdW1uQ29uZmlnJC5uZXh0KHJlcy5oYXNBcGlDb25maWcpO1xuICAgICAgICByZXR1cm4gcmVzLmNvbHVtbnM7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBBU1NJR05FRV9LRVkgPSAnYXNzaWduZWVGdWxsTmFtZSc7XG5cbiAgcmVhZG9ubHkgZmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxMaXN0RmllbGQ+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuY29sdW1ucyQsXG4gICAgdGhpcy5jYW5IYXZlQXNzaWduZWUkLFxuICAgIHRoaXMuaGFzRW52Q29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtjb2x1bW5zLCBjYW5IYXZlQXNzaWduZWUsIGhhc0VudkNvbmZpZ10pID0+IFtcbiAgICAgIC4uLmNvbHVtbnNcbiAgICAgICAgLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gYGZpZWxkTGFiZWxzLiR7Y29sdW1uLnRyYW5zbGF0aW9uS2V5fWA7XG4gICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0cmFuc2xhdGlvbktleSk7XG4gICAgICAgICAgY29uc3QgdmFsaWRUcmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uICE9PSB0cmFuc2xhdGlvbktleSAmJiB0cmFuc2xhdGlvbjtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKCdjb2x1bW4nLCBjb2x1bW4pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleTogaGFzRW52Q29uZmlnID8gY29sdW1uLnByb3BlcnR5TmFtZSA6IGNvbHVtbi50cmFuc2xhdGlvbktleSxcbiAgICAgICAgICAgIGxhYmVsOiBjb2x1bW4udGl0bGUgfHwgdmFsaWRUcmFuc2xhdGlvbiB8fCBjb2x1bW4udHJhbnNsYXRpb25LZXksXG4gICAgICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlLFxuICAgICAgICAgICAgLi4uKGNvbHVtbi52aWV3VHlwZSAmJiB7dmlld1R5cGU6IGNvbHVtbi52aWV3VHlwZX0pLFxuICAgICAgICAgICAgLi4uKGNvbHVtbi5lbnVtICYmIHtlbnVtOiBjb2x1bW4uZW51bX0pLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYXNzaWduZWUgY29sdW1uIGlmIHRoZSBjYXNlIHR5cGUgY2FuIG5vdCBoYXZlIGFuIGFzc2lnbmVlXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IHtcbiAgICAgICAgICBpZiAoY29sdW1uPy5rZXkgPT09IHRoaXMuQVNTSUdORUVfS0VZICYmICFjYW5IYXZlQXNzaWduZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgLy8gSWYgdGhlIGNhc2UgdHlwZSBjYW4gaGF2ZSBhbiBhc3NpZ25lZSwgYW5kIHRoZSBhc3NpZ25lZSBjb2x1bW4gaXMgbm90IHByZXNlbnQgaW4gdGhlIGNhc2UgY29sdW1uIGRlZmluaXRpb24sIGFkZCBhbiBhc3NpZ25lZSBjb2x1bW4gYXQgdGhlIGVuZFxuICAgICAgLi4uKGNhbkhhdmVBc3NpZ25lZSAmJiAhY29sdW1ucy5maW5kKGNvbHVtbiA9PiBjb2x1bW4ucHJvcGVydHlOYW1lID09PSB0aGlzLkFTU0lHTkVFX0tFWSlcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogdGhpcy5BU1NJR05FRV9LRVksXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZmllbGRMYWJlbHMuJHt0aGlzLkFTU0lHTkVFX0tFWX1gKSxcbiAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdJTkFUSU9OOiBQYWdpbmF0aW9uID0ge1xuICAgIGNvbGxlY3Rpb25TaXplOiAwLFxuICAgIHBhZ2U6IDEsXG4gICAgc2l6ZTogMTAsXG4gICAgbWF4UGFnaW5hdGlvbkl0ZW1TaXplOiA1LFxuICAgIHNvcnQ6IHVuZGVmaW5lZCxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25Db3B5JCA9IHRoaXMucGFnaW5hdGlvbiQucGlwZShcbiAgICBtYXAocGFnaW5hdGlvbiA9PiBwYWdpbmF0aW9uICYmIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFnaW5hdGlvbikpKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucGFnaW5hdGlvbiQsIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbcGFnaW5hdGlvbl0pID0+ICEhcGFnaW5hdGlvbiksXG4gICAgICBtYXAoXG4gICAgICAgIChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZV0pID0+XG4gICAgICAgICAgbmV3IEFkdmFuY2VkRG9jdW1lbnRTZWFyY2hSZXF1ZXN0SW1wbChcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICBwYWdpbmF0aW9uLnBhZ2UgLSAxLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5zaXplLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5zb3J0XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hGaWVsZFZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhc3NpZ25lZUZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFzc2lnbmVlRmlsdGVyPignQUxMJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudHNSZXF1ZXN0JDogT2JzZXJ2YWJsZTxEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHM+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudFNlYXJjaFJlcXVlc3QkLFxuICAgIHRoaXMuc2VhcmNoRmllbGRWYWx1ZXMkLFxuICAgIHRoaXMuYXNzaWduZWVGaWx0ZXIkLFxuICAgIHRoaXMuaGFzRW52Q29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLmhhc0FwaUNvbHVtbkNvbmZpZyQsXG4gIF0pLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAoXG4gICAgICAgIFtwcmV2U2VhcmNoUmVxdWVzdCwgcHJldlNlYXJjaFZhbHVlcywgcHJldkFzc2lnbmVlRmlsdGVyXSxcbiAgICAgICAgW2N1cnJTZWFyY2hSZXF1ZXN0LCBjdXJyU2VhcmNoVmFsdWVzLCBjdXJyQXNzaWduZWVGaWx0ZXJdXG4gICAgICApID0+XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsuLi5wcmV2U2VhcmNoUmVxdWVzdCwgLi4ucHJldlNlYXJjaFZhbHVlc30pICsgcHJldkFzc2lnbmVlRmlsdGVyID09PVxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7Li4uY3VyclNlYXJjaFJlcXVlc3QsIC4uLmN1cnJTZWFyY2hWYWx1ZXN9KSArIGN1cnJBc3NpZ25lZUZpbHRlclxuICAgICksXG4gICAgdGFwKChbZG9jdW1lbnRTZWFyY2hSZXF1ZXN0XSkgPT4ge1xuICAgICAgdGhpcy5zdG9yZWRTZWFyY2hSZXF1ZXN0S2V5JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5ID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHN0b3JlIHJlcXVlc3QgaW4gbG9jYWwgc3RvcmFnZTogJHtKU09OLnN0cmluZ2lmeShkb2N1bWVudFNlYXJjaFJlcXVlc3QpfWBcbiAgICAgICAgKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3RvcmVkU2VhcmNoUmVxdWVzdEtleSwgSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnRTZWFyY2hSZXF1ZXN0KSk7XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoXG4gICAgICAoW1xuICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgIHNlYXJjaFZhbHVlcyxcbiAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyxcbiAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBpZiAoKE9iamVjdC5rZXlzKHNlYXJjaFZhbHVlcykgfHwgW10pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gaGFzRW52Q29sdW1uQ29uZmlnIHx8ICFoYXNBcGlDb2x1bW5Db25maWdcbiAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhzZWFyY2hWYWx1ZXMpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0U3BlY2lmaWVkRG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhzZWFyY2hWYWx1ZXMpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGhhc0VudkNvbHVtbkNvbmZpZyB8fCAhaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50c1NlYXJjaChkb2N1bWVudFNlYXJjaFJlcXVlc3QsICdBTkQnLCBhc3NpZ25lZUZpbHRlcilcbiAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0U3BlY2lmaWVkRG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlclxuICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKSxcbiAgICB0YXAoZG9jdW1lbnRzID0+IHtcbiAgICAgIHRoaXMuc2V0Q29sbGVjdGlvblNpemUoZG9jdW1lbnRzKTtcbiAgICAgIHRoaXMuY2hlY2tQYWdlKGRvY3VtZW50cyk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBkb2N1bWVudEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRzUmVxdWVzdCQsXG4gICAgdGhpcy5oYXNFbnZDb2x1bW5Db25maWckLFxuICAgIHRoaXMuaGFzQXBpQ29sdW1uQ29uZmlnJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtkb2N1bWVudHMsIGhhc0VudkNvbHVtbkNvbmZpZywgaGFzQXBpQ29sdW1uQ29uZmlnXSkgPT4ge1xuICAgICAgaWYgKGhhc0VudkNvbHVtbkNvbmZpZyB8fCAhaGFzQXBpQ29sdW1uQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGRvY3NUb01hcCA9IGRvY3VtZW50cyBhcyBEb2N1bWVudHM7XG4gICAgICAgIHJldHVybiBkb2N1bWVudHMuY29udGVudC5tYXAoZG9jdW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IHtjb250ZW50LCAuLi5vdGhlcnN9ID0gZG9jdW1lbnQ7XG4gICAgICAgICAgcmV0dXJuIHsuLi5jb250ZW50LCAuLi5vdGhlcnN9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRvY3NUb01hcCA9IGRvY3VtZW50cyBhcyBTcGVjaWZpZWREb2N1bWVudHM7XG4gICAgICAgIHJldHVybiBkb2NzVG9NYXAuY29udGVudC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3BzT2JqZWN0ID0ge307XG4gICAgICAgICAgY3Vyci5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcHJvcHNPYmplY3RbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gWy4uLmFjYywgcHJvcHNPYmplY3RdO1xuICAgICAgICB9LCBbXSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgdGFwKHJldHVyblZhbHVlID0+IGNvbnNvbGUubG9nKHJldHVyblZhbHVlKSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dChmYWxzZSkpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJTZXJ2aWNlOiBEb3NzaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJDb2x1bW5TZXJ2aWNlOiBEb3NzaWVyQ29sdW1uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRvc3NpZXJWaXNpYmxlVGFicyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/LnZpc2libGVEb3NzaWVyTGlzdFRhYnMgfHwgbnVsbDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxMaXN0ZW5lckFkZGVkID0gZmFsc2U7XG4gIH1cblxuICBwYWdlQ2hhbmdlKG5ld1BhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICBpZiAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2UgIT09IG5ld1BhZ2UpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFBhZ2UgY2hhbmdlOiAke25ld1BhZ2V9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgcGFnZTogbmV3UGFnZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcGFnZVNpemVDaGFuZ2UobmV3UGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICBpZiAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnNpemUgIT09IG5ld1BhZ2VTaXplKSB7XG4gICAgICAgIGNvbnN0IGFtb3VudE9mQXZhaWxhYmxlUGFnZXMgPSBNYXRoLmNlaWwocGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAvIG5ld1BhZ2VTaXplKTtcbiAgICAgICAgY29uc3QgbmV3UGFnZSA9XG4gICAgICAgICAgYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA8IHBhZ2luYXRpb24ucGFnZSA/IGFtb3VudE9mQXZhaWxhYmxlUGFnZXMgOiBwYWdpbmF0aW9uLnBhZ2U7XG5cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFBhZ2Ugc2l6ZSBjaGFuZ2UuIE5ldyBQYWdlOiAke25ld1BhZ2V9IE5ldyBwYWdlIHNpemU6ICR7bmV3UGFnZVNpemV9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgc2l6ZTogbmV3UGFnZVNpemUsIHBhZ2U6IG5ld1BhZ2V9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIEpTT04uc3RyaW5naWZ5KHBhZ2luYXRpb24uc29ydCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1NvcnRTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFNvcnQgc3RhdGUgY2hhbmdlOiAke0pTT04uc3RyaW5naWZ5KG5ld1NvcnRTdGF0ZSl9YCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgc29ydDogbmV3U29ydFN0YXRlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByb3dDbGljayhkb2N1bWVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7ZG9jdW1lbnQuaWR9LyR7RGVmYXVsdFRhYnMuc3VtbWFyeX1gLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydERvc3NpZXIoKTogdm9pZCB7XG4gICAgdGhpcy5hc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMkXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT4ge1xuICAgICAgICBpZiAoYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAkKCcjc3RhcnRQcm9jZXNzJykubW9kYWwoJ3Nob3cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1swXTtcbiAgICAgICAgICB0aGlzLnNob3dTdGFydFByb2Nlc3NNb2RhbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsID0gJCgnI3N0YXJ0UHJvY2VzcycpO1xuICAgIGlmICghdGhpcy5tb2RhbExpc3RlbmVyQWRkZWQpIHtcbiAgICAgIG1vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCB0aGlzLnNob3dTdGFydFByb2Nlc3NNb2RhbC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMubW9kYWxMaXN0ZW5lckFkZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uO1xuICAgIG1vZGFsLm1vZGFsKCdoaWRlJyk7XG4gIH1cblxuICBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hGaWVsZFZhbHVlcyQubmV4dChzZWFyY2hGaWVsZFZhbHVlcyB8fCB7fSk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhcbiAgICB2YWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzXG4gICk6IEFycmF5PFNlYXJjaEZpbHRlciB8IFNlYXJjaEZpbHRlclJhbmdlPiB7XG4gICAgY29uc3QgZmlsdGVyczogQXJyYXk8U2VhcmNoRmlsdGVyIHwgU2VhcmNoRmlsdGVyUmFuZ2U+ID0gW107XG5cbiAgICBPYmplY3Qua2V5cyh2YWx1ZXMpLmZvckVhY2godmFsdWVLZXkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB2YWx1ZXNbdmFsdWVLZXldIGFzIGFueTtcbiAgICAgIGlmIChzZWFyY2hWYWx1ZS5zdGFydCkge1xuICAgICAgICBmaWx0ZXJzLnB1c2goe2tleTogdmFsdWVLZXksIHJhbmdlRnJvbTogc2VhcmNoVmFsdWUuc3RhcnQsIHJhbmdlVG86IHNlYXJjaFZhbHVlLmVuZH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVycy5wdXNoKHtrZXk6IHZhbHVlS2V5LCB2YWx1ZXM6IFtzZWFyY2hWYWx1ZV19KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgIT09IHNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSkge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2NsZWFyIHBhZ2luYXRpb24nKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUkLm5leHQoZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmhhc1N0b3JlZFNlYXJjaFJlcXVlc3QkLCB0aGlzLnN0b3JlZFNlYXJjaFJlcXVlc3RLZXkkLCB0aGlzLmNvbHVtbnMkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbaGFzU3RvcmVkU2VhcmNoUmVxdWVzdCwgc3RvcmVkU2VhcmNoUmVxdWVzdEtleSwgY29sdW1uc10pID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB0aGlzLmdldERlZmF1bHRQYWdpbmF0aW9uKGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBzdG9yZWRQYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5nZXRTdG9yZWRQYWdpbmF0aW9uKFxuICAgICAgICAgIGhhc1N0b3JlZFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgc3RvcmVkU2VhcmNoUmVxdWVzdEtleVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBTZXQgcGFnaW5hdGlvbjogJHtKU09OLnN0cmluZ2lmeShzdG9yZWRQYWdpbmF0aW9uIHx8IGRlZmF1bHRQYWdpbmF0aW9uKX1gXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dChzdG9yZWRQYWdpbmF0aW9uIHx8IGRlZmF1bHRQYWdpbmF0aW9uKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0UGFnaW5hdGlvbihjb2x1bW5zOiBBcnJheTxEZWZpbml0aW9uQ29sdW1uPik6IFBhZ2luYXRpb24ge1xuICAgIGNvbnN0IGRlZmF1bHRTb3J0U3RhdGUgPSB0aGlzLmRvc3NpZXJTZXJ2aWNlLmdldEluaXRpYWxTb3J0U3RhdGUoY29sdW1ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5ERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgICBzb3J0OiBkZWZhdWx0U29ydFN0YXRlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlZFBhZ2luYXRpb24oXG4gICAgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdDogYm9vbGVhbixcbiAgICBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5OiBzdHJpbmdcbiAgKTogUGFnaW5hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RvcmVkU2VhcmNoUmVxdWVzdCA9XG4gICAgICBoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0ICYmIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVkU2VhcmNoUmVxdWVzdEtleSkpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHN0b3JlZFNlYXJjaFJlcXVlc3QgJiYge1xuICAgICAgICAuLi50aGlzLkRFRkFVTFRfUEFHSU5BVElPTixcbiAgICAgICAgc29ydDogc3RvcmVkU2VhcmNoUmVxdWVzdC5zb3J0LFxuICAgICAgICBwYWdlOiBzdG9yZWRTZWFyY2hSZXF1ZXN0LnBhZ2UgKyAxLFxuICAgICAgICBzaXplOiBzdG9yZWRTZWFyY2hSZXF1ZXN0LnNpemUsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sbGVjdGlvblNpemUoZG9jdW1lbnRzOiBEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHMpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgaWYgKHBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgIT09IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgY29sbGVjdGlvblNpemU6IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTdGFydFByb2Nlc3NNb2RhbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0Lm9wZW5Nb2RhbCh0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1BhZ2UoZG9jdW1lbnRzOiBEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHMpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgY29uc3QgYW1vdW50T2ZJdGVtcyA9IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzO1xuICAgICAgY29uc3QgYW1vdW50T2ZQYWdlcyA9IE1hdGguY2VpbChhbW91bnRPZkl0ZW1zIC8gcGFnaW5hdGlvbi5zaXplKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcGFnaW5hdGlvbi5wYWdlO1xuXG4gICAgICBpZiAoY3VycmVudFBhZ2UgPiBhbW91bnRPZlBhZ2VzKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgcGFnZTogYW1vdW50T2ZQYWdlc30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdGFiQ2hhbmdlKHRhYjogTmdiTmF2Q2hhbmdlRXZlbnQ8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnBhZ2luYXRpb24sIHBhZ2U6IDF9KTtcbiAgICB9KTtcbiAgICB0aGlzLmFzc2lnbmVlRmlsdGVyJC5uZXh0KHRhYi5uZXh0SWQudG9VcHBlckNhc2UoKSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudCBwdC0wXCIgKm5nSWY9XCJ7bG9hZGluZzogbG9hZGluZyQgfCBhc3luY30gYXMgb2JzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTAgbWItNVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyQgfCBhc3luYyBhcyBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXQtbTNweCBtYi0zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgYnRuLXByaW1hcnkgbXItMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhcnREb3NzaWVyKClcIlxuICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCA/ICdObyBhY3Rpb24nIDogbnVsbFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPT09IDAgfHwgb2JzLmxvYWRpbmdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLXBsdXMgbXItMVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdTdGFydCBEb3NzaWVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcbiAgICAgICAgICBpZD1cInN0YXJ0UHJvY2Vzc1wiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic3RhcnRQcm9jZXNzTGFiZWxcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFwiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzdGFydFByb2Nlc3NMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ2Rhc2hib2FyZC5zdGFydFByb2Nlc3MudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24ucHJvY2Vzc05hbWUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdjdGEuY2xvc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8dmFsdGltby1zcGlubmVyICpuZ0lmPVwib2JzLmxvYWRpbmdcIj48L3ZhbHRpbW8tc3Bpbm5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hGaWVsZHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0OyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8dmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwgI3Byb2Nlc3NTdGFydE1vZGFsPjwvdmFsdGltby1kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZHM+XG4gIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgPHZhbHRpbW8tc2VhcmNoLWZpZWxkc1xuICAgICAgW2xvYWRpbmddPVwibG9hZGluZ0RvY3VtZW50U2VhcmNoRmllbGRzJCB8IGFzeW5jXCJcbiAgICAgIFtzZWFyY2hGaWVsZHNdPVwiZG9jdW1lbnRTZWFyY2hGaWVsZHMkIHwgYXN5bmNcIlxuICAgICAgKGRvU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgID48L3ZhbHRpbW8tc2VhcmNoLWZpZWxkcz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3QgbGV0LW9icz1cIm9ic1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGlvbkNvcHkkIHwgYXN5bmMgYXMgcGFnaW5hdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZHMkIHwgYXN5bmMgYXMgZmllbGRzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jdW1lbnRJdGVtcyQgfCBhc3luYyBhcyBkb2N1bWVudEl0ZW1zXCI+XG4gICAgICAgIDx2YWx0aW1vLXdpZGdldCAqbmdJZj1cIm9icy5sb2FkaW5nID09PSBmYWxzZVwiPlxuICAgICAgICAgIDx2YWx0aW1vLWxpc3RcbiAgICAgICAgICAgIFtpdGVtc109XCJkb2N1bWVudEl0ZW1zXCJcbiAgICAgICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgICAgIChyb3dDbGlja2VkKT1cInJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICAgICAgICBbdmlld01vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb3NzaWVyTGlzdFwiXG4gICAgICAgICAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChwYWdpbmF0aW9uU2V0KT1cInBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2luaXRpYWxTb3J0U3RhdGVdPVwicGFnaW5hdGlvbi5zb3J0XCJcbiAgICAgICAgICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGhlYWRlcj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibGlzdC1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyAoc2NoZW1hJCB8IGFzeW5jKT8udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8c3VwIGNsYXNzPVwibWwtMSBiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXByaW1hcnlcIj57e1xuICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbj8uY29sbGVjdGlvblNpemUgfHwgMFxuICAgICAgICAgICAgICAgIH19PC9zdXA+XG4gICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgdGFicyAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZSQgfCBhc3luY1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFic1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92YWx0aW1vLWxpc3Q+XG4gICAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbmZpZ3VyZWRUYWJzPlxuICA8dWwgbmdiTmF2IFtkZXN0cm95T25IaWRlXT1cImZhbHNlXCIgKG5hdkNoYW5nZSk9XCJ0YWJDaGFuZ2UoJGV2ZW50KVwiIGNsYXNzPVwibmF2LXRhYnNcIj5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgZG9zc2llclZpc2libGVUYWJzXCJcbiAgICAgIFtuZ2JOYXZJdGVtXT1cInRhYlwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIudGFicy4nICsgdGFiIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdkb3NzaWVyLnRhYnMuJyArIHRhYiB8IHRyYW5zbGF0ZSB9fTwvYT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJzPlxuICA8dWxcbiAgICAqbmdJZj1cImRvc3NpZXJWaXNpYmxlVGFicyA9PT0gbnVsbDsgZWxzZSBjb25maWd1cmVkVGFic1wiXG4gICAgbmdiTmF2XG4gICAgW2Rlc3Ryb3lPbkhpZGVdPVwiZmFsc2VcIlxuICAgIChuYXZDaGFuZ2UpPVwidGFiQ2hhbmdlKCRldmVudClcIlxuICAgIGNsYXNzPVwibmF2LXRhYnNcIlxuICA+XG4gICAgPGxpIG5nYk5hdkl0ZW09XCJhbGxcIiBbdGl0bGVdPVwiJ2Rvc3NpZXIudGFicy5BTEwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdkb3NzaWVyLnRhYnMuQUxMJyB8IHRyYW5zbGF0ZSB9fTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBuZ2JOYXZJdGVtPVwibWluZVwiIFt0aXRsZV09XCInZG9zc2llci50YWJzLk1JTkUnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdkb3NzaWVyLnRhYnMuTUlORScgfCB0cmFuc2xhdGUgfX08L2E+XG4gICAgPC9saT5cbiAgICA8bGkgbmdiTmF2SXRlbT1cIm9wZW5cIiBbdGl0bGVdPVwiJ2Rvc3NpZXIudGFicy5PUEVOJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPGEgbmdiTmF2TGluaz57eyAnZG9zc2llci50YWJzLk9QRU4nIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBYTNELE9BQU8sRUFFTCxpQ0FBaUMsR0FNbEMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBRUgsRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVd2RCxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFPckQsTUFBTSxPQUFPLG9CQUFvQjtJQTJQL0IsWUFDbUIsS0FBcUIsRUFDckIsTUFBYyxFQUNkLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixNQUFpQixFQUNqQixhQUE0QixFQUM1QixvQkFBMEMsRUFDMUMsdUJBQWdEO1FBUmhELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFB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Z0JBQ3hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBMWNVLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtLQ3RFakMsK3dNQXFLQTs0RkQvRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHNCQUFzQjtpVkFLQSxZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXNzaWduZWVGaWx0ZXIsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERlZmluaXRpb25Db2x1bW4sXG4gIERvc3NpZXJMaXN0VGFiLFxuICBTZWFyY2hGaWVsZCxcbiAgU2VhcmNoRmllbGRWYWx1ZXMsXG4gIFNlYXJjaEZpbHRlcixcbiAgU2VhcmNoRmlsdGVyUmFuZ2UsXG59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3RJbXBsLFxuICBEb2N1bWVudHMsXG4gIERvY3VtZW50U2VydmljZSxcbiAgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbixcbiAgU29ydFN0YXRlLFxuICBTcGVjaWZpZWREb2N1bWVudHMsXG59IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZWZhdWx0VGFic30gZnJvbSAnLi4vZG9zc2llci1kZXRhaWwtdGFiLWVudW0nO1xuaW1wb3J0IHtEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llclNlcnZpY2V9IGZyb20gJy4uL2Rvc3NpZXIuc2VydmljZSc7XG5pbXBvcnQge0xpc3RGaWVsZCwgUGFnaW5hdGlvbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge05nYk5hdkNoYW5nZUV2ZW50fSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge0Rvc3NpZXJDb2x1bW5TZXJ2aWNlLCBEb3NzaWVyUGFyYW1ldGVyU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdmFyXG5kZWNsYXJlIHZhciAkO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykgfHwgJycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Byb2Nlc3NTdGFydE1vZGFsJykgcHJvY2Vzc1N0YXJ0OiBEb3NzaWVyUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgcHVibGljIGRvc3NpZXJWaXNpYmxlVGFiczogQXJyYXk8RG9zc2llckxpc3RUYWI+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtb2RhbExpc3RlbmVyQWRkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBsb2FkaW5nRG9jdW1lbnRTZWFyY2hGaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKSxcbiAgICB0YXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbihkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGhhc0VudkNvbHVtbkNvbmZpZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgfHwgJycpLFxuICAgIG1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICB0aGlzLmRvc3NpZXJDb2x1bW5TZXJ2aWNlLmhhc0Vudmlyb25tZW50Q29uZmlnKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IGNhbkhhdmVBc3NpZ25lZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VTZXR0aW5ncyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGNhc2VTZXR0aW5ncyA9PiBjYXNlU2V0dGluZ3M/LmNhbkhhdmVBc3NpZ25lZSlcbiAgKTtcblxuICByZWFkb25seSBkb2N1bWVudFNlYXJjaEZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VhcmNoRmllbGQ+IHwgbnVsbD4gPVxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nRG9jdW1lbnRTZWFyY2hGaWVsZHMkLm5leHQodHJ1ZSkpLFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRTZWFyY2hGaWVsZHMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nRG9jdW1lbnRTZWFyY2hGaWVsZHMkLm5leHQoZmFsc2UpKVxuICAgICk7XG5cbiAgcmVhZG9ubHkgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBcnJheTxQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uPj4gPVxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWVcbiAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICAgIDogb2YoW10pXG4gICAgICApLFxuICAgICAgbWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+XG4gICAgICAgIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmZpbHRlcihkZWZpbml0aW9uID0+IGRlZmluaXRpb24uY2FuSW5pdGlhbGl6ZURvY3VtZW50KVxuICAgICAgKVxuICAgICk7XG5cbiAgcmVhZG9ubHkgc2NoZW1hJCA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnREZWZpbml0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoZG9jdW1lbnREZWZpbml0aW9uID0+IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBtYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiBgbGlzdC1zZWFyY2gtJHtkb2N1bWVudERlZmluaXRpb25OYW1lfWApXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQucGlwZShcbiAgICBtYXAoc3RvcmVkU2VhcmNoUmVxdWVzdEtleSA9PiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5KSAhPT0gbnVsbClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGhhc0FwaUNvbHVtbkNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPEFycmF5PERlZmluaXRpb25Db2x1bW4+PiA9XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb3NzaWVyQ29sdW1uU2VydmljZS5nZXREZWZpbml0aW9uQ29sdW1ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICB0aGlzLmhhc0FwaUNvbHVtbkNvbmZpZyQubmV4dChyZXMuaGFzQXBpQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlcy5jb2x1bW5zO1xuICAgICAgfSlcbiAgICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgQVNTSUdORUVfS0VZID0gJ2Fzc2lnbmVlRnVsbE5hbWUnO1xuXG4gIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmNvbHVtbnMkLFxuICAgIHRoaXMuY2FuSGF2ZUFzc2lnbmVlJCxcbiAgICB0aGlzLmhhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbY29sdW1ucywgY2FuSGF2ZUFzc2lnbmVlLCBoYXNFbnZDb25maWddKSA9PiBbXG4gICAgICAuLi5jb2x1bW5zXG4gICAgICAgIC5tYXAoY29sdW1uID0+IHtcbiAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGBmaWVsZExhYmVscy4ke2NvbHVtbi50cmFuc2xhdGlvbktleX1gO1xuICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodHJhbnNsYXRpb25LZXkpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbiAhPT0gdHJhbnNsYXRpb25LZXkgJiYgdHJhbnNsYXRpb247XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleTogaGFzRW52Q29uZmlnID8gY29sdW1uLnByb3BlcnR5TmFtZSA6IGNvbHVtbi50cmFuc2xhdGlvbktleSxcbiAgICAgICAgICAgIGxhYmVsOiBjb2x1bW4udGl0bGUgfHwgdmFsaWRUcmFuc2xhdGlvbiB8fCBjb2x1bW4udHJhbnNsYXRpb25LZXksXG4gICAgICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlLFxuICAgICAgICAgICAgLi4uKGNvbHVtbi52aWV3VHlwZSAmJiB7dmlld1R5cGU6IGNvbHVtbi52aWV3VHlwZX0pLFxuICAgICAgICAgICAgLi4uKGNvbHVtbi5lbnVtICYmIHtlbnVtOiBjb2x1bW4uZW51bX0pLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYXNzaWduZWUgY29sdW1uIGlmIHRoZSBjYXNlIHR5cGUgY2FuIG5vdCBoYXZlIGFuIGFzc2lnbmVlXG4gICAgICAgIC5maWx0ZXIoY29sdW1uID0+IHtcbiAgICAgICAgICBpZiAoY29sdW1uPy5rZXkgPT09IHRoaXMuQVNTSUdORUVfS0VZICYmICFjYW5IYXZlQXNzaWduZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgLy8gSWYgdGhlIGNhc2UgdHlwZSBjYW4gaGF2ZSBhbiBhc3NpZ25lZSwgYW5kIHRoZSBhc3NpZ25lZSBjb2x1bW4gaXMgbm90IHByZXNlbnQgaW4gdGhlIGNhc2UgY29sdW1uIGRlZmluaXRpb24sIGFkZCBhbiBhc3NpZ25lZSBjb2x1bW4gYXQgdGhlIGVuZFxuICAgICAgLi4uKGNhbkhhdmVBc3NpZ25lZSAmJiAhY29sdW1ucy5maW5kKGNvbHVtbiA9PiBjb2x1bW4ucHJvcGVydHlOYW1lID09PSB0aGlzLkFTU0lHTkVFX0tFWSlcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogdGhpcy5BU1NJR05FRV9LRVksXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZmllbGRMYWJlbHMuJHt0aGlzLkFTU0lHTkVFX0tFWX1gKSxcbiAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdJTkFUSU9OOiBQYWdpbmF0aW9uID0ge1xuICAgIGNvbGxlY3Rpb25TaXplOiAwLFxuICAgIHBhZ2U6IDEsXG4gICAgc2l6ZTogMTAsXG4gICAgbWF4UGFnaW5hdGlvbkl0ZW1TaXplOiA1LFxuICAgIHNvcnQ6IHVuZGVmaW5lZCxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25Db3B5JCA9IHRoaXMucGFnaW5hdGlvbiQucGlwZShcbiAgICBtYXAocGFnaW5hdGlvbiA9PiBwYWdpbmF0aW9uICYmIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFnaW5hdGlvbikpKSxcbiAgICB0YXAocGFnaW5hdGlvbiA9PiB0aGlzLmRvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLnNldFBhZ2luYXRpb25QYXJhbWV0ZXJzKHBhZ2luYXRpb24pKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucGFnaW5hdGlvbiQsIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbcGFnaW5hdGlvbl0pID0+ICEhcGFnaW5hdGlvbiksXG4gICAgICBtYXAoXG4gICAgICAgIChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZV0pID0+XG4gICAgICAgICAgbmV3IEFkdmFuY2VkRG9jdW1lbnRTZWFyY2hSZXF1ZXN0SW1wbChcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICBwYWdpbmF0aW9uLnBhZ2UgLSAxLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5zaXplLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5zb3J0XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hGaWVsZFZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzaWduZWVGaWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBc3NpZ25lZUZpbHRlcj4oJ0FMTCcpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRzUmVxdWVzdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRzIHwgU3BlY2lmaWVkRG9jdW1lbnRzPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JCxcbiAgICB0aGlzLnNlYXJjaEZpZWxkVmFsdWVzJCxcbiAgICB0aGlzLmFzc2lnbmVlRmlsdGVyJCxcbiAgICB0aGlzLmhhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy5oYXNBcGlDb2x1bW5Db25maWckLFxuICBdKS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgKFxuICAgICAgICBbcHJldlNlYXJjaFJlcXVlc3QsIHByZXZTZWFyY2hWYWx1ZXMsIHByZXZBc3NpZ25lZUZpbHRlcl0sXG4gICAgICAgIFtjdXJyU2VhcmNoUmVxdWVzdCwgY3VyclNlYXJjaFZhbHVlcywgY3VyckFzc2lnbmVlRmlsdGVyXVxuICAgICAgKSA9PlxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7Li4ucHJldlNlYXJjaFJlcXVlc3QsIC4uLnByZXZTZWFyY2hWYWx1ZXN9KSArIHByZXZBc3NpZ25lZUZpbHRlciA9PT1cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoey4uLmN1cnJTZWFyY2hSZXF1ZXN0LCAuLi5jdXJyU2VhcmNoVmFsdWVzfSkgKyBjdXJyQXNzaWduZWVGaWx0ZXJcbiAgICApLFxuICAgIHRhcCgoW2RvY3VtZW50U2VhcmNoUmVxdWVzdF0pID0+IHtcbiAgICAgIHRoaXMuc3RvcmVkU2VhcmNoUmVxdWVzdEtleSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc3RvcmVkU2VhcmNoUmVxdWVzdEtleSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBzdG9yZSByZXF1ZXN0IGluIGxvY2FsIHN0b3JhZ2U6ICR7SlNPTi5zdHJpbmdpZnkoZG9jdW1lbnRTZWFyY2hSZXF1ZXN0KX1gXG4gICAgICAgICk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlZFNlYXJjaFJlcXVlc3RLZXksIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50U2VhcmNoUmVxdWVzdCkpO1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKFxuICAgICAgKFtcbiAgICAgICAgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICBzZWFyY2hWYWx1ZXMsXG4gICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICBoYXNFbnZDb2x1bW5Db25maWcsXG4gICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZyxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgaWYgKChPYmplY3Qua2V5cyhzZWFyY2hWYWx1ZXMpIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIGhhc0VudkNvbHVtbkNvbmZpZyB8fCAhaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBTZWFyY2hWYWx1ZXNUb0ZpbHRlcnMoc2VhcmNoVmFsdWVzKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldFNwZWNpZmllZERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBTZWFyY2hWYWx1ZXNUb0ZpbHRlcnMoc2VhcmNoVmFsdWVzKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBoYXNFbnZDb2x1bW5Db25maWcgfHwgIWhhc0FwaUNvbHVtbkNvbmZpZ1xuICAgICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudHNTZWFyY2goZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LCAnQU5EJywgYXNzaWduZWVGaWx0ZXIpXG4gICAgICAgICAgICA6IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldFNwZWNpZmllZERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICksXG4gICAgdGFwKGRvY3VtZW50cyA9PiB7XG4gICAgICB0aGlzLnNldENvbGxlY3Rpb25TaXplKGRvY3VtZW50cyk7XG4gICAgICB0aGlzLmNoZWNrUGFnZShkb2N1bWVudHMpO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnRJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvY3VtZW50c1JlcXVlc3QkLFxuICAgIHRoaXMuaGFzRW52Q29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLmhhc0FwaUNvbHVtbkNvbmZpZyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZG9jdW1lbnRzLCBoYXNFbnZDb2x1bW5Db25maWcsIGhhc0FwaUNvbHVtbkNvbmZpZ10pID0+IHtcbiAgICAgIGlmIChoYXNFbnZDb2x1bW5Db25maWcgfHwgIWhhc0FwaUNvbHVtbkNvbmZpZykge1xuICAgICAgICBjb25zdCBkb2NzVG9NYXAgPSBkb2N1bWVudHMgYXMgRG9jdW1lbnRzO1xuICAgICAgICByZXR1cm4gZG9jdW1lbnRzLmNvbnRlbnQubWFwKGRvY3VtZW50ID0+IHtcbiAgICAgICAgICBjb25zdCB7Y29udGVudCwgLi4ub3RoZXJzfSA9IGRvY3VtZW50O1xuICAgICAgICAgIHJldHVybiB7Li4uY29udGVudCwgLi4ub3RoZXJzfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkb2NzVG9NYXAgPSBkb2N1bWVudHMgYXMgU3BlY2lmaWVkRG9jdW1lbnRzO1xuICAgICAgICByZXR1cm4gZG9jc1RvTWFwLmNvbnRlbnQucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9wc09iamVjdCA9IHtpZDogY3Vyci5pZH07XG4gICAgICAgICAgY3Vyci5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcHJvcHNPYmplY3RbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gWy4uLmFjYywgcHJvcHNPYmplY3RdO1xuICAgICAgICB9LCBbXSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dChmYWxzZSkpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2V0U2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyU2VydmljZTogRG9zc2llclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyQ29sdW1uU2VydmljZTogRG9zc2llckNvbHVtblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyUGFyYW1ldGVyU2VydmljZTogRG9zc2llclBhcmFtZXRlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5kb3NzaWVyVmlzaWJsZVRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlRG9zc2llckxpc3RUYWJzIHx8IG51bGw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsTGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0U2VhcmNoRmllbGRQYXJhbWV0ZXJzSW5Db21wb25lbnQoKTtcbiAgfVxuXG4gIHBhZ2VDaGFuZ2UobmV3UGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24ucGFnZSAhPT0gbmV3UGFnZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUGFnZSBjaGFuZ2U6ICR7bmV3UGFnZX1gKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5wYWdpbmF0aW9uLCBwYWdlOiBuZXdQYWdlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwYWdlU2l6ZUNoYW5nZShuZXdQYWdlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYWdpbmF0aW9uID0+IHtcbiAgICAgIGlmIChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uc2l6ZSAhPT0gbmV3UGFnZVNpemUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA9IE1hdGguY2VpbChwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplIC8gbmV3UGFnZVNpemUpO1xuICAgICAgICBjb25zdCBuZXdQYWdlID1cbiAgICAgICAgICBhbW91bnRPZkF2YWlsYWJsZVBhZ2VzIDwgcGFnaW5hdGlvbi5wYWdlID8gYW1vdW50T2ZBdmFpbGFibGVQYWdlcyA6IHBhZ2luYXRpb24ucGFnZTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUGFnZSBzaXplIGNoYW5nZS4gTmV3IFBhZ2U6ICR7bmV3UGFnZX0gTmV3IHBhZ2Ugc2l6ZTogJHtuZXdQYWdlU2l6ZX1gKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5wYWdpbmF0aW9uLCBzaXplOiBuZXdQYWdlU2l6ZSwgcGFnZTogbmV3UGFnZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc29ydENoYW5nZWQobmV3U29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgaWYgKHBhZ2luYXRpb24gJiYgSlNPTi5zdHJpbmdpZnkocGFnaW5hdGlvbi5zb3J0KSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3U29ydFN0YXRlKSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU29ydCBzdGF0ZSBjaGFuZ2U6ICR7SlNPTi5zdHJpbmdpZnkobmV3U29ydFN0YXRlKX1gKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5wYWdpbmF0aW9uLCBzb3J0OiBuZXdTb3J0U3RhdGV9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJvd0NsaWNrKGRvY3VtZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICBgL2Rvc3NpZXJzLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX0vZG9jdW1lbnQvJHtkb2N1bWVudC5pZH0vJHtEZWZhdWx0VGFicy5zdW1tYXJ5fWAsXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0RG9zc2llcigpOiB2b2lkIHtcbiAgICB0aGlzLmFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9PiB7XG4gICAgICAgIGlmIChhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICQoJyNzdGFydFByb2Nlc3MnKS5tb2RhbCgnc2hvdycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0gYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zWzBdO1xuICAgICAgICAgIHRoaXMuc2hvd1N0YXJ0UHJvY2Vzc01vZGFsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWwgPSAkKCcjc3RhcnRQcm9jZXNzJyk7XG4gICAgaWYgKCF0aGlzLm1vZGFsTGlzdGVuZXJBZGRlZCkge1xuICAgICAgbW9kYWwub24oJ2hpZGRlbi5icy5tb2RhbCcsIHRoaXMuc2hvd1N0YXJ0UHJvY2Vzc01vZGFsLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tb2RhbExpc3RlbmVyQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb247XG4gICAgbW9kYWwubW9kYWwoJ2hpZGUnKTtcbiAgfVxuXG4gIHNlYXJjaChzZWFyY2hGaWVsZFZhbHVlczogU2VhcmNoRmllbGRWYWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpZWxkVmFsdWVzJC5uZXh0KHNlYXJjaEZpZWxkVmFsdWVzIHx8IHt9KTtcbiAgICB0aGlzLmRvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLnNldFNlYXJjaFBhcmFtZXRlcnMoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgdGFiQ2hhbmdlKHRhYjogTmdiTmF2Q2hhbmdlRXZlbnQ8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFnaW5hdGlvbiA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnBhZ2luYXRpb24sIHBhZ2U6IDF9KTtcbiAgICB9KTtcbiAgICB0aGlzLmFzc2lnbmVlRmlsdGVyJC5uZXh0KHRhYi5uZXh0SWQudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhcbiAgICB2YWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzXG4gICk6IEFycmF5PFNlYXJjaEZpbHRlciB8IFNlYXJjaEZpbHRlclJhbmdlPiB7XG4gICAgY29uc3QgZmlsdGVyczogQXJyYXk8U2VhcmNoRmlsdGVyIHwgU2VhcmNoRmlsdGVyUmFuZ2U+ID0gW107XG5cbiAgICBPYmplY3Qua2V5cyh2YWx1ZXMpLmZvckVhY2godmFsdWVLZXkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB2YWx1ZXNbdmFsdWVLZXldIGFzIGFueTtcbiAgICAgIGlmIChzZWFyY2hWYWx1ZS5zdGFydCkge1xuICAgICAgICBmaWx0ZXJzLnB1c2goe2tleTogdmFsdWVLZXksIHJhbmdlRnJvbTogc2VhcmNoVmFsdWUuc3RhcnQsIHJhbmdlVG86IHNlYXJjaFZhbHVlLmVuZH0pO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNlYXJjaFZhbHVlKSkge1xuICAgICAgICBmaWx0ZXJzLnB1c2goe2tleTogdmFsdWVLZXksIHZhbHVlczogc2VhcmNoVmFsdWV9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlcnMucHVzaCh7a2V5OiB2YWx1ZUtleSwgdmFsdWVzOiBbc2VhcmNoVmFsdWVdfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRQYWdpbmF0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnNldHRpbmdQYWdpbmF0aW9uRm9yRG9jTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lID0+IHtcbiAgICAgIGlmIChkb2N1bWVudERlZmluaXRpb25OYW1lICE9PSBzZXR0aW5nUGFnaW5hdGlvbkZvckRvY05hbWUpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdjbGVhciBwYWdpbmF0aW9uJyk7XG4gICAgICAgIHRoaXMuc2V0dGluZ1BhZ2luYXRpb25Gb3JEb2NOYW1lJC5uZXh0KGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBhZ2luYXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmhhc1N0b3JlZFNlYXJjaFJlcXVlc3QkLFxuICAgICAgdGhpcy5zdG9yZWRTZWFyY2hSZXF1ZXN0S2V5JCxcbiAgICAgIHRoaXMuY29sdW1ucyQsXG4gICAgICB0aGlzLmRvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLnF1ZXJ5UGFnaW5hdGlvblBhcmFtcyQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoW2hhc1N0b3JlZFNlYXJjaFJlcXVlc3QsIHN0b3JlZFNlYXJjaFJlcXVlc3RLZXksIGNvbHVtbnMsIHF1ZXJ5UGFnaW5hdGlvblBhcmFtc10pID0+IHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0UGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHRoaXMuZ2V0RGVmYXVsdFBhZ2luYXRpb24oY29sdW1ucyk7XG4gICAgICAgICAgY29uc3Qgc3RvcmVkUGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHRoaXMuZ2V0U3RvcmVkUGFnaW5hdGlvbihcbiAgICAgICAgICAgIGhhc1N0b3JlZFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBwYWdpbmF0aW9uVG9Vc2UgPSBxdWVyeVBhZ2luYXRpb25QYXJhbXMgfHwgc3RvcmVkUGFnaW5hdGlvbiB8fCBkZWZhdWx0UGFnaW5hdGlvbjtcblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBTZXQgcGFnaW5hdGlvbjogJHtKU09OLnN0cmluZ2lmeShwYWdpbmF0aW9uVG9Vc2UpfWApO1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dChwYWdpbmF0aW9uVG9Vc2UpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0UGFnaW5hdGlvbihjb2x1bW5zOiBBcnJheTxEZWZpbml0aW9uQ29sdW1uPik6IFBhZ2luYXRpb24ge1xuICAgIGNvbnN0IGRlZmF1bHRTb3J0U3RhdGUgPSB0aGlzLmRvc3NpZXJTZXJ2aWNlLmdldEluaXRpYWxTb3J0U3RhdGUoY29sdW1ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5ERUZBVUxUX1BBR0lOQVRJT04sXG4gICAgICBzb3J0OiBkZWZhdWx0U29ydFN0YXRlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlZFBhZ2luYXRpb24oXG4gICAgaGFzU3RvcmVkU2VhcmNoUmVxdWVzdDogYm9vbGVhbixcbiAgICBzdG9yZWRTZWFyY2hSZXF1ZXN0S2V5OiBzdHJpbmdcbiAgKTogUGFnaW5hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RvcmVkU2VhcmNoUmVxdWVzdCA9XG4gICAgICBoYXNTdG9yZWRTZWFyY2hSZXF1ZXN0ICYmIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVkU2VhcmNoUmVxdWVzdEtleSkpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHN0b3JlZFNlYXJjaFJlcXVlc3QgJiYge1xuICAgICAgICAuLi50aGlzLkRFRkFVTFRfUEFHSU5BVElPTixcbiAgICAgICAgc29ydDogc3RvcmVkU2VhcmNoUmVxdWVzdC5zb3J0LFxuICAgICAgICBwYWdlOiBzdG9yZWRTZWFyY2hSZXF1ZXN0LnBhZ2UgKyAxLFxuICAgICAgICBzaXplOiBzdG9yZWRTZWFyY2hSZXF1ZXN0LnNpemUsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sbGVjdGlvblNpemUoZG9jdW1lbnRzOiBEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHMpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgaWYgKHBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgIT09IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgY29sbGVjdGlvblNpemU6IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTdGFydFByb2Nlc3NNb2RhbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1N0YXJ0Lm9wZW5Nb2RhbCh0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1BhZ2UoZG9jdW1lbnRzOiBEb2N1bWVudHMgfCBTcGVjaWZpZWREb2N1bWVudHMpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhZ2luYXRpb24gPT4ge1xuICAgICAgY29uc3QgYW1vdW50T2ZJdGVtcyA9IGRvY3VtZW50cy50b3RhbEVsZW1lbnRzO1xuICAgICAgY29uc3QgYW1vdW50T2ZQYWdlcyA9IE1hdGguY2VpbChhbW91bnRPZkl0ZW1zIC8gcGFnaW5hdGlvbi5zaXplKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcGFnaW5hdGlvbi5wYWdlO1xuXG4gICAgICBpZiAoY3VycmVudFBhZ2UgPiBhbW91bnRPZlBhZ2VzKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4ucGFnaW5hdGlvbiwgcGFnZTogYW1vdW50T2ZQYWdlc30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWFyY2hGaWVsZFBhcmFtZXRlcnNJbkNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLnF1ZXJ5U2VhcmNoUGFyYW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh2YWx1ZXMgPT4ge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQubmV4dCh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50IHB0LTBcIiAqbmdJZj1cIntsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zJCB8IGFzeW5jIGFzIGFzc29jaWF0ZWRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtdC1tM3B4IG1iLTNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeSBtci0wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzdGFydERvc3NpZXIoKVwiXG4gICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwID8gJ05vIGFjdGlvbicgOiBudWxsXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXNzb2NpYXRlZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCB8fCBvYnMubG9hZGluZ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPlxuICAgICAgICAgICAge3sgJ1N0YXJ0IERvc3NpZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vZGFsIGZhZGVcIlxuICAgICAgICAgIGlkPVwic3RhcnRQcm9jZXNzXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzdGFydFByb2Nlc3NMYWJlbFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInN0YXJ0UHJvY2Vzc0xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnZGFzaGJvYXJkLnN0YXJ0UHJvY2Vzcy50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG0tMFwiPlxuICAgICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiBvZiBhc3NvY2lhdGVkUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ2N0YS5jbG9zZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx2YWx0aW1vLXNwaW5uZXIgKm5nSWY9XCJvYnMubG9hZGluZ1wiPjwvdmFsdGltby1zcGlubmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaEZpZWxkc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx2YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbCAjcHJvY2Vzc1N0YXJ0TW9kYWw+PC92YWx0aW1vLWRvc3NpZXItcHJvY2Vzcy1zdGFydC1tb2RhbD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkcz5cbiAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICA8dmFsdGltby1zZWFyY2gtZmllbGRzXG4gICAgICBbbG9hZGluZ109XCJsb2FkaW5nRG9jdW1lbnRTZWFyY2hGaWVsZHMkIHwgYXN5bmNcIlxuICAgICAgW3NlYXJjaEZpZWxkc109XCJkb2N1bWVudFNlYXJjaEZpZWxkcyQgfCBhc3luY1wiXG4gICAgICAoZG9TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gICAgICBbc2V0VmFsdWVzU3ViamVjdCRdPVwic2V0U2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JFwiXG4gICAgPjwvdmFsdGltby1zZWFyY2gtZmllbGRzPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdpbmF0aW9uQ29weSQgfCBhc3luYyBhcyBwYWdpbmF0aW9uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkcyQgfCBhc3luYyBhcyBmaWVsZHNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudEl0ZW1zJCB8IGFzeW5jIGFzIGRvY3VtZW50SXRlbXNcIj5cbiAgICAgICAgPHZhbHRpbW8td2lkZ2V0ICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlXCI+XG4gICAgICAgICAgPHZhbHRpbW8tbGlzdFxuICAgICAgICAgICAgW2l0ZW1zXT1cImRvY3VtZW50SXRlbXNcIlxuICAgICAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICAgICAgKHJvd0NsaWNrZWQpPVwicm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICAgICAgICAgIFt2aWV3TW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtoZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cImRvc3NpZXJMaXN0XCJcbiAgICAgICAgICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHBhZ2luYXRpb25TZXQpPVwicGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbaW5pdGlhbFNvcnRTdGF0ZV09XCJwYWdpbmF0aW9uLnNvcnRcIlxuICAgICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgaGVhZGVyPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJsaXN0LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7IChzY2hlbWEkIHwgYXN5bmMpPy50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDxzdXAgY2xhc3M9XCJtbC0xIGJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPnt7XG4gICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uPy5jb2xsZWN0aW9uU2l6ZSB8fCAwXG4gICAgICAgICAgICAgICAgfX08L3N1cD5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiB0YWJzICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3ZhbHRpbW8tbGlzdD5cbiAgICAgICAgPC92YWx0aW1vLXdpZGdldD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlndXJlZFRhYnM+XG4gIDx1bCBuZ2JOYXYgW2Rlc3Ryb3lPbkhpZGVdPVwiZmFsc2VcIiAobmF2Q2hhbmdlKT1cInRhYkNoYW5nZSgkZXZlbnQpXCIgY2xhc3M9XCJuYXYtdGFic1wiPlxuICAgIDxsaVxuICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBkb3NzaWVyVmlzaWJsZVRhYnNcIlxuICAgICAgW25nYk5hdkl0ZW1dPVwidGFiXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci50YWJzLicgKyB0YWIgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ2Rvc3NpZXIudGFicy4nICsgdGFiIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYnM+XG4gIDx1bFxuICAgICpuZ0lmPVwiZG9zc2llclZpc2libGVUYWJzID09PSBudWxsOyBlbHNlIGNvbmZpZ3VyZWRUYWJzXCJcbiAgICBuZ2JOYXZcbiAgICBbZGVzdHJveU9uSGlkZV09XCJmYWxzZVwiXG4gICAgKG5hdkNoYW5nZSk9XCJ0YWJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJuYXYtdGFic1wiXG4gID5cbiAgICA8bGkgbmdiTmF2SXRlbT1cImFsbFwiIFt0aXRsZV09XCInZG9zc2llci50YWJzLkFMTCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ2Rvc3NpZXIudGFicy5BTEwnIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIG5nYk5hdkl0ZW09XCJtaW5lXCIgW3RpdGxlXT1cIidkb3NzaWVyLnRhYnMuTUlORScgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ2Rvc3NpZXIudGFicy5NSU5FJyB8IHRyYW5zbGF0ZSB9fTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBuZ2JOYXZJdGVtPVwib3BlblwiIFt0aXRsZV09XCInZG9zc2llci50YWJzLk9QRU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdkb3NzaWVyLnRhYnMuT1BFTicgfCB0cmFuc2xhdGUgfX08L2E+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -108,10 +108,10 @@ export class DossierSupportingProcessStartModalComponent {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
DossierSupportingProcessStartModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DossierSupportingProcessStartModalComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ProcessService }, { token: i3.DocumentService }, { token: i4.FormLinkService }, { token: i5.NGXLogger }, { token: i6.UserProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
DossierSupportingProcessStartModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DossierSupportingProcessStartModalComponent, selector: "valtimo-dossier-supporting-process-start-modal", outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["supportingProcessStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"(processDefinitionKey | translate) !== processDefinitionKey
|
|
111
|
+
DossierSupportingProcessStartModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DossierSupportingProcessStartModalComponent, selector: "valtimo-dossier-supporting-process-start-modal", outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["supportingProcessStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey | translate) !== processDefinitionKey\n ? (processDefinitionKey | translate)\n : processName\n \"\n>\n <div body *ngIf=\"formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission\"\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */#supportingProcessStartModal .formio-component-submit{text-align:right}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FormioComponent, selector: "valtimo-form-io", inputs: ["form", "options", "submission", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i8.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
112
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DossierSupportingProcessStartModalComponent, decorators: [{
|
|
113
113
|
type: Component,
|
|
114
|
-
args: [{ selector: 'valtimo-dossier-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"(processDefinitionKey | translate) !== processDefinitionKey
|
|
114
|
+
args: [{ selector: 'valtimo-dossier-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey | translate) !== processDefinitionKey\n ? (processDefinitionKey | translate)\n : processName\n \"\n>\n <div body *ngIf=\"formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission\"\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n (isAdmin$ | async)\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */#supportingProcessStartModal .formio-component-submit{text-align:right}\n"] }]
|
|
115
115
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.ProcessService }, { type: i3.DocumentService }, { type: i4.FormLinkService }, { type: i5.NGXLogger }, { type: i6.UserProviderService }]; }, propDecorators: { form: [{
|
|
116
116
|
type: ViewChild,
|
|
117
117
|
args: ['form', { static: false }]
|
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
121
121
|
}], formSubmit: [{
|
|
122
122
|
type: Output
|
|
123
123
|
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFHTCxpQkFBaUIsR0FHbEIsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQUMsSUFBSSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBU3pDLE1BQU0sT0FBTywyQ0FBMkM7SUFtQnRELFlBQ1UsS0FBcUIsRUFDckIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLE1BQWlCLEVBQ1IsbUJBQXdDO1FBTmpELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFl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SSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxFQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDOzt5SUFqSFUsMkNBQTJDOzZIQUEzQywyQ0FBMkMsa1VDekN4RCw2dURBbURBOzRGRFZhLDJDQUEyQztrQkFOdkQsU0FBUzsrQkFDRSxnREFBZ0QsaUJBRzNDLGlCQUFpQixDQUFDLElBQUk7NlFBZ0JELElBQUk7c0JBQXZDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDeUIsS0FBSztzQkFBL0QsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRS9DLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXQsIEZvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIE1vZGFsQ29tcG9uZW50LFxuICBGb3JtaW9PcHRpb25zSW1wbCxcbiAgRm9ybWlvU3VibWlzc2lvbixcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGb3JtTGlua1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbGluayc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0Zvcm1Bc3NvY2lhdGlvbiwgRm9ybVN1Ym1pc3Npb25SZXN1bHR9IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbGluayc7XG5pbXBvcnQge25vb3AsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudCB7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcHJvY2Vzc05hbWU6IHN0cmluZztcbiAgcHVibGljIGZvcm1EZWZpbml0aW9uOiBGb3JtaW9Gb3JtO1xuICBwdWJsaWMgZm9ybWlvU3VibWlzc2lvbjogRm9ybWlvU3VibWlzc2lvbjtcbiAgcHJpdmF0ZSBmb3JtQXNzb2NpYXRpb246IEZvcm1Bc3NvY2lhdGlvbjtcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgc3VibWlzc2lvbjogb2JqZWN0O1xuXG4gIHJlYWRvbmx5IGlzQWRtaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAucGlwZShtYXAodXNlcklkZW50aXR5ID0+IHVzZXJJZGVudGl0eT8ucm9sZXM/LmluY2x1ZGVzKCdST0xFX0FETUlOJykpKTtcblxuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbCcsIHtzdGF0aWM6IGZhbHNlfSkgbW9kYWw6IE1vZGFsQ29tcG9uZW50O1xuICBwcml2YXRlIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUxpbmtTZXJ2aWNlOiBGb3JtTGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbG9hZEZvcm1EZWZpbml0aW9uKCkge1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBudWxsO1xuICAgIHRoaXMuZm9ybUxpbmtTZXJ2aWNlXG4gICAgICAuZ2V0U3RhcnRFdmVudEZvcm1EZWZpbml0aW9uQnlQcm9jZXNzRGVmaW5pdGlvbktleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgZm9ybURlZmluaXRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybUFzc29jaWF0aW9uID0gZm9ybURlZmluaXRpb24uZm9ybUFzc29jaWF0aW9uO1xuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmNsYXNzTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGxpbmtUeXBlID0gY2xhc3NOYW1lW2NsYXNzTmFtZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudEZvcm1JZExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZm9ybURlZmluaXRpb247XG4gICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZG9jdW1lbnQuY29udGVudCxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiBub29wKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQnBtbkVsZW1lbnRVcmxMaW5rJzpcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2Zvcm1EZWZpbml0aW9uLmZvcm1Bc3NvY2lhdGlvbi5mb3JtTGluay51cmxdKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudEFuZ3VsYXJTdGF0ZVVybExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJhbXM/LmRvY3VtZW50SWQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZm9ybURlZmluaXRpb24uZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLnVybF0sIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiB7Li4uKGRvY3VtZW50SWQgJiYge2RvY3VtZW50SWR9KX0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmZhdGFsKCdVbnN1cHBvcnRlZCBjbGFzcyBuYW1lJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcnMgPT4ge1xuICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgb3Blbk1vZGFsKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24sIGRvY3VtZW50SWQ6IHN0cmluZykge1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IGRvY3VtZW50SWQ7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lO1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgIHRoaXMucHJvY2Vzc05hbWUgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG5ldyBGb3JtaW9PcHRpb25zSW1wbCgpO1xuICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtaW9CZWZvcmVTdWJtaXQ6IEZvcm1pb0JlZm9yZVN1Ym1pdCA9IGZ1bmN0aW9uIChzdWJtaXNzaW9uLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobnVsbCwgc3VibWlzc2lvbik7XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuc2V0SG9va3MoZm9ybWlvQmVmb3JlU3VibWl0KTtcbiAgICB0aGlzLmxvYWRGb3JtRGVmaW5pdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KHN1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb24pIHtcbiAgICB0aGlzLmZvcm1pb1N1Ym1pc3Npb24gPSBzdWJtaXNzaW9uO1xuICAgIHRoaXMuZm9ybUxpbmtTZXJ2aWNlXG4gICAgICAub25TdWJtaXQoXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgIHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmlkLFxuICAgICAgICBzdWJtaXNzaW9uLmRhdGEsXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJZFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGZvcm1TdWJtaXNzaW9uUmVzdWx0OiBGb3JtU3VibWlzc2lvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgICAgICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ycyA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnb3RvRm9ybUxpbmtTY3JlZW4oKSB7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydmb3JtLWxpbmtzJ10sIHtxdWVyeVBhcmFtczoge3Byb2Nlc3M6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXl9fSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tbW9kYWxcbiAgI3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbFxuICBlbGVtZW50SWQ9XCJzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcIlxuICBbdGl0bGVdPVwiKHByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKSAhPT0gcHJvY2Vzc0RlZmluaXRpb25LZXkgPyAocHJvY2Vzc0RlZmluaXRpb25LZXkgfCB0cmFuc2xhdGUpIDogcHJvY2Vzc05hbWVcIlxuPlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRGVmaW5pdGlvblwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbc3VibWlzc2lvbl09XCJzdWJtaXNzaW9uXCJcbiAgICAgIFtmb3JtXT1cImZvcm1EZWZpbml0aW9uXCJcbiAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC92YWx0aW1vLWZvcm0taW8+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCIhZm9ybURlZmluaXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICB7e1xuICAgICAgICAoaXNBZG1pbiQgfCBhc3luYylcbiAgICAgICAgICA/ICgnZm9ybU1hbmFnZW1lbnQubm9Gb3JtRGVmaW5pdGlvbkZvdW5kQWRtaW4nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKCdmb3JtTWFuYWdlbWVudC5ub0Zvcm1EZWZpbml0aW9uRm91bmRVc2VyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTAgbXQtNCBwLTMgdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc3BhY2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImdvdG9Gb3JtTGlua1NjcmVlbigpXCJcbiAgICAgICAgaWQ9XCJmb3JtLWxpbmstYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmdvdG9Gb3JtTGlua3NCdXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3ZhbHRpbW8tbW9kYWw+XG4iXX0=
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFHTCxpQkFBaUIsR0FHbEIsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQUMsSUFBSSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBU3pDLE1BQU0sT0FBTywyQ0FBMkM7SUFtQnRELFlBQ1UsS0FBcUIsRUFDckIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLE1BQWlCLEVBQ1IsbUJBQXdDO1FBTmpELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFl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SSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxFQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDOzt5SUFqSFUsMkNBQTJDOzZIQUEzQywyQ0FBMkMsa1VDekN4RCxxd0RBdURBOzRGRGRhLDJDQUEyQztrQkFOdkQsU0FBUzsrQkFDRSxnREFBZ0QsaUJBRzNDLGlCQUFpQixDQUFDLElBQUk7NlFBZ0JELElBQUk7c0JBQXZDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDeUIsS0FBSztzQkFBL0QsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRS9DLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtaW9CZWZvcmVTdWJtaXQsIEZvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIE1vZGFsQ29tcG9uZW50LFxuICBGb3JtaW9PcHRpb25zSW1wbCxcbiAgRm9ybWlvU3VibWlzc2lvbixcbiAgVmFsdGltb0Zvcm1pb09wdGlvbnMsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtGb3JtTGlua1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbGluayc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0Zvcm1Bc3NvY2lhdGlvbiwgRm9ybVN1Ym1pc3Npb25SZXN1bHR9IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbGluayc7XG5pbXBvcnQge25vb3AsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudCB7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcHJvY2Vzc05hbWU6IHN0cmluZztcbiAgcHVibGljIGZvcm1EZWZpbml0aW9uOiBGb3JtaW9Gb3JtO1xuICBwdWJsaWMgZm9ybWlvU3VibWlzc2lvbjogRm9ybWlvU3VibWlzc2lvbjtcbiAgcHJpdmF0ZSBmb3JtQXNzb2NpYXRpb246IEZvcm1Bc3NvY2lhdGlvbjtcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgc3VibWlzc2lvbjogb2JqZWN0O1xuXG4gIHJlYWRvbmx5IGlzQWRtaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAucGlwZShtYXAodXNlcklkZW50aXR5ID0+IHVzZXJJZGVudGl0eT8ucm9sZXM/LmluY2x1ZGVzKCdST0xFX0FETUlOJykpKTtcblxuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbCcsIHtzdGF0aWM6IGZhbHNlfSkgbW9kYWw6IE1vZGFsQ29tcG9uZW50O1xuICBwcml2YXRlIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUxpbmtTZXJ2aWNlOiBGb3JtTGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbG9hZEZvcm1EZWZpbml0aW9uKCkge1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBudWxsO1xuICAgIHRoaXMuZm9ybUxpbmtTZXJ2aWNlXG4gICAgICAuZ2V0U3RhcnRFdmVudEZvcm1EZWZpbml0aW9uQnlQcm9jZXNzRGVmaW5pdGlvbktleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgZm9ybURlZmluaXRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybUFzc29jaWF0aW9uID0gZm9ybURlZmluaXRpb24uZm9ybUFzc29jaWF0aW9uO1xuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmNsYXNzTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGxpbmtUeXBlID0gY2xhc3NOYW1lW2NsYXNzTmFtZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudEZvcm1JZExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZm9ybURlZmluaXRpb247XG4gICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZG9jdW1lbnQuY29udGVudCxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiBub29wKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQnBtbkVsZW1lbnRVcmxMaW5rJzpcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKFxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2Zvcm1EZWZpbml0aW9uLmZvcm1Bc3NvY2lhdGlvbi5mb3JtTGluay51cmxdKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudEFuZ3VsYXJTdGF0ZVVybExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJhbXM/LmRvY3VtZW50SWQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZm9ybURlZmluaXRpb24uZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLnVybF0sIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiB7Li4uKGRvY3VtZW50SWQgJiYge2RvY3VtZW50SWR9KX0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmZhdGFsKCdVbnN1cHBvcnRlZCBjbGFzcyBuYW1lJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcnMgPT4ge1xuICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgb3Blbk1vZGFsKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24sIGRvY3VtZW50SWQ6IHN0cmluZykge1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IGRvY3VtZW50SWQ7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lO1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5O1xuICAgIHRoaXMucHJvY2Vzc05hbWUgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG5ldyBGb3JtaW9PcHRpb25zSW1wbCgpO1xuICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtaW9CZWZvcmVTdWJtaXQ6IEZvcm1pb0JlZm9yZVN1Ym1pdCA9IGZ1bmN0aW9uIChzdWJtaXNzaW9uLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobnVsbCwgc3VibWlzc2lvbik7XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuc2V0SG9va3MoZm9ybWlvQmVmb3JlU3VibWl0KTtcbiAgICB0aGlzLmxvYWRGb3JtRGVmaW5pdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KHN1Ym1pc3Npb246IEZvcm1pb1N1Ym1pc3Npb24pIHtcbiAgICB0aGlzLmZvcm1pb1N1Ym1pc3Npb24gPSBzdWJtaXNzaW9uO1xuICAgIHRoaXMuZm9ybUxpbmtTZXJ2aWNlXG4gICAgICAub25TdWJtaXQoXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgIHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmlkLFxuICAgICAgICBzdWJtaXNzaW9uLmRhdGEsXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJZFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGZvcm1TdWJtaXNzaW9uUmVzdWx0OiBGb3JtU3VibWlzc2lvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgICAgICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9ycyA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnb3RvRm9ybUxpbmtTY3JlZW4oKSB7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydmb3JtLWxpbmtzJ10sIHtxdWVyeVBhcmFtczoge3Byb2Nlc3M6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXl9fSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tbW9kYWxcbiAgI3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbFxuICBlbGVtZW50SWQ9XCJzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcIlxuICBbdGl0bGVdPVwiXG4gICAgKHByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKSAhPT0gcHJvY2Vzc0RlZmluaXRpb25LZXlcbiAgICAgID8gKHByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgOiBwcm9jZXNzTmFtZVxuICBcIlxuPlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRGVmaW5pdGlvblwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbc3VibWlzc2lvbl09XCJzdWJtaXNzaW9uXCJcbiAgICAgIFtmb3JtXT1cImZvcm1EZWZpbml0aW9uXCJcbiAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC92YWx0aW1vLWZvcm0taW8+XG4gIDwvZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCIhZm9ybURlZmluaXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICB7e1xuICAgICAgICAoaXNBZG1pbiQgfCBhc3luYylcbiAgICAgICAgICA/ICgnZm9ybU1hbmFnZW1lbnQubm9Gb3JtRGVmaW5pdGlvbkZvdW5kQWRtaW4nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKCdmb3JtTWFuYWdlbWVudC5ub0Zvcm1EZWZpbml0aW9uRm91bmRVc2VyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTAgbXQtNCBwLTMgdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc3BhY2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImdvdG9Gb3JtTGlua1NjcmVlbigpXCJcbiAgICAgICAgaWQ9XCJmb3JtLWxpbmstYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmdvdG9Gb3JtTGlua3NCdXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3ZhbHRpbW8tbW9kYWw+XG4iXX0=
|