tango-app-ui-manage-settings 3.7.1-beta.9 → 3.7.2
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/esm2022/lib/components/configurations/configurations.component.mjs +4 -46
- package/esm2022/lib/components/configurations/dashboard-configuration/dashboard-configuration.component.mjs +3 -9
- package/esm2022/lib/components/configurations/zone-configuration/create-single-zone/create-single-zone.component.mjs +228 -0
- package/esm2022/lib/components/configurations/zone-configuration/create-single-zone-group/create-single-zone-group.component.mjs +477 -0
- package/esm2022/lib/components/configurations/zone-configuration/zone-configuration.component.mjs +1244 -0
- package/esm2022/lib/services/client-api.service.mjs +43 -13
- package/esm2022/lib/tango-manage-settings.module.mjs +12 -6
- package/fesm2022/tango-app-ui-manage-settings.mjs +1840 -722
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/activity-logs/activity-logs.component.d.ts +1 -1
- package/lib/components/configurations/configurations.component.d.ts +0 -3
- package/lib/components/configurations/dashboard-configuration/dashboard-configuration.component.d.ts +0 -1
- package/lib/components/configurations/zone-configuration/create-single-zone/create-single-zone.component.d.ts +35 -0
- package/lib/components/configurations/zone-configuration/create-single-zone-group/create-single-zone-group.component.d.ts +49 -0
- package/lib/components/configurations/zone-configuration/zone-configuration.component.d.ts +107 -0
- package/lib/components/contact-directory/contact-directory.component.d.ts +1 -1
- package/lib/components/payments-subscription/billing/billing-group-form/billing-group-form.component.d.ts +1 -1
- package/lib/components/payments-subscription/billing/billing.component.d.ts +1 -1
- package/lib/components/payments-subscription/invoice-credits/invoice-credits.component.d.ts +2 -2
- package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +1 -1
- package/lib/services/client-api.service.d.ts +13 -3
- package/lib/tango-manage-settings.module.d.ts +16 -14
- package/package.json +1 -1
- package/esm2022/lib/components/configurations/footfall-configuration/footfall-configuration.component.mjs +0 -799
- package/lib/components/configurations/footfall-configuration/footfall-configuration.component.d.ts +0 -130
|
@@ -18,7 +18,7 @@ import * as i14 from "./dashboard-configuration/dashboard-configuration.componen
|
|
|
18
18
|
import * as i15 from "./control-center-configuration/control-center-configuration.component";
|
|
19
19
|
import * as i16 from "./store-time-configuration/store-time-configuration.component";
|
|
20
20
|
import * as i17 from "./revop-configuration/revop-configuration.component";
|
|
21
|
-
import * as i18 from "./
|
|
21
|
+
import * as i18 from "./zone-configuration/zone-configuration.component";
|
|
22
22
|
export class ConfigurationsComponent {
|
|
23
23
|
clientApi;
|
|
24
24
|
toaster;
|
|
@@ -27,12 +27,10 @@ export class ConfigurationsComponent {
|
|
|
27
27
|
destroy$ = new Subject();
|
|
28
28
|
ticketConfigPrevValues;
|
|
29
29
|
featureConfigPrevValues;
|
|
30
|
-
footfallConfigPrevValues;
|
|
31
30
|
domainConfigPrevValues;
|
|
32
31
|
userConfigPrevValues;
|
|
33
32
|
userRole;
|
|
34
33
|
accordion;
|
|
35
|
-
isVMSEnabledUser = false;
|
|
36
34
|
constructor(clientApi, toaster, gs) {
|
|
37
35
|
this.clientApi = clientApi;
|
|
38
36
|
this.toaster = toaster;
|
|
@@ -52,7 +50,6 @@ export class ConfigurationsComponent {
|
|
|
52
50
|
this.clientData = e;
|
|
53
51
|
this.populateTicketConfiguration(e);
|
|
54
52
|
this.populateFeatureConfiguration(e);
|
|
55
|
-
this.populateFootfallConfiguration(e);
|
|
56
53
|
this.populateDomainDetailConfiguration(e);
|
|
57
54
|
this.populateUserConfiguration(e);
|
|
58
55
|
}
|
|
@@ -65,7 +62,6 @@ export class ConfigurationsComponent {
|
|
|
65
62
|
openItem() {
|
|
66
63
|
this.populateTicketConfiguration(this.clientData);
|
|
67
64
|
this.populateFeatureConfiguration(this.clientData);
|
|
68
|
-
this.populateFootfallConfiguration(this.clientData);
|
|
69
65
|
this.populateDomainDetailConfiguration(this.clientData);
|
|
70
66
|
this.populateUserConfiguration(this.clientData);
|
|
71
67
|
}
|
|
@@ -90,10 +86,6 @@ export class ConfigurationsComponent {
|
|
|
90
86
|
this.clientApi.clientFormData.next({ value: { ...obj }, type: 'input', form: 'ticket-configuration' });
|
|
91
87
|
}
|
|
92
88
|
populateFeatureConfiguration(data) {
|
|
93
|
-
if (data?.featureConfigs?.isVMS)
|
|
94
|
-
this.isVMSEnabledUser = true;
|
|
95
|
-
else
|
|
96
|
-
this.isVMSEnabledUser = false;
|
|
97
89
|
let obj = {
|
|
98
90
|
open: data?.featureConfigs?.open,
|
|
99
91
|
close: data?.featureConfigs?.close,
|
|
@@ -109,7 +101,6 @@ export class ConfigurationsComponent {
|
|
|
109
101
|
isNormalized: data?.featureConfigs?.isNormalized,
|
|
110
102
|
isPasserByData: data?.featureConfigs?.isPasserByData,
|
|
111
103
|
isFootfallDirectory: data?.featureConfigs?.isFootfallDirectory,
|
|
112
|
-
isVMS: data?.featureConfigs?.isVMS,
|
|
113
104
|
isFootfallDirectoryAudit: data?.featureConfigs?.isFootfallDirectoryAudit,
|
|
114
105
|
isFootfallDirectoryLimit: data?.featureConfigs?.isFootfallDirectoryLimit,
|
|
115
106
|
isExcludedArea: data?.featureConfigs?.isExcludedArea,
|
|
@@ -136,23 +127,6 @@ export class ConfigurationsComponent {
|
|
|
136
127
|
this.clientApi.clientFormData.next({ value: { ...obj }, type: 'input', form: 'feature-configuration' });
|
|
137
128
|
localStorage.setItem("client-details", JSON.stringify(obj));
|
|
138
129
|
}
|
|
139
|
-
populateFootfallConfiguration(data) {
|
|
140
|
-
if (!data?.footfallDirectoryConfigs)
|
|
141
|
-
return;
|
|
142
|
-
let obj = {
|
|
143
|
-
allowTicketCreation: data?.footfallDirectoryConfigs?.allowTicketCreation ?? 3,
|
|
144
|
-
isAutoCloseEnable: data?.footfallDirectoryConfigs?.isAutoCloseEnable,
|
|
145
|
-
autoCloseAccuracy: data?.footfallDirectoryConfigs?.autoCloseAccuracy ?? '95%',
|
|
146
|
-
tangoReview: data?.footfallDirectoryConfigs?.tangoReview ?? '85%',
|
|
147
|
-
accuracyBreach: data.footfallDirectoryConfigs?.accuracyBreach || {},
|
|
148
|
-
revision: data?.footfallDirectoryConfigs?.revision ?? [],
|
|
149
|
-
taggingLimitation: data?.footfallDirectoryConfigs?.taggingLimitation ?? [],
|
|
150
|
-
storeList: data?.footfallDirectoryConfigs?.storeList ?? data?.footfallDirectoryConfigs?.accuracyBreach?.storeList ?? []
|
|
151
|
-
};
|
|
152
|
-
this.footfallConfigPrevValues = obj;
|
|
153
|
-
this.clientApi.clientFormData.next({ value: { ...obj }, type: 'input', form: 'footfallDirectoryConfigs' });
|
|
154
|
-
localStorage.setItem("client-details", JSON.stringify(obj));
|
|
155
|
-
}
|
|
156
130
|
populateDomainDetailConfiguration(data) {
|
|
157
131
|
let obj = {
|
|
158
132
|
domainName: data?.domainConfig?.ssoLogin?.domainName,
|
|
@@ -213,19 +187,6 @@ export class ConfigurationsComponent {
|
|
|
213
187
|
}
|
|
214
188
|
});
|
|
215
189
|
}
|
|
216
|
-
else if (e.form === 'footfallDirectoryConfigs') {
|
|
217
|
-
const data = this.getDifferentEntries(this.footfallConfigPrevValues, e.value);
|
|
218
|
-
this.clientApi.updateFootfallDirectoryConfig(this.clientData.clientId, data).pipe(takeUntil(this.destroy$)).subscribe({
|
|
219
|
-
next: (e) => {
|
|
220
|
-
this.toaster.getSuccessToast('Footfall configuration details updated successfully.');
|
|
221
|
-
this.clientApi.clientFormData.next({ value: null, type: 'submitted', form: 'null' });
|
|
222
|
-
},
|
|
223
|
-
error: (e) => {
|
|
224
|
-
this.toaster.getErrorToast(e.error?.error);
|
|
225
|
-
this.populateFootfallConfiguration(this.clientData);
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
190
|
}
|
|
230
191
|
resetForm(e) {
|
|
231
192
|
if (e.form === 'ticket-configuration') {
|
|
@@ -240,9 +201,6 @@ export class ConfigurationsComponent {
|
|
|
240
201
|
else if (e.form === 'user-configuration') {
|
|
241
202
|
this.populateUserConfiguration(this.clientData);
|
|
242
203
|
}
|
|
243
|
-
else if (e.form === 'footfallDirectoryConfigs') {
|
|
244
|
-
this.populateFootfallConfiguration(this.clientData);
|
|
245
|
-
}
|
|
246
204
|
this.accordion.collapseAll();
|
|
247
205
|
}
|
|
248
206
|
getDifferentEntries(obj1, obj2) {
|
|
@@ -262,13 +220,13 @@ export class ConfigurationsComponent {
|
|
|
262
220
|
return differentEntries;
|
|
263
221
|
}
|
|
264
222
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationsComponent, deps: [{ token: i1.ClientApiService }, { token: i2.ToastService }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
265
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfigurationsComponent, selector: "lib-configurations", viewQueries: [{ propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem()\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6 \" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Audit Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-audit-configuration></lib-audit-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Employee Training</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-employee-training></lib-employee-training>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Ticket Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-ticket-configuration></lib-ticket-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isVMSEnabledUser\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Footfall Directory Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-footfall-configuration></lib-footfall-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!-- <lib-email-configuration></lib-email-configuration> -->\r\n <lib-email-scheduler></lib-email-scheduler>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Report Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-report-configuration></lib-report-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-user-configuration></lib-user-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userRole !== 'user'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Security Features</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-domain-details></lib-domain-details> \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Feature Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-feature-configuration></lib-feature-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Dashboard Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-dashboard-configuration></lib-dashboard-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Control Center Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-control-center-configuration></lib-control-center-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Store Time Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-store-time-configuration></lib-store-time-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >RevOp Tag Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-revop-configuration></lib-revop-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".settings-accordian-card{border-radius:10px;background:var(#FFF)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i5.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i5.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i5.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i5.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i5.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i6.AuditConfigurationComponent, selector: "lib-audit-configuration" }, { kind: "component", type: i7.TicketConfigurationComponent, selector: "lib-ticket-configuration" }, { kind: "component", type: i8.ReportConfigurationComponent, selector: "lib-report-configuration" }, { kind: "component", type: i9.UserConfigurationComponent, selector: "lib-user-configuration" }, { kind: "component", type: i10.DomainDetailsComponent, selector: "lib-domain-details" }, { kind: "component", type: i11.FeatureConfigurationComponent, selector: "lib-feature-configuration" }, { kind: "component", type: i12.EmployeeTrainingComponent, selector: "lib-employee-training" }, { kind: "component", type: i13.EmailSchedulerComponent, selector: "lib-email-scheduler" }, { kind: "component", type: i14.DashboardConfigurationComponent, selector: "lib-dashboard-configuration" }, { kind: "component", type: i15.ControlCenterConfigurationComponent, selector: "lib-control-center-configuration" }, { kind: "component", type: i16.StoreTimeConfigurationComponent, selector: "lib-store-time-configuration" }, { kind: "component", type: i17.RevopConfigurationComponent, selector: "lib-revop-configuration" }, { kind: "component", type: i18.FootfallConfigurationComponent, selector: "lib-footfall-configuration" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
223
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfigurationsComponent, selector: "lib-configurations", viewQueries: [{ propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem()\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6 \" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Audit Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-audit-configuration></lib-audit-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Employee Training</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-employee-training></lib-employee-training>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Ticket Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-ticket-configuration></lib-ticket-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!-- <lib-email-configuration></lib-email-configuration> -->\r\n <lib-email-scheduler></lib-email-scheduler>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Report Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-report-configuration></lib-report-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-user-configuration></lib-user-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userRole !== 'user'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Security Features</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-domain-details></lib-domain-details> \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Feature Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-feature-configuration></lib-feature-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Dashboard Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-dashboard-configuration></lib-dashboard-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Control Center Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-control-center-configuration></lib-control-center-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Store Time Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-store-time-configuration></lib-store-time-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >RevOp Tag Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-revop-configuration></lib-revop-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Zone configuaration -->\r\n <div *ngIf=\"(userRole === 'admin' || userRole === 'superadmin') && \r\n ((gs.userAccess | async)?.TangoEye_ZoneTag_isAdd || (gs.userAccess | async)?.TangoEye_ZoneTag_isEdit)\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Zone Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-zone-configuration></lib-zone-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".settings-accordian-card{border-radius:10px;background:var(#FFF)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i5.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i5.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i5.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i5.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i5.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i6.AuditConfigurationComponent, selector: "lib-audit-configuration" }, { kind: "component", type: i7.TicketConfigurationComponent, selector: "lib-ticket-configuration" }, { kind: "component", type: i8.ReportConfigurationComponent, selector: "lib-report-configuration" }, { kind: "component", type: i9.UserConfigurationComponent, selector: "lib-user-configuration" }, { kind: "component", type: i10.DomainDetailsComponent, selector: "lib-domain-details" }, { kind: "component", type: i11.FeatureConfigurationComponent, selector: "lib-feature-configuration" }, { kind: "component", type: i12.EmployeeTrainingComponent, selector: "lib-employee-training" }, { kind: "component", type: i13.EmailSchedulerComponent, selector: "lib-email-scheduler" }, { kind: "component", type: i14.DashboardConfigurationComponent, selector: "lib-dashboard-configuration" }, { kind: "component", type: i15.ControlCenterConfigurationComponent, selector: "lib-control-center-configuration" }, { kind: "component", type: i16.StoreTimeConfigurationComponent, selector: "lib-store-time-configuration" }, { kind: "component", type: i17.RevopConfigurationComponent, selector: "lib-revop-configuration" }, { kind: "component", type: i18.ZoneConfigurationComponent, selector: "lib-zone-configuration" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
266
224
|
}
|
|
267
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfigurationsComponent, decorators: [{
|
|
268
226
|
type: Component,
|
|
269
|
-
args: [{ selector: 'lib-configurations', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem()\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6 \" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Audit Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-audit-configuration></lib-audit-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Employee Training</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-employee-training></lib-employee-training>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Ticket Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-ticket-configuration></lib-ticket-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isVMSEnabledUser\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Footfall Directory Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-footfall-configuration></lib-footfall-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!-- <lib-email-configuration></lib-email-configuration> -->\r\n <lib-email-scheduler></lib-email-scheduler>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Report Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-report-configuration></lib-report-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-user-configuration></lib-user-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userRole !== 'user'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Security Features</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-domain-details></lib-domain-details> \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Feature Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-feature-configuration></lib-feature-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Dashboard Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-dashboard-configuration></lib-dashboard-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Control Center Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-control-center-configuration></lib-control-center-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Store Time Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-store-time-configuration></lib-store-time-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >RevOp Tag Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-revop-configuration></lib-revop-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".settings-accordian-card{border-radius:10px;background:var(#FFF)}\n"] }]
|
|
227
|
+
args: [{ selector: 'lib-configurations', template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem()\" >\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6 \" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Audit Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-audit-configuration></lib-audit-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Employee Training</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n \r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-employee-training></lib-employee-training>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Ticket Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-ticket-configuration></lib-ticket-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <!-- <lib-email-configuration></lib-email-configuration> -->\r\n <lib-email-scheduler></lib-email-scheduler>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Report Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-report-configuration></lib-report-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' \" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-user-configuration></lib-user-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userRole !== 'user'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Security Features</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-domain-details></lib-domain-details> \r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Feature Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-feature-configuration></lib-feature-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Dashboard Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-dashboard-configuration></lib-dashboard-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"(gs.userAccess | async)?.userType !== 'tango'\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Control Center Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-control-center-configuration></lib-control-center-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Store Time Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-store-time-configuration></lib-store-time-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >RevOp Tag Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-revop-configuration></lib-revop-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Zone configuaration -->\r\n <div *ngIf=\"(userRole === 'admin' || userRole === 'superadmin') && \r\n ((gs.userAccess | async)?.TangoEye_ZoneTag_isAdd || (gs.userAccess | async)?.TangoEye_ZoneTag_isEdit)\" class=\"settings-accordian-card mb-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Zone Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <lib-zone-configuration></lib-zone-configuration>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>", styles: [".settings-accordian-card{border-radius:10px;background:var(#FFF)}\n"] }]
|
|
270
228
|
}], ctorParameters: () => [{ type: i1.ClientApiService }, { type: i2.ToastService }, { type: i3.GlobalStateService }], propDecorators: { accordion: [{
|
|
271
229
|
type: ViewChild,
|
|
272
230
|
args: ['accordion', { static: true }]
|
|
273
231
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy9jb25maWd1cmF0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLHVCQUF1QjtJQWNkO0lBQXFDO0lBQThCO0lBYnZGLFVBQVUsQ0FBTTtJQUNDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLHNCQUFzQixDQUFNO0lBQzVCLHVCQUF1QixDQUFNO0lBQzdCLHdCQUF3QixDQUFNO0lBQzlCLHNCQUFzQixDQUFNO0lBQzVCLG9CQUFvQixDQUFNO0lBQzFCLFFBQVEsQ0FBTztJQUMyQixTQUFTLENBQU07SUFDekQsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBSWxDLFlBQW9CLFNBQTJCLEVBQVUsT0FBcUIsRUFBUyxFQUFxQjtRQUF4RixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUMxRyxNQUFNLElBQUksR0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUksSUFBSSxDQUFD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QU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGllbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2xpZW50LWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbmZpZ3VyYXRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGNsaWVudERhdGE6IGFueTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHRpY2tldENvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcbiAgZmVhdHVyZUNvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcbiAgZm9vdGZhbGxDb25maWdQcmV2VmFsdWVzOiBhbnk7XG4gIGRvbWFpbkNvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcbiAgdXNlckNvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcbiAgdXNlclJvbGU6c3RyaW5nXG4gIEBWaWV3Q2hpbGQoJ2FjY29yZGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIGFjY29yZGlvbjogYW55O1xuICBpc1ZNU0VuYWJsZWRVc2VyOiBib29sZWFuID0gZmFsc2U7XG5cblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50QXBpOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0U2VydmljZSwgcHVibGljIGdzOkdsb2JhbFN0YXRlU2VydmljZSkge1xuICAgIGNvbnN0IHVzZXI6YW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpXG4gICAgdGhpcy51c2VyUm9sZSAgPSBKU09OLnBhcnNlKHVzZXIpPy5yb2xlXG4gICAgXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ3N1Ym1pdCcpIHtcbiAgICAgICAgdGhpcy5zdWJtaXRGb3JtKGUpXG4gICAgICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50RGF0YS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICB0aGlzLmNsaWVudERhdGEgPSBlXG4gICAgICAgIHRoaXMucG9wdWxhdGVUaWNrZXRDb25maWd1cmF0aW9uKGUpXG4gICAgICAgIHRoaXMucG9wdWxhdGVGZWF0dXJlQ29uZmlndXJhdGlvbihlKVxuICAgICAgICB0aGlzLnBvcHVsYXRlRm9vdGZhbGxDb25maWd1cmF0aW9uKGUpXG4gICAgICAgIHRoaXMucG9wdWxhdGVEb21haW5EZXRhaWxDb25maWd1cmF0aW9uKGUpXG4gICAgICAgIHRoaXMucG9wdWxhdGVVc2VyQ29uZmlndXJhdGlvbihlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb3Blbkl0ZW0oKSB7XG4gICAgdGhpcy5wb3B1bGF0ZVRpY2tldENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxuICAgIHRoaXMucG9wdWxhdGVGZWF0dXJlQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gICAgdGhpcy5wb3B1bGF0ZUZvb3RmYWxsQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gICAgdGhpcy5wb3B1bGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxuICAgIHRoaXMucG9wdWxhdGVVc2VyQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gIH1cblxuICBwb3B1bGF0ZVRpY2tldENvbmZpZ3VyYXRpb24oZGF0YTogYW55KSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIGluc3RhbGxhdGlvblJlQXNzaWduOiBkYXRhPy50aWNrZXRDb25maWdzPy5pbnN0YWxsYXRpb25SZUFzc2lnbixcbiAgICAgIHNlbmRUb0FkbWluOiBkYXRhPy50aWNrZXRDb25maWdzPy5hbGVydFNlbnRUbz8uYWRtaW4sXG4gICAgICBzZW5kVG9Vc2VyOiBkYXRhPy50aWNrZXRDb25maWdzPy5hbGVydFNlbnRUbz8udXNlcixcbiAgICAgIGRvd25UaW1lVHlwZTogZGF0YT8udGlja2V0Q29uZmlncz8uZG93blRpbWVUeXBlLFxuICAgICAgaW5mcmFEb3duVGltZTogZGF0YT8udGlja2V0Q29uZmlncz8uaW5mcmFEb3duVGltZSxcbiAgICAgIE1pbkZpbGVzQ291bnQ6IGRhdGE/LnRpY2tldENvbmZpZ3M/Lk1pbkZpbGVzQ291bnQsXG4gICAgICBpc1JjYVRpY2tldEFzc2lnbjogZGF0YT8udGlja2V0Q29uZmlncz8uaXNSY2FUaWNrZXRBc3NpZ24sXG4gICAgICByY2FUaWNrZXRBc3NpZ246IGRhdGE/LnRpY2tldENvbmZpZ3M/LnJjYVRpY2tldEFzc2lnbixcbiAgICAgIGlzUmVmcmVzaEFsZXJ0OiBkYXRhPy50aWNrZXRDb25maWdzPy5pc1JlZnJlc2hBbGVydCxcbiAgICAgIHJlZnJlc2hBbGVydDogZGF0YT8udGlja2V0Q29uZmlncz8ucmVmcmVzaEFsZXJ0LFxuICAgICAgaXNTdGF0dXNDaGVja0FsZXJ0OiBkYXRhPy50aWNrZXRDb25maWdzPy5pc1N0YXR1c0NoZWNrQWxlcnQsXG4gICAgICBzdGF0dXNDaGVja0FsZXJ0OiBkYXRhPy50aWNrZXRDb25maWdzPy5zdGF0dXNDaGVja0FsZXJ0LFxuICAgICAgcmVUcmFpbjogZGF0YT8udGlja2V0Q29uZmlncz8ucmVUcmFpbixcbiAgICAgIGFjY3VyYWN5UGVyY2VudGFnZTogZGF0YT8udGlja2V0Q29uZmlncz8uYWNjdXJhY3lQZXJjZW50YWdlLFxuICAgIH1cblxuICAgIHRoaXMudGlja2V0Q29uZmlnUHJldlZhbHVlcyA9IG9ialxuXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEubmV4dCh7IHZhbHVlOiB7IC4uLm9iaiB9LCB0eXBlOiAnaW5wdXQnLCBmb3JtOiAndGlja2V0LWNvbmZpZ3VyYXRpb24nIH0pXG4gIH1cblxuICBwb3B1bGF0ZUZlYXR1cmVDb25maWd1cmF0aW9uKGRhdGE6IGFueSkge1xuICAgIGlmIChkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNWTVMpIHRoaXMuaXNWTVNFbmFibGVkVXNlciA9IHRydWU7XG4gICAgZWxzZSB0aGlzLmlzVk1TRW5hYmxlZFVzZXIgPSBmYWxzZTtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgb3BlbjogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/Lm9wZW4sXG4gICAgICBjbG9zZTogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmNsb3NlLFxuICAgICAgaW5mcmFBbGVydENvbmRpdGlvbjogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmluZnJhQWxlcnQ/LmNvbmRpdGlvbixcbiAgICAgIGluZnJhQWxlcnRWYWx1ZTogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmluZnJhQWxlcnQ/LnZhbHVlLFxuICAgICAgYm91bmNlZExpbWl0Q29uZGl0aW9uOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uYm91bmNlZExpbWl0Py5jb25kaXRpb24sXG4gICAgICBib3VuY2VkTGltaXRWYWx1ZTogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmJvdW5jZWRMaW1pdD8udmFsdWUsXG4gICAgICBjb252ZXJzaW9uQ29uZGl0aW9uOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uY29udmVyc2lvbj8uY29uZGl0aW9uLFxuICAgICAgY29udmVyc2lvblZhbHVlOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uY29udmVyc2lvbj8udmFsdWUsXG4gICAgICBiaWxsYWJsZUNhbGN1bGF0aW9uOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uYmlsbGFibGVDYWxjdWxhdGlvbixcbiAgICAgIG1pc3NlZE9wcG9ydHVuaXR5Q2FsY3VsYXRpb246IGRhdGE/LmZlYXR1cmVDb25maWdzPy5taXNzZWRPcHBvcnR1bml0eUNhbGN1bGF0aW9uLFxuICAgICAgY29udmVyc2lvbkNhbGN1bGF0aW9uOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uY29udmVyc2lvbkNhbGN1bGF0aW9uLFxuICAgICAgaXNOb3JtYWxpemVkOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNOb3JtYWxpemVkLFxuICAgICAgaXNQYXNzZXJCeURhdGE6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1Bhc3NlckJ5RGF0YSxcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3Rvcnk6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0Zvb3RmYWxsRGlyZWN0b3J5LFxuICAgICAgaXNWTVM6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1ZNUyxcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdCA6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQsXG4gICAgICBpc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXQgOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNGb290ZmFsbERpcmVjdG9yeUxpbWl0LFxuICAgICAgaXNFeGNsdWRlZEFyZWE6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzRXhjbHVkZWRBcmVhLFxuICAgICAgaXNDYW1lcmFEaXNhYmxlZDogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzQ2FtZXJhRGlzYWJsZWQsXG4gICAgICBpc2JpbGxpbmdEaXNhYmxlZDpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNiaWxsaW5nRGlzYWJsZWQsXG4gICAgICBpc05ld0Rhc2hib2FyZDpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNOZXdEYXNoYm9hcmQsXG4gICAgICB1cGRhdGVGZWF0dXJlQ29uZmlnOmRhdGE/LmZlYXR1cmVDb25maWdzPy51cGRhdGVGZWF0dXJlQ29uZmlnLFxuICAgICAgaXNGb290ZmFsbEF1ZGl0U3RvcmVzOmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0Zvb3RmYWxsQXVkaXRTdG9yZXMsXG4gICAgICBpc05ld1RyYWZmaWM6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzTmV3VHJhZmZpYyxcbiAgICAgIGlzTmV3Wm9uZTpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNOZXdab25lLFxuICAgICAgaXNOZXdSZXBvcnRzOmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc05ld1JlcG9ydHMsXG4gICAgICBpc05ld1pvbmVWMjogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzTmV3Wm9uZVYyLFxuICAgICAgaXNSZXZvcHM6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1Jldm9wcyxcbiAgICAgIGlzTk9COiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNOT0IsXG4gICAgICBpc1RyYXg6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzVHJheCxcbiAgICAgIGlzQ29udHJvbENlbnRlcjpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNDb250cm9sQ2VudGVyLFxuICAgICAgc3RyZWFtQnk6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LnN0cmVhbUJ5LFxuICAgICAgaXNDYW1lcmFFZGl0OmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0NhbWVyYUVkaXQsXG4gICAgICBpc0FJTWFuYWdlcjpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNBSU1hbmFnZXIsXG4gICAgICBpc0FJTWFuYWdlckFjY2Vzc0NvbnRyb2w6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzQUlNYW5hZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgIGxvZ2luU1NPOmRhdGE/LmZlYXR1cmVDb25maWdzPy5sb2dpblNTT1xuICAgIH0gXG4gICAgdGhpcy5mZWF0dXJlQ29uZmlnUHJldlZhbHVlcyA9IG9ialxuICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogeyAuLi5vYmogfSwgdHlwZTogJ2lucHV0JywgZm9ybTogJ2ZlYXR1cmUtY29uZmlndXJhdGlvbicgfSlcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNsaWVudC1kZXRhaWxzXCIsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xuICB9XG5cbiAgcG9wdWxhdGVGb290ZmFsbENvbmZpZ3VyYXRpb24oZGF0YTogYW55KSB7XG4gICAgaWYgKCFkYXRhPy5mb290ZmFsbERpcmVjdG9yeUNvbmZpZ3MpIHJldHVybjtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgYWxsb3dUaWNrZXRDcmVhdGlvbjogZGF0YT8uZm9vdGZhbGxEaXJlY3RvcnlDb25maWdzPy5hbGxvd1RpY2tldENyZWF0aW9uID8/IDMsXG4gICAgICBpc0F1dG9DbG9zZUVuYWJsZTogZGF0YT8uZm9vdGZhbGxEaXJlY3RvcnlDb25maWdzPy5pc0F1dG9DbG9zZUVuYWJsZSxcbiAgICAgIGF1dG9DbG9zZUFjY3VyYWN5OiBkYXRhPy5mb290ZmFsbERpcmVjdG9yeUNvbmZpZ3M/LmF1dG9DbG9zZUFjY3VyYWN5ID8/ICc5NSUnLFxuICAgICAgdGFuZ29SZXZpZXc6IGRhdGE/LmZvb3RmYWxsRGlyZWN0b3J5Q29uZmlncz8udGFuZ29SZXZpZXcgPz8gJzg1JScsXG4gICAgICBhY2N1cmFjeUJyZWFjaDogIGRhdGEuZm9vdGZhbGxEaXJlY3RvcnlDb25maWdzPy5hY2N1cmFjeUJyZWFjaCB8fCB7fSxcbiAgICAgIHJldmlzaW9uOiBkYXRhPy5mb290ZmFsbERpcmVjdG9yeUNvbmZpZ3M/LnJldmlzaW9uID8/IFtdLFxuICAgICAgdGFnZ2luZ0xpbWl0YXRpb246IGRhdGE/LmZvb3RmYWxsRGlyZWN0b3J5Q29uZmlncz8udGFnZ2luZ0xpbWl0YXRpb24gPz8gW10sXG4gICAgICBzdG9yZUxpc3Q6IGRhdGE/LmZvb3RmYWxsRGlyZWN0b3J5Q29uZmlncz8uc3RvcmVMaXN0ID8/IGRhdGE/LmZvb3RmYWxsRGlyZWN0b3J5Q29uZmlncz8uYWNjdXJhY3lCcmVhY2g/LnN0b3JlTGlzdCA/PyBbXVxuXG4gICAgfVxuICAgIHRoaXMuZm9vdGZhbGxDb25maWdQcmV2VmFsdWVzID0gb2JqO1xuICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogeyAuLi5vYmogfSwgdHlwZTogJ2lucHV0JywgZm9ybTogJ2Zvb3RmYWxsRGlyZWN0b3J5Q29uZmlncycgfSlcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNsaWVudC1kZXRhaWxzXCIsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xuICB9XG5cbiAgcG9wdWxhdGVEb21haW5EZXRhaWxDb25maWd1cmF0aW9uKGRhdGE6IGFueSkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBkb21haW5OYW1lOiBkYXRhPy5kb21haW5Db25maWc/LnNzb0xvZ2luPy5kb21haW5OYW1lLFxuICAgICAgaXNFbmFibGU6IGRhdGE/LmRvbWFpbkNvbmZpZz8uc3NvTG9naW4/LmlzRW5hYmxlLFxuICAgICAgZW5hYmxlV2hpdGVsaXN0aW5nOiBkYXRhPy5kb21haW5Db25maWc/LmlwV2hpdGVsaXN0aW5nPy5lbmFibGVXaGl0ZWxpc3RpbmcsXG4gICAgICBhbGxvd2VkSXBzOiBkYXRhPy5kb21haW5Db25maWc/LmlwV2hpdGVsaXN0aW5nPy5hbGxvd2VkSXBzLFxuICAgICAgZW5hYmxlT3RwOiBkYXRhPy5kb21haW5Db25maWc/LmVuYWJsZU90cCxcbiAgICB9XG5cbiAgICB0aGlzLmRvbWFpbkNvbmZpZ1ByZXZWYWx1ZXMgPSBvYmpcblxuICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogeyAuLi5vYmogfSwgdHlwZTogJ2lucHV0JywgZm9ybTogJ2RvbWFpbi1kZXRhaWxzJyB9KVxuICAgIFxuICB9XG5cbiAgcG9wdWxhdGVVc2VyQ29uZmlndXJhdGlvbihkYXRhOiBhbnkpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgY3NtOiBkYXRhPy5hc3NpZ25lZFVzZXJzPy5jc20sXG4gICAgICBvcHM6IGRhdGE/LmFzc2lnbmVkVXNlcnM/Lm9wcyxcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJDb25maWdQcmV2VmFsdWVzID0gb2JqXG5cbiAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IHsgLi4ub2JqIH0sIHR5cGU6ICdpbnB1dCcsIGZvcm06ICd1c2VyLWNvbmZpZ3VyYXRpb24nIH0pXG4gIH1cblxuXG5cbiAgc3VibWl0Rm9ybShlOiBhbnkpIHtcbiAgICBpZiAoZS5mb3JtID09PSAndGlja2V0LWNvbmZpZ3VyYXRpb24nKSB7XG4gICAgICBjb25zdCBkYXRhID0gIHRoaXMuZ2V0RGlmZmVyZW50RW50cmllcyh0aGlzLnRpY2tldENvbmZpZ1ByZXZWYWx1ZXMsIGUudmFsdWUpO1xuICAgICAgdGhpcy5jbGllbnRBcGkudXBkYXRlVGlja2V0Q29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEuY2xpZW50SWQsIGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRTdWNjZXNzVG9hc3QoZS5kYXRhPy5yZXN1bHQpXG4gICAgICAgICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEubmV4dCh7IHZhbHVlOiBudWxsLCB0eXBlOiAnc3VibWl0dGVkJywgZm9ybTogJ251bGwnIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxuICAgICAgICAgIHRoaXMucG9wdWxhdGVUaWNrZXRDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIH0gZWxzZVxuICAgICAgaWYgKGUuZm9ybSA9PT0gJ2ZlYXR1cmUtY29uZmlndXJhdGlvbicpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9ICB0aGlzLmdldERpZmZlcmVudEVudHJpZXModGhpcy5mZWF0dXJlQ29uZmlnUHJldlZhbHVlcywgZS52YWx1ZSlcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSlcbiAgICAgICAgdGhpcy5jbGllbnRBcGkudXBkYXRlRmVhdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhLmNsaWVudElkLCBkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdGVyLmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcbiAgICAgICAgICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogbnVsbCwgdHlwZTogJ3N1Ym1pdHRlZCcsIGZvcm06ICdudWxsJyB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZ2V0RXJyb3JUb2FzdChlLmVycm9yPy5lcnJvcilcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVGZWF0dXJlQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICB9IGVsc2VcbiAgICAgICAgaWYgKGUuZm9ybSA9PT0gJ2RvbWFpbi1kZXRhaWxzJykge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSAgdGhpcy5nZXREaWZmZXJlbnRFbnRyaWVzKHRoaXMuZG9tYWluQ29uZmlnUHJldlZhbHVlcywgZS52YWx1ZSkgICAgIFxuICAgICAgICAgIHRoaXMuY2xpZW50QXBpLnVwZGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhLmNsaWVudElkLCBkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRTdWNjZXNzVG9hc3QoZS5kYXRhPy5yZXN1bHQpXG4gICAgICAgICAgICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogbnVsbCwgdHlwZTogJ3N1Ym1pdHRlZCcsIGZvcm06ICdudWxsJyB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZ2V0RXJyb3JUb2FzdChlLmVycm9yPy5lcnJvcilcbiAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgfSBlbHNlIGlmIChlLmZvcm0gPT09ICdmb290ZmFsbERpcmVjdG9yeUNvbmZpZ3MnKSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGlmZmVyZW50RW50cmllcyh0aGlzLmZvb3RmYWxsQ29uZmlnUHJldlZhbHVlcywgZS52YWx1ZSk7XG4gICAgICAgICAgdGhpcy5jbGllbnRBcGkudXBkYXRlRm9vdGZhbGxEaXJlY3RvcnlDb25maWcodGhpcy5jbGllbnREYXRhLmNsaWVudElkLCBkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRTdWNjZXNzVG9hc3QoJ0Zvb3RmYWxsIGNvbmZpZ3VyYXRpb24gZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nKVxuICAgICAgICAgICAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdzdWJtaXR0ZWQnLCBmb3JtOiAnbnVsbCcgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLmdldEVycm9yVG9hc3QoZS5lcnJvcj8uZXJyb3IpXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVGb290ZmFsbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICB9XG5cbiAgcmVzZXRGb3JtKGU6IGFueSkge1xuICAgIGlmIChlLmZvcm0gPT09ICd0aWNrZXQtY29uZmlndXJhdGlvbicpIHtcbiAgICAgIHRoaXMucG9wdWxhdGVUaWNrZXRDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YSlcbiAgICB9IGVsc2VcbiAgICAgIGlmIChlLmZvcm0gPT09ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nKSB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVGZWF0dXJlQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gICAgICB9IGVsc2VcbiAgICAgICAgaWYgKGUuZm9ybSA9PT0gJ2RvbWFpbi1kZXRhaWxzJykge1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVEb21haW5EZXRhaWxDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YSlcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgaWYgKGUuZm9ybSA9PT0gJ3VzZXItY29uZmlndXJhdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVVc2VyQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgaWYgKGUuZm9ybSA9PT0gJ2Zvb3RmYWxsRGlyZWN0b3J5Q29uZmlncycpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVGb290ZmFsbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuYWNjb3JkaW9uLmNvbGxhcHNlQWxsKClcblxuICB9XG5cbiBnZXREaWZmZXJlbnRFbnRyaWVzKG9iajE6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9iajI6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBkaWZmZXJlbnRFbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqMikge1xuICAgICAgICBpZiAob2JqMS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmoxW2tleV0pICYmIEFycmF5LmlzQXJyYXkob2JqMltrZXldKSkge1xuICAgICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShvYmoxW2tleV0pICE9PSBKU09OLnN0cmluZ2lmeShvYmoyW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudEVudHJpZXNba2V5XSA9IG9iajJba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9iajFba2V5XSAhPT0gb2JqMltrZXldKSB7XG4gICAgICAgICAgICAgICAgZGlmZmVyZW50RW50cmllc1trZXldID0gb2JqMltrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaWZmZXJlbnRFbnRyaWVzO1xufVxuXG5cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiICAoc2hvdyk9XCJvcGVuSXRlbSgpXCIgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIFwiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNiBcIiAgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkF1ZGl0IENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1hdWRpdC1jb25maWd1cmF0aW9uPjwvbGliLWF1ZGl0LWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtcGxveWVlIFRyYWluaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXBsb3llZS10cmFpbmluZz48L2xpYi1lbXBsb3llZS10cmFpbmluZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyBcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+VGlja2V0IENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi10aWNrZXQtY29uZmlndXJhdGlvbj48L2xpYi10aWNrZXQtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzVk1TRW5hYmxlZFVzZXJcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+Rm9vdGZhbGwgRGlyZWN0b3J5IENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1mb290ZmFsbC1jb25maWd1cmF0aW9uPjwvbGliLWZvb3RmYWxsLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtYWlsIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGliLWVtYWlsLWNvbmZpZ3VyYXRpb24+PC9saWItZW1haWwtY29uZmlndXJhdGlvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbWFpbC1zY2hlZHVsZXI+PC9saWItZW1haWwtc2NoZWR1bGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIFwiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5SZXBvcnQgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlcG9ydC1jb25maWd1cmF0aW9uPjwvbGliLXJlcG9ydC1jb25maWd1cmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIFwiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5Vc2VyIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi11c2VyLWNvbmZpZ3VyYXRpb24+PC9saWItdXNlci1jb25maWd1cmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlclJvbGUgIT09ICd1c2VyJ1wiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiICBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+U2VjdXJpdHkgRmVhdHVyZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWRvbWFpbi1kZXRhaWxzPjwvbGliLWRvbWFpbi1kZXRhaWxzPiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkZlYXR1cmUgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZlYXR1cmUtY29uZmlndXJhdGlvbj48L2xpYi1mZWF0dXJlLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbydcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+RGFzaGJvYXJkIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1kYXNoYm9hcmQtY29uZmlndXJhdGlvbj48L2xpYi1kYXNoYm9hcmQtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlICE9PSAndGFuZ28nXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkNvbnRyb2wgQ2VudGVyIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jb250cm9sLWNlbnRlci1jb25maWd1cmF0aW9uPjwvbGliLWNvbnRyb2wtY2VudGVyLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5TdG9yZSBUaW1lIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1zdG9yZS10aW1lLWNvbmZpZ3VyYXRpb24+PC9saWItc3RvcmUtdGltZS1jb25maWd1cmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5SZXZPcCBUYWcgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZXZvcC1jb25maWd1cmF0aW9uPjwvbGliLXJldm9wLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+Il19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jb25maWd1cmF0aW9ucy9jb25maWd1cmF0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLHVCQUF1QjtJQVlkO0lBQXFDO0lBQThCO0lBWHZGLFVBQVUsQ0FBTTtJQUNDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLHNCQUFzQixDQUFNO0lBQzVCLHVCQUF1QixDQUFNO0lBQzdCLHNCQUFzQixDQUFNO0lBQzVCLG9CQUFvQixDQUFNO0lBQzFCLFFBQVEsQ0FBTztJQUMyQixTQUFTLENBQU07SUFJekQsWUFBb0IsU0FBMkIsRUFBVSxPQUFxQixFQUFTLEVBQXFCO1FBQXhGLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQzFHLE1BQU0sSUFBSSxHQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQTtRQUV2QyxJQUFJ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QVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUVwQyxDQUFDO0lBRUYsbUJBQW1CLENBQUMsSUFBeUIsRUFBRSxJQUF5QjtRQUNyRSxNQUFNLGdCQUFnQixHQUF3QixFQUFFLENBQUM7UUFDakQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDdEQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ3pELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDckM7aUJBQ0o7cUJBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNoQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3JDO2FBQ0o7U0FDSjtRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQzt3R0E3TlksdUJBQXVCOzRGQUF2Qix1QkFBdUIsZ0xDWHBDLHdpWEF3T1U7OzRGRDdORyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usb0JBQW9CO2lKQVlZLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2xpZW50QXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsaWVudC1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb25maWd1cmF0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29uZmlndXJhdGlvbnMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgY2xpZW50RGF0YTogYW55O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHRpY2tldENvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcclxuICBmZWF0dXJlQ29uZmlnUHJldlZhbHVlczogYW55O1xyXG4gIGRvbWFpbkNvbmZpZ1ByZXZWYWx1ZXM6IGFueTtcclxuICB1c2VyQ29uZmlnUHJldlZhbHVlczogYW55O1xyXG4gIHVzZXJSb2xlOnN0cmluZ1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY29yZGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIGFjY29yZGlvbjogYW55O1xyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50QXBpOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0U2VydmljZSwgcHVibGljIGdzOkdsb2JhbFN0YXRlU2VydmljZSkge1xyXG4gICAgY29uc3QgdXNlcjphbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJylcclxuICAgIHRoaXMudXNlclJvbGUgID0gSlNPTi5wYXJzZSh1c2VyKT8ucm9sZVxyXG4gICAgXHJcbiAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdzdWJtaXQnKSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXRGb3JtKGUpXHJcbiAgICAgIH0gZWxzZSBpZiAoZS50eXBlID09PSAnY2FuY2VsJykge1xyXG4gICAgICAgIHRoaXMucmVzZXRGb3JtKGUpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50RGF0YS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnREYXRhID0gZVxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVUaWNrZXRDb25maWd1cmF0aW9uKGUpXHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZlYXR1cmVDb25maWd1cmF0aW9uKGUpXHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24oZSlcclxuICAgICAgICB0aGlzLnBvcHVsYXRlVXNlckNvbmZpZ3VyYXRpb24oZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb3Blbkl0ZW0oKSB7XHJcbiAgICB0aGlzLnBvcHVsYXRlVGlja2V0Q29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXHJcbiAgICB0aGlzLnBvcHVsYXRlRmVhdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgdGhpcy5wb3B1bGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgdGhpcy5wb3B1bGF0ZVVzZXJDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YSlcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlVGlja2V0Q29uZmlndXJhdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGluc3RhbGxhdGlvblJlQXNzaWduOiBkYXRhPy50aWNrZXRDb25maWdzPy5pbnN0YWxsYXRpb25SZUFzc2lnbixcclxuICAgICAgc2VuZFRvQWRtaW46IGRhdGE/LnRpY2tldENvbmZpZ3M/LmFsZXJ0U2VudFRvPy5hZG1pbixcclxuICAgICAgc2VuZFRvVXNlcjogZGF0YT8udGlja2V0Q29uZmlncz8uYWxlcnRTZW50VG8/LnVzZXIsXHJcbiAgICAgIGRvd25UaW1lVHlwZTogZGF0YT8udGlja2V0Q29uZmlncz8uZG93blRpbWVUeXBlLFxyXG4gICAgICBpbmZyYURvd25UaW1lOiBkYXRhPy50aWNrZXRDb25maWdzPy5pbmZyYURvd25UaW1lLFxyXG4gICAgICBNaW5GaWxlc0NvdW50OiBkYXRhPy50aWNrZXRDb25maWdzPy5NaW5GaWxlc0NvdW50LFxyXG4gICAgICBpc1JjYVRpY2tldEFzc2lnbjogZGF0YT8udGlja2V0Q29uZmlncz8uaXNSY2FUaWNrZXRBc3NpZ24sXHJcbiAgICAgIHJjYVRpY2tldEFzc2lnbjogZGF0YT8udGlja2V0Q29uZmlncz8ucmNhVGlja2V0QXNzaWduLFxyXG4gICAgICBpc1JlZnJlc2hBbGVydDogZGF0YT8udGlja2V0Q29uZmlncz8uaXNSZWZyZXNoQWxlcnQsXHJcbiAgICAgIHJlZnJlc2hBbGVydDogZGF0YT8udGlja2V0Q29uZmlncz8ucmVmcmVzaEFsZXJ0LFxyXG4gICAgICBpc1N0YXR1c0NoZWNrQWxlcnQ6IGRhdGE/LnRpY2tldENvbmZpZ3M/LmlzU3RhdHVzQ2hlY2tBbGVydCxcclxuICAgICAgc3RhdHVzQ2hlY2tBbGVydDogZGF0YT8udGlja2V0Q29uZmlncz8uc3RhdHVzQ2hlY2tBbGVydCxcclxuICAgICAgcmVUcmFpbjogZGF0YT8udGlja2V0Q29uZmlncz8ucmVUcmFpbixcclxuICAgICAgYWNjdXJhY3lQZXJjZW50YWdlOiBkYXRhPy50aWNrZXRDb25maWdzPy5hY2N1cmFjeVBlcmNlbnRhZ2UsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50aWNrZXRDb25maWdQcmV2VmFsdWVzID0gb2JqXHJcblxyXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEubmV4dCh7IHZhbHVlOiB7IC4uLm9iaiB9LCB0eXBlOiAnaW5wdXQnLCBmb3JtOiAndGlja2V0LWNvbmZpZ3VyYXRpb24nIH0pXHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUZlYXR1cmVDb25maWd1cmF0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgb3BlbjogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/Lm9wZW4sXHJcbiAgICAgIGNsb3NlOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uY2xvc2UsXHJcbiAgICAgIGluZnJhQWxlcnRDb25kaXRpb246IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pbmZyYUFsZXJ0Py5jb25kaXRpb24sXHJcbiAgICAgIGluZnJhQWxlcnRWYWx1ZTogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmluZnJhQWxlcnQ/LnZhbHVlLFxyXG4gICAgICBib3VuY2VkTGltaXRDb25kaXRpb246IGRhdGE/LmZlYXR1cmVDb25maWdzPy5ib3VuY2VkTGltaXQ/LmNvbmRpdGlvbixcclxuICAgICAgYm91bmNlZExpbWl0VmFsdWU6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5ib3VuY2VkTGltaXQ/LnZhbHVlLFxyXG4gICAgICBjb252ZXJzaW9uQ29uZGl0aW9uOiBkYXRhPy5mZWF0dXJlQ29uZmlncz8uY29udmVyc2lvbj8uY29uZGl0aW9uLFxyXG4gICAgICBjb252ZXJzaW9uVmFsdWU6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5jb252ZXJzaW9uPy52YWx1ZSxcclxuICAgICAgYmlsbGFibGVDYWxjdWxhdGlvbjogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmJpbGxhYmxlQ2FsY3VsYXRpb24sXHJcbiAgICAgIG1pc3NlZE9wcG9ydHVuaXR5Q2FsY3VsYXRpb246IGRhdGE/LmZlYXR1cmVDb25maWdzPy5taXNzZWRPcHBvcnR1bml0eUNhbGN1bGF0aW9uLFxyXG4gICAgICBjb252ZXJzaW9uQ2FsY3VsYXRpb246IGRhdGE/LmZlYXR1cmVDb25maWdzPy5jb252ZXJzaW9uQ2FsY3VsYXRpb24sXHJcbiAgICAgIGlzTm9ybWFsaXplZDogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzTm9ybWFsaXplZCxcclxuICAgICAgaXNQYXNzZXJCeURhdGE6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1Bhc3NlckJ5RGF0YSxcclxuICAgICAgaXNGb290ZmFsbERpcmVjdG9yeTogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzRm9vdGZhbGxEaXJlY3RvcnksXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlBdWRpdCA6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0Zvb3RmYWxsRGlyZWN0b3J5QXVkaXQsXHJcbiAgICAgIGlzRm9vdGZhbGxEaXJlY3RvcnlMaW1pdCA6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0Zvb3RmYWxsRGlyZWN0b3J5TGltaXQsXHJcbiAgICAgIGlzRXhjbHVkZWRBcmVhOmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc0V4Y2x1ZGVkQXJlYSxcclxuICAgICAgaXNDYW1lcmFEaXNhYmxlZDogZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzQ2FtZXJhRGlzYWJsZWQsXHJcbiAgICAgIGlzYmlsbGluZ0Rpc2FibGVkOmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc2JpbGxpbmdEaXNhYmxlZCxcclxuICAgICAgaXNOZXdEYXNoYm9hcmQ6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzTmV3RGFzaGJvYXJkLFxyXG4gICAgICB1cGRhdGVGZWF0dXJlQ29uZmlnOmRhdGE/LmZlYXR1cmVDb25maWdzPy51cGRhdGVGZWF0dXJlQ29uZmlnLFxyXG4gICAgICBpc0Zvb3RmYWxsQXVkaXRTdG9yZXM6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzRm9vdGZhbGxBdWRpdFN0b3JlcyxcclxuICAgICAgaXNOZXdUcmFmZmljOmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc05ld1RyYWZmaWMsXHJcbiAgICAgIGlzTmV3Wm9uZTpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNOZXdab25lLFxyXG4gICAgICBpc05ld1JlcG9ydHM6ZGF0YT8uZmVhdHVyZUNvbmZpZ3M/LmlzTmV3UmVwb3J0cyxcclxuICAgICAgaXNOZXdab25lVjI6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc05ld1pvbmVWMixcclxuICAgICAgaXNSZXZvcHM6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1Jldm9wcyxcclxuICAgICAgaXNOT0I6IGRhdGE/LmZlYXR1cmVDb25maWdzPy5pc05PQixcclxuICAgICAgaXNUcmF4OmRhdGE/LmZlYXR1cmVDb25maWdzPy5pc1RyYXgsXHJcbiAgICAgIGlzQ29udHJvbENlbnRlcjpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNDb250cm9sQ2VudGVyLFxyXG4gICAgICBzdHJlYW1CeTpkYXRhPy5mZWF0dXJlQ29uZmlncz8uc3RyZWFtQnksXHJcbiAgICAgIGlzQ2FtZXJhRWRpdDpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNDYW1lcmFFZGl0LFxyXG4gICAgICBpc0FJTWFuYWdlcjpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNBSU1hbmFnZXIsXHJcbiAgICAgIGlzQUlNYW5hZ2VyQWNjZXNzQ29udHJvbDpkYXRhPy5mZWF0dXJlQ29uZmlncz8uaXNBSU1hbmFnZXJBY2Nlc3NDb250cm9sLFxyXG4gICAgICBsb2dpblNTTzpkYXRhPy5mZWF0dXJlQ29uZmlncz8ubG9naW5TU09cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZlYXR1cmVDb25maWdQcmV2VmFsdWVzID0gb2JqXHJcbiAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IHsgLi4ub2JqIH0sIHR5cGU6ICdpbnB1dCcsIGZvcm06ICdmZWF0dXJlLWNvbmZpZ3VyYXRpb24nIH0pXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNsaWVudC1kZXRhaWxzXCIsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVEb21haW5EZXRhaWxDb25maWd1cmF0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgZG9tYWluTmFtZTogZGF0YT8uZG9tYWluQ29uZmlnPy5zc29Mb2dpbj8uZG9tYWluTmFtZSxcclxuICAgICAgaXNFbmFibGU6IGRhdGE/LmRvbWFpbkNvbmZpZz8uc3NvTG9naW4/LmlzRW5hYmxlLFxyXG4gICAgICBlbmFibGVXaGl0ZWxpc3Rpbmc6IGRhdGE/LmRvbWFpbkNvbmZpZz8uaXBXaGl0ZWxpc3Rpbmc/LmVuYWJsZVdoaXRlbGlzdGluZyxcclxuICAgICAgYWxsb3dlZElwczogZGF0YT8uZG9tYWluQ29uZmlnPy5pcFdoaXRlbGlzdGluZz8uYWxsb3dlZElwcyxcclxuICAgICAgZW5hYmxlT3RwOiBkYXRhPy5kb21haW5Db25maWc/LmVuYWJsZU90cCxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvbWFpbkNvbmZpZ1ByZXZWYWx1ZXMgPSBvYmpcclxuXHJcbiAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IHsgLi4ub2JqIH0sIHR5cGU6ICdpbnB1dCcsIGZvcm06ICdkb21haW4tZGV0YWlscycgfSlcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVVc2VyQ29uZmlndXJhdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGNzbTogZGF0YT8uYXNzaWduZWRVc2Vycz8uY3NtLFxyXG4gICAgICBvcHM6IGRhdGE/LmFzc2lnbmVkVXNlcnM/Lm9wcyxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVzZXJDb25maWdQcmV2VmFsdWVzID0gb2JqXHJcblxyXG4gICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEubmV4dCh7IHZhbHVlOiB7IC4uLm9iaiB9LCB0eXBlOiAnaW5wdXQnLCBmb3JtOiAndXNlci1jb25maWd1cmF0aW9uJyB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBzdWJtaXRGb3JtKGU6IGFueSkge1xyXG4gICAgaWYgKGUuZm9ybSA9PT0gJ3RpY2tldC1jb25maWd1cmF0aW9uJykge1xyXG4gICAgICBjb25zdCBkYXRhID0gIHRoaXMuZ2V0RGlmZmVyZW50RW50cmllcyh0aGlzLnRpY2tldENvbmZpZ1ByZXZWYWx1ZXMsIGUudmFsdWUpICAgICBcclxuICAgICAgdGhpcy5jbGllbnRBcGkudXBkYXRlVGlja2V0Q29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEuY2xpZW50SWQsIGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIuZ2V0U3VjY2Vzc1RvYXN0KGUuZGF0YT8ucmVzdWx0KVxyXG4gICAgICAgICAgdGhpcy5jbGllbnRBcGkuY2xpZW50Rm9ybURhdGEubmV4dCh7IHZhbHVlOiBudWxsLCB0eXBlOiAnc3VibWl0dGVkJywgZm9ybTogJ251bGwnIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxyXG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVRpY2tldENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICB9IGVsc2VcclxuICAgICAgaWYgKGUuZm9ybSA9PT0gJ2ZlYXR1cmUtY29uZmlndXJhdGlvbicpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gIHRoaXMuZ2V0RGlmZmVyZW50RW50cmllcyh0aGlzLmZlYXR1cmVDb25maWdQcmV2VmFsdWVzLCBlLnZhbHVlKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpXHJcbiAgICAgICAgdGhpcy5jbGllbnRBcGkudXBkYXRlRmVhdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhLmNsaWVudElkLCBkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5nZXRTdWNjZXNzVG9hc3QoZS5kYXRhPy5yZXN1bHQpXHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50QXBpLmNsaWVudEZvcm1EYXRhLm5leHQoeyB2YWx1ZTogbnVsbCwgdHlwZTogJ3N1Ym1pdHRlZCcsIGZvcm06ICdudWxsJyB9KVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZ2V0RXJyb3JUb2FzdChlLmVycm9yPy5lcnJvcilcclxuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUZlYXR1cmVDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgaWYgKGUuZm9ybSA9PT0gJ2RvbWFpbi1kZXRhaWxzJykge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9ICB0aGlzLmdldERpZmZlcmVudEVudHJpZXModGhpcy5kb21haW5Db25maWdQcmV2VmFsdWVzLCBlLnZhbHVlKSAgICAgXHJcbiAgICAgICAgICB0aGlzLmNsaWVudEFwaS51cGRhdGVEb21haW5EZXRhaWxDb25maWd1cmF0aW9uKHRoaXMuY2xpZW50RGF0YS5jbGllbnRJZCwgZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcclxuICAgICAgICAgICAgICB0aGlzLmNsaWVudEFwaS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdzdWJtaXR0ZWQnLCBmb3JtOiAnbnVsbCcgfSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLmdldEVycm9yVG9hc3QoZS5lcnJvcj8uZXJyb3IpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKGU6IGFueSkge1xyXG4gICAgaWYgKGUuZm9ybSA9PT0gJ3RpY2tldC1jb25maWd1cmF0aW9uJykge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlVGlja2V0Q29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXHJcbiAgICB9IGVsc2VcclxuICAgICAgaWYgKGUuZm9ybSA9PT0gJ2ZlYXR1cmUtY29uZmlndXJhdGlvbicpIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlRmVhdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgICB9IGVsc2VcclxuICAgICAgICBpZiAoZS5mb3JtID09PSAnZG9tYWluLWRldGFpbHMnKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlRG9tYWluRGV0YWlsQ29uZmlndXJhdGlvbih0aGlzLmNsaWVudERhdGEpXHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICBpZiAoZS5mb3JtID09PSAndXNlci1jb25maWd1cmF0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlVXNlckNvbmZpZ3VyYXRpb24odGhpcy5jbGllbnREYXRhKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuYWNjb3JkaW9uLmNvbGxhcHNlQWxsKClcclxuXHJcbiAgfVxyXG5cclxuIGdldERpZmZlcmVudEVudHJpZXMob2JqMTogUmVjb3JkPHN0cmluZywgYW55Piwgb2JqMjogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgY29uc3QgZGlmZmVyZW50RW50cmllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqMikge1xyXG4gICAgICAgIGlmIChvYmoxLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqMVtrZXldKSAmJiBBcnJheS5pc0FycmF5KG9iajJba2V5XSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShvYmoxW2tleV0pICE9PSBKU09OLnN0cmluZ2lmeShvYmoyW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50RW50cmllc1trZXldID0gb2JqMltrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9iajFba2V5XSAhPT0gb2JqMltrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkaWZmZXJlbnRFbnRyaWVzW2tleV0gPSBvYmoyW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlmZmVyZW50RW50cmllcztcclxufVxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiICAoc2hvdyk9XCJvcGVuSXRlbSgpXCIgPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIFwiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNiBcIiAgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkF1ZGl0IENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1hdWRpdC1jb25maWd1cmF0aW9uPjwvbGliLWF1ZGl0LWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtcGxveWVlIFRyYWluaW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1lbXBsb3llZS10cmFpbmluZz48L2xpYi1lbXBsb3llZS10cmFpbmluZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyBcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+VGlja2V0IENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi10aWNrZXQtY29uZmlndXJhdGlvbj48L2xpYi10aWNrZXQtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyBcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+RW1haWwgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaWItZW1haWwtY29uZmlndXJhdGlvbj48L2xpYi1lbWFpbC1jb25maWd1cmF0aW9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWVtYWlsLXNjaGVkdWxlcj48L2xpYi1lbWFpbC1zY2hlZHVsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlJlcG9ydCBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVwb3J0LWNvbmZpZ3VyYXRpb24+PC9saWItcmVwb3J0LWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlVzZXIgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXVzZXItY29uZmlndXJhdGlvbj48L2xpYi11c2VyLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyUm9sZSAhPT0gJ3VzZXInXCIgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5TZWN1cml0eSBGZWF0dXJlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZG9tYWluLWRldGFpbHM+PC9saWItZG9tYWluLWRldGFpbHM+ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+RmVhdHVyZSBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZmVhdHVyZS1jb25maWd1cmF0aW9uPjwvbGliLWZlYXR1cmUtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5EYXNoYm9hcmQgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWRhc2hib2FyZC1jb25maWd1cmF0aW9uPjwvbGliLWRhc2hib2FyZC1jb25maWd1cmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgIT09ICd0YW5nbydcIiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIG1iLTZcIiBuZ2JBY2NvcmRpb25JdGVtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+Q29udHJvbCBDZW50ZXIgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNvbnRyb2wtY2VudGVyLWNvbmZpZ3VyYXRpb24+PC9saWItY29udHJvbC1jZW50ZXItY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlN0b3JlIFRpbWUgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXN0b3JlLXRpbWUtY29uZmlndXJhdGlvbj48L2xpYi1zdG9yZS10aW1lLWNvbmZpZ3VyYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtYi02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlJldk9wIFRhZyBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJldm9wLWNvbmZpZ3VyYXRpb24+PC9saWItcmV2b3AtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBab25lIGNvbmZpZ3VhcmF0aW9uIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHVzZXJSb2xlID09PSAnYWRtaW4nIHx8IHVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicpICYmIFxyXG4gICAgICAgICAgICAoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LlRhbmdvRXllX1pvbmVUYWdfaXNBZGQgfHwgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LlRhbmdvRXllX1pvbmVUYWdfaXNFZGl0KVwiIGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbWItNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuID5ab25lIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItem9uZS1jb25maWd1cmF0aW9uPjwvbGliLXpvbmUtY29uZmlndXJhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4iXX0=
|