@c8y/ngx-components 1021.31.0 → 1021.31.3
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/branding/shared/data/branding-tracking.service.d.ts +20 -0
- package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
- package/branding/shared/data/index.d.ts +1 -0
- package/branding/shared/data/index.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +8 -1
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.module.d.ts +1 -1
- package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
- package/core/plugins/index.d.ts +1 -0
- package/core/plugins/index.d.ts.map +1 -1
- package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
- package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +4 -2
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
- package/esm2022/branding/shared/data/index.mjs +2 -1
- package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
- package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
- package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
- package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
- package/esm2022/core/plugins/index.mjs +2 -1
- package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
- package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +68 -5
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +15 -11
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +38 -13
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +1 -1
- package/locales/es.po +1 -1
- package/locales/fr.po +1 -1
- package/locales/ja_JP.po +1 -1
- package/locales/ko.po +1 -1
- package/locales/nl.po +1 -1
- package/locales/pl.po +1 -1
- package/locales/pt_BR.po +1 -1
- package/locales/zh_CN.po +1 -1
- package/locales/zh_TW.po +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
-
import { StoreBrandingService, BrandingVersionService } from '@c8y/ngx-components/branding/shared/data';
|
|
2
|
+
import { StoreBrandingService, BrandingVersionService, BrandingTrackingService } from '@c8y/ngx-components/branding/shared/data';
|
|
3
3
|
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
4
4
|
import { map, shareReplay, switchMap } from 'rxjs/operators';
|
|
5
5
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
@@ -25,7 +25,7 @@ import * as i7 from "@c8y/ngx-components/branding/shared/lazy/add-branding-modal
|
|
|
25
25
|
import * as i8 from "../branding-import-modal/branding-import-modal.service";
|
|
26
26
|
import * as i9 from "@angular/common";
|
|
27
27
|
export class BrandingComponent {
|
|
28
|
-
constructor(brandings, activatedRoute, appState, applicationService, zip, staticAssets, router, modal, confirmModal, brandingVersionService, addBrandingModalService, alert, brandingImportModalService) {
|
|
28
|
+
constructor(brandings, activatedRoute, appState, applicationService, zip, staticAssets, router, modal, confirmModal, brandingVersionService, addBrandingModalService, alert, brandingImportModalService, brandingTracking) {
|
|
29
29
|
this.brandings = brandings;
|
|
30
30
|
this.activatedRoute = activatedRoute;
|
|
31
31
|
this.appState = appState;
|
|
@@ -39,6 +39,7 @@ export class BrandingComponent {
|
|
|
39
39
|
this.addBrandingModalService = addBrandingModalService;
|
|
40
40
|
this.alert = alert;
|
|
41
41
|
this.brandingImportModalService = brandingImportModalService;
|
|
42
|
+
this.brandingTracking = brandingTracking;
|
|
42
43
|
this.pagination = {
|
|
43
44
|
pageSize: 10,
|
|
44
45
|
currentPage: 1
|
|
@@ -68,7 +69,7 @@ export class BrandingComponent {
|
|
|
68
69
|
icon: 'external-link',
|
|
69
70
|
text: gettext('Open preview'),
|
|
70
71
|
callback: async (entry, _reload) => {
|
|
71
|
-
|
|
72
|
+
this.brandings.openPreviewForBranding(entry.name);
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
75
|
{
|
|
@@ -127,6 +128,7 @@ export class BrandingComponent {
|
|
|
127
128
|
// did not confirm
|
|
128
129
|
return;
|
|
129
130
|
}
|
|
131
|
+
this.brandingTracking.deleteBrandingVariant();
|
|
130
132
|
await this.applicationService.deleteVersionPackage(entry.publicOptionsApp, {
|
|
131
133
|
version: entry.version
|
|
132
134
|
});
|
|
@@ -188,10 +190,12 @@ export class BrandingComponent {
|
|
|
188
190
|
if (result === false || (typeof result === 'object' && !result.confirmed)) {
|
|
189
191
|
return;
|
|
190
192
|
}
|
|
193
|
+
this.brandingTracking.deleteAllBrandings();
|
|
191
194
|
await this.brandings.deleteAllBrandings(publicOptions);
|
|
192
195
|
this.refresh();
|
|
193
196
|
}
|
|
194
197
|
async exportBranding(variant) {
|
|
198
|
+
this.brandingTracking.exportBranding();
|
|
195
199
|
const branding = await firstValueFrom(this.brandings.getZipForBinary(variant.id));
|
|
196
200
|
const staticAssetsApp = await this.staticAssets.getAppForTenant('branding');
|
|
197
201
|
const staticAssetsZip = await firstValueFrom(this.brandings.getZipForBinary(staticAssetsApp.activeVersionId, this.staticAssets.fileNames.exportZipName));
|
|
@@ -217,6 +221,7 @@ export class BrandingComponent {
|
|
|
217
221
|
catch (e) {
|
|
218
222
|
console.warn(`Failed to load latest branding`);
|
|
219
223
|
}
|
|
224
|
+
this.brandingTracking.addNewVersion();
|
|
220
225
|
try {
|
|
221
226
|
await this.brandings.addBranding(this.brandingVersionService.createInitialBrandingVersion(versionDetails.brandingName), fallBackBranding, [versionDetails.brandingName]);
|
|
222
227
|
await this.brandings.waitForBrandingToBePresent(versionDetails.brandingName);
|
|
@@ -232,6 +237,7 @@ export class BrandingComponent {
|
|
|
232
237
|
if (!versionDetails) {
|
|
233
238
|
return;
|
|
234
239
|
}
|
|
240
|
+
this.brandingTracking.duplicateVersion();
|
|
235
241
|
try {
|
|
236
242
|
await this.brandings.addBranding(this.brandingVersionService.createInitialBrandingVersion(versionDetails.brandingName), options, [versionDetails.brandingName]);
|
|
237
243
|
await this.brandings.waitForBrandingToBePresent(versionDetails.brandingName);
|
|
@@ -260,6 +266,7 @@ export class BrandingComponent {
|
|
|
260
266
|
if (result === false || (typeof result === 'object' && !result.confirmed)) {
|
|
261
267
|
return;
|
|
262
268
|
}
|
|
269
|
+
this.brandingTracking.getStartedUsingBranding();
|
|
263
270
|
await this.brandings.getStartedUsingBranding();
|
|
264
271
|
await this.addNewVersion();
|
|
265
272
|
}
|
|
@@ -282,12 +289,9 @@ export class BrandingComponent {
|
|
|
282
289
|
// modal closed
|
|
283
290
|
return;
|
|
284
291
|
}
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
.filter(key => selectedTags[key])
|
|
289
|
-
.map(tag => `${prefix}${tag}`)
|
|
290
|
-
];
|
|
292
|
+
const selectedApps = Object.keys(selectedTags).filter(key => selectedTags[key]);
|
|
293
|
+
this.brandingTracking.applyToApps(selectedApps);
|
|
294
|
+
const tagsToSet = [...otherTags, ...selectedApps.map(tag => `${prefix}${tag}`)];
|
|
291
295
|
await this.removeTagsFromOtherVersions(version.publicOptionsApp, tagsToSet, version.version);
|
|
292
296
|
await this.applicationService.setPackageVersionTag(version.publicOptionsApp, version.version, tagsToSet);
|
|
293
297
|
}
|
|
@@ -313,11 +317,11 @@ export class BrandingComponent {
|
|
|
313
317
|
await this.applicationService.setPackageVersionTag(publicOptionsApp, version.version, removedTags);
|
|
314
318
|
}
|
|
315
319
|
}
|
|
316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BrandingComponent, deps: [{ token: i1.StoreBrandingService }, { token: i2.ActivatedRoute }, { token: i3.AppStateService }, { token: i4.ApplicationService }, { token: i3.ZipService }, { token: i5.StaticAssetsService }, { token: i2.Router }, { token: i6.BsModalService }, { token: i3.ModalService }, { token: i1.BrandingVersionService }, { token: i7.AddBrandingModalService }, { token: i3.AlertService }, { token: i8.BrandingImportModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BrandingComponent, deps: [{ token: i1.StoreBrandingService }, { token: i2.ActivatedRoute }, { token: i3.AppStateService }, { token: i4.ApplicationService }, { token: i3.ZipService }, { token: i5.StaticAssetsService }, { token: i2.Router }, { token: i6.BsModalService }, { token: i3.ModalService }, { token: i1.BrandingVersionService }, { token: i7.AddBrandingModalService }, { token: i3.AlertService }, { token: i8.BrandingImportModalService }, { token: i1.BrandingTrackingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
317
321
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BrandingComponent, isStandalone: true, selector: "c8y-branding", ngImport: i0, template: "<c8y-title translate>Branding</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'palette'\"\n [label]=\"'Branding' | translate\"\n [path]=\"'/branding-editor'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *ngIf=\"availableBrandingVariants$ | async as brandingVariant; else loading\">\n <c8y-action-bar-item\n *ngIf=\"brandingVariant.publicOptions\"\n [placement]=\"'right'\"\n [priority]=\"30\"\n >\n <button\n class=\"btn btn-link\"\n (click)=\"addNewVersion()\"\n data-cy=\"branding-add-branding-variant\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n <span translate>Add variant</span>\n </button>\n </c8y-action-bar-item>\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"20\"\n >\n <button\n class=\"btn btn-link\"\n data-cy=\"branding-import-branding\"\n (click)=\"importBranding()\"\n >\n <i [c8yIcon]=\"'data-import'\"></i>\n <span translate>Import variant</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item\n *ngIf=\"brandingVariant.publicOptions\"\n [placement]=\"'right'\"\n [priority]=\"10\"\n >\n <button\n class=\"btn btn-link\"\n (click)=\"deleteAllBrandings(brandingVariant.publicOptions)\"\n data-cy=\"branding-remove-all-brandings\"\n >\n <i [c8yIcon]=\"'trash-o'\"></i>\n <span translate>Delete all variants</span>\n </button>\n </c8y-action-bar-item>\n\n <div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"'Branding variants' | translate\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [pagination]=\"pagination\"\n [displayOptions]=\"displayOptions\"\n (onReload)=\"refresh()\"\n [rows]=\"brandingVariant.variants\"\n >\n <c8y-ui-empty-state\n [icon]=\"'palette'\"\n [title]=\"'No branding variants' | translate\"\n [subtitle]=\"\n 'Personalize your experience with a theme-able interface. Create a unique look that aligns\n with your brand identity.'\n | translate\n \"\n *ngIf=\"!brandingVariant.publicOptions\"\n [horizontal]=\"false\"\n >\n <button\n class=\"btn btn-default\"\n data-cy=\"branding-get-started-using-branding\"\n (click)=\"getStartedUsingBranding()\"\n translate\n >\n Add branding variant\n </button>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i3.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "ngmodule", type: DataGridModule }] }); }
|
|
318
322
|
}
|
|
319
323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BrandingComponent, decorators: [{
|
|
320
324
|
type: Component,
|
|
321
325
|
args: [{ selector: 'c8y-branding', standalone: true, imports: [CoreModule, DataGridModule], template: "<c8y-title translate>Branding</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'palette'\"\n [label]=\"'Branding' | translate\"\n [path]=\"'/branding-editor'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *ngIf=\"availableBrandingVariants$ | async as brandingVariant; else loading\">\n <c8y-action-bar-item\n *ngIf=\"brandingVariant.publicOptions\"\n [placement]=\"'right'\"\n [priority]=\"30\"\n >\n <button\n class=\"btn btn-link\"\n (click)=\"addNewVersion()\"\n data-cy=\"branding-add-branding-variant\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n <span translate>Add variant</span>\n </button>\n </c8y-action-bar-item>\n <c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"20\"\n >\n <button\n class=\"btn btn-link\"\n data-cy=\"branding-import-branding\"\n (click)=\"importBranding()\"\n >\n <i [c8yIcon]=\"'data-import'\"></i>\n <span translate>Import variant</span>\n </button>\n </c8y-action-bar-item>\n\n <c8y-action-bar-item\n *ngIf=\"brandingVariant.publicOptions\"\n [placement]=\"'right'\"\n [priority]=\"10\"\n >\n <button\n class=\"btn btn-link\"\n (click)=\"deleteAllBrandings(brandingVariant.publicOptions)\"\n data-cy=\"branding-remove-all-brandings\"\n >\n <i [c8yIcon]=\"'trash-o'\"></i>\n <span translate>Delete all variants</span>\n </button>\n </c8y-action-bar-item>\n\n <div class=\"content-fullpage d-flex d-col border-top\">\n <c8y-data-grid\n [title]=\"'Branding variants' | translate\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [pagination]=\"pagination\"\n [displayOptions]=\"displayOptions\"\n (onReload)=\"refresh()\"\n [rows]=\"brandingVariant.variants\"\n >\n <c8y-ui-empty-state\n [icon]=\"'palette'\"\n [title]=\"'No branding variants' | translate\"\n [subtitle]=\"\n 'Personalize your experience with a theme-able interface. Create a unique look that aligns\n with your brand identity.'\n | translate\n \"\n *ngIf=\"!brandingVariant.publicOptions\"\n [horizontal]=\"false\"\n >\n <button\n class=\"btn btn-default\"\n data-cy=\"branding-get-started-using-branding\"\n (click)=\"getStartedUsingBranding()\"\n translate\n >\n Add branding variant\n </button>\n </c8y-ui-empty-state>\n </c8y-data-grid>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n" }]
|
|
322
|
-
}], ctorParameters: () => [{ type: i1.StoreBrandingService }, { type: i2.ActivatedRoute }, { type: i3.AppStateService }, { type: i4.ApplicationService }, { type: i3.ZipService }, { type: i5.StaticAssetsService }, { type: i2.Router }, { type: i6.BsModalService }, { type: i3.ModalService }, { type: i1.BrandingVersionService }, { type: i7.AddBrandingModalService }, { type: i3.AlertService }, { type: i8.BrandingImportModalService }] });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYnJhbmRpbmcvYnJhbmRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYnJhbmRpbmcvYnJhbmRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN2QixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLFlBQVksRUFDWixlQUFlLEVBQ2YsaUJBQWlCLEVBR2pCLFlBQVksRUFFWixNQUFNLEVBQ04sVUFBVSxFQUNWLE9BQU8sRUFDUCxVQUFVLEVBQ1YsY0FBYyxFQUNmLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN0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SyxNQUFNLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNELElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDeEMsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvQyxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUNoRCxnQkFBZ0IsRUFDaEIsT0FBTyxDQUFDLE9BQU8sRUFDZixXQUFXLENBQ1osQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOzhHQTFXVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3RUN6QzlCLHNsRkEyRkEsMkNEcERZLFVBQVUsdzdEQUFFLGNBQWM7OzJGQUV6QixpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJyYW5kVmVyc2lvbixcbiAgU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gIEJyYW5kaW5nVmVyc2lvblNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9icmFuZGluZy9zaGFyZWQvZGF0YSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBCdWlsdEluQWN0aW9uVHlwZSxcbiAgQ29sdW1uLFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBTdGF0dXMsXG4gIFppcFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIENvcmVNb2R1bGUsXG4gIERhdGFHcmlkTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IFN0YXRpY0Fzc2V0c1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3N0YXRpYy1hc3NldHMvZGF0YSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQXBwbHlCcmFuZGluZ1RvQXBwTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9hcHBseS1icmFuZGluZy10by1hcHAtbW9kYWwvYXBwbHktYnJhbmRpbmctdG8tYXBwLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBZGRCcmFuZGluZ01vZGFsU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYnJhbmRpbmcvc2hhcmVkL2xhenkvYWRkLWJyYW5kaW5nLW1vZGFsJztcbmltcG9ydCB7IEJyYW5kaW5nVGFnc0NlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kaW5nLXRhZ3MtY2VsbC1yZW5kZXJlci9icmFuZGluZy10YWdzLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJyYW5kaW5nSW1wb3J0TW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vYnJhbmRpbmctaW1wb3J0LW1vZGFsL2JyYW5kaW5nLWltcG9ydC1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEJyYW5kaW5nTmFtZUNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kaW5nLW5hbWUtY2VsbC1yZW5kZXJlci9icmFuZGluZy1uYW1lLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJyYW5kaW5nVGFnc0hlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kaW5nLXRhZ3MtaGVhZGVyLWNlbGwtcmVuZGVyZXIvYnJhbmRpbmctdGFncy1oZWFkZXItY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYnJhbmRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJhbmRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgRGF0YUdyaWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEJyYW5kaW5nQ29tcG9uZW50IHtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zID0ge1xuICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICBzdHJpcGVkOiB0cnVlLFxuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgIGhvdmVyOiB0cnVlXG4gIH07XG4gIGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10gPSBbXG4gICAge1xuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRWRpdCxcbiAgICAgIGNhbGxiYWNrOiAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRCcmFuZGluZyhlbnRyeS5uYW1lKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6IEJ1aWx0SW5BY3Rpb25UeXBlLkV4cG9ydCxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydEJyYW5kaW5nKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdwcmV2aWV3JyxcbiAgICAgIGljb246ICdleHRlcm5hbC1saW5rJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ09wZW4gcHJldmlldycpLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jIChlbnRyeTogQnJhbmRWZXJzaW9uLCBfcmVsb2FkKSA9PiB7XG4gICAgICAgIHdpbmRvdy5vcGVuKFxuICAgICAgICAgIGAvYXBwcy8ke1xuICAgICAgICAgICAgdGhpcy5hcHBTdGF0ZS5jdXJyZW50QXBwbGljYXRpb24udmFsdWU/LmNvbnRleHRQYXRoIHx8ICdjb2NrcGl0J1xuICAgICAgICAgIH0vaW5kZXguaHRtbD9icmFuZGluZ1ByZXZpZXc9dHJ1ZSZkeW5hbWljT3B0aW9uc1VybD0vYXBwcy9wdWJsaWMvcHVibGljLW9wdGlvbnNAJHtlbnRyeS5uYW1lfS9vcHRpb25zLmpzb25gLFxuICAgICAgICAgICdfYmxhbmsnLFxuICAgICAgICAgICdub29wZW5lcixub3JlZmVycmVyJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2R1cGxpY2F0ZScsXG4gICAgICBpY29uOiAnY29weScsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdEdXBsaWNhdGUnKSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmR1cGxpY2F0ZVZlcnNpb24oZW50cnkpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdhcHBseS10by1hcHAnLFxuICAgICAgaWNvbjogJ2Zvcm0nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnQXBwbHkgdG8gc3BlY2lmaWMgYXBwcycpLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jIChlbnRyeTogQnJhbmRWZXJzaW9uLCBfcmVsb2FkKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbHlUb0FwcHMoZW50cnkpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdzZXQtYXMtZGVmYXVsdCcsXG4gICAgICBpY29uOiAnZ2xvYmUxJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ1NldCBhcyBnbG9iYWwnKSxcbiAgICAgIHNob3dJZjogKGVudHJ5OiBCcmFuZFZlcnNpb24pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBjYWxsYmFjazogYXN5bmMgKGVudHJ5OiBCcmFuZFZlcnNpb24sIF9yZWxvYWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpcm1Nb2RhbC5jb25maXJtKFxuICAgICAgICAgICAgZ2V0dGV4dCgnU2V0IGFzIGdsb2JhbCBicmFuZGluZycpLFxuICAgICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICAgJ0FyZSB5b3Ugc3VyZSB0aGF0IHlvdSB3YW50IHRvIHNldCB0aGlzIHZhcmlhbnQgYXMgdGhlIGdsb2JhbCBicmFuZGluZz8gQnkgZG9pbmcgc28sIHRoaXMgdmFyaWFudCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGFwcHMgdGhhdCBkbyBub3QgaGF2ZSBhIHNwZWNpZmljIGJyYW5kaW5nIGFwcGxpZWQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFN0YXR1cy5JTkZPXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gZGlkIG5vdCBjb25maXJtXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuYnJhbmRpbmdzLm1hcmtBc0FjdGl2ZShlbnRyeSk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRGVsZXRlLFxuICAgICAgc2hvd0lmOiAoZW50cnk6IEJyYW5kVmVyc2lvbikgPT4ge1xuICAgICAgICBpZiAoZW50cnkudGFncz8uaW5jbHVkZXMoJ2xhdGVzdCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY29uZmlybU1vZGFsLmNvbmZpcm0oXG4gICAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgYnJhbmRpbmcgdmFyaWFudCcpLFxuICAgICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgYnJhbmRpbmcgdmFyaWFudC4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgU3RhdHVzLkRBTkdFUlxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGRpZCBub3QgY29uZmlybVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5kZWxldGVWZXJzaW9uUGFja2FnZShlbnRyeS5wdWJsaWNPcHRpb25zQXBwLCB7XG4gICAgICAgICAgdmVyc2lvbjogZW50cnkudmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICB9XG4gICAgfVxuICBdO1xuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ05hbWUnKSxcbiAgICAgIHBhdGg6ICduYW1lJyxcbiAgICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgICBjZWxsUmVuZGVyZXJDb21wb25lbnQ6IEJyYW5kaW5nTmFtZUNlbGxSZW5kZXJlckNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogZ2V0dGV4dCgnQXBwbGllZCB0b2BBcHBsaWNhdGlvbnMgYSBicmFuZGluZyBhcHBsaWVzIHRvICh0YWJsZSBjb2x1bW4gaGVhZGVyKWAnKSxcbiAgICAgIHBhdGg6ICd0YWdzJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgY2VsbENTU0NsYXNzTmFtZTogJ3NtYWxsJyxcbiAgICAgIGNlbGxSZW5kZXJlckNvbXBvbmVudDogQnJhbmRpbmdUYWdzQ2VsbFJlbmRlcmVyQ29tcG9uZW50LFxuICAgICAgaGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50OiBCcmFuZGluZ1RhZ3NIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvd25lcicsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ093bmVyJyksXG4gICAgICBwYXRoOiAnb3duZXInLFxuICAgICAgZmlsdGVyYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdsYXN0VXBkYXRlZCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ0xhc3QgdXBkYXRlZCcpLFxuICAgICAgcGF0aDogJ2xhc3RVcGRhdGVkJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlXG4gICAgfVxuICBdO1xuICBjdXJyZW50QXBwQ29udGV4dFBhdGggPSAnYWRtaW5pc3RyYXRpb24nO1xuICBhdmFpbGFibGVCcmFuZGluZ1ZhcmlhbnRzJDogT2JzZXJ2YWJsZTx7XG4gICAgcHVibGljT3B0aW9uczogSUFwcGxpY2F0aW9uO1xuICAgIHZhcmlhbnRzOiBCcmFuZFZlcnNpb25bXTtcbiAgfT47XG5cbiAgcHJpdmF0ZSByZWxvYWRUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJyYW5kaW5nczogU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6aXA6IFppcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0aWNBc3NldHM6IFN0YXRpY0Fzc2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpcm1Nb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJhbmRpbmdWZXJzaW9uU2VydmljZTogQnJhbmRpbmdWZXJzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFkZEJyYW5kaW5nTW9kYWxTZXJ2aWNlOiBBZGRCcmFuZGluZ01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBicmFuZGluZ0ltcG9ydE1vZGFsU2VydmljZTogQnJhbmRpbmdJbXBvcnRNb2RhbFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50QXBwQ29udGV4dFBhdGggPSB0aGlzLmFwcFN0YXRlLnN0YXRlLmFwcD8uY29udGV4dFBhdGggfHwgdGhpcy5jdXJyZW50QXBwQ29udGV4dFBhdGg7XG4gICAgdGhpcy5hdmFpbGFibGVCcmFuZGluZ1ZhcmlhbnRzJCA9IHRoaXMucmVsb2FkVHJpZ2dlci5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYnJhbmRpbmdzLmxvYWRCcmFuZGluZ1ZhcmlhbnRzKCkpLFxuICAgICAgLy8gaGlkZSB0aGUgZmFsbGJhY2sgZnJvbSB1c2Vyc1xuICAgICAgbWFwKHZhcmlhbnRzID0+IHtcbiAgICAgICAgdmFyaWFudHMudmFyaWFudHMgPSB2YXJpYW50cy52YXJpYW50cy5maWx0ZXIodiA9PiAhdi50YWdzPy5pbmNsdWRlcygnZmFsbGJhY2snKSk7XG4gICAgICAgIHJldHVybiB2YXJpYW50cztcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGxCcmFuZGluZ3MocHVibGljT3B0aW9ucz86IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybU1vZGFsLmNvbmZpcm0oXG4gICAgICBnZXR0ZXh0KCdEZWxldGUgYWxsIGJyYW5kaW5nIHZhcmlhbnRzJyksXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICBgPHAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgICAgIFRoaXMgYWN0aW9uIHdpbGwgcGVybWFuZW50bHkgcmVtb3ZlIGFsbCBjdXN0b20gYnJhbmRpbmcgdmFyaWFudHMuIFlvdXIgdGVuYW50IHdpbGwgcmV2ZXJ0XG4gICAgICAgICAgdG8gdGhlIGRlZmF1bHQgYnJhbmRpbmcuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgICAgIENvbnNpZGVyIGV4cG9ydGluZyB5b3VyIGN1c3RvbSBicmFuZGluZyB2YXJpYW50cyBiZWZvcmUgcHJvY2VlZGluZywgYXMgdGhpcyBhY3Rpb24gY2Fubm90XG4gICAgICAgICAgYmUgdW5kb25lLlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT9cbiAgICAgICAgPC9wPmBcbiAgICAgICksXG4gICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgeyBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpLCBvazogZ2V0dGV4dCgnRGVsZXRlIGFsbCcpIH1cbiAgICApO1xuICAgIGlmIChyZXN1bHQgPT09IGZhbHNlIHx8ICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhcmVzdWx0LmNvbmZpcm1lZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy5kZWxldGVBbGxCcmFuZGluZ3MocHVibGljT3B0aW9ucyk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyBleHBvcnRCcmFuZGluZyh2YXJpYW50OiBCcmFuZFZlcnNpb24pIHtcbiAgICBjb25zdCBicmFuZGluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYnJhbmRpbmdzLmdldFppcEZvckJpbmFyeSh2YXJpYW50LmlkKSk7XG4gICAgY29uc3Qgc3RhdGljQXNzZXRzQXBwID0gYXdhaXQgdGhpcy5zdGF0aWNBc3NldHMuZ2V0QXBwRm9yVGVuYW50KCdicmFuZGluZycpO1xuICAgIGNvbnN0IHN0YXRpY0Fzc2V0c1ppcCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5icmFuZGluZ3MuZ2V0WmlwRm9yQmluYXJ5KFxuICAgICAgICBzdGF0aWNBc3NldHNBcHAuYWN0aXZlVmVyc2lvbklkLFxuICAgICAgICB0aGlzLnN0YXRpY0Fzc2V0cy5maWxlTmFtZXMuZXhwb3J0WmlwTmFtZVxuICAgICAgKVxuICAgICk7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHRoaXMuemlwLmNyZWF0ZVppcChbXG4gICAgICB7IGZpbGVOYW1lOiB0aGlzLmJyYW5kaW5ncy5maWxlTmFtZXMuZXhwb3J0WmlwTmFtZSwgYmxvYjogYnJhbmRpbmcgfSxcbiAgICAgIHsgZmlsZU5hbWU6IHRoaXMuc3RhdGljQXNzZXRzLmZpbGVOYW1lcy5leHBvcnRaaXBOYW1lLCBibG9iOiBzdGF0aWNBc3NldHNaaXAgfVxuICAgIF0pO1xuICAgIHNhdmVBcyhibG9iLCBgYnJhbmRpbmctZXhwb3J0LSR7dmFyaWFudC5uYW1lfS0ke3ZhcmlhbnQucmV2aXNpb259LSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9LnppcGApO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgYWRkTmV3VmVyc2lvbigpIHtcbiAgICBjb25zdCB2ZXJzaW9uRGV0YWlscyA9IGF3YWl0IHRoaXMuYWRkQnJhbmRpbmdNb2RhbFNlcnZpY2Uub3BlbkFkZEJyYW5kaW5nTW9kYWwoKTtcbiAgICBpZiAoIXZlcnNpb25EZXRhaWxzKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGZhbGxCYWNrQnJhbmRpbmcgPSB7fTtcbiAgICB0cnkge1xuICAgICAgZmFsbEJhY2tCcmFuZGluZyA9IGF3YWl0IHRoaXMuYnJhbmRpbmdzLmdldEJyYW5kaW5nT3B0aW9uc0ZvclZlcnNpb24oJ2xhdGVzdCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGxvYWQgbGF0ZXN0IGJyYW5kaW5nYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuYnJhbmRpbmdzLmFkZEJyYW5kaW5nKFxuICAgICAgICB0aGlzLmJyYW5kaW5nVmVyc2lvblNlcnZpY2UuY3JlYXRlSW5pdGlhbEJyYW5kaW5nVmVyc2lvbih2ZXJzaW9uRGV0YWlscy5icmFuZGluZ05hbWUpLFxuICAgICAgICBmYWxsQmFja0JyYW5kaW5nLFxuICAgICAgICBbdmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lXVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYnJhbmRpbmdzLndhaXRGb3JCcmFuZGluZ1RvQmVQcmVzZW50KHZlcnNpb25EZXRhaWxzLmJyYW5kaW5nTmFtZSk7XG4gICAgICB0aGlzLmVkaXRCcmFuZGluZyh2ZXJzaW9uRGV0YWlscy5icmFuZGluZ05hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlLCAnZGFuZ2VyJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZHVwbGljYXRlVmVyc2lvbih2ZXJzaW9uOiBCcmFuZFZlcnNpb24pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgdGhpcy5icmFuZGluZ3MuZ2V0QnJhbmRpbmdPcHRpb25zRm9yVmVyc2lvbih2ZXJzaW9uLnZlcnNpb24pO1xuICAgIGNvbnN0IHZlcnNpb25EZXRhaWxzID0gYXdhaXQgdGhpcy5hZGRCcmFuZGluZ01vZGFsU2VydmljZS5vcGVuRHVwbGljYXRlQnJhbmRpbmdNb2RhbCgpO1xuICAgIGlmICghdmVyc2lvbkRldGFpbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5icmFuZGluZ3MuYWRkQnJhbmRpbmcoXG4gICAgICAgIHRoaXMuYnJhbmRpbmdWZXJzaW9uU2VydmljZS5jcmVhdGVJbml0aWFsQnJhbmRpbmdWZXJzaW9uKHZlcnNpb25EZXRhaWxzLmJyYW5kaW5nTmFtZSksXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIFt2ZXJzaW9uRGV0YWlscy5icmFuZGluZ05hbWVdXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5icmFuZGluZ3Mud2FpdEZvckJyYW5kaW5nVG9CZVByZXNlbnQodmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lKTtcbiAgICAgIHRoaXMuZWRpdEJyYW5kaW5nKHZlcnNpb25EZXRhaWxzLmJyYW5kaW5nTmFtZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUsICdkYW5nZXInKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBlZGl0QnJhbmRpbmcoYnJhbmRpbmdOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2JyYW5kaW5nTmFtZSwgJ2VkaXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhcnRlZFVzaW5nQnJhbmRpbmcoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtTW9kYWwuY29uZmlybShcbiAgICAgIGdldHRleHQoYEdldCBzdGFydGVkIHVzaW5nIGJyYW5kaW5nIHZhcmlhbnRzYCksXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICBgPHAgY2xhc3M9XCJtLWItOFwiPkNvbmZpcm1pbmcgdGhpcyBhY3Rpb24gY3JlYXRlcyB0d28gYnJhbmRpbmcgdmFyaWFudHM6PC9wPlxuICAgICAgICA8dWwgY2xhc3M9XCJtLWItOCBwLWwtMTZcIj5cbiAgICAgICAgICA8bGk+QSBkZWZhdWx0IGNvcHkgb2YgeW91ciBjdXJyZW50IGdsb2JhbCBicmFuZGluZzwvbGk+XG4gICAgICAgICAgPGxpPllvdXIgbmV3IGN1c3RvbWl6YWJsZSB2YXJpYW50LjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgICAgICBBZnRlciBjdXN0b21pemF0aW9uLCB5b3UgY2FuIHNldCB5b3VyIG5ldyB2YXJpYW50IGFzIGdsb2JhbCBvciBhcHBseSBpdCB0byBzcGVjaWZpYyBhcHBzLlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIFRvIHJldmVydCBjaGFuZ2VzLCBzaW1wbHkgc2V0IHRoZSBkZWZhdWx0IGJyYW5kaW5nIGFzIGdsb2JhbCBvciB1c2UgdGhlIFwiRGVsZXRlIGFsbFxuICAgICAgICAgIGJyYW5kaW5nc1wiIGJ1dHRvbiBhdCBhbnkgdGltZS5cbiAgICAgICAgPC9wPmBcbiAgICAgIClcbiAgICApO1xuICAgIGlmIChyZXN1bHQgPT09IGZhbHNlIHx8ICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhcmVzdWx0LmNvbmZpcm1lZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy5nZXRTdGFydGVkVXNpbmdCcmFuZGluZygpO1xuICAgIGF3YWl0IHRoaXMuYWRkTmV3VmVyc2lvbigpO1xuICB9XG5cbiAgYXN5bmMgYXBwbHlUb0FwcHModmVyc2lvbjogQnJhbmRWZXJzaW9uKSB7XG4gICAgY29uc3QgcHJlZml4ID0gJ2FwcC0nO1xuICAgIGNvbnN0IGN1cnJlbnRUYWdzID0gdmVyc2lvbi50YWdzXG4gICAgICAuZmlsdGVyKHRhZyA9PiB0YWcuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgLm1hcCh0YWcgPT4gdGFnLnJlcGxhY2UocHJlZml4LCAnJykpO1xuICAgIGNvbnN0IG90aGVyVGFncyA9IHZlcnNpb24udGFncy5maWx0ZXIodGFnID0+ICF0YWcuc3RhcnRzV2l0aChwcmVmaXgpKTtcbiAgICBsZXQgc2VsZWN0ZWRUYWdzOiBBd2FpdGVkPEFwcGx5QnJhbmRpbmdUb0FwcE1vZGFsQ29tcG9uZW50WydyZXN1bHQnXT47XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbC5zaG93KEFwcGx5QnJhbmRpbmdUb0FwcE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGluaXRpYWxTdGF0ZTogeyBjdXJyZW50VGFncyB9LFxuICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgICBrZXlib2FyZDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgc2VsZWN0ZWRUYWdzID0gYXdhaXQgbW9kYWxSZWYuY29udGVudC5yZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbW9kYWwgY2xvc2VkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFnc1RvU2V0ID0gW1xuICAgICAgLi4ub3RoZXJUYWdzLFxuICAgICAgLi4uT2JqZWN0LmtleXMoc2VsZWN0ZWRUYWdzKVxuICAgICAgICAuZmlsdGVyKGtleSA9PiBzZWxlY3RlZFRhZ3Nba2V5XSlcbiAgICAgICAgLm1hcCh0YWcgPT4gYCR7cHJlZml4fSR7dGFnfWApXG4gICAgXTtcblxuICAgIGF3YWl0IHRoaXMucmVtb3ZlVGFnc0Zyb21PdGhlclZlcnNpb25zKHZlcnNpb24ucHVibGljT3B0aW9uc0FwcCwgdGFnc1RvU2V0LCB2ZXJzaW9uLnZlcnNpb24pO1xuICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnNldFBhY2thZ2VWZXJzaW9uVGFnKFxuICAgICAgdmVyc2lvbi5wdWJsaWNPcHRpb25zQXBwLFxuICAgICAgdmVyc2lvbi52ZXJzaW9uLFxuICAgICAgdGFnc1RvU2V0XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGltcG9ydEJyYW5kaW5nKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmJyYW5kaW5nSW1wb3J0TW9kYWxTZXJ2aWNlLm9wZW5CcmFuZGluZ0ltcG9ydE1vZGFsKCk7XG5cbiAgICAgIHRoaXMuYnJhbmRpbmdzLnJlZnJlc2hUcmlnZ2VyQnJhbmRpbmdWYXJpYW50cy5uZXh0KCk7XG4gICAgICB0aGlzLnJlbG9hZFRyaWdnZXIubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG1vZGFsIGNsb3NlZFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlVGFnc0Zyb21PdGhlclZlcnNpb25zKFxuICAgIHB1YmxpY09wdGlvbnNBcHA6IElBcHBsaWNhdGlvbixcbiAgICB0YWdzVG9SZW1vdmU6IHN0cmluZ1tdLFxuICAgIHZlcnNpb25Ub0lnbm9yZT86IHN0cmluZ1xuICApIHtcbiAgICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgcHVibGljT3B0aW9uc0FwcC5hcHBsaWNhdGlvblZlcnNpb25zKSB7XG4gICAgICBpZiAodmVyc2lvbi52ZXJzaW9uID09PSB2ZXJzaW9uVG9JZ25vcmUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZW1vdmVkVGFncyA9IHZlcnNpb24udGFncy5maWx0ZXIodGFnID0+ICF0YWdzVG9SZW1vdmUuaW5jbHVkZXModGFnKSk7XG4gICAgICBpZiAocmVtb3ZlZFRhZ3MubGVuZ3RoID09PSB2ZXJzaW9uLnRhZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2Uuc2V0UGFja2FnZVZlcnNpb25UYWcoXG4gICAgICAgIHB1YmxpY09wdGlvbnNBcHAsXG4gICAgICAgIHZlcnNpb24udmVyc2lvbixcbiAgICAgICAgcmVtb3ZlZFRhZ3NcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlIHRyYW5zbGF0ZT5CcmFuZGluZzwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ3BhbGV0dGUnXCJcbiAgICBbbGFiZWxdPVwiJ0JyYW5kaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJy9icmFuZGluZy1lZGl0b3InXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJhdmFpbGFibGVCcmFuZGluZ1ZhcmlhbnRzJCB8IGFzeW5jIGFzIGJyYW5kaW5nVmFyaWFudDsgZWxzZSBsb2FkaW5nXCI+XG4gIDxjOHktYWN0aW9uLWJhci1pdGVtXG4gICAgKm5nSWY9XCJicmFuZGluZ1ZhcmlhbnQucHVibGljT3B0aW9uc1wiXG4gICAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgICBbcHJpb3JpdHldPVwiMzBcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgKGNsaWNrKT1cImFkZE5ld1ZlcnNpb24oKVwiXG4gICAgICBkYXRhLWN5PVwiYnJhbmRpbmctYWRkLWJyYW5kaW5nLXZhcmlhbnRcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgdmFyaWFudDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbVxuICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICAgW3ByaW9yaXR5XT1cIjIwXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1pbXBvcnQtYnJhbmRpbmdcIlxuICAgICAgKGNsaWNrKT1cImltcG9ydEJyYW5kaW5nKClcIlxuICAgID5cbiAgICAgIDxpIFtjOHlJY29uXT1cIidkYXRhLWltcG9ydCdcIj48L2k+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+SW1wb3J0IHZhcmlhbnQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbVxuICAgICpuZ0lmPVwiYnJhbmRpbmdWYXJpYW50LnB1YmxpY09wdGlvbnNcIlxuICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICAgW3ByaW9yaXR5XT1cIjEwXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgIChjbGljayk9XCJkZWxldGVBbGxCcmFuZGluZ3MoYnJhbmRpbmdWYXJpYW50LnB1YmxpY09wdGlvbnMpXCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1yZW1vdmUtYWxsLWJyYW5kaW5nc1wiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiJ3RyYXNoLW8nXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPkRlbGV0ZSBhbGwgdmFyaWFudHM8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1mdWxscGFnZSBkLWZsZXggZC1jb2wgYm9yZGVyLXRvcFwiPlxuICAgIDxjOHktZGF0YS1ncmlkXG4gICAgICBbdGl0bGVdPVwiJ0JyYW5kaW5nIHZhcmlhbnRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgIFthY3Rpb25Db250cm9sc109XCJhY3Rpb25Db250cm9sc1wiXG4gICAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICAgIFtkaXNwbGF5T3B0aW9uc109XCJkaXNwbGF5T3B0aW9uc1wiXG4gICAgICAob25SZWxvYWQpPVwicmVmcmVzaCgpXCJcbiAgICAgIFtyb3dzXT1cImJyYW5kaW5nVmFyaWFudC52YXJpYW50c1wiXG4gICAgPlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCIncGFsZXR0ZSdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGJyYW5kaW5nIHZhcmlhbnRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnUGVyc29uYWxpemUgeW91ciBleHBlcmllbmNlIHdpdGggYSB0aGVtZS1hYmxlIGludGVyZmFjZS4gQ3JlYXRlIGEgdW5pcXVlIGxvb2sgdGhhdCBhbGlnbnNcbiAgICAgICAgICAgd2l0aCB5b3VyIGJyYW5kIGlkZW50aXR5LidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIWJyYW5kaW5nVmFyaWFudC5wdWJsaWNPcHRpb25zXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1nZXQtc3RhcnRlZC11c2luZy1icmFuZGluZ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImdldFN0YXJ0ZWRVc2luZ0JyYW5kaW5nKClcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAgQWRkIGJyYW5kaW5nIHZhcmlhbnRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2M4eS1kYXRhLWdyaWQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
326
|
+
}], ctorParameters: () => [{ type: i1.StoreBrandingService }, { type: i2.ActivatedRoute }, { type: i3.AppStateService }, { type: i4.ApplicationService }, { type: i3.ZipService }, { type: i5.StaticAssetsService }, { type: i2.Router }, { type: i6.BsModalService }, { type: i3.ModalService }, { type: i1.BrandingVersionService }, { type: i7.AddBrandingModalService }, { type: i3.AlertService }, { type: i8.BrandingImportModalService }, { type: i1.BrandingTrackingService }] });
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYnJhbmRpbmcvYnJhbmRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYnJhbmRpbmcvYnJhbmRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDeEIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFTCxZQUFZLEVBQ1osZUFBZSxFQUNmLGlCQUFpQixFQUdqQixZQUFZLEVBRVosTUFBTSxFQUNOLFVBQVUsRUFDVixPQUFPLEVBQ1AsVUFBVSxFQUNWLGNBQWMsRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDeEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkRB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJyYW5kVmVyc2lvbixcbiAgU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gIEJyYW5kaW5nVmVyc2lvblNlcnZpY2UsXG4gIEJyYW5kaW5nVHJhY2tpbmdTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYnJhbmRpbmcvc2hhcmVkL2RhdGEnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQnVpbHRJbkFjdGlvblR5cGUsXG4gIENvbHVtbixcbiAgRGlzcGxheU9wdGlvbnMsXG4gIE1vZGFsU2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgU3RhdHVzLFxuICBaaXBTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBDb3JlTW9kdWxlLFxuICBEYXRhR3JpZE1vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSwgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBTdGF0aWNBc3NldHNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9zdGF0aWMtYXNzZXRzL2RhdGEnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEFwcGx5QnJhbmRpbmdUb0FwcE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBwbHktYnJhbmRpbmctdG8tYXBwLW1vZGFsL2FwcGx5LWJyYW5kaW5nLXRvLWFwcC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRkQnJhbmRpbmdNb2RhbFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2JyYW5kaW5nL3NoYXJlZC9sYXp5L2FkZC1icmFuZGluZy1tb2RhbCc7XG5pbXBvcnQgeyBCcmFuZGluZ1RhZ3NDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9icmFuZGluZy10YWdzLWNlbGwtcmVuZGVyZXIvYnJhbmRpbmctdGFncy1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmFuZGluZ0ltcG9ydE1vZGFsU2VydmljZSB9IGZyb20gJy4uL2JyYW5kaW5nLWltcG9ydC1tb2RhbC9icmFuZGluZy1pbXBvcnQtbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBCcmFuZGluZ05hbWVDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9icmFuZGluZy1uYW1lLWNlbGwtcmVuZGVyZXIvYnJhbmRpbmctbmFtZS1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmFuZGluZ1RhZ3NIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9icmFuZGluZy10YWdzLWhlYWRlci1jZWxsLXJlbmRlcmVyL2JyYW5kaW5nLXRhZ3MtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJyYW5kaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyYW5kaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIERhdGFHcmlkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBCcmFuZGluZ0NvbXBvbmVudCB7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7XG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG4gIH07XG4gIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9ucyA9IHtcbiAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgc3RyaXBlZDogdHJ1ZSxcbiAgICBmaWx0ZXI6IHRydWUsXG4gICAgZ3JpZEhlYWRlcjogdHJ1ZSxcbiAgICBob3ZlcjogdHJ1ZVxuICB9O1xuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW1xuICAgIHtcbiAgICAgIHR5cGU6IEJ1aWx0SW5BY3Rpb25UeXBlLkVkaXQsXG4gICAgICBjYWxsYmFjazogKGVudHJ5OiBCcmFuZFZlcnNpb24sIF9yZWxvYWQpID0+IHtcbiAgICAgICAgdGhpcy5lZGl0QnJhbmRpbmcoZW50cnkubmFtZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBCdWlsdEluQWN0aW9uVHlwZS5FeHBvcnQsXG4gICAgICBjYWxsYmFjazogYXN5bmMgKGVudHJ5OiBCcmFuZFZlcnNpb24sIF9yZWxvYWQpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5leHBvcnRCcmFuZGluZyhlbnRyeSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAncHJldmlldycsXG4gICAgICBpY29uOiAnZXh0ZXJuYWwtbGluaycsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdPcGVuIHByZXZpZXcnKSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICB0aGlzLmJyYW5kaW5ncy5vcGVuUHJldmlld0ZvckJyYW5kaW5nKGVudHJ5Lm5hbWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2R1cGxpY2F0ZScsXG4gICAgICBpY29uOiAnY29weScsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdEdXBsaWNhdGUnKSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmR1cGxpY2F0ZVZlcnNpb24oZW50cnkpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdhcHBseS10by1hcHAnLFxuICAgICAgaWNvbjogJ2Zvcm0nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnQXBwbHkgdG8gc3BlY2lmaWMgYXBwcycpLFxuICAgICAgY2FsbGJhY2s6IGFzeW5jIChlbnRyeTogQnJhbmRWZXJzaW9uLCBfcmVsb2FkKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbHlUb0FwcHMoZW50cnkpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHR5cGU6ICdzZXQtYXMtZGVmYXVsdCcsXG4gICAgICBpY29uOiAnZ2xvYmUxJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ1NldCBhcyBnbG9iYWwnKSxcbiAgICAgIHNob3dJZjogKGVudHJ5OiBCcmFuZFZlcnNpb24pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBjYWxsYmFjazogYXN5bmMgKGVudHJ5OiBCcmFuZFZlcnNpb24sIF9yZWxvYWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpcm1Nb2RhbC5jb25maXJtKFxuICAgICAgICAgICAgZ2V0dGV4dCgnU2V0IGFzIGdsb2JhbCBicmFuZGluZycpLFxuICAgICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICAgJ0FyZSB5b3Ugc3VyZSB0aGF0IHlvdSB3YW50IHRvIHNldCB0aGlzIHZhcmlhbnQgYXMgdGhlIGdsb2JhbCBicmFuZGluZz8gQnkgZG9pbmcgc28sIHRoaXMgdmFyaWFudCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGFwcHMgdGhhdCBkbyBub3QgaGF2ZSBhIHNwZWNpZmljIGJyYW5kaW5nIGFwcGxpZWQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFN0YXR1cy5JTkZPXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gZGlkIG5vdCBjb25maXJtXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuYnJhbmRpbmdzLm1hcmtBc0FjdGl2ZShlbnRyeSk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRGVsZXRlLFxuICAgICAgc2hvd0lmOiAoZW50cnk6IEJyYW5kVmVyc2lvbikgPT4ge1xuICAgICAgICBpZiAoZW50cnkudGFncz8uaW5jbHVkZXMoJ2xhdGVzdCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICAgIGNhbGxiYWNrOiBhc3luYyAoZW50cnk6IEJyYW5kVmVyc2lvbiwgX3JlbG9hZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY29uZmlybU1vZGFsLmNvbmZpcm0oXG4gICAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgYnJhbmRpbmcgdmFyaWFudCcpLFxuICAgICAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgYnJhbmRpbmcgdmFyaWFudC4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgU3RhdHVzLkRBTkdFUlxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGRpZCBub3QgY29uZmlybVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnJhbmRpbmdUcmFja2luZy5kZWxldGVCcmFuZGluZ1ZhcmlhbnQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZGVsZXRlVmVyc2lvblBhY2thZ2UoZW50cnkucHVibGljT3B0aW9uc0FwcCwge1xuICAgICAgICAgIHZlcnNpb246IGVudHJ5LnZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbiAgY29sdW1uczogQ29sdW1uW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdOYW1lJyksXG4gICAgICBwYXRoOiAnbmFtZScsXG4gICAgICBmaWx0ZXJhYmxlOiB0cnVlLFxuICAgICAgY2VsbFJlbmRlcmVyQ29tcG9uZW50OiBCcmFuZGluZ05hbWVDZWxsUmVuZGVyZXJDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IGdldHRleHQoJ0FwcGxpZWQgdG9gQXBwbGljYXRpb25zIGEgYnJhbmRpbmcgYXBwbGllcyB0byAodGFibGUgY29sdW1uIGhlYWRlcilgJyksXG4gICAgICBwYXRoOiAndGFncycsXG4gICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNlbGxDU1NDbGFzc05hbWU6ICdzbWFsbCcsXG4gICAgICBjZWxsUmVuZGVyZXJDb21wb25lbnQ6IEJyYW5kaW5nVGFnc0NlbGxSZW5kZXJlckNvbXBvbmVudCxcbiAgICAgIGhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudDogQnJhbmRpbmdUYWdzSGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb3duZXInLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdPd25lcicpLFxuICAgICAgcGF0aDogJ293bmVyJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbGFzdFVwZGF0ZWQnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdMYXN0IHVwZGF0ZWQnKSxcbiAgICAgIHBhdGg6ICdsYXN0VXBkYXRlZCcsXG4gICAgICBmaWx0ZXJhYmxlOiBmYWxzZVxuICAgIH1cbiAgXTtcbiAgY3VycmVudEFwcENvbnRleHRQYXRoID0gJ2FkbWluaXN0cmF0aW9uJztcbiAgYXZhaWxhYmxlQnJhbmRpbmdWYXJpYW50cyQ6IE9ic2VydmFibGU8e1xuICAgIHB1YmxpY09wdGlvbnM6IElBcHBsaWNhdGlvbjtcbiAgICB2YXJpYW50czogQnJhbmRWZXJzaW9uW107XG4gIH0+O1xuXG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmFuZGluZ3M6IFN0b3JlQnJhbmRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgemlwOiBaaXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RhdGljQXNzZXRzOiBTdGF0aWNBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBtb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maXJtTW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGJyYW5kaW5nVmVyc2lvblNlcnZpY2U6IEJyYW5kaW5nVmVyc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZGRCcmFuZGluZ01vZGFsU2VydmljZTogQWRkQnJhbmRpbmdNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJhbmRpbmdJbXBvcnRNb2RhbFNlcnZpY2U6IEJyYW5kaW5nSW1wb3J0TW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJhbmRpbmdUcmFja2luZzogQnJhbmRpbmdUcmFja2luZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50QXBwQ29udGV4dFBhdGggPSB0aGlzLmFwcFN0YXRlLnN0YXRlLmFwcD8uY29udGV4dFBhdGggfHwgdGhpcy5jdXJyZW50QXBwQ29udGV4dFBhdGg7XG4gICAgdGhpcy5hdmFpbGFibGVCcmFuZGluZ1ZhcmlhbnRzJCA9IHRoaXMucmVsb2FkVHJpZ2dlci5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYnJhbmRpbmdzLmxvYWRCcmFuZGluZ1ZhcmlhbnRzKCkpLFxuICAgICAgLy8gaGlkZSB0aGUgZmFsbGJhY2sgZnJvbSB1c2Vyc1xuICAgICAgbWFwKHZhcmlhbnRzID0+IHtcbiAgICAgICAgdmFyaWFudHMudmFyaWFudHMgPSB2YXJpYW50cy52YXJpYW50cy5maWx0ZXIodiA9PiAhdi50YWdzPy5pbmNsdWRlcygnZmFsbGJhY2snKSk7XG4gICAgICAgIHJldHVybiB2YXJpYW50cztcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGxCcmFuZGluZ3MocHVibGljT3B0aW9ucz86IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybU1vZGFsLmNvbmZpcm0oXG4gICAgICBnZXR0ZXh0KCdEZWxldGUgYWxsIGJyYW5kaW5nIHZhcmlhbnRzJyksXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICBgPHAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgICAgIFRoaXMgYWN0aW9uIHdpbGwgcGVybWFuZW50bHkgcmVtb3ZlIGFsbCBjdXN0b20gYnJhbmRpbmcgdmFyaWFudHMuIFlvdXIgdGVuYW50IHdpbGwgcmV2ZXJ0XG4gICAgICAgICAgdG8gdGhlIGRlZmF1bHQgYnJhbmRpbmcuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgICAgIENvbnNpZGVyIGV4cG9ydGluZyB5b3VyIGN1c3RvbSBicmFuZGluZyB2YXJpYW50cyBiZWZvcmUgcHJvY2VlZGluZywgYXMgdGhpcyBhY3Rpb24gY2Fubm90XG4gICAgICAgICAgYmUgdW5kb25lLlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT9cbiAgICAgICAgPC9wPmBcbiAgICAgICksXG4gICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgeyBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpLCBvazogZ2V0dGV4dCgnRGVsZXRlIGFsbCcpIH1cbiAgICApO1xuICAgIGlmIChyZXN1bHQgPT09IGZhbHNlIHx8ICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhcmVzdWx0LmNvbmZpcm1lZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJyYW5kaW5nVHJhY2tpbmcuZGVsZXRlQWxsQnJhbmRpbmdzKCk7XG5cbiAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy5kZWxldGVBbGxCcmFuZGluZ3MocHVibGljT3B0aW9ucyk7XG4gICAgdGhpcy5yZWZyZXNoKCk7XG4gIH1cblxuICBhc3luYyBleHBvcnRCcmFuZGluZyh2YXJpYW50OiBCcmFuZFZlcnNpb24pIHtcbiAgICB0aGlzLmJyYW5kaW5nVHJhY2tpbmcuZXhwb3J0QnJhbmRpbmcoKTtcbiAgICBjb25zdCBicmFuZGluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYnJhbmRpbmdzLmdldFppcEZvckJpbmFyeSh2YXJpYW50LmlkKSk7XG4gICAgY29uc3Qgc3RhdGljQXNzZXRzQXBwID0gYXdhaXQgdGhpcy5zdGF0aWNBc3NldHMuZ2V0QXBwRm9yVGVuYW50KCdicmFuZGluZycpO1xuICAgIGNvbnN0IHN0YXRpY0Fzc2V0c1ppcCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5icmFuZGluZ3MuZ2V0WmlwRm9yQmluYXJ5KFxuICAgICAgICBzdGF0aWNBc3NldHNBcHAuYWN0aXZlVmVyc2lvbklkLFxuICAgICAgICB0aGlzLnN0YXRpY0Fzc2V0cy5maWxlTmFtZXMuZXhwb3J0WmlwTmFtZVxuICAgICAgKVxuICAgICk7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHRoaXMuemlwLmNyZWF0ZVppcChbXG4gICAgICB7IGZpbGVOYW1lOiB0aGlzLmJyYW5kaW5ncy5maWxlTmFtZXMuZXhwb3J0WmlwTmFtZSwgYmxvYjogYnJhbmRpbmcgfSxcbiAgICAgIHsgZmlsZU5hbWU6IHRoaXMuc3RhdGljQXNzZXRzLmZpbGVOYW1lcy5leHBvcnRaaXBOYW1lLCBibG9iOiBzdGF0aWNBc3NldHNaaXAgfVxuICAgIF0pO1xuICAgIHNhdmVBcyhibG9iLCBgYnJhbmRpbmctZXhwb3J0LSR7dmFyaWFudC5uYW1lfS0ke3ZhcmlhbnQucmV2aXNpb259LSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9LnppcGApO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgYWRkTmV3VmVyc2lvbigpIHtcbiAgICBjb25zdCB2ZXJzaW9uRGV0YWlscyA9IGF3YWl0IHRoaXMuYWRkQnJhbmRpbmdNb2RhbFNlcnZpY2Uub3BlbkFkZEJyYW5kaW5nTW9kYWwoKTtcbiAgICBpZiAoIXZlcnNpb25EZXRhaWxzKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGZhbGxCYWNrQnJhbmRpbmcgPSB7fTtcbiAgICB0cnkge1xuICAgICAgZmFsbEJhY2tCcmFuZGluZyA9IGF3YWl0IHRoaXMuYnJhbmRpbmdzLmdldEJyYW5kaW5nT3B0aW9uc0ZvclZlcnNpb24oJ2xhdGVzdCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGxvYWQgbGF0ZXN0IGJyYW5kaW5nYCk7XG4gICAgfVxuXG4gICAgdGhpcy5icmFuZGluZ1RyYWNraW5nLmFkZE5ld1ZlcnNpb24oKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy5hZGRCcmFuZGluZyhcbiAgICAgICAgdGhpcy5icmFuZGluZ1ZlcnNpb25TZXJ2aWNlLmNyZWF0ZUluaXRpYWxCcmFuZGluZ1ZlcnNpb24odmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lKSxcbiAgICAgICAgZmFsbEJhY2tCcmFuZGluZyxcbiAgICAgICAgW3ZlcnNpb25EZXRhaWxzLmJyYW5kaW5nTmFtZV1cbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy53YWl0Rm9yQnJhbmRpbmdUb0JlUHJlc2VudCh2ZXJzaW9uRGV0YWlscy5icmFuZGluZ05hbWUpO1xuICAgICAgdGhpcy5lZGl0QnJhbmRpbmcodmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSwgJ2RhbmdlcicpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGR1cGxpY2F0ZVZlcnNpb24odmVyc2lvbjogQnJhbmRWZXJzaW9uKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMuYnJhbmRpbmdzLmdldEJyYW5kaW5nT3B0aW9uc0ZvclZlcnNpb24odmVyc2lvbi52ZXJzaW9uKTtcbiAgICBjb25zdCB2ZXJzaW9uRGV0YWlscyA9IGF3YWl0IHRoaXMuYWRkQnJhbmRpbmdNb2RhbFNlcnZpY2Uub3BlbkR1cGxpY2F0ZUJyYW5kaW5nTW9kYWwoKTtcbiAgICBpZiAoIXZlcnNpb25EZXRhaWxzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5icmFuZGluZ1RyYWNraW5nLmR1cGxpY2F0ZVZlcnNpb24oKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy5hZGRCcmFuZGluZyhcbiAgICAgICAgdGhpcy5icmFuZGluZ1ZlcnNpb25TZXJ2aWNlLmNyZWF0ZUluaXRpYWxCcmFuZGluZ1ZlcnNpb24odmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lKSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgW3ZlcnNpb25EZXRhaWxzLmJyYW5kaW5nTmFtZV1cbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmJyYW5kaW5ncy53YWl0Rm9yQnJhbmRpbmdUb0JlUHJlc2VudCh2ZXJzaW9uRGV0YWlscy5icmFuZGluZ05hbWUpO1xuICAgICAgdGhpcy5lZGl0QnJhbmRpbmcodmVyc2lvbkRldGFpbHMuYnJhbmRpbmdOYW1lKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSwgJ2RhbmdlcicpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGVkaXRCcmFuZGluZyhicmFuZGluZ05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYnJhbmRpbmdOYW1lLCAnZWRpdCddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XG4gIH1cblxuICBhc3luYyBnZXRTdGFydGVkVXNpbmdCcmFuZGluZygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1Nb2RhbC5jb25maXJtKFxuICAgICAgZ2V0dGV4dChgR2V0IHN0YXJ0ZWQgdXNpbmcgYnJhbmRpbmcgdmFyaWFudHNgKSxcbiAgICAgIGdldHRleHQoXG4gICAgICAgIGA8cCBjbGFzcz1cIm0tYi04XCI+Q29uZmlybWluZyB0aGlzIGFjdGlvbiBjcmVhdGVzIHR3byBicmFuZGluZyB2YXJpYW50czo8L3A+XG4gICAgICAgIDx1bCBjbGFzcz1cIm0tYi04IHAtbC0xNlwiPlxuICAgICAgICAgIDxsaT5BIGRlZmF1bHQgY29weSBvZiB5b3VyIGN1cnJlbnQgZ2xvYmFsIGJyYW5kaW5nPC9saT5cbiAgICAgICAgICA8bGk+WW91ciBuZXcgY3VzdG9taXphYmxlIHZhcmlhbnQuPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPHAgY2xhc3M9XCJtLWItOFwiPlxuICAgICAgICAgIEFmdGVyIGN1c3RvbWl6YXRpb24sIHlvdSBjYW4gc2V0IHlvdXIgbmV3IHZhcmlhbnQgYXMgZ2xvYmFsIG9yIGFwcGx5IGl0IHRvIHNwZWNpZmljIGFwcHMuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgVG8gcmV2ZXJ0IGNoYW5nZXMsIHNpbXBseSBzZXQgdGhlIGRlZmF1bHQgYnJhbmRpbmcgYXMgZ2xvYmFsIG9yIHVzZSB0aGUgXCJEZWxldGUgYWxsXG4gICAgICAgICAgYnJhbmRpbmdzXCIgYnV0dG9uIGF0IGFueSB0aW1lLlxuICAgICAgICA8L3A+YFxuICAgICAgKVxuICAgICk7XG4gICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UgfHwgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmICFyZXN1bHQuY29uZmlybWVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYnJhbmRpbmdUcmFja2luZy5nZXRTdGFydGVkVXNpbmdCcmFuZGluZygpO1xuXG4gICAgYXdhaXQgdGhpcy5icmFuZGluZ3MuZ2V0U3RhcnRlZFVzaW5nQnJhbmRpbmcoKTtcbiAgICBhd2FpdCB0aGlzLmFkZE5ld1ZlcnNpb24oKTtcbiAgfVxuXG4gIGFzeW5jIGFwcGx5VG9BcHBzKHZlcnNpb246IEJyYW5kVmVyc2lvbikge1xuICAgIGNvbnN0IHByZWZpeCA9ICdhcHAtJztcbiAgICBjb25zdCBjdXJyZW50VGFncyA9IHZlcnNpb24udGFnc1xuICAgICAgLmZpbHRlcih0YWcgPT4gdGFnLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgIC5tYXAodGFnID0+IHRhZy5yZXBsYWNlKHByZWZpeCwgJycpKTtcbiAgICBjb25zdCBvdGhlclRhZ3MgPSB2ZXJzaW9uLnRhZ3MuZmlsdGVyKHRhZyA9PiAhdGFnLnN0YXJ0c1dpdGgocHJlZml4KSk7XG4gICAgbGV0IHNlbGVjdGVkVGFnczogQXdhaXRlZDxBcHBseUJyYW5kaW5nVG9BcHBNb2RhbENvbXBvbmVudFsncmVzdWx0J10+O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWwuc2hvdyhBcHBseUJyYW5kaW5nVG9BcHBNb2RhbENvbXBvbmVudCwge1xuICAgICAgICBpbml0aWFsU3RhdGU6IHsgY3VycmVudFRhZ3MgfSxcbiAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgICAga2V5Ym9hcmQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHNlbGVjdGVkVGFncyA9IGF3YWl0IG1vZGFsUmVmLmNvbnRlbnQucmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG1vZGFsIGNsb3NlZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkQXBwcyA9IE9iamVjdC5rZXlzKHNlbGVjdGVkVGFncykuZmlsdGVyKGtleSA9PiBzZWxlY3RlZFRhZ3Nba2V5XSk7XG5cbiAgICB0aGlzLmJyYW5kaW5nVHJhY2tpbmcuYXBwbHlUb0FwcHMoc2VsZWN0ZWRBcHBzKTtcblxuICAgIGNvbnN0IHRhZ3NUb1NldCA9IFsuLi5vdGhlclRhZ3MsIC4uLnNlbGVjdGVkQXBwcy5tYXAodGFnID0+IGAke3ByZWZpeH0ke3RhZ31gKV07XG5cbiAgICBhd2FpdCB0aGlzLnJlbW92ZVRhZ3NGcm9tT3RoZXJWZXJzaW9ucyh2ZXJzaW9uLnB1YmxpY09wdGlvbnNBcHAsIHRhZ3NUb1NldCwgdmVyc2lvbi52ZXJzaW9uKTtcbiAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5zZXRQYWNrYWdlVmVyc2lvblRhZyhcbiAgICAgIHZlcnNpb24ucHVibGljT3B0aW9uc0FwcCxcbiAgICAgIHZlcnNpb24udmVyc2lvbixcbiAgICAgIHRhZ3NUb1NldFxuICAgICk7XG4gIH1cblxuICBhc3luYyBpbXBvcnRCcmFuZGluZygpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5icmFuZGluZ0ltcG9ydE1vZGFsU2VydmljZS5vcGVuQnJhbmRpbmdJbXBvcnRNb2RhbCgpO1xuXG4gICAgICB0aGlzLmJyYW5kaW5ncy5yZWZyZXNoVHJpZ2dlckJyYW5kaW5nVmFyaWFudHMubmV4dCgpO1xuICAgICAgdGhpcy5yZWxvYWRUcmlnZ2VyLm5leHQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBtb2RhbCBjbG9zZWRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbW92ZVRhZ3NGcm9tT3RoZXJWZXJzaW9ucyhcbiAgICBwdWJsaWNPcHRpb25zQXBwOiBJQXBwbGljYXRpb24sXG4gICAgdGFnc1RvUmVtb3ZlOiBzdHJpbmdbXSxcbiAgICB2ZXJzaW9uVG9JZ25vcmU/OiBzdHJpbmdcbiAgKSB7XG4gICAgZm9yIChjb25zdCB2ZXJzaW9uIG9mIHB1YmxpY09wdGlvbnNBcHAuYXBwbGljYXRpb25WZXJzaW9ucykge1xuICAgICAgaWYgKHZlcnNpb24udmVyc2lvbiA9PT0gdmVyc2lvblRvSWdub3JlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVtb3ZlZFRhZ3MgPSB2ZXJzaW9uLnRhZ3MuZmlsdGVyKHRhZyA9PiAhdGFnc1RvUmVtb3ZlLmluY2x1ZGVzKHRhZykpO1xuICAgICAgaWYgKHJlbW92ZWRUYWdzLmxlbmd0aCA9PT0gdmVyc2lvbi50YWdzLmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnNldFBhY2thZ2VWZXJzaW9uVGFnKFxuICAgICAgICBwdWJsaWNPcHRpb25zQXBwLFxuICAgICAgICB2ZXJzaW9uLnZlcnNpb24sXG4gICAgICAgIHJlbW92ZWRUYWdzXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS10aXRsZSB0cmFuc2xhdGU+QnJhbmRpbmc8L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidwYWxldHRlJ1wiXG4gICAgW2xhYmVsXT1cIidCcmFuZGluZycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIicvYnJhbmRpbmctZWRpdG9yJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiYXZhaWxhYmxlQnJhbmRpbmdWYXJpYW50cyQgfCBhc3luYyBhcyBicmFuZGluZ1ZhcmlhbnQ7IGVsc2UgbG9hZGluZ1wiPlxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbVxuICAgICpuZ0lmPVwiYnJhbmRpbmdWYXJpYW50LnB1YmxpY09wdGlvbnNcIlxuICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICAgW3ByaW9yaXR5XT1cIjMwXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgIChjbGljayk9XCJhZGROZXdWZXJzaW9uKClcIlxuICAgICAgZGF0YS1jeT1cImJyYW5kaW5nLWFkZC1icmFuZGluZy12YXJpYW50XCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+QWRkIHZhcmlhbnQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWFjdGlvbi1iYXItaXRlbT5cbiAgPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAgIFtwcmlvcml0eV09XCIyMFwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgICBkYXRhLWN5PVwiYnJhbmRpbmctaW1wb3J0LWJyYW5kaW5nXCJcbiAgICAgIChjbGljayk9XCJpbXBvcnRCcmFuZGluZygpXCJcbiAgICA+XG4gICAgICA8aSBbYzh5SWNvbl09XCInZGF0YS1pbXBvcnQnXCI+PC9pPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPkltcG9ydCB2YXJpYW50PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbiAgPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgICAqbmdJZj1cImJyYW5kaW5nVmFyaWFudC5wdWJsaWNPcHRpb25zXCJcbiAgICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAgIFtwcmlvcml0eV09XCIxMFwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgICAoY2xpY2spPVwiZGVsZXRlQWxsQnJhbmRpbmdzKGJyYW5kaW5nVmFyaWFudC5wdWJsaWNPcHRpb25zKVwiXG4gICAgICBkYXRhLWN5PVwiYnJhbmRpbmctcmVtb3ZlLWFsbC1icmFuZGluZ3NcIlxuICAgID5cbiAgICAgIDxpIFtjOHlJY29uXT1cIid0cmFzaC1vJ1wiPjwvaT5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5EZWxldGUgYWxsIHZhcmlhbnRzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnVsbHBhZ2UgZC1mbGV4IGQtY29sIGJvcmRlci10b3BcIj5cbiAgICA8Yzh5LWRhdGEtZ3JpZFxuICAgICAgW3RpdGxlXT1cIidCcmFuZGluZyB2YXJpYW50cycgfCB0cmFuc2xhdGVcIlxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICAgICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICAgICAgKG9uUmVsb2FkKT1cInJlZnJlc2goKVwiXG4gICAgICBbcm93c109XCJicmFuZGluZ1ZhcmlhbnQudmFyaWFudHNcIlxuICAgID5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ3BhbGV0dGUnXCJcbiAgICAgICAgW3RpdGxlXT1cIidObyBicmFuZGluZyB2YXJpYW50cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1BlcnNvbmFsaXplIHlvdXIgZXhwZXJpZW5jZSB3aXRoIGEgdGhlbWUtYWJsZSBpbnRlcmZhY2UuIENyZWF0ZSBhIHVuaXF1ZSBsb29rIHRoYXQgYWxpZ25zXG4gICAgICAgICAgIHdpdGggeW91ciBicmFuZCBpZGVudGl0eS4nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICAqbmdJZj1cIiFicmFuZGluZ1ZhcmlhbnQucHVibGljT3B0aW9uc1wiXG4gICAgICAgIFtob3Jpem9udGFsXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICBkYXRhLWN5PVwiYnJhbmRpbmctZ2V0LXN0YXJ0ZWQtdXNpbmctYnJhbmRpbmdcIlxuICAgICAgICAgIChjbGljayk9XCJnZXRTdGFydGVkVXNpbmdCcmFuZGluZygpXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEFkZCBicmFuZGluZyB2YXJpYW50XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9jOHktZGF0YS1ncmlkPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -91,7 +91,7 @@ export class EditBrandingRouterOutletComponent {
|
|
|
91
91
|
}
|
|
92
92
|
async openPreview() {
|
|
93
93
|
const name = this.activatedRoute.snapshot.params.name;
|
|
94
|
-
|
|
94
|
+
this.store.openPreviewForBranding(name);
|
|
95
95
|
}
|
|
96
96
|
async markAsActive() {
|
|
97
97
|
const currentBrandingName = this.activatedRoute.snapshot.params.name;
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
138
138
|
type: Component,
|
|
139
139
|
args: [{ selector: 'c8y-edit-branding-router-outlet', standalone: true, imports: [RouterOutlet, CoreModule], template: "<c8y-title>{{ brandingName$ | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'palette'\"\n [label]=\"'Branding' | translate\"\n [path]=\"'/branding-editor'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"brandingName$ | async\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card card--fullpage content-fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">{{ brandingName$ | async }} \u2014 {{ tabName$ | async | translate }}</div>\n </div>\n <router-outlet\n class=\"d-contents\"\n (activate)=\"routeActivated($event)\"\n ></router-outlet>\n\n <div class=\"card-footer separator\">\n <!-- footer content -->\n <button\n class=\"btn btn-default\"\n data-cy=\"branding-cancel\"\n (click)=\"cancel()\"\n translate\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n data-cy=\"branding-save\"\n [disabled]=\"formControl.invalid\"\n (click)=\"saveBranding()\"\n translate\n >\n Save\n </button>\n <button\n class=\"btn btn-default\"\n data-cy=\"branding-save-as\"\n [disabled]=\"formControl.invalid\"\n (click)=\"openPreview()\"\n translate\n >\n Open preview\n </button>\n <button\n class=\"btn btn-default\"\n data-cy=\"branding-set-as-latest\"\n (click)=\"markAsActive()\"\n [disabled]=\"isGlobalBranding$ | async\"\n translate\n >\n Set as global\n </button>\n </div>\n</div>\n" }]
|
|
140
140
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.StoreBrandingService }, { type: i1.Router }, { type: i3.AlertService }, { type: i2.ApplyBrandingLocallyService }, { type: i3.AppStateService }] });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1icmFuZGluZy1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9sYXp5L2VkaXQtYnJhbmRpbmctcm91dGVyLW91dGxldC9lZGl0LWJyYW5kaW5nLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvZWRpdC1icmFuZGluZy1yb3V0ZXItb3V0bGV0L2VkaXQtYnJhbmRpbmctcm91dGVyLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixvQkFBb0IsRUFDckIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQXdDLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFRaEUsTUFBTSxPQUFPLGlDQUFpQztJQVc1QyxZQUNVLGNBQThCLEVBQzlCLEtBQTJCLEVBQzNCLE1BQWMsRUFDZCxLQUFtQixFQUNu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cG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBBcHBTdGF0ZVNlcnZpY2UsIENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBcHBseUJyYW5kaW5nTG9jYWxseVNlcnZpY2UsXG4gIEJyYW5kaW5nT3B0aW9uc0pzb24sXG4gIFN0b3JlQnJhbmRpbmdTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYnJhbmRpbmcvc2hhcmVkL2RhdGEnO1xuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWVkaXQtYnJhbmRpbmctcm91dGVyLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LWJyYW5kaW5nLXJvdXRlci1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUm91dGVyT3V0bGV0LCBDb3JlTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0QnJhbmRpbmdSb3V0ZXJPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBicmFuZGluZ05hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgZmFsbGJhY2tCcmFuZGluZyQ6IE9ic2VydmFibGU8QnJhbmRpbmdPcHRpb25zSnNvbj47XG4gIHRhYk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGlzR2xvYmFsQnJhbmRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIG5ld0JyYW5kaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmFuZGluZ09wdGlvbnNKc29uPihudWxsKTtcbiAgcHJpdmF0ZSBjdXJyZW50bHlEaXNwbGF5ZWRDb21wb25lbnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIChDb250cm9sVmFsdWVBY2Nlc3NvciAmIFBhcnRpYWw8QXN5bmNWYWxpZGF0b3I+KSB8IG51bGxcbiAgPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZUJyYW5kaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGFwcGx5QnJhbmRpbmdTZXJ2aWNlOiBBcHBseUJyYW5kaW5nTG9jYWxseVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXNHbG9iYWxCcmFuZGluZyQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEucGlwZShcbiAgICAgIG1hcCgoeyB0YWdzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnRhYk5hbWUkID0gdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWRDb21wb25lbnQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQuZGF0YSksXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhLnRhYk5hbWUpXG4gICAgKTtcbiAgICB0aGlzLmJyYW5kaW5nTmFtZSQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5waXBlKG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUpKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnMoY29udHJvbCA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBKU09OLnBhcnNlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZEpzb246IHRydWUgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZhbGxiYWNrQnJhbmRpbmckID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUobWFwKGRhdGEgPT4gZGF0YS5mYWxsYmFja0JyYW5kaW5nKSk7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgYnJhbmRpbmcgfSkgPT4ge1xuICAgICAgICB0aGlzLmFwcGx5QnJhbmRpbmdTZXJ2aWNlLmFwcGx5QnJhbmRpbmcoYnJhbmRpbmcpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKEpTT04uc3RyaW5naWZ5KGJyYW5kaW5nLCBudWxsLCAyKSk7XG4gICAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRseURpc3BsYXllZENvbXBvbmVudC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoY29tcG9uZW50ID0+IHtcbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbXBvbmVudC5yZWdpc3Rlck9uQ2hhbmdlKHZhbHVlID0+IHRoaXMub25CcmFuZGluZ1ZhckNoYW5nZXModmFsdWUpKTtcbiAgICAgIGNvbXBvbmVudC53cml0ZVZhbHVlKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xuICAgICAgaWYgKGNvbXBvbmVudC52YWxpZGF0ZSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLmFkZEFzeW5jVmFsaWRhdG9ycyhmb3JtID0+IGNvbXBvbmVudC52YWxpZGF0ZShmb3JtKSk7XG4gICAgICAgIGlmIChjb21wb25lbnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgICAgIGNvbXBvbmVudC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKCgpID0+IHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlCcmFuZGluZ1NlcnZpY2UucmVzZXRCcmFuZGluZygpO1xuICB9XG5cbiAgcm91dGVBY3RpdmF0ZWQoZXZlbnQ6IENvbnRyb2xWYWx1ZUFjY2Vzc29yICYgUGFydGlhbDxBc3luY1ZhbGlkYXRvcj4pIHtcbiAgICB0aGlzLmN1cnJlbnRseURpc3BsYXllZENvbXBvbmVudC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVCcmFuZGluZygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3VycmVudEJyYW5kaW5nID0gdGhpcy5uZXdCcmFuZGluZy52YWx1ZTtcbiAgICAgIGNvbnN0IHRhZ3NPZkN1cnJlbnRWZXJzaW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YS5waXBlKG1hcChkYXRhID0+IGRhdGEudGFncykpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBjdXJyZW50QnJhbmRpbmdOYW1lID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXMubmFtZTtcbiAgICAgIGNvbnN0IHsgdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMuc3RvcmUubG9hZEJyYW5kaW5nVmFyaWFudHMoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRCcmFuZGluZ09iaiA9IHZhcmlhbnRzLmZpbmQodiA9PiB2LnRhZ3MuaW5jbHVkZXMoY3VycmVudEJyYW5kaW5nTmFtZSkpO1xuICAgICAgY29uc3QgY3VycmVudFZlcnNpb24gPSBjdXJyZW50QnJhbmRpbmdPYmoudmVyc2lvbjtcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmUuc2F2ZUV4aXN0aW5nQnJhbmRpbmcoY3VycmVudEJyYW5kaW5nLCBjdXJyZW50VmVyc2lvbiwgdGFnc09mQ3VycmVudFZlcnNpb24pO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgIFsnLi4vLi4vJywgY3VycmVudEJyYW5kaW5nTmFtZSwgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoXSxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdCcmFuZGluZyBzYXZlZC4gVG8gYXBwbHkgdGhpcyBicmFuZGluZywgcmVmcmVzaCBhbnkgb3BlbiB3aW5kb3cgdGhhdCBtaWdodCBiZSBhZmZlY3RlZC4nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUsICdkYW5nZXInKTtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydicmFuZGluZy1lZGl0b3InXSk7XG4gIH1cblxuICBhc3luYyBvcGVuUHJldmlldygpIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXMubmFtZTtcbiAgICB3aW5kb3cub3BlbihcbiAgICAgIGAvYXBwcy8ke1xuICAgICAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBsaWNhdGlvbi52YWx1ZT8uY29udGV4dFBhdGggfHwgJ2NvY2twaXQnXG4gICAgICB9L2luZGV4Lmh0bWw/YnJhbmRpbmdQcmV2aWV3PXRydWUmZHluYW1pY09wdGlvbnNVcmw9L2FwcHMvcHVibGljL3B1YmxpYy1vcHRpb25zQCR7bmFtZX0vb3B0aW9ucy5qc29uYCxcbiAgICAgICdfYmxhbmsnLFxuICAgICAgJ25vb3BlbmVyLG5vcmVmZXJyZXInXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG1hcmtBc0FjdGl2ZSgpIHtcbiAgICBjb25zdCBjdXJyZW50QnJhbmRpbmdOYW1lID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXMubmFtZTtcbiAgICBjb25zdCB7IHZhcmlhbnRzIH0gPSBhd2FpdCB0aGlzLnN0b3JlLmxvYWRCcmFuZGluZ1ZhcmlhbnRzKCk7XG4gICAgY29uc3QgY3VycmVudEJyYW5kaW5nT2JqID0gdmFyaWFudHMuZmluZCh2ID0+IHYudGFncy5pbmNsdWRlcyhjdXJyZW50QnJhbmRpbmdOYW1lKSk7XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5tYXJrQXNBY3RpdmUoY3VycmVudEJyYW5kaW5nT2JqKTtcbiAgfVxuXG4gIGFzeW5jIG9uQnJhbmRpbmdWYXJDaGFuZ2VzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWRWYWx1ZTogQnJhbmRpbmdPcHRpb25zSnNvbiA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgY29uc3QgZmFsbGJhY2tCcmFuZGluZzogQnJhbmRpbmdPcHRpb25zSnNvbiA9IGNsb25lRGVlcChcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5mYWxsYmFja0JyYW5kaW5nJClcbiAgICAgICk7XG4gICAgICB0aGlzLmNsZWFuVXBPYmplY3RzKHBhcnNlZFZhbHVlKTtcbiAgICAgIHRoaXMuY2xlYW5VcE9iamVjdHMocGFyc2VkVmFsdWUuYnJhbmRpbmdDc3NWYXJzKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGZhbGxiYWNrQnJhbmRpbmcpIHtcbiAgICAgICAgaWYgKHBhcnNlZFZhbHVlW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcnNlZFZhbHVlW2tleV0gPSBmYWxsYmFja0JyYW5kaW5nW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhcnNlZFZhbHVlW2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiBmYWxsYmFja0JyYW5kaW5nW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcGFyc2VkVmFsdWVba2V5XSA9IE9iamVjdC5hc3NpZ24oZmFsbGJhY2tCcmFuZGluZ1trZXldLCBwYXJzZWRWYWx1ZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBseUJyYW5kaW5nU2VydmljZS5hcHBseUJyYW5kaW5nKHBhcnNlZFZhbHVlKTtcbiAgICAgIHRoaXMubmV3QnJhbmRpbmcubmV4dChwYXJzZWRWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbm90IHZhbGlkIEpTT047XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwT2JqZWN0cyh2YWx1ZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICh2YWx1ZVtrZXldID09PSBudWxsIHx8IHZhbHVlW2tleV0gPT09ICcnKSB7XG4gICAgICAgIGRlbGV0ZSB2YWx1ZVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IGJyYW5kaW5nTmFtZSQgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ3BhbGV0dGUnXCJcbiAgICBbbGFiZWxdPVwiJ0JyYW5kaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJy9icmFuZGluZy1lZGl0b3InXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInY29nJ1wiXG4gICAgW2xhYmVsXT1cImJyYW5kaW5nTmFtZSQgfCBhc3luY1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZSBjb250ZW50LWZ1bGxwYWdlXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7IGJyYW5kaW5nTmFtZSQgfCBhc3luYyB9fSDigJQge3sgdGFiTmFtZSQgfCBhc3luYyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPHJvdXRlci1vdXRsZXRcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIChhY3RpdmF0ZSk9XCJyb3V0ZUFjdGl2YXRlZCgkZXZlbnQpXCJcbiAgPjwvcm91dGVyLW91dGxldD5cblxuICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCI+XG4gICAgPCEtLSBmb290ZXIgY29udGVudCAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICBkYXRhLWN5PVwiYnJhbmRpbmctY2FuY2VsXCJcbiAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICBkYXRhLWN5PVwiYnJhbmRpbmctc2F2ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUNvbnRyb2wuaW52YWxpZFwiXG4gICAgICAoY2xpY2spPVwic2F2ZUJyYW5kaW5nKClcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgU2F2ZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1zYXZlLWFzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgIChjbGljayk9XCJvcGVuUHJldmlldygpXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIE9wZW4gcHJldmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1zZXQtYXMtbGF0ZXN0XCJcbiAgICAgIChjbGljayk9XCJtYXJrQXNBY3RpdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNHbG9iYWxCcmFuZGluZyQgfCBhc3luY1wiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBTZXQgYXMgZ2xvYmFsXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1icmFuZGluZy1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9sYXp5L2VkaXQtYnJhbmRpbmctcm91dGVyLW91dGxldC9lZGl0LWJyYW5kaW5nLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvZWRpdC1icmFuZGluZy1yb3V0ZXItb3V0bGV0L2VkaXQtYnJhbmRpbmctcm91dGVyLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixvQkFBb0IsRUFDckIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQXdDLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFRaEUsTUFBTSxPQUFPLGlDQUFpQztJQVc1QyxZQUNVLGNBQThCLEVBQzlCLEtBQTJCLEVBQzNCLE1BQWMsRUFDZCxLQUFtQixFQUNu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QUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0RixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsa0JBQWtCO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQTBCO1FBQy9DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F2SlUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsMkZDcEI5QywraURBOERBLDRDRDVDWSxZQUFZLDBKQUFFLFVBQVU7OzJGQUV2QixpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0UsaUNBQWlDLGNBRS9CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQXBwU3RhdGVTZXJ2aWNlLCBDb3JlTW9kdWxlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgQXBwbHlCcmFuZGluZ0xvY2FsbHlTZXJ2aWNlLFxuICBCcmFuZGluZ09wdGlvbnNKc29uLFxuICBTdG9yZUJyYW5kaW5nU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2JyYW5kaW5nL3NoYXJlZC9kYXRhJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1lZGl0LWJyYW5kaW5nLXJvdXRlci1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1icmFuZGluZy1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JvdXRlck91dGxldCwgQ29yZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdEJyYW5kaW5nUm91dGVyT3V0bGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgYnJhbmRpbmdOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIGZhbGxiYWNrQnJhbmRpbmckOiBPYnNlcnZhYmxlPEJyYW5kaW5nT3B0aW9uc0pzb24+O1xuICB0YWJOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpc0dsb2JhbEJyYW5kaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBuZXdCcmFuZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJhbmRpbmdPcHRpb25zSnNvbj4obnVsbCk7XG4gIHByaXZhdGUgY3VycmVudGx5RGlzcGxheWVkQ29tcG9uZW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAoQ29udHJvbFZhbHVlQWNjZXNzb3IgJiBQYXJ0aWFsPEFzeW5jVmFsaWRhdG9yPikgfCBudWxsXG4gID4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBseUJyYW5kaW5nU2VydmljZTogQXBwbHlCcmFuZGluZ0xvY2FsbHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzR2xvYmFsQnJhbmRpbmckID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUoXG4gICAgICBtYXAoKHsgdGFncyB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0YWdzPy5pbmNsdWRlcygnbGF0ZXN0Jyk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50YWJOYW1lJCA9IHRoaXMuY3VycmVudGx5RGlzcGxheWVkQ29tcG9uZW50LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkLmRhdGEpLFxuICAgICAgbWFwKGRhdGEgPT4gZGF0YS50YWJOYW1lKVxuICAgICk7XG4gICAgdGhpcy5icmFuZGluZ05hbWUkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMucGlwZShtYXAocGFyYW1zID0+IHBhcmFtcy5uYW1lKSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKGNvbnRyb2wgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgSlNPTi5wYXJzZShjb250cm9sLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7IGludmFsaWRKc29uOiB0cnVlIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mYWxsYmFja0JyYW5kaW5nJCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YS5waXBlKG1hcChkYXRhID0+IGRhdGEuZmFsbGJhY2tCcmFuZGluZykpO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGJyYW5kaW5nIH0pID0+IHtcbiAgICAgICAgdGhpcy5hcHBseUJyYW5kaW5nU2VydmljZS5hcHBseUJyYW5kaW5nKGJyYW5kaW5nKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShKU09OLnN0cmluZ2lmeShicmFuZGluZywgbnVsbCwgMikpO1xuICAgICAgfSk7XG4gICAgdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWRDb21wb25lbnQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKGNvbXBvbmVudCA9PiB7XG4gICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICBjb21wb25lbnQucmVnaXN0ZXJPbkNoYW5nZSh2YWx1ZSA9PiB0aGlzLm9uQnJhbmRpbmdWYXJDaGFuZ2VzKHZhbHVlKSk7XG4gICAgICBjb21wb25lbnQud3JpdGVWYWx1ZSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICAgIGlmIChjb21wb25lbnQudmFsaWRhdGUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5hZGRBc3luY1ZhbGlkYXRvcnMoZm9ybSA9PiBjb21wb25lbnQudmFsaWRhdGUoZm9ybSkpO1xuICAgICAgICBpZiAoY29tcG9uZW50LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgICAgICBjb21wb25lbnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgoKSA9PiB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5QnJhbmRpbmdTZXJ2aWNlLnJlc2V0QnJhbmRpbmcoKTtcbiAgfVxuXG4gIHJvdXRlQWN0aXZhdGVkKGV2ZW50OiBDb250cm9sVmFsdWVBY2Nlc3NvciAmIFBhcnRpYWw8QXN5bmNWYWxpZGF0b3I+KSB7XG4gICAgdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWRDb21wb25lbnQubmV4dChldmVudCk7XG4gIH1cblxuICBhc3luYyBzYXZlQnJhbmRpbmcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRCcmFuZGluZyA9IHRoaXMubmV3QnJhbmRpbmcudmFsdWU7XG4gICAgICBjb25zdCB0YWdzT2ZDdXJyZW50VmVyc2lvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEucGlwZShtYXAoZGF0YSA9PiBkYXRhLnRhZ3MpKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgY3VycmVudEJyYW5kaW5nTmFtZSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zLm5hbWU7XG4gICAgICBjb25zdCB7IHZhcmlhbnRzIH0gPSBhd2FpdCB0aGlzLnN0b3JlLmxvYWRCcmFuZGluZ1ZhcmlhbnRzKCk7XG4gICAgICBjb25zdCBjdXJyZW50QnJhbmRpbmdPYmogPSB2YXJpYW50cy5maW5kKHYgPT4gdi50YWdzLmluY2x1ZGVzKGN1cnJlbnRCcmFuZGluZ05hbWUpKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gY3VycmVudEJyYW5kaW5nT2JqLnZlcnNpb247XG4gICAgICBhd2FpdCB0aGlzLnN0b3JlLnNhdmVFeGlzdGluZ0JyYW5kaW5nKGN1cnJlbnRCcmFuZGluZywgY3VycmVudFZlcnNpb24sIHRhZ3NPZkN1cnJlbnRWZXJzaW9uKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICBbJy4uLy4uLycsIGN1cnJlbnRCcmFuZGluZ05hbWUsIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aF0sXG4gICAgICAgIHtcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnQnJhbmRpbmcgc2F2ZWQuIFRvIGFwcGx5IHRoaXMgYnJhbmRpbmcsIHJlZnJlc2ggYW55IG9wZW4gd2luZG93IHRoYXQgbWlnaHQgYmUgYWZmZWN0ZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlLCAnZGFuZ2VyJyk7XG4gICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYnJhbmRpbmctZWRpdG9yJ10pO1xuICB9XG5cbiAgYXN5bmMgb3BlblByZXZpZXcoKSB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zLm5hbWU7XG4gICAgdGhpcy5zdG9yZS5vcGVuUHJldmlld0ZvckJyYW5kaW5nKG5hbWUpO1xuICB9XG5cbiAgYXN5bmMgbWFya0FzQWN0aXZlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRCcmFuZGluZ05hbWUgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcy5uYW1lO1xuICAgIGNvbnN0IHsgdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMuc3RvcmUubG9hZEJyYW5kaW5nVmFyaWFudHMoKTtcbiAgICBjb25zdCBjdXJyZW50QnJhbmRpbmdPYmogPSB2YXJpYW50cy5maW5kKHYgPT4gdi50YWdzLmluY2x1ZGVzKGN1cnJlbnRCcmFuZGluZ05hbWUpKTtcbiAgICBhd2FpdCB0aGlzLnN0b3JlLm1hcmtBc0FjdGl2ZShjdXJyZW50QnJhbmRpbmdPYmopO1xuICB9XG5cbiAgYXN5bmMgb25CcmFuZGluZ1ZhckNoYW5nZXModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZFZhbHVlOiBCcmFuZGluZ09wdGlvbnNKc29uID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICBjb25zdCBmYWxsYmFja0JyYW5kaW5nOiBCcmFuZGluZ09wdGlvbnNKc29uID0gY2xvbmVEZWVwKFxuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZhbGxiYWNrQnJhbmRpbmckKVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2xlYW5VcE9iamVjdHMocGFyc2VkVmFsdWUpO1xuICAgICAgdGhpcy5jbGVhblVwT2JqZWN0cyhwYXJzZWRWYWx1ZS5icmFuZGluZ0Nzc1ZhcnMpO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmFsbGJhY2tCcmFuZGluZykge1xuICAgICAgICBpZiAocGFyc2VkVmFsdWVba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGFyc2VkVmFsdWVba2V5XSA9IGZhbGxiYWNrQnJhbmRpbmdba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGFyc2VkVmFsdWVba2V5XSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZhbGxiYWNrQnJhbmRpbmdba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBwYXJzZWRWYWx1ZVtrZXldID0gT2JqZWN0LmFzc2lnbihmYWxsYmFja0JyYW5kaW5nW2tleV0sIHBhcnNlZFZhbHVlW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmFwcGx5QnJhbmRpbmdTZXJ2aWNlLmFwcGx5QnJhbmRpbmcocGFyc2VkVmFsdWUpO1xuICAgICAgdGhpcy5uZXdCcmFuZGluZy5uZXh0KHBhcnNlZFZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBub3QgdmFsaWQgSlNPTjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBPYmplY3RzKHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHZhbHVlW2tleV0gPT09IG51bGwgfHwgdmFsdWVba2V5XSA9PT0gJycpIHtcbiAgICAgICAgZGVsZXRlIHZhbHVlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgYnJhbmRpbmdOYW1lJCB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCIncGFsZXR0ZSdcIlxuICAgIFtsYWJlbF09XCInQnJhbmRpbmcnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInL2JyYW5kaW5nLWVkaXRvcidcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjb2cnXCJcbiAgICBbbGFiZWxdPVwiYnJhbmRpbmdOYW1lJCB8IGFzeW5jXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtLWZ1bGxwYWdlIGNvbnRlbnQtZnVsbHBhZ2VcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgYnJhbmRpbmdOYW1lJCB8IGFzeW5jIH19IOKAlCB7eyB0YWJOYW1lJCB8IGFzeW5jIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gIDwvZGl2PlxuICA8cm91dGVyLW91dGxldFxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgKGFjdGl2YXRlKT1cInJvdXRlQWN0aXZhdGVkKCRldmVudClcIlxuICA+PC9yb3V0ZXItb3V0bGV0PlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIj5cbiAgICA8IS0tIGZvb3RlciBjb250ZW50IC0tPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1jYW5jZWxcIlxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIENhbmNlbFxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIGRhdGEtY3k9XCJicmFuZGluZy1zYXZlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgIChjbGljayk9XCJzYXZlQnJhbmRpbmcoKVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBTYXZlXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgZGF0YS1jeT1cImJyYW5kaW5nLXNhdmUtYXNcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1Db250cm9sLmludmFsaWRcIlxuICAgICAgKGNsaWNrKT1cIm9wZW5QcmV2aWV3KClcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgT3BlbiBwcmV2aWV3XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgZGF0YS1jeT1cImJyYW5kaW5nLXNldC1hcy1sYXRlc3RcIlxuICAgICAgKGNsaWNrKT1cIm1hcmtBc0FjdGl2ZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0dsb2JhbEJyYW5kaW5nJCB8IGFzeW5jXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFNldCBhcyBnbG9iYWxcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -18,6 +18,7 @@ import { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.componen
|
|
|
18
18
|
import { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';
|
|
19
19
|
import { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';
|
|
20
20
|
import { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';
|
|
21
|
+
import { PluginLoadedPipe } from '@c8y/ngx-components';
|
|
21
22
|
import * as i0 from "@angular/core";
|
|
22
23
|
import * as i1 from "./cockpit-config.service";
|
|
23
24
|
export class CockpitConfigModule {
|
|
@@ -40,7 +41,8 @@ export class CockpitConfigModule {
|
|
|
40
41
|
PopoverModule,
|
|
41
42
|
TooltipModule,
|
|
42
43
|
EcosystemModule,
|
|
43
|
-
IconSelectorModule
|
|
44
|
+
IconSelectorModule,
|
|
45
|
+
PluginLoadedPipe] }); }
|
|
44
46
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CockpitConfigModule, providers: [
|
|
45
47
|
CockpitConfigGuard,
|
|
46
48
|
hookRoute({
|
|
@@ -107,7 +109,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
107
109
|
PopoverModule,
|
|
108
110
|
TooltipModule,
|
|
109
111
|
EcosystemModule,
|
|
110
|
-
IconSelectorModule
|
|
112
|
+
IconSelectorModule,
|
|
113
|
+
PluginLoadedPipe
|
|
111
114
|
],
|
|
112
115
|
providers: [
|
|
113
116
|
CockpitConfigGuard,
|
|
@@ -150,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
150
153
|
]
|
|
151
154
|
}]
|
|
152
155
|
}], ctorParameters: () => [{ type: i1.CockpitConfigService }] });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvY29ja3BpdC1jb25maWcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxXQUFXLEVBRVgsUUFBUSxFQUNULE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVD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bUJBQW1COzRCQUN6QixTQUFTLEVBQUUsNkJBQTZCOzRCQUN4QyxXQUFXLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDbEMsQ0FBQzt3QkFDRixhQUFhLENBQUMsa0JBQWtCLENBQUM7d0JBQ2pDLFdBQVcsQ0FBQzs0QkFDVjtnQ0FDRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0NBQ3pCLFNBQVMsRUFBRSwwQkFBMEI7Z0NBQ3JDLEtBQUssRUFBRSxPQUFPLENBQUMscUNBQXFDLENBQUM7Z0NBQ3JELE9BQU8sRUFBRSxhQUFhO2dDQUN0QixRQUFRLEVBQUUsRUFBRTs2QkFDYjs0QkFDRDtnQ0FDRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0NBQ3pCLFNBQVMsRUFBRSwwQkFBMEI7Z0NBQ3JDLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO2dDQUMxQixPQUFPLEVBQUUsaUJBQWlCO2dDQUMxQixRQUFRLEVBQUUsRUFBRTs2QkFDYjs0QkFDRDtnQ0FDRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0NBQ3pCLFNBQVMsRUFBRSwwQkFBMEI7Z0NBQ3JDLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7Z0NBQ2pDLE9BQU8sRUFBRSxzQkFBc0I7Z0NBQy9CLFFBQVEsRUFBRSxFQUFFOzZCQUNiOzRCQUNEO2dDQUNFLFNBQVMsRUFBRSxRQUFRLENBQUMsS0FBSztnQ0FDekIsU0FBUyxFQUFFLDBCQUEwQjtnQ0FDckMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQ0FDaEMsT0FBTyxFQUFFLHNCQUFzQjtnQ0FDL0IsUUFBUSxFQUFFLEVBQUU7NkJBQ2I7eUJBQ2EsQ0FBQztxQkFDbEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29yZU1vZHVsZSxcbiAgZ2V0dGV4dCxcbiAgaG9va05hdmlnYXRvcixcbiAgaG9va1JvdXRlLFxuICBob29rU3RlcHBlcixcbiAgU2V0dXBTdGVwLFxuICBTdGVwcGVyc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0b3JNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgRWNvc3lzdGVtTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0nO1xuaW1wb3J0IHsgSWNvblNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBDb2NrcGl0Q29uZmlnR3VhcmQgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLmd1YXJkJztcbmltcG9ydCB7IENPQ0tQSVRfQ09ORklHX1BBVEggfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENvY2twaXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IENvY2twaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZlYXR1cmVDb25maWdDb21wb25lbnQgfSBmcm9tICcuL2ZlYXR1cmUtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIb21lRGFzaGJvYXJkQ29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi9ob21lLWRhc2hib2FyZC1jb25maWcuY29tcG9uZW50JztcbmltcG9ydCB7IE1pc2NDb25maWdDb21wb25lbnQgfSBmcm9tICcuL21pc2MtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb290Tm9kZUNvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vcm9vdC1ub2RlLWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ja3BpdFNldHVwU3RlcDFDb21wb25lbnQgfSBmcm9tICcuL3NldHVwL2NvY2twaXQtc2V0dXAtc3RlcDEuY29tcG9uZW50JztcbmltcG9ydCB7IENvY2twaXRTZXR1cFN0ZXAyQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR1cC9jb2NrcGl0LXNldHVwLXN0ZXAyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2NrcGl0U2V0dXBTdGVwM0NvbXBvbmVudCB9IGZyb20gJy4vc2V0dXAvY29ja3BpdC1zZXR1cC1zdGVwMy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ja3BpdFNldHVwU3RlcDRDb21wb25lbnQgfSBmcm9tICcuL3NldHVwL2NvY2twaXQtc2V0dXAtc3RlcDQuY29tcG9uZW50JztcbmltcG9ydCB7IENvY2twaXRTZXR1cFN0ZXBwZXJCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR1cC9jb2NrcGl0LXNldHVwLXN0ZXBwZXItYnV0dG9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVkUGlwZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDb2NrcGl0Q29uZmlndXJhdGlvbkNvbXBvbmVudCxcbiAgICBDb2NrcGl0U2V0dXBTdGVwMUNvbXBvbmVudCxcbiAgICBDb2NrcGl0U2V0dXBTdGVwMkNvbXBvbmVudCxcbiAgICBDb2NrcGl0U2V0dXBTdGVwM0NvbXBvbmVudCxcbiAgICBDb2NrcGl0U2V0dXBTdGVwNENvbXBvbmVudCxcbiAgICBGZWF0dXJlQ29uZmlnQ29tcG9uZW50LFxuICAgIFJvb3ROb2RlQ29uZmlnQ29tcG9uZW50LFxuICAgIEhvbWVEYXNoYm9hcmRDb25maWdDb21wb25lbnQsXG4gICAgTWlzY0NvbmZpZ0NvbXBvbmVudCxcbiAgICBDb2NrcGl0U2V0dXBTdGVwcGVyQnV0dG9uc0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29yZU1vZHVsZSxcbiAgICBBc3NldFNlbGVjdG9yTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBFY29zeXN0ZW1Nb2R1bGUsXG4gICAgSWNvblNlbGVjdG9yTW9kdWxlLFxuICAgIFBsdWdpbkxvYWRlZFBpcGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29ja3BpdENvbmZpZ0d1YXJkLFxuICAgIGhvb2tSb3V0ZSh7XG4gICAgICBwYXRoOiBDT0NLUElUX0NPTkZJR19QQVRILFxuICAgICAgY29tcG9uZW50OiBDb2NrcGl0Q29uZmlndXJhdGlvbkNvbXBvbmVudCxcbiAgICAgIGNhbkFjdGl2YXRlOiBbQ29ja3BpdENvbmZpZ0d1YXJkXVxuICAgIH0pLFxuICAgIGhvb2tOYXZpZ2F0b3IoQ29ja3BpdENvbmZpZ0d1YXJkKSxcbiAgICBob29rU3RlcHBlcihbXG4gICAgICB7XG4gICAgICAgIHN0ZXBwZXJJZDogU3RlcHBlcnMuU0VUVVAsXG4gICAgICAgIGNvbXBvbmVudDogQ29ja3BpdFNldHVwU3RlcDFDb21wb25lbnQsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUaXRsZSwgaWNvbiwgYW5kIG5hdmlnYXRvciBjb2xsYXBzZScpLFxuICAgICAgICBzZXR1cElkOiAnY29ja3BpdE1pc2MnLFxuICAgICAgICBwcmlvcml0eTogNDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0ZXBwZXJJZDogU3RlcHBlcnMuU0VUVVAsXG4gICAgICAgIGNvbXBvbmVudDogQ29ja3BpdFNldHVwU3RlcDJDb21wb25lbnQsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGZWF0dXJlcycpLFxuICAgICAgICBzZXR1cElkOiAnY29ja3BpdEZlYXR1cmVzJyxcbiAgICAgICAgcHJpb3JpdHk6IDMwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzdGVwcGVySWQ6IFN0ZXBwZXJzLlNFVFVQLFxuICAgICAgICBjb21wb25lbnQ6IENvY2twaXRTZXR1cFN0ZXAzQ29tcG9uZW50LFxuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVG9wIGxldmVsIG5vZGVzJyksXG4gICAgICAgIHNldHVwSWQ6ICdjb2NrcGl0VG9wTGV2ZWxOb2RlcycsXG4gICAgICAgIHByaW9yaXR5OiAyMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RlcHBlcklkOiBTdGVwcGVycy5TRVRVUCxcbiAgICAgICAgY29tcG9uZW50OiBDb2NrcGl0U2V0dXBTdGVwNENvbXBvbmVudCxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0hvbWUgZGFzaGJvYXJkJyksXG4gICAgICAgIHNldHVwSWQ6ICdjb2NrcGl0SG9tZURhc2hib2FyZCcsXG4gICAgICAgIHByaW9yaXR5OiAxMFxuICAgICAgfVxuICAgIF0gYXMgU2V0dXBTdGVwW10pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ29ja3BpdENvbmZpZ01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogQ29ja3BpdENvbmZpZ1NlcnZpY2UpIHtcbiAgICAvLyBvbmx5IGZvciBESSwgbm90IHVzZWQgYnV0IG5lZWRlZC5cbiAgfVxufVxuIl19
|