@c8y/ngx-components 1021.6.0 → 1021.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/branding/shared/lazy/add-branding-modal/add-branding-modal.component.d.ts +14 -1
- package/branding/shared/lazy/add-branding-modal/add-branding-modal.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.model.d.ts +1 -0
- package/cockpit-config/cockpit-config.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.module.d.ts.map +1 -1
- package/core/common/options.service.d.ts +1 -1
- package/core/common/options.service.d.ts.map +1 -1
- package/core/forms/validation-pattern.d.ts +4 -0
- package/core/forms/validation-pattern.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts +1 -1
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/esm2022/assets-navigator/asset-selector/asset-selector-node.component.mjs +3 -3
- package/esm2022/branding/shared/lazy/add-branding-modal/add-branding-modal.component.mjs +49 -5
- package/esm2022/cockpit-config/cockpit-config.model.mjs +3 -2
- package/esm2022/cockpit-config/feature-config.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.module.mjs +5 -3
- package/esm2022/core/common/options.service.mjs +3 -3
- package/esm2022/core/docs/defaults.items.mjs +2 -2
- package/esm2022/core/forms/validation-pattern.mjs +5 -1
- package/esm2022/core/plugins/plugins.service.mjs +3 -3
- package/esm2022/core/router/context-route.guard.mjs +2 -2
- package/esm2022/core/search/search-input.component.mjs +3 -3
- package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +7 -5
- package/esm2022/search/search-action.component.mjs +3 -3
- package/esm2022/tenants/custom-properties/custom-properties.component.mjs +90 -0
- package/esm2022/tenants/custom-properties/custom-properties.service.mjs +76 -0
- package/esm2022/tenants/custom-properties/custom-property-field/custom-property-field.component.mjs +29 -0
- package/esm2022/tenants/index.mjs +2 -1
- package/esm2022/tenants/tenant-limits/tenant-limits-definitions.mjs +92 -0
- package/esm2022/tenants/tenant-limits/tenant-limits.component.mjs +124 -0
- package/esm2022/tenants/tenants.module.mjs +42 -4
- package/esm2022/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.mjs +2 -2
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +48 -4
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +4 -3
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +4 -2
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +6 -4
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +2 -2
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +416 -11
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +277 -273
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +22 -19
- package/locales/en.po +3 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +167 -170
- package/locales/fr.po +134 -128
- package/locales/ja_JP.po +171 -133
- package/locales/ko.po +543 -49
- package/locales/locales.pot +49 -2
- package/locales/nl.po +134 -128
- package/locales/pl.po +138 -135
- package/locales/pt_BR.po +144 -141
- package/locales/zh_CN.po +524 -30
- package/locales/zh_TW.po +524 -30
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/tenants/custom-properties/custom-properties.component.d.ts +26 -0
- package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -0
- package/tenants/custom-properties/custom-properties.service.d.ts +26 -0
- package/tenants/custom-properties/custom-properties.service.d.ts.map +1 -0
- package/tenants/custom-properties/custom-property-field/custom-property-field.component.d.ts +10 -0
- package/tenants/custom-properties/custom-property-field/custom-property-field.component.d.ts.map +1 -0
- package/tenants/index.d.ts +1 -0
- package/tenants/index.d.ts.map +1 -1
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts +117 -0
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts.map +1 -0
- package/tenants/tenant-limits/tenant-limits.component.d.ts +39 -0
- package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -0
- package/tenants/tenants.module.d.ts.map +1 -1
|
@@ -11,7 +11,19 @@ export declare class AddBrandingModalComponent {
|
|
|
11
11
|
result: Promise<Partial<{
|
|
12
12
|
brandingName: string;
|
|
13
13
|
}>>;
|
|
14
|
-
|
|
14
|
+
messages: readonly [{
|
|
15
|
+
readonly name: "nameAlreadyTaken";
|
|
16
|
+
readonly text: "The provided name is already taken.";
|
|
17
|
+
}, {
|
|
18
|
+
readonly name: "onlyLowerCaseCharacters";
|
|
19
|
+
readonly text: "Only lower case characters are allowed.";
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "shouldStartWithLowerCaseLetterOrNumber";
|
|
22
|
+
readonly text: "Should start with a lower case letter or a number.";
|
|
23
|
+
}, {
|
|
24
|
+
readonly name: "invalidCharacters";
|
|
25
|
+
readonly text: "Invalid character \"{{ invalidCharacter }}\". Only a-z, 0-9 and - are allowed.";
|
|
26
|
+
}];
|
|
15
27
|
private _resovle;
|
|
16
28
|
private _reject;
|
|
17
29
|
constructor(branding: StoreBrandingService, formBuilder: FormBuilder);
|
|
@@ -22,6 +34,7 @@ export declare class AddBrandingModalComponent {
|
|
|
22
34
|
cancel(): void;
|
|
23
35
|
save(): void;
|
|
24
36
|
private ensureNotExistingName;
|
|
37
|
+
private ensureProperVariantName;
|
|
25
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<AddBrandingModalComponent, never>;
|
|
26
39
|
static ɵcmp: i0.ɵɵComponentDeclaration<AddBrandingModalComponent, "c8y-add-branding-modal", never, { "duplicateBranding": { "alias": "duplicateBranding"; "required": false; }; }, {}, never, never, true, never>;
|
|
27
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-branding-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,WAAW,EAIZ,MAAM,gBAAgB,CAAC;;AAIxB,qBAMa,yBAAyB;
|
|
1
|
+
{"version":3,"file":"add-branding-modal.component.d.ts","sourceRoot":"","sources":["../../../../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,WAAW,EAIZ,MAAM,gBAAgB,CAAC;;AAIxB,qBAMa,yBAAyB;IAkClC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IAlCZ,iBAAiB,UAAS;IACnC,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,OAAO,UAAQ;IAEf,MAAM;;QAGH;IAEH,QAAQ;;;;;;;;;;;;OAiBG;IAEX,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,OAAO,CAAyB;gBAG9B,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,EAAE,WAAW;IAM5B,2BAA2B;IAUjC,QAAQ;;;IASR,MAAM;IAIN,IAAI;IAIJ,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;yCAnFpB,yBAAyB;2CAAzB,yBAAyB;CA8GrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cockpit-config.model.d.ts","sourceRoot":"","sources":["../../cockpit-config/cockpit-config.model.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"cockpit-config.model.d.ts","sourceRoot":"","sources":["../../cockpit-config/cockpit-config.model.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,aAqB5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,OAAO,IAAA;IACP;;OAEG;IACH,GAAG,IAAA;IACH;;OAEG;IACH,IAAI,IAAA;CACL;AAED,eAAO,MAAM,mBAAmB,sCAAsC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-manager.module.d.ts","sourceRoot":"","sources":["../../../context-dashboard/dashboard-manager/dashboard-manager.module.ts"],"names":[],"mappings":";;;;;;;;AAoBA,
|
|
1
|
+
{"version":3,"file":"dashboard-manager.module.d.ts","sourceRoot":"","sources":["../../../context-dashboard/dashboard-manager/dashboard-manager.module.ts"],"names":[],"mappings":";;;;;;;;AAoBA,qBAgCa,sBAAsB;yCAAtB,sBAAsB;0CAAtB,sBAAsB;0CAAtB,sBAAsB;CAAG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { ApplicationOptions } from './ApplicationOptions';
|
|
3
3
|
import { ExtensionFactory, GenericHookType, GenericHookOptions } from './extension-hooks';
|
|
4
|
-
import { SystemOptionsService, TenantOptionsService } from '@c8y/
|
|
4
|
+
import { SystemOptionsService, TenantOptionsService } from '@c8y/client';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.service.d.ts","sourceRoot":"","sources":["../../../core/common/options.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EAEf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"options.service.d.ts","sourceRoot":"","sources":["../../../core/common/options.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EAEf,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;;AAG3C;;GAEG;AACH,eAAO,MAAM,YAAY,sDAExB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,eAAe,CAAC,kBAAkB,CAAC,EAC5C,WAAW,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,4HAG1C;AAED;;;GAGG;AACH,qBACa,cAAe,SAAQ,kBAAkB;IAMlD,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,mBAAmB;IAN7B,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,gBAAgB,CAAuB;gBAEX,OAAO,KAAA,EACjC,oBAAoB,EAAE,oBAAoB,EAC1C,mBAAmB,EAAE,oBAAoB;IAOnD;;;;;OAKG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAChC,SAAS,EAAE,CAAC,EACZ,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAChC,YAAY,CAAC,EAAE,OAAO,GACrB,cAAc,CAAC,CAAC,CAAC;IAWpB;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,cAAc,EACjC,SAAS,EAAE,CAAC,EACZ,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAChC,YAAY,CAAC,EAAE,OAAO,GACrB,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAKhC;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IASpE;;;OAGG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC;IAW7C;;;;;;;;;OASG;IACG,aAAa;IAiBnB;;;OAGG;IACG,sBAAsB;IAK5B;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,GAAG,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;IAUtB;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,GAAG,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;IAUtB;;;;;;OAMG;IACG,wBAAwB,CAAC,CAAC,GAAG,MAAM,EACvC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;IAUtB;;;;;;OAMG;IACG,sBAAsB,CAAC,CAAC,GAAG,MAAM,EACrC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;IAUtB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,YAAY;YAaN,oBAAoB;IAelC,OAAO,CAAC,mBAAmB;yCA1PhB,cAAc;6CAAd,cAAc;CAmQ1B"}
|
|
@@ -44,6 +44,7 @@ export declare class ValidationPattern {
|
|
|
44
44
|
readonly httpUrl: "Must be a valid HTTP(S) URL.";
|
|
45
45
|
readonly colonedHexNumber: "Must be a valid hexadecimal number. Must contain only the following characters: 0-9, a-f, A-F, :.";
|
|
46
46
|
readonly noDots: "Dots not allowed.";
|
|
47
|
+
readonly integer: "Invalid type, expected integer.";
|
|
47
48
|
readonly simpleJsonPath: "Must be a valid JSON path";
|
|
48
49
|
readonly number: "This field must contain a number.";
|
|
49
50
|
readonly "should-be-defined": "Value must be defined.";
|
|
@@ -95,6 +96,9 @@ export declare class ValidationPattern {
|
|
|
95
96
|
colonedHexNumber: {
|
|
96
97
|
pattern: RegExp;
|
|
97
98
|
};
|
|
99
|
+
integer: {
|
|
100
|
+
pattern: RegExp;
|
|
101
|
+
};
|
|
98
102
|
};
|
|
99
103
|
static get(key: string): ValidationRules;
|
|
100
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-pattern.d.ts","sourceRoot":"","sources":["../../../core/forms/validation-pattern.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,gCAAgC;IAC1C,WAAW,aAAa;IACxB,OAAO,YAAY;IACnB,qBAAqB,WAAW;IAChC,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,gBAAgB,mBAAmB;IACnC,gBAAgB,mBAAmB;CACpC;AAGD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ
|
|
1
|
+
{"version":3,"file":"validation-pattern.d.ts","sourceRoot":"","sources":["../../../core/forms/validation-pattern.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,gCAAgC;IAC1C,WAAW,aAAa;IACxB,OAAO,YAAY;IACnB,qBAAqB,WAAW;IAChC,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,gBAAgB,mBAAmB;IACnC,gBAAgB,mBAAmB;CACpC;AAGD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+Db;IAEX,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgDnB;IAEF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAEF,eAAe;CAEpC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApplicationRemotePlugins, IApplication, IManifest } from '@c8y/client';
|
|
2
|
-
import { ApplicationService } from '@c8y/
|
|
2
|
+
import { ApplicationService } from '@c8y/client';
|
|
3
3
|
import { AppStateService } from '../common/ui-state.service';
|
|
4
4
|
import { ApplicationPlugin, PackageType, PluginsConfig } from './plugins.model';
|
|
5
5
|
import { PluginsExportScopes } from '../common/ApplicationOptions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,wBAAwB,EACxB,YAAY,EAEZ,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"plugins.service.d.ts","sourceRoot":"","sources":["../../../core/plugins/plugins.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,11 +164,11 @@ export class AssetSelectorNodeComponent {
|
|
|
164
164
|
this.cd.markForCheck();
|
|
165
165
|
}
|
|
166
166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AssetSelectorNodeComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i2.AssetSelectorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: { node: "node", rootNode: "rootNode", preselected: "preselected", showPath: "showPath", multi: "multi", view: "view", index: "index", active: "active", handleNextMillerViewColumn: "handleNextMillerViewColumn", disabled: "disabled" }, outputs: { isLoadingState: "isLoadingState", onSelect: "onSelect", onDeselect: "onDeselect" }, ngImport: i0, template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n [title]=\"expandTitle\"\n class=\"collapse-btn btn-dot\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n [attr.aria-expanded]=\"node.open\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div class=\"d-flex a-i-center p-t-4 p-b-4 \" *ngIf=\"node.toString() !== 'LoadMoreNode'\">\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n \n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: ["node", "rootNode", "preselected", "showPath", "multi", "view", "index", "active", "handleNextMillerViewColumn", "disabled"], outputs: ["isLoadingState", "onSelect", "onDeselect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: { node: "node", rootNode: "rootNode", preselected: "preselected", showPath: "showPath", multi: "multi", view: "view", index: "index", active: "active", handleNextMillerViewColumn: "handleNextMillerViewColumn", disabled: "disabled" }, outputs: { isLoadingState: "isLoadingState", onSelect: "onSelect", onDeselect: "onDeselect" }, ngImport: i0, template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n [title]=\"expandTitle\"\n class=\"collapse-btn btn-dot\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n [attr.aria-expanded]=\"node.open\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div class=\"d-flex a-i-center p-t-4 p-b-4 \" *ngIf=\"node.toString() !== 'LoadMoreNode'\">\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 m-r-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n \n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: ["node", "rootNode", "preselected", "showPath", "multi", "view", "index", "active", "handleNextMillerViewColumn", "disabled"], outputs: ["isLoadingState", "onSelect", "onDeselect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
|
|
168
168
|
}
|
|
169
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AssetSelectorNodeComponent, decorators: [{
|
|
170
170
|
type: Component,
|
|
171
|
-
args: [{ selector: 'c8y-asset-selector-node', template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n [title]=\"expandTitle\"\n class=\"collapse-btn btn-dot\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n [attr.aria-expanded]=\"node.open\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div class=\"d-flex a-i-center p-t-4 p-b-4 \" *ngIf=\"node.toString() !== 'LoadMoreNode'\">\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n \n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n" }]
|
|
171
|
+
args: [{ selector: 'c8y-asset-selector-node', template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <!-- expand button -->\n <div class=\"c8y-asset-selector__node__btn-spacer\">\n <button\n [title]=\"expandTitle\"\n class=\"collapse-btn btn-dot\"\n (click)=\"click()\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n [attr.aria-expanded]=\"node.open\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </button>\n </div>\n <div class=\"d-flex a-i-center p-t-4 p-b-4 \" *ngIf=\"node.toString() !== 'LoadMoreNode'\">\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 m-r-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n \n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [disabled]=\"disabled\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"disabled || !node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-4 m-t-4':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [active]=\"active\"\n [disabled]=\"disabled\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n" }]
|
|
172
172
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.AssetSelectorService }], propDecorators: { node: [{
|
|
173
173
|
type: Input
|
|
174
174
|
}], rootNode: [{
|
|
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
196
196
|
}], onDeselect: [{
|
|
197
197
|
type: Output
|
|
198
198
|
}] } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc2VsZWN0b3Itbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hc3NldHMtbmF2aWdhdG9yL2Fzc2V0LXNlbGVjdG9yL2Fzc2V0LXNlbGVjdG9yLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1zZWxlY3Rvci9hc3NldC1zZWxlY3Rvci1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBTXpDLE1BQU0sT0FBTywwQkFBMEI7SUFrRXJDOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUNVLGdCQUFrQyxFQUNsQyxFQUFxQixFQUN0QixvQkFBMEM7UUFG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RUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxjQUFjO3NCQUF2QixNQUFNO2dCQUlHLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUcsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0c05hdmlnYXRvckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9hc3NldC1zZWxlY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwTm9kZSB9IGZyb20gJy4vZ3JvdXAtbm9kZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXNlbGVjdG9yLW5vZGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0U2VsZWN0b3JOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG5vZGUuXG4gICAqL1xuICBASW5wdXQoKSBub2RlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBSb290IG5vZGUuIE5vZGUgZm91bmQgYXQgdGhlIHRvcCBvZiB0aGUgaGllcmFyY2h5LlxuICAgKi9cbiAgQElucHV0KCkgcm9vdE5vZGU6IEdyb3VwTm9kZTtcbiAgLyoqXG4gICAqIEFsbCBwcmVzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNlbGVjdGVkOiBJSWRlbnRpZmllZCB8IElJZGVudGlmaWVkW10gPSBbXTtcbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgcGF0aCBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dQYXRoID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDYW4gdGhlIHVzZXIgc2VsZWN0IG11bHRpcGxlIGFzc2V0cy5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBwYXRoIHRvIHRoZSBub2RlLlxuICAgKi9cbiAgQElucHV0KCkgdmlldzogJ3RyZWUnIHwgJ21pbGxlcicgPSAndHJlZSc7XG4gIC8qKlxuICAgKiBVc2VkIG9ubHkgZm9yIG1pbGxlci12aWV3LCBkaXNwbGF5cyB0aGUgY29sdW1uIGxldmVsIGZvciB0aGUgY3VycmVudCBub2RlLlxuICAgKiBFLmcgaWYgdGhlIGluZGV4IGlzIG9uZSwgdGhpcyB3aWxsIGJlIHNlY29uZCBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKSBpbmRleDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBub2RlLlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHZlcmlmeSB0aGUgbmVlZCB0byBhZGQgYSBjb2x1bW4gd2hlbiBhIG5vZGUgaXMgY2xpY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpIGhhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uOiAobm9kZTogR3JvdXBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBFdmVudCwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxvYWRpbmcgb2YgdGhlIG5vZGUgaGFzIGNvbXBsZXRlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBpc0xvYWRpbmdTdGF0ZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogRXZlbnQgdGhhdCBlbWl0cyB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbiBhIG5vZGUgaXMgZGVzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkRlc2VsZWN0OiBFdmVudEVtaXR0ZXI8eyBkZXNlbGVjdE1vZGU6ICdzaW5nbGUnIHwgJ2FsbCc7IG1vOiBJTWFuYWdlZE9iamVjdCB9PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGJyZWFkY3J1bWI6IHN0cmluZztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGxldmVsID0gMDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIHNldHMgdGhlIGBidG4tcGVuZGluZ2AgY2xhc3MgaW4gdGhlIGxvYWQgbW9yZSBidXR0b24gKi9cbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgZXhwYW5kVGl0bGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLm5vZGUub3BlbiA/IGdldHRleHQoJ0V4cGFuZCcpIDogZ2V0dGV4dCgnQ29sbGFwc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgZGlcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYXNzZXRTZWxlY3RvclNlcnZpY2U6IEFzc2V0U2VsZWN0b3JTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5icmVhZGNydW1iID0gdGhpcy5ub2RlLmxhYmVsO1xuICAgIHRoaXMuc2V0dXBCcmVhZGNydW1ic0FuZExldmVsKHRoaXMubm9kZSk7XG5cbiAgICBpZiAodGhpcy5ub2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICB0aGlzLm5vZGUuaG9va0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8vIG9wZW4gb24gc3RhcnR1cFxuICAgIGlmICh0aGlzLm5vZGUucm9vdCkge1xuICAgICAgdGhpcy5jbGljaygpO1xuICAgIH1cblxuICAgIC8vIHVzZWQgZm9yIGxvYWRpbmcgYW5kIHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHRoZSBub2RlIGlzIG5vIGxvbmdlciBsb2FkaW5nLlxuICAgIGlmICh0aGlzLm5vZGUuZXZlbnRzKSB7XG4gICAgICB0aGlzLm5vZGUuZXZlbnRzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgICAgZmlsdGVyKChhOiBBc3NldHNOYXZpZ2F0b3JBY3Rpb24pID0+IGEgPT09IEFzc2V0c05hdmlnYXRvckFjdGlvbi5MT0FESU5HX0RPTkUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdTdGF0ZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBub2RlLlxuICAgKi9cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5ub2RlLm9wZW4gPSAhdGhpcy5ub2RlLm9wZW47XG4gICAgdGhpcy5ub2RlLmNsaWNrKHsgb3BlbjogdGhpcy5ub2RlLm9wZW4gfSk7XG4gIH1cblxuICBzZXR1cEJyZWFkY3J1bWJzQW5kTGV2ZWwobm9kZTogR3JvdXBOb2RlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50cyAmJiBub2RlLnBhcmVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudHNbMF0gYXMgR3JvdXBOb2RlO1xuICAgICAgdGhpcy5icmVhZGNydW1iID1cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocGFyZW50LmxhYmVsKSArXG4gICAgICAgICcgPiAnICtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5icmVhZGNydW1iKTtcbiAgICAgIHRoaXMubGV2ZWwrKztcblxuICAgICAgdGhpcy5zZXR1cEJyZWFkY3J1bWJzQW5kTGV2ZWwocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgbm9kZSBhbmQgZW1pdHMgYSBjaGFuZ2Ugb24gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIHNlbGVjdC5cbiAgICovXG4gIHNlbGVjdGVkKG5vZGU6IEdyb3VwTm9kZSkge1xuICAgIGlmIChub2RlLm1vKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihub2RlLm1vKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2xpY2tzIG9uIGEgaXRlbSBpbiBNaWxsZXIgVmlldy5cbiAgICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdGhhdCB3YXMgY2xpY2tlZC5cbiAgICovXG4gIG1pbGxlclZpZXdDbGljayhub2RlOiBHcm91cE5vZGUpIHtcbiAgICBub2RlLmJyZWFkY3J1bWIgPSB0aGlzLmJyZWFkY3J1bWI7XG5cbiAgICBpZiAoIXRoaXMuaGFuZGxlTmV4dE1pbGxlclZpZXdDb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkSGFuZGxlRGVmYXVsdCA9IHRoaXMuaGFuZGxlTmV4dE1pbGxlclZpZXdDb2x1bW4obm9kZSwgdGhpcy5pbmRleCk7XG4gICAgaWYgKHNob3VsZEhhbmRsZURlZmF1bHQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMubm9kZS5tbykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NldFNlbGVjdG9yU2VydmljZS5nZXRJbmRleE9mU2VsZWN0ZWQodGhpcy5wcmVzZWxlY3RlZCwgdGhpcy5ub2RlLm1vKSA+IC0xO1xuICB9XG5cbiAgaXNBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMubm9kZS5tbykge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlLm1vPy5pZCA9PT0gdGhpcy5ub2RlLm1vLmlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbihzZWxlY3RlZE1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghdGhpcy5tdWx0aSkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0LmVtaXQoeyBkZXNlbGVjdE1vZGU6ICdhbGwnLCBtbzogc2VsZWN0ZWRNbyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLm9uRGVzZWxlY3QuZW1pdCh7IGRlc2VsZWN0TW9kZTogJ3NpbmdsZScsIG1vOiBzZWxlY3RlZE1vIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQoc2VsZWN0ZWRNbyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPCEtLSBIaWVyYXJjaHkgdHJlZSAtLT5cbjxkaXZcbiAgY2xhc3M9XCJjOHktYXNzZXQtc2VsZWN0b3JfX2l0ZW1cIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgJ21hcmdpbi1sZWZ0JzogbGV2ZWwgPiAxID8gMTYgKyAncHgnIDogJzAnXG4gIH1cIlxuICAqbmdJZj1cInZpZXcgPT09ICd0cmVlJ1wiXG4gIFthdHRyLnJvbGVdPVwidmlldyA9PT0gJ3RyZWUnID8gJ3RyZWUnIDogJ2xpc3QnXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjOHktYXNzZXQtc2VsZWN0b3JfX2l0ZW0tLW1vcmUnOiBub2RlPy5pY29uID09PSAncGx1cycsXG4gICAgJ2M4eS1hc3NldC1zZWxlY3Rvcl9faXRlbS0tc3RhcnQnOiBsZXZlbCA9PT0gMFxuICB9XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWFzc2V0LXNlbGVjdG9yX19ub2RlXCJcbiAgICB0aXRsZT1cInt7IGJyZWFkY3J1bWIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwibm9kZSAmJiAhbm9kZS5yb290ICYmICFub2RlLmhpZGRlblwiXG4gICAgW2F0dHIucm9sZV09XCJ2aWV3ID09PSAndHJlZScgPyAndHJlZWl0ZW0nIDogJ2xpc3RpdGVtJ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnYzh5LWFzc2V0LXNlbGVjdG9yX19ub2RlLS1vcGVuJzogbm9kZT8ub3BlbiB9XCJcbiAgPlxuICAgPCEtLSBleHBhbmQgYnV0dG9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjOHktYXNzZXQtc2VsZWN0b3JfX25vZGVfX2J0bi1zcGFjZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW3RpdGxlXT1cImV4cGFuZFRpdGxlXCJcbiAgICAgICAgY2xhc3M9XCJjb2xsYXBzZS1idG4gYnRuLWRvdFwiXG4gICAgICAgIChjbGljayk9XCJjbGljaygpXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmlzR3JvdXAoKSB8fCBub2RlLmhhc0NoaWxkRGV2aWNlcygpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJub2RlLm9wZW5cIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiYW5nbGUtcmlnaHRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXIgcC10LTQgcC1iLTQgXCIgKm5nSWY9XCJub2RlLnRvU3RyaW5nKCkgIT09ICdMb2FkTW9yZU5vZGUnXCI+XG4gICAgICA8bGFiZWwgW25nQ2xhc3NdPVwieyAnYzh5LWNoZWNrYm94JzogbXVsdGksICdjOHktcmFkaW8nOiAhbXVsdGkgfVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cIm5vZGVMYWJlbFwiXG4gICAgICAgICAgW3R5cGVdPVwibXVsdGkgPyAnY2hlY2tib3gnIDogJ3JhZGlvJ1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgIW5vZGUuZ3JvdXBzU2VsZWN0YWJsZSAmJiBub2RlLmlzR3JvdXAoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgIGZvcj1cIm5vZGVMYWJlbFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBOb2RlIGxhYmVsXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIGdyb3VwIGJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImM4eS1hc3NldC1zZWxlY3Rvcl9fYnRuIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhbm9kZS5vcGVuXCJcbiAgICAgICpuZ0lmPVwibm9kZS5pc0dyb3VwKCkgfHwgbm9kZS5oYXNDaGlsZERldmljZXMoKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soKVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJjOHktaWNvbiBjOHktaWNvbi1kdW9jb2xvciBtLXItNCB0ZXh0LTE2XCJcbiAgICAgICAgW2M4eUljb25dPVwibm9kZS5pY29uXCJcbiAgICAgICAgW3RpdGxlXT1cIidTbWFydCBncm91cCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAqbmdJZj1cIm5vZGUuaWNvbiA9PT0gJ2M4eS1ncm91cC1zbWFydCdcIlxuICAgICAgPjwvaT5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWljb24gYzh5LWljb24tZHVvY29sb3IgbS1yLTQgdGV4dC0xNlwiXG4gICAgICAgIFtjOHlJY29uXT1cIm5vZGUuaWNvblwiXG4gICAgICAgIFt0aXRsZV09XCInR3JvdXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmljb24gIT09ICdjOHktZ3JvdXAtc21hcnQnXCJcbiAgICAgID48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGJyZWFkY3J1bWIgfX1cIj5cbiAgICAgICAge3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cbiAgICAgICAgPCEtLSB1c2UganVzdCBmb3Igc2VhcmNoIHJlc3VsdHMgdG8gZGlzcGxheSB0aGUgcGF0aCAtLT5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICpuZ0lmPVwic2hvd1BhdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZW0+e3sgYnJlYWRjcnVtYiB9fTwvZW0+XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVwIHRvIGhlcmUgLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBub3QgYSBncm91cCBidXR0b24gLS0+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJmbGV4LWdyb3dcIlxuICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKm5nSWY9XCIhbm9kZS5pc0dyb3VwKCkgJiYgIW5vZGUuaGFzQ2hpbGREZXZpY2VzKClcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBtLWItOCBkLWZsZXggai1jLWNlbnRlcic6IG5vZGUuaWNvbiA9PT0gJ3BsdXMnLFxuICAgICAgICAnYzh5LWFzc2V0LXNlbGVjdG9yX19idG4gdGV4dC10cnVuY2F0ZSc6IG5vZGUuaWNvbiAhPSAncGx1cydcbiAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdGVkKG5vZGUpXCJcbiAgICA+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImM4eS1pY29uIGM4eS1pY29uLWR1b2NvbG9yIG0tci00IHRleHQtMTZcIlxuICAgICAgICBbYzh5SWNvbl09XCJub2RlLmljb25cIlxuICAgICAgICBbdGl0bGVdPVwiJ1NtYXJ0IGdyb3VwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwibm9kZS5pY29uID09PSAnYzh5LWdyb3VwLXNtYXJ0J1wiXG4gICAgICA+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJjOHktaWNvbiBtLXItNFwiXG4gICAgICAgIFtjOHlJY29uXT1cIm5vZGUuaWNvblwiXG4gICAgICAgIFt0aXRsZV09XCInR3JvdXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmljb24gIT09ICdjOHktZ3JvdXAtc21hcnQnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnYzh5LWljb24tZHVvY29sb3IgdGV4dC0xNiAnOiBub2RlLmljb24gIT0gJ3BsdXMnIH1cIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuIHRpdGxlPVwie3sgYnJlYWRjcnVtYiB9fVwiPlxuICAgICAgICB7eyBub2RlLnRyYW5zbGF0ZUxhYmVsID8gKG5vZGUubGFiZWwgfCB0cmFuc2xhdGUpIDogbm9kZS5sYWJlbCB9fVxuICAgICAgICA8IS0tIHVzZSBqdXN0IGZvciBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IHRoZSBwYXRoIC0tPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LW11dGVkIHNtYWxsXCJcbiAgICAgICAgICAqbmdJZj1cInNob3dQYXRoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxlbT57eyBicmVhZGNydW1iIH19PC9lbT5cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVwIHRvIGhlcmUgLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICBcbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbGxhcHNlXCJcbiAgICAqbmdJZj1cIm5vZGUuY291bnRDaGlsZHJlbigpXCJcbiAgICBbY29sbGFwc2VdPVwiIW5vZGUub3BlblwiXG4gICAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4gICAgW2F0dHIucm9sZV09XCInZ3JvdXAnXCJcbiAgPlxuICAgIDxjOHktYXNzZXQtc2VsZWN0b3Itbm9kZVxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuXCJcbiAgICAgIFtub2RlXT1cImNoaWxkTm9kZVwiXG4gICAgICBbcHJlc2VsZWN0ZWRdPVwicHJlc2VsZWN0ZWQgfHwgW11cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgICBbYXR0ci5yb2xlXT1cInZpZXcgPT09ICd0cmVlJyA/ICd0cmVlaXRlbScgOiAnbGlzdGl0ZW0nXCJcbiAgICAgIChvblNlbGVjdCk9XCJvblNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRGVzZWxlY3QpPVwib25EZXNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIE1pbGxlciBjb2x1bW5zIC0tPlxuPGRpdiAqbmdJZj1cInZpZXcgPT09ICdtaWxsZXInXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1pbGxlci1jb2x1bW5fX2l0ZW0gYmctaW5oZXJpdFwiXG4gICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIHwgdHJhbnNsYXRlIH19XCJcbiAgICAqbmdJZj1cIm5vZGUgJiYgIW5vZGUucm9vdCAmJiAhbm9kZS5oaWRkZW4gJiYgbm9kZSAhPT0gcm9vdE5vZGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIGFjdGl2ZTogaXNBY3RpdmUoKSxcbiAgICAgICdtaWxsZXItY29sdW1uX19pdGVtLS1tb3JlJzogbm9kZS50b1N0cmluZygpID09PSAnTG9hZE1vcmVOb2RlJ1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtLWwtNCBtLXItNCBtaWxsZXItY29sdW1uX19pdGVtX19jaGVja2JveFwiXG4gICAgICAqbmdJZj1cIm5vZGUudG9TdHJpbmcoKSAhPT0gJ0xvYWRNb3JlTm9kZSdcIlxuICAgID5cbiAgICAgIDxsYWJlbCBbbmdDbGFzc109XCJ7ICdjOHktcmFkaW8nOiAhbXVsdGksICdjOHktY2hlY2tib3gnOiBtdWx0aSB9XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwibm9kZUxhYmVsMlwiXG4gICAgICAgICAgW3R5cGVdPVwibXVsdGkgPyAnY2hlY2tib3gnIDogJ3JhZGlvJ1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgIW5vZGUuZ3JvdXBzU2VsZWN0YWJsZSAmJiBub2RlLmlzR3JvdXAoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgIGZvcj1cIm5vZGVMYWJlbDJcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAgTm9kZSBsYWJlbFxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBkLWZsZXggZmxleC1ncm93IGotYy1jZW50ZXIgbS1sLTE2IG0tci0xNiBtLWItNCBtLXQtNCc6XG4gICAgICAgICAgbm9kZS50b1N0cmluZygpID09PSAnTG9hZE1vcmVOb2RlJyxcbiAgICAgICAgJ21pbGxlci1jb2x1bW5fX2l0ZW1fX2J0bic6IG5vZGUudG9TdHJpbmcoKSAhPT0gJ0xvYWRNb3JlTm9kZScsXG4gICAgICAgICdidG4tcGVuZGluZyc6IG5vZGUubG9hZGluZyAmJiBub2RlLnRvU3RyaW5nKCkgPT09ICdMb2FkTW9yZU5vZGUnXG4gICAgICB9XCJcbiAgICAgIChjbGljayk9XCJtaWxsZXJWaWV3Q2xpY2sobm9kZSlcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWljb24gbS1yLTRcIlxuICAgICAgICBbYzh5SWNvbl09XCJub2RlLmljb25cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjOHktaWNvbi1kdW9jb2xvciB0ZXh0LTE2Jzogbm9kZS50b1N0cmluZygpICE9PSAnTG9hZE1vcmVOb2RlJyB9XCJcbiAgICAgID48L2k+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVzZSBqdXN0IGZvciBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IHRoZSBwYXRoIC0tPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgICAgICAqbmdJZj1cInNob3dQYXRoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxlbT57eyBicmVhZGNydW1iIH19PC9lbT5cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPCEtLSB1cCB0byBoZXJlIC0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInAtbC00IG0tbC1hdXRvXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmlzR3JvdXAoKSB8fCBub2RlLmhhc0NoaWxkRGV2aWNlcygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImFuZ2xlLXJpZ2h0XCI+PC9pPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgcm9sZT1cImxpc3RcIlxuICAgICpuZ0lmPVwibm9kZVwiXG4gICAgW25nQ2xhc3NdPVwieyBoaWRkZW46IG5vZGUgIT09IHJvb3ROb2RlIH1cIlxuICA+XG4gICAgPGM4eS1hc3NldC1zZWxlY3Rvci1ub2RlXG4gICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuXCJcbiAgICAgIFtub2RlXT1cImNoaWxkTm9kZVwiXG4gICAgICBbcm9vdE5vZGVdPVwicm9vdE5vZGVcIlxuICAgICAgW3ByZXNlbGVjdGVkXT1cInByZXNlbGVjdGVkIHx8IFtdXCJcbiAgICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2hhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uXT1cImhhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uXCJcbiAgICAgIChvblNlbGVjdCk9XCJvblNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRGVzZWxlY3QpPVwib25EZXNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc2VsZWN0b3Itbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hc3NldHMtbmF2aWdhdG9yL2Fzc2V0LXNlbGVjdG9yL2Fzc2V0LXNlbGVjdG9yLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1zZWxlY3Rvci9hc3NldC1zZWxlY3Rvci1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBTXpDLE1BQU0sT0FBTywwQkFBMEI7SUFrRXJDOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUNVLGdCQUFrQyxFQUNsQyxFQUFxQixFQUN0QixvQkFBMEM7UUFG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RUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxjQUFjO3NCQUF2QixNQUFNO2dCQUlHLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUcsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0c05hdmlnYXRvckFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbi5lbnVtJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9hc3NldC1zZWxlY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3VwTm9kZSB9IGZyb20gJy4vZ3JvdXAtbm9kZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LXNlbGVjdG9yLW5vZGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0U2VsZWN0b3JOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IG5vZGUuXG4gICAqL1xuICBASW5wdXQoKSBub2RlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBSb290IG5vZGUuIE5vZGUgZm91bmQgYXQgdGhlIHRvcCBvZiB0aGUgaGllcmFyY2h5LlxuICAgKi9cbiAgQElucHV0KCkgcm9vdE5vZGU6IEdyb3VwTm9kZTtcbiAgLyoqXG4gICAqIEFsbCBwcmVzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNlbGVjdGVkOiBJSWRlbnRpZmllZCB8IElJZGVudGlmaWVkW10gPSBbXTtcbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgcGF0aCBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dQYXRoID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDYW4gdGhlIHVzZXIgc2VsZWN0IG11bHRpcGxlIGFzc2V0cy5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBwYXRoIHRvIHRoZSBub2RlLlxuICAgKi9cbiAgQElucHV0KCkgdmlldzogJ3RyZWUnIHwgJ21pbGxlcicgPSAndHJlZSc7XG4gIC8qKlxuICAgKiBVc2VkIG9ubHkgZm9yIG1pbGxlci12aWV3LCBkaXNwbGF5cyB0aGUgY29sdW1uIGxldmVsIGZvciB0aGUgY3VycmVudCBub2RlLlxuICAgKiBFLmcgaWYgdGhlIGluZGV4IGlzIG9uZSwgdGhpcyB3aWxsIGJlIHNlY29uZCBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKSBpbmRleDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBub2RlLlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHZlcmlmeSB0aGUgbmVlZCB0byBhZGQgYSBjb2x1bW4gd2hlbiBhIG5vZGUgaXMgY2xpY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpIGhhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uOiAobm9kZTogR3JvdXBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBFdmVudCwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxvYWRpbmcgb2YgdGhlIG5vZGUgaGFzIGNvbXBsZXRlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBpc0xvYWRpbmdTdGF0ZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogRXZlbnQgdGhhdCBlbWl0cyB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIEV2ZW50IHRoYXQgZW1pdHMgd2hlbiBhIG5vZGUgaXMgZGVzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkRlc2VsZWN0OiBFdmVudEVtaXR0ZXI8eyBkZXNlbGVjdE1vZGU6ICdzaW5nbGUnIHwgJ2FsbCc7IG1vOiBJTWFuYWdlZE9iamVjdCB9PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGJyZWFkY3J1bWI6IHN0cmluZztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGxldmVsID0gMDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIHNldHMgdGhlIGBidG4tcGVuZGluZ2AgY2xhc3MgaW4gdGhlIGxvYWQgbW9yZSBidXR0b24gKi9cbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgZXhwYW5kVGl0bGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLm5vZGUub3BlbiA/IGdldHRleHQoJ0V4cGFuZCcpIDogZ2V0dGV4dCgnQ29sbGFwc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgZGlcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYXNzZXRTZWxlY3RvclNlcnZpY2U6IEFzc2V0U2VsZWN0b3JTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5icmVhZGNydW1iID0gdGhpcy5ub2RlLmxhYmVsO1xuICAgIHRoaXMuc2V0dXBCcmVhZGNydW1ic0FuZExldmVsKHRoaXMubm9kZSk7XG5cbiAgICBpZiAodGhpcy5ub2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICB0aGlzLm5vZGUuaG9va0V2ZW50cygpO1xuICAgIH1cblxuICAgIC8vIG9wZW4gb24gc3RhcnR1cFxuICAgIGlmICh0aGlzLm5vZGUucm9vdCkge1xuICAgICAgdGhpcy5jbGljaygpO1xuICAgIH1cblxuICAgIC8vIHVzZWQgZm9yIGxvYWRpbmcgYW5kIHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHRoZSBub2RlIGlzIG5vIGxvbmdlciBsb2FkaW5nLlxuICAgIGlmICh0aGlzLm5vZGUuZXZlbnRzKSB7XG4gICAgICB0aGlzLm5vZGUuZXZlbnRzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgICAgZmlsdGVyKChhOiBBc3NldHNOYXZpZ2F0b3JBY3Rpb24pID0+IGEgPT09IEFzc2V0c05hdmlnYXRvckFjdGlvbi5MT0FESU5HX0RPTkUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdTdGF0ZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBub2RlLlxuICAgKi9cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5ub2RlLm9wZW4gPSAhdGhpcy5ub2RlLm9wZW47XG4gICAgdGhpcy5ub2RlLmNsaWNrKHsgb3BlbjogdGhpcy5ub2RlLm9wZW4gfSk7XG4gIH1cblxuICBzZXR1cEJyZWFkY3J1bWJzQW5kTGV2ZWwobm9kZTogR3JvdXBOb2RlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50cyAmJiBub2RlLnBhcmVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudHNbMF0gYXMgR3JvdXBOb2RlO1xuICAgICAgdGhpcy5icmVhZGNydW1iID1cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocGFyZW50LmxhYmVsKSArXG4gICAgICAgICcgPiAnICtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5icmVhZGNydW1iKTtcbiAgICAgIHRoaXMubGV2ZWwrKztcblxuICAgICAgdGhpcy5zZXR1cEJyZWFkY3J1bWJzQW5kTGV2ZWwocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgbm9kZSBhbmQgZW1pdHMgYSBjaGFuZ2Ugb24gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIHNlbGVjdC5cbiAgICovXG4gIHNlbGVjdGVkKG5vZGU6IEdyb3VwTm9kZSkge1xuICAgIGlmIChub2RlLm1vKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihub2RlLm1vKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2xpY2tzIG9uIGEgaXRlbSBpbiBNaWxsZXIgVmlldy5cbiAgICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdGhhdCB3YXMgY2xpY2tlZC5cbiAgICovXG4gIG1pbGxlclZpZXdDbGljayhub2RlOiBHcm91cE5vZGUpIHtcbiAgICBub2RlLmJyZWFkY3J1bWIgPSB0aGlzLmJyZWFkY3J1bWI7XG5cbiAgICBpZiAoIXRoaXMuaGFuZGxlTmV4dE1pbGxlclZpZXdDb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkSGFuZGxlRGVmYXVsdCA9IHRoaXMuaGFuZGxlTmV4dE1pbGxlclZpZXdDb2x1bW4obm9kZSwgdGhpcy5pbmRleCk7XG4gICAgaWYgKHNob3VsZEhhbmRsZURlZmF1bHQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMubm9kZS5tbykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NldFNlbGVjdG9yU2VydmljZS5nZXRJbmRleE9mU2VsZWN0ZWQodGhpcy5wcmVzZWxlY3RlZCwgdGhpcy5ub2RlLm1vKSA+IC0xO1xuICB9XG5cbiAgaXNBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMubm9kZS5tbykge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlLm1vPy5pZCA9PT0gdGhpcy5ub2RlLm1vLmlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGlvbihzZWxlY3RlZE1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghdGhpcy5tdWx0aSkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0LmVtaXQoeyBkZXNlbGVjdE1vZGU6ICdhbGwnLCBtbzogc2VsZWN0ZWRNbyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLm9uRGVzZWxlY3QuZW1pdCh7IGRlc2VsZWN0TW9kZTogJ3NpbmdsZScsIG1vOiBzZWxlY3RlZE1vIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQoc2VsZWN0ZWRNbyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPCEtLSBIaWVyYXJjaHkgdHJlZSAtLT5cbjxkaXZcbiAgY2xhc3M9XCJjOHktYXNzZXQtc2VsZWN0b3JfX2l0ZW1cIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgJ21hcmdpbi1sZWZ0JzogbGV2ZWwgPiAxID8gMTYgKyAncHgnIDogJzAnXG4gIH1cIlxuICAqbmdJZj1cInZpZXcgPT09ICd0cmVlJ1wiXG4gIFthdHRyLnJvbGVdPVwidmlldyA9PT0gJ3RyZWUnID8gJ3RyZWUnIDogJ2xpc3QnXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjOHktYXNzZXQtc2VsZWN0b3JfX2l0ZW0tLW1vcmUnOiBub2RlPy5pY29uID09PSAncGx1cycsXG4gICAgJ2M4eS1hc3NldC1zZWxlY3Rvcl9faXRlbS0tc3RhcnQnOiBsZXZlbCA9PT0gMFxuICB9XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYzh5LWFzc2V0LXNlbGVjdG9yX19ub2RlXCJcbiAgICB0aXRsZT1cInt7IGJyZWFkY3J1bWIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwibm9kZSAmJiAhbm9kZS5yb290ICYmICFub2RlLmhpZGRlblwiXG4gICAgW2F0dHIucm9sZV09XCJ2aWV3ID09PSAndHJlZScgPyAndHJlZWl0ZW0nIDogJ2xpc3RpdGVtJ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnYzh5LWFzc2V0LXNlbGVjdG9yX19ub2RlLS1vcGVuJzogbm9kZT8ub3BlbiB9XCJcbiAgPlxuICAgPCEtLSBleHBhbmQgYnV0dG9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjOHktYXNzZXQtc2VsZWN0b3JfX25vZGVfX2J0bi1zcGFjZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW3RpdGxlXT1cImV4cGFuZFRpdGxlXCJcbiAgICAgICAgY2xhc3M9XCJjb2xsYXBzZS1idG4gYnRuLWRvdFwiXG4gICAgICAgIChjbGljayk9XCJjbGljaygpXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmlzR3JvdXAoKSB8fCBub2RlLmhhc0NoaWxkRGV2aWNlcygpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJub2RlLm9wZW5cIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwiYW5nbGUtcmlnaHRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXIgcC10LTQgcC1iLTQgXCIgKm5nSWY9XCJub2RlLnRvU3RyaW5nKCkgIT09ICdMb2FkTW9yZU5vZGUnXCI+XG4gICAgICA8bGFiZWwgW25nQ2xhc3NdPVwieyAnYzh5LWNoZWNrYm94JzogbXVsdGksICdjOHktcmFkaW8nOiAhbXVsdGkgfVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cIm5vZGVMYWJlbFwiXG4gICAgICAgICAgW3R5cGVdPVwibXVsdGkgPyAnY2hlY2tib3gnIDogJ3JhZGlvJ1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgIW5vZGUuZ3JvdXBzU2VsZWN0YWJsZSAmJiBub2RlLmlzR3JvdXAoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgIGZvcj1cIm5vZGVMYWJlbFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBOb2RlIGxhYmVsXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIGdyb3VwIGJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImM4eS1hc3NldC1zZWxlY3Rvcl9fYnRuIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhbm9kZS5vcGVuXCJcbiAgICAgICpuZ0lmPVwibm9kZS5pc0dyb3VwKCkgfHwgbm9kZS5oYXNDaGlsZERldmljZXMoKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soKVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJjOHktaWNvbiBjOHktaWNvbi1kdW9jb2xvciBtLXItNCB0ZXh0LTE2XCJcbiAgICAgICAgW2M4eUljb25dPVwibm9kZS5pY29uXCJcbiAgICAgICAgW3RpdGxlXT1cIidTbWFydCBncm91cCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAqbmdJZj1cIm5vZGUuaWNvbiA9PT0gJ2M4eS1ncm91cC1zbWFydCdcIlxuICAgICAgPjwvaT5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWljb24gYzh5LWljb24tZHVvY29sb3IgbS1yLTQgdGV4dC0xNlwiXG4gICAgICAgIFtjOHlJY29uXT1cIm5vZGUuaWNvblwiXG4gICAgICAgIFt0aXRsZV09XCInR3JvdXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmljb24gIT09ICdjOHktZ3JvdXAtc21hcnQnXCJcbiAgICAgID48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGJyZWFkY3J1bWIgfX1cIj5cbiAgICAgICAge3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cbiAgICAgICAgPCEtLSB1c2UganVzdCBmb3Igc2VhcmNoIHJlc3VsdHMgdG8gZGlzcGxheSB0aGUgcGF0aCAtLT5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICpuZ0lmPVwic2hvd1BhdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZW0+e3sgYnJlYWRjcnVtYiB9fTwvZW0+XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVwIHRvIGhlcmUgLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBub3QgYSBncm91cCBidXR0b24gLS0+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJmbGV4LWdyb3dcIlxuICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKm5nSWY9XCIhbm9kZS5pc0dyb3VwKCkgJiYgIW5vZGUuaGFzQ2hpbGREZXZpY2VzKClcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBtLWItOCBtLXItOCBkLWZsZXggai1jLWNlbnRlcic6IG5vZGUuaWNvbiA9PT0gJ3BsdXMnLFxuICAgICAgICAnYzh5LWFzc2V0LXNlbGVjdG9yX19idG4gdGV4dC10cnVuY2F0ZSc6IG5vZGUuaWNvbiAhPSAncGx1cydcbiAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdGVkKG5vZGUpXCJcbiAgICA+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImM4eS1pY29uIGM4eS1pY29uLWR1b2NvbG9yIG0tci00IHRleHQtMTZcIlxuICAgICAgICBbYzh5SWNvbl09XCJub2RlLmljb25cIlxuICAgICAgICBbdGl0bGVdPVwiJ1NtYXJ0IGdyb3VwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwibm9kZS5pY29uID09PSAnYzh5LWdyb3VwLXNtYXJ0J1wiXG4gICAgICA+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJjOHktaWNvbiBtLXItNFwiXG4gICAgICAgIFtjOHlJY29uXT1cIm5vZGUuaWNvblwiXG4gICAgICAgIFt0aXRsZV09XCInR3JvdXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmljb24gIT09ICdjOHktZ3JvdXAtc21hcnQnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnYzh5LWljb24tZHVvY29sb3IgdGV4dC0xNiAnOiBub2RlLmljb24gIT0gJ3BsdXMnIH1cIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuIHRpdGxlPVwie3sgYnJlYWRjcnVtYiB9fVwiPlxuICAgICAgICB7eyBub2RlLnRyYW5zbGF0ZUxhYmVsID8gKG5vZGUubGFiZWwgfCB0cmFuc2xhdGUpIDogbm9kZS5sYWJlbCB9fVxuICAgICAgICA8IS0tIHVzZSBqdXN0IGZvciBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IHRoZSBwYXRoIC0tPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LW11dGVkIHNtYWxsXCJcbiAgICAgICAgICAqbmdJZj1cInNob3dQYXRoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxlbT57eyBicmVhZGNydW1iIH19PC9lbT5cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVwIHRvIGhlcmUgLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICBcbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbGxhcHNlXCJcbiAgICAqbmdJZj1cIm5vZGUuY291bnRDaGlsZHJlbigpXCJcbiAgICBbY29sbGFwc2VdPVwiIW5vZGUub3BlblwiXG4gICAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4gICAgW2F0dHIucm9sZV09XCInZ3JvdXAnXCJcbiAgPlxuICAgIDxjOHktYXNzZXQtc2VsZWN0b3Itbm9kZVxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuXCJcbiAgICAgIFtub2RlXT1cImNoaWxkTm9kZVwiXG4gICAgICBbcHJlc2VsZWN0ZWRdPVwicHJlc2VsZWN0ZWQgfHwgW11cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgICBbYXR0ci5yb2xlXT1cInZpZXcgPT09ICd0cmVlJyA/ICd0cmVlaXRlbScgOiAnbGlzdGl0ZW0nXCJcbiAgICAgIChvblNlbGVjdCk9XCJvblNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRGVzZWxlY3QpPVwib25EZXNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIE1pbGxlciBjb2x1bW5zIC0tPlxuPGRpdiAqbmdJZj1cInZpZXcgPT09ICdtaWxsZXInXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1pbGxlci1jb2x1bW5fX2l0ZW0gYmctaW5oZXJpdFwiXG4gICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIHwgdHJhbnNsYXRlIH19XCJcbiAgICAqbmdJZj1cIm5vZGUgJiYgIW5vZGUucm9vdCAmJiAhbm9kZS5oaWRkZW4gJiYgbm9kZSAhPT0gcm9vdE5vZGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIGFjdGl2ZTogaXNBY3RpdmUoKSxcbiAgICAgICdtaWxsZXItY29sdW1uX19pdGVtLS1tb3JlJzogbm9kZS50b1N0cmluZygpID09PSAnTG9hZE1vcmVOb2RlJ1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtLWwtNCBtLXItNCBtaWxsZXItY29sdW1uX19pdGVtX19jaGVja2JveFwiXG4gICAgICAqbmdJZj1cIm5vZGUudG9TdHJpbmcoKSAhPT0gJ0xvYWRNb3JlTm9kZSdcIlxuICAgID5cbiAgICAgIDxsYWJlbCBbbmdDbGFzc109XCJ7ICdjOHktcmFkaW8nOiAhbXVsdGksICdjOHktY2hlY2tib3gnOiBtdWx0aSB9XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwibm9kZUxhYmVsMlwiXG4gICAgICAgICAgW3R5cGVdPVwibXVsdGkgPyAnY2hlY2tib3gnIDogJ3JhZGlvJ1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZChub2RlKVwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgIW5vZGUuZ3JvdXBzU2VsZWN0YWJsZSAmJiBub2RlLmlzR3JvdXAoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgIGZvcj1cIm5vZGVMYWJlbDJcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAgTm9kZSBsYWJlbFxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBkLWZsZXggZmxleC1ncm93IGotYy1jZW50ZXIgbS1sLTE2IG0tci0xNiBtLWItNCBtLXQtNCc6XG4gICAgICAgICAgbm9kZS50b1N0cmluZygpID09PSAnTG9hZE1vcmVOb2RlJyxcbiAgICAgICAgJ21pbGxlci1jb2x1bW5fX2l0ZW1fX2J0bic6IG5vZGUudG9TdHJpbmcoKSAhPT0gJ0xvYWRNb3JlTm9kZScsXG4gICAgICAgICdidG4tcGVuZGluZyc6IG5vZGUubG9hZGluZyAmJiBub2RlLnRvU3RyaW5nKCkgPT09ICdMb2FkTW9yZU5vZGUnXG4gICAgICB9XCJcbiAgICAgIChjbGljayk9XCJtaWxsZXJWaWV3Q2xpY2sobm9kZSlcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiYzh5LWljb24gbS1yLTRcIlxuICAgICAgICBbYzh5SWNvbl09XCJub2RlLmljb25cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdjOHktaWNvbi1kdW9jb2xvciB0ZXh0LTE2Jzogbm9kZS50b1N0cmluZygpICE9PSAnTG9hZE1vcmVOb2RlJyB9XCJcbiAgICAgID48L2k+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbm9kZS50cmFuc2xhdGVMYWJlbCA/IChub2RlLmxhYmVsIHwgdHJhbnNsYXRlKSA6IG5vZGUubGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIHVzZSBqdXN0IGZvciBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IHRoZSBwYXRoIC0tPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBicmVhZGNydW1iIH19XCJcbiAgICAgICAgICAqbmdJZj1cInNob3dQYXRoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxlbT57eyBicmVhZGNydW1iIH19PC9lbT5cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPCEtLSB1cCB0byBoZXJlIC0tPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInAtbC00IG0tbC1hdXRvXCJcbiAgICAgICAgKm5nSWY9XCJub2RlLmlzR3JvdXAoKSB8fCBub2RlLmhhc0NoaWxkRGV2aWNlcygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImFuZ2xlLXJpZ2h0XCI+PC9pPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgcm9sZT1cImxpc3RcIlxuICAgICpuZ0lmPVwibm9kZVwiXG4gICAgW25nQ2xhc3NdPVwieyBoaWRkZW46IG5vZGUgIT09IHJvb3ROb2RlIH1cIlxuICA+XG4gICAgPGM4eS1hc3NldC1zZWxlY3Rvci1ub2RlXG4gICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuXCJcbiAgICAgIFtub2RlXT1cImNoaWxkTm9kZVwiXG4gICAgICBbcm9vdE5vZGVdPVwicm9vdE5vZGVcIlxuICAgICAgW3ByZXNlbGVjdGVkXT1cInByZXNlbGVjdGVkIHx8IFtdXCJcbiAgICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2hhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uXT1cImhhbmRsZU5leHRNaWxsZXJWaWV3Q29sdW1uXCJcbiAgICAgIChvblNlbGVjdCk9XCJvblNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRGVzZWxlY3QpPVwib25EZXNlbGVjdC5lbWl0KCRldmVudClcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -7,6 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
import * as i1 from "@c8y/ngx-components/branding/shared/data";
|
|
8
8
|
import * as i2 from "@angular/forms";
|
|
9
9
|
import * as i3 from "@c8y/ngx-components";
|
|
10
|
+
import * as i4 from "@angular/common";
|
|
10
11
|
export class AddBrandingModalComponent {
|
|
11
12
|
constructor(branding, formBuilder) {
|
|
12
13
|
this.branding = branding;
|
|
@@ -18,7 +19,24 @@ export class AddBrandingModalComponent {
|
|
|
18
19
|
this._resovle = resolve;
|
|
19
20
|
this._reject = reject;
|
|
20
21
|
});
|
|
21
|
-
this.
|
|
22
|
+
this.messages = [
|
|
23
|
+
{
|
|
24
|
+
name: 'nameAlreadyTaken',
|
|
25
|
+
text: gettext('The provided name is already taken.')
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'onlyLowerCaseCharacters',
|
|
29
|
+
text: gettext('Only lower case characters are allowed.')
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'shouldStartWithLowerCaseLetterOrNumber',
|
|
33
|
+
text: gettext('Should start with a lower case letter or a number.')
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'invalidCharacters',
|
|
37
|
+
text: gettext('Invalid character "{{ invalidCharacter }}". Only a-z, 0-9 and - are allowed.')
|
|
38
|
+
}
|
|
39
|
+
];
|
|
22
40
|
this.form = this.initForm();
|
|
23
41
|
this.getExistingBrandingVersions();
|
|
24
42
|
}
|
|
@@ -36,7 +54,7 @@ export class AddBrandingModalComponent {
|
|
|
36
54
|
return this.formBuilder.group({
|
|
37
55
|
brandingName: [
|
|
38
56
|
'',
|
|
39
|
-
[Validators.required,
|
|
57
|
+
[Validators.required, this.ensureProperVariantName(), this.ensureNotExistingName()]
|
|
40
58
|
]
|
|
41
59
|
});
|
|
42
60
|
}
|
|
@@ -58,13 +76,39 @@ export class AddBrandingModalComponent {
|
|
|
58
76
|
return null;
|
|
59
77
|
};
|
|
60
78
|
}
|
|
79
|
+
ensureProperVariantName() {
|
|
80
|
+
return (control) => {
|
|
81
|
+
if (typeof control.value === 'string') {
|
|
82
|
+
const value = control.value;
|
|
83
|
+
if (/[A-Z]/.test(value)) {
|
|
84
|
+
return {
|
|
85
|
+
onlyLowerCaseCharacters: {}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (!/^[a-z0-9]+/.test(value)) {
|
|
89
|
+
return {
|
|
90
|
+
shouldStartWithLowerCaseLetterOrNumber: {}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const matches = /[^a-z0-9-]/.exec(value);
|
|
94
|
+
if (matches) {
|
|
95
|
+
return {
|
|
96
|
+
invalidCharacters: {
|
|
97
|
+
invalidCharacter: matches[0]
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
61
105
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddBrandingModalComponent, deps: [{ token: i1.StoreBrandingService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddBrandingModalComponent, isStandalone: true, selector: "c8y-add-branding-modal", inputs: { duplicateBranding: "duplicateBranding" }, ngImport: i0, template: "<c8y-modal\n [title]=\"duplicateBranding ? 'Duplicate Branding' : 'Create Branding'\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n<ng-container c8y-modal-title>\n <span [c8yIcon]=\"'palette'\"></span>\n</ng-container>\n <div [formGroup]=\"form\" class=\"p-24\">\n <c8y-form-group>\n <label\n for=\"brandingName\"\n translate\n >\n Branding name\n </label>\n <input\n class=\"form-control\"\n name=\"brandingName\"\n id=\"brandingName\"\n type=\"text\"\n formControlName=\"brandingName\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '
|
|
106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddBrandingModalComponent, isStandalone: true, selector: "c8y-add-branding-modal", inputs: { duplicateBranding: "duplicateBranding" }, ngImport: i0, template: "<c8y-modal\n [title]=\"duplicateBranding ? 'Duplicate Branding' : 'Create Branding'\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n<ng-container c8y-modal-title>\n <span [c8yIcon]=\"'palette'\"></span>\n</ng-container>\n <div [formGroup]=\"form\" class=\"p-24\">\n <c8y-form-group>\n <label\n for=\"brandingName\"\n translate\n >\n Branding name\n </label>\n <input\n class=\"form-control\"\n name=\"brandingName\"\n id=\"brandingName\"\n type=\"text\"\n formControlName=\"brandingName\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'main-branding' } }}\"\n />\n <c8y-messages [helpMessage]=\"'Upper case letters not allowed' | translate\">\n <c8y-message *ngFor=\"let message of messages\"\n [name]=\"message.name\"\n [text]=\"message.text | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n</c8y-modal>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i3.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
63
107
|
}
|
|
64
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddBrandingModalComponent, decorators: [{
|
|
65
109
|
type: Component,
|
|
66
|
-
args: [{ selector: 'c8y-add-branding-modal', standalone: true, imports: [CoreModule, NgIf, ReactiveFormsModule], template: "<c8y-modal\n [title]=\"duplicateBranding ? 'Duplicate Branding' : 'Create Branding'\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n<ng-container c8y-modal-title>\n <span [c8yIcon]=\"'palette'\"></span>\n</ng-container>\n <div [formGroup]=\"form\" class=\"p-24\">\n <c8y-form-group>\n <label\n for=\"brandingName\"\n translate\n >\n Branding name\n </label>\n <input\n class=\"form-control\"\n name=\"brandingName\"\n id=\"brandingName\"\n type=\"text\"\n formControlName=\"brandingName\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: '
|
|
110
|
+
args: [{ selector: 'c8y-add-branding-modal', standalone: true, imports: [CoreModule, NgIf, ReactiveFormsModule], template: "<c8y-modal\n [title]=\"duplicateBranding ? 'Duplicate Branding' : 'Create Branding'\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n<ng-container c8y-modal-title>\n <span [c8yIcon]=\"'palette'\"></span>\n</ng-container>\n <div [formGroup]=\"form\" class=\"p-24\">\n <c8y-form-group>\n <label\n for=\"brandingName\"\n translate\n >\n Branding name\n </label>\n <input\n class=\"form-control\"\n name=\"brandingName\"\n id=\"brandingName\"\n type=\"text\"\n formControlName=\"brandingName\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'main-branding' } }}\"\n />\n <c8y-messages [helpMessage]=\"'Upper case letters not allowed' | translate\">\n <c8y-message *ngFor=\"let message of messages\"\n [name]=\"message.name\"\n [text]=\"message.text | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n</c8y-modal>\n" }]
|
|
67
111
|
}], ctorParameters: () => [{ type: i1.StoreBrandingService }, { type: i2.FormBuilder }], propDecorators: { duplicateBranding: [{
|
|
68
112
|
type: Input
|
|
69
113
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWJyYW5kaW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9sYXp5L2FkZC1icmFuZGluZy1tb2RhbC9hZGQtYnJhbmRpbmctbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYWRkLWJyYW5kaW5nLW1vZGFsL2FkZC1icmFuZGluZy1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBRUwsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFRdkMsTUFBTSxPQUFPLHlCQUF5QjtJQWdCcEMsWUFDVSxRQUE4QixFQUM5QixXQUF3QjtRQUR4QixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpCekIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsV0FBTSxHQUFHLElBQUksT0FBTyxDQUE0QyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILG9CQUFlLEdBQUcsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFTL0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQywyQkFBMkI7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLFlBQVksRUFBRTtnQkFDWixFQUFFO2dCQUNGLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQ3ZGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixPQUFPLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDMUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQ25ELENBQUM7Z0JBQ0YsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDOzhHQWhFVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixzSUNsQnRDLHdrQ0FvQ0EsMkNEcEJZLFVBQVUsaXlEQUFRLG1CQUFtQjs7MkZBRXBDLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FFdEIsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQzttSEFHdkMsaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmVCcmFuZGluZ1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2JyYW5kaW5nL3NoYXJlZC9kYXRhJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLWJyYW5kaW5nLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1icmFuZGluZy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBOZ0lmLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRCcmFuZGluZ01vZGFsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZHVwbGljYXRlQnJhbmRpbmcgPSBmYWxzZTtcbiAgZm9ybTogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5pbml0Rm9ybT47XG4gIG5hbWVzQWxyZWFkeVRha2VuOiBzdHJpbmdbXSA9IFtdO1xuICBsb2FkaW5nID0gdHJ1ZTtcblxuICByZXN1bHQgPSBuZXcgUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmluaXRGb3JtPlsndmFsdWUnXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRoaXMuX3Jlc292bGUgPSByZXNvbHZlO1xuICAgIHRoaXMuX3JlamVjdCA9IHJlamVjdDtcbiAgfSk7XG5cbiAgYWxyZWFkeVRha2VuTXNnID0gZ2V0dGV4dCgnVGhlIHByb3ZpZGVkIG5hbWUgaXMgYWxyZWFkeSB0YWtlbi4nKTtcblxuICBwcml2YXRlIF9yZXNvdmxlOiAodmFsdWU6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuaW5pdEZvcm0+Wyd2YWx1ZSddKSA9PiB2b2lkO1xuICBwcml2YXRlIF9yZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmFuZGluZzogU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuZ2V0RXhpc3RpbmdCcmFuZGluZ1ZlcnNpb25zKCk7XG4gIH1cblxuICBhc3luYyBnZXRFeGlzdGluZ0JyYW5kaW5nVmVyc2lvbnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMuYnJhbmRpbmcubG9hZEJyYW5kaW5nVmFyaWFudHMoKTtcbiAgICAgIHRoaXMubmFtZXNBbHJlYWR5VGFrZW4gPSB2YXJpYW50cy5tYXAodmFyaWFudCA9PiB2YXJpYW50LnZlcnNpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBicmFuZGluZ05hbWU6IFtcbiAgICAgICAgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16MC05XSskLyksIHRoaXMuZW5zdXJlTm90RXhpc3RpbmdOYW1lKCldXG4gICAgICBdXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5fcmVqZWN0KCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuX3Jlc292bGUodGhpcy5mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlTm90RXhpc3RpbmdOYW1lKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBsb3dlcmNhc2VOYW1lID0gY29udHJvbC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBuYW1lQWxyZWFkeVRha2VuID0gdGhpcy5uYW1lc0FscmVhZHlUYWtlbi5zb21lKG5hbWUgPT5cbiAgICAgICAgICBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcmNhc2VOYW1lICsgJy0nKVxuICAgICAgICApO1xuICAgICAgICBpZiAobmFtZUFscmVhZHlUYWtlbikge1xuICAgICAgICAgIHJldHVybiB7IG5hbWVBbHJlYWR5VGFrZW46IHt9IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiIsIjxjOHktbW9kYWxcbiAgW3RpdGxlXT1cImR1cGxpY2F0ZUJyYW5kaW5nID8gJ0R1cGxpY2F0ZSBCcmFuZGluZycgOiAnQ3JlYXRlIEJyYW5kaW5nJ1wiXG4gIFtoZWFkZXJDbGFzc2VzXT1cIidkaWFsb2ctaGVhZGVyJ1wiXG4gIChvbkRpc21pc3MpPVwiY2FuY2VsKClcIlxuICAob25DbG9zZSk9XCJzYXZlKClcIlxuICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgW2xhYmVsc109XCJ7IGNhbmNlbDogJ0NhbmNlbCcsIG9rOiAnU2F2ZScgfVwiXG4+XG48bmctY29udGFpbmVyIGM4eS1tb2RhbC10aXRsZT5cbiAgPHNwYW4gW2M4eUljb25dPVwiJ3BhbGV0dGUnXCI+PC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG4gIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJwLTI0XCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cImJyYW5kaW5nTmFtZVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBCcmFuZGluZyBuYW1lXG4gICAgICA8L2xhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgbmFtZT1cImJyYW5kaW5nTmFtZVwiXG4gICAgICAgIGlkPVwiYnJhbmRpbmdOYW1lXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJicmFuZGluZ05hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGUgOiB7IGV4YW1wbGU6ICdtYWluX2JyYW5kaW5nJyB9IH19XCJcbiAgICAgIC8+XG4gICAgICA8Yzh5LW1lc3NhZ2VzIFtoZWxwTWVzc2FnZV09XCInVXBwZXIgY2FzZSBsZXR0ZXJzIG5vdCBhbGxvd2VkJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICBuYW1lPVwibmFtZUFscmVhZHlUYWtlblwiXG4gICAgICAgICAgW3RleHRdPVwiYWxyZWFkeVRha2VuTXNnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICA8L2M4eS1tZXNzYWdlcz5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8L2Rpdj5cbjwvYzh5LW1vZGFsPlxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWJyYW5kaW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9sYXp5L2FkZC1icmFuZGluZy1tb2RhbC9hZGQtYnJhbmRpbmctbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vYnJhbmRpbmcvc2hhcmVkL2xhenkvYWRkLWJyYW5kaW5nLW1vZGFsL2FkZC1icmFuZGluZy1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBRUwsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBUXZDLE1BQU0sT0FBTyx5QkFBeUI7SUFpQ3BDLFlBQ1UsUUFBOEIsRUFDOUIsV0FBd0I7UUFEeEIsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFsQ3pCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLFdBQU0sR0FBRyxJQUFJLE9BQU8sQ0FBNEMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFF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LENBQUM7b0JBQzlCLE9BQU87d0JBQ0wsc0NBQXNDLEVBQUUsRUFBRTtxQkFDM0MsQ0FBQztnQkFDSixDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osT0FBTzt3QkFDTCxpQkFBaUIsRUFBRTs0QkFDakIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzt5QkFDN0I7cUJBQ0YsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E3R1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsc0lDbEJ0QyxzbUNBb0NBLDJDRHBCWSxVQUFVLDg1REFBUSxtQkFBbUI7OzJGQUVwQyx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBRXRCLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLENBQUM7bUhBR3ZDLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlQnJhbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9icmFuZGluZy9zaGFyZWQvZGF0YSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFkZC1icmFuZGluZy1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtYnJhbmRpbmctbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgTmdJZiwgUmVhY3RpdmVGb3Jtc01vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQWRkQnJhbmRpbmdNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGR1cGxpY2F0ZUJyYW5kaW5nID0gZmFsc2U7XG4gIGZvcm06IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuaW5pdEZvcm0+O1xuICBuYW1lc0FscmVhZHlUYWtlbjogc3RyaW5nW10gPSBbXTtcbiAgbG9hZGluZyA9IHRydWU7XG5cbiAgcmVzdWx0ID0gbmV3IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5pbml0Rm9ybT5bJ3ZhbHVlJ10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9yZXNvdmxlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9yZWplY3QgPSByZWplY3Q7XG4gIH0pO1xuXG4gIG1lc3NhZ2VzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lQWxyZWFkeVRha2VuJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ1RoZSBwcm92aWRlZCBuYW1lIGlzIGFscmVhZHkgdGFrZW4uJylcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvbmx5TG93ZXJDYXNlQ2hhcmFjdGVycycsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdPbmx5IGxvd2VyIGNhc2UgY2hhcmFjdGVycyBhcmUgYWxsb3dlZC4nKVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3VsZFN0YXJ0V2l0aExvd2VyQ2FzZUxldHRlck9yTnVtYmVyJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ1Nob3VsZCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYSBudW1iZXIuJylcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdpbnZhbGlkQ2hhcmFjdGVycycsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdJbnZhbGlkIGNoYXJhY3RlciBcInt7IGludmFsaWRDaGFyYWN0ZXIgfX1cIi4gT25seSBhLXosIDAtOSBhbmQgLSBhcmUgYWxsb3dlZC4nKVxuICAgIH1cbiAgXSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9yZXNvdmxlOiAodmFsdWU6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuaW5pdEZvcm0+Wyd2YWx1ZSddKSA9PiB2b2lkO1xuICBwcml2YXRlIF9yZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmFuZGluZzogU3RvcmVCcmFuZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuZ2V0RXhpc3RpbmdCcmFuZGluZ1ZlcnNpb25zKCk7XG4gIH1cblxuICBhc3luYyBnZXRFeGlzdGluZ0JyYW5kaW5nVmVyc2lvbnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMuYnJhbmRpbmcubG9hZEJyYW5kaW5nVmFyaWFudHMoKTtcbiAgICAgIHRoaXMubmFtZXNBbHJlYWR5VGFrZW4gPSB2YXJpYW50cy5tYXAodmFyaWFudCA9PiB2YXJpYW50LnZlcnNpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBicmFuZGluZ05hbWU6IFtcbiAgICAgICAgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLmVuc3VyZVByb3BlclZhcmlhbnROYW1lKCksIHRoaXMuZW5zdXJlTm90RXhpc3RpbmdOYW1lKCldXG4gICAgICBdXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5fcmVqZWN0KCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuX3Jlc292bGUodGhpcy5mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlTm90RXhpc3RpbmdOYW1lKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBsb3dlcmNhc2VOYW1lID0gY29udHJvbC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBuYW1lQWxyZWFkeVRha2VuID0gdGhpcy5uYW1lc0FscmVhZHlUYWtlbi5zb21lKG5hbWUgPT5cbiAgICAgICAgICBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcmNhc2VOYW1lICsgJy0nKVxuICAgICAgICApO1xuICAgICAgICBpZiAobmFtZUFscmVhZHlUYWtlbikge1xuICAgICAgICAgIHJldHVybiB7IG5hbWVBbHJlYWR5VGFrZW46IHt9IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZVByb3BlclZhcmlhbnROYW1lKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIGlmICgvW0EtWl0vLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9ubHlMb3dlckNhc2VDaGFyYWN0ZXJzOiB7fVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEvXlthLXowLTldKy8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hvdWxkU3RhcnRXaXRoTG93ZXJDYXNlTGV0dGVyT3JOdW1iZXI6IHt9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSAvW15hLXowLTktXS8uZXhlYyh2YWx1ZSk7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGludmFsaWRDaGFyYWN0ZXJzOiB7XG4gICAgICAgICAgICAgIGludmFsaWRDaGFyYWN0ZXI6IG1hdGNoZXNbMF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCJkdXBsaWNhdGVCcmFuZGluZyA/ICdEdXBsaWNhdGUgQnJhbmRpbmcnIDogJ0NyZWF0ZSBCcmFuZGluZydcIlxuICBbaGVhZGVyQ2xhc3Nlc109XCInZGlhbG9nLWhlYWRlcidcIlxuICAob25EaXNtaXNzKT1cImNhbmNlbCgpXCJcbiAgKG9uQ2xvc2UpPVwic2F2ZSgpXCJcbiAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gIFtsYWJlbHNdPVwieyBjYW5jZWw6ICdDYW5jZWwnLCBvazogJ1NhdmUnIH1cIlxuPlxuPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gIDxzcGFuIFtjOHlJY29uXT1cIidwYWxldHRlJ1wiPjwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicC0yNFwiPlxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbFxuICAgICAgICBmb3I9XCJicmFuZGluZ05hbWVcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQnJhbmRpbmcgbmFtZVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIG5hbWU9XCJicmFuZGluZ05hbWVcIlxuICAgICAgICBpZD1cImJyYW5kaW5nTmFtZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmRpbmdOYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlIDogeyBleGFtcGxlOiAnbWFpbi1icmFuZGluZycgfSB9fVwiXG4gICAgICAvPlxuICAgICAgPGM4eS1tZXNzYWdlcyBbaGVscE1lc3NhZ2VdPVwiJ1VwcGVyIGNhc2UgbGV0dGVycyBub3QgYWxsb3dlZCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPGM4eS1tZXNzYWdlICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzXCJcbiAgICAgICAgICBbbmFtZV09XCJtZXNzYWdlLm5hbWVcIlxuICAgICAgICAgIFt0ZXh0XT1cIm1lc3NhZ2UudGV4dCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID48L2M4eS1tZXNzYWdlPlxuICAgICAgPC9jOHktbWVzc2FnZXM+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
@@ -12,7 +12,8 @@ export const DEFAULT_CONFIG = {
|
|
|
12
12
|
globalSmartRules: true,
|
|
13
13
|
smartRules: true,
|
|
14
14
|
subassets: true,
|
|
15
|
-
search: true
|
|
15
|
+
search: true,
|
|
16
|
+
dashboardManager: true
|
|
16
17
|
},
|
|
17
18
|
hideNavigator: false,
|
|
18
19
|
homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,
|
|
@@ -37,4 +38,4 @@ export var HomeDashboardType;
|
|
|
37
38
|
HomeDashboardType[HomeDashboardType["USER"] = 2] = "USER";
|
|
38
39
|
})(HomeDashboardType || (HomeDashboardType = {}));
|
|
39
40
|
export const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxlQUFlLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUEyQjVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBa0I7SUFDM0MsU0FBUyxFQUFFLEVBQUU7SUFDYixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNaLFlBQVksRUFBRSxJQUFJO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsSUFBSTtRQUNiLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixVQUFVLEVBQUUsSUFBSTtRQUNoQixTQUFTLEVBQUUsSUFBSTtRQUNmLE1BQU0sRUFBRSxJQUFJO1FBQ1osZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QjtJQUNELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLGlCQUFpQixFQUFFLDJCQUEyQjtJQUM5Qyx5QkFBeUIsRUFBRSxLQUFLO0lBQ2hDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxhQUFhO0tBQ3JCO0NBQ0YsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLGlCQWFYO0FBYkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCwrREFBTyxDQUFBO0lBQ1A7O09BRUc7SUFDSCx1REFBRyxDQUFBO0lBQ0g7O09BRUc7SUFDSCx5REFBSSxDQUFBO0FBQ04sQ0FBQyxFQWJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFhNUI7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUgPSAnaG9tZS1jb2NrcGl0MSc7XG5leHBvcnQgY29uc3QgVVNFUl9IT01FX0RBU0hCT0FSRF9OQU1FID0gJ2hvbWUtY29ja3BpdC11c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2NrcGl0Q29uZmlnIHtcbiAgcm9vdE5vZGVzOiBDb2NrcGl0Q29uZmlnUm9vdE5vZGVbXTtcbiAgZmVhdHVyZXM6IHtcbiAgICBhbGFybXM6IGJvb2xlYW47XG4gICAgZGF0YUV4cGxvcmVyOiBib29sZWFuO1xuICAgIGdyb3VwczogYm9vbGVhbjtcbiAgICByZXBvcnRzOiBib29sZWFuO1xuICAgIGV4cG9ydHM6IGJvb2xlYW47XG4gICAgZGF0YVBvaW50TGlicmFyeTogYm9vbGVhbjtcbiAgICBnbG9iYWxTbWFydFJ1bGVzOiBib29sZWFuO1xuICAgIHNtYXJ0UnVsZXM6IGJvb2xlYW47XG4gICAgc3ViYXNzZXRzOiBib29sZWFuO1xuICAgIHNlYXJjaDogYm9vbGVhbjtcbiAgICBkYXNoYm9hcmRNYW5hZ2VyOiBib29sZWFuO1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG4gIGhpZGVOYXZpZ2F0b3I6IGJvb2xlYW47XG4gIGhvbWVEYXNoYm9hcmROYW1lOiBzdHJpbmc7XG4gIHVzZXJTcGVjaWZpY0hvbWVEYXNoYm9hcmQ6IGJvb2xlYW47XG4gIGljb246IHtcbiAgICBjbGFzczogc3RyaW5nO1xuICB9O1xuICBhcHBUaXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09ORklHOiBDb2NrcGl0Q29uZmlnID0ge1xuICByb290Tm9kZXM6IFtdLFxuICBmZWF0dXJlczoge1xuICAgIGFsYXJtczogdHJ1ZSxcbiAgICBkYXRhRXhwbG9yZXI6IHRydWUsXG4gICAgZ3JvdXBzOiB0cnVlLFxuICAgIHJlcG9ydHM6IHRydWUsXG4gICAgZXhwb3J0czogdHJ1ZSxcbiAgICBkYXRhUG9pbnRMaWJyYXJ5OiB0cnVlLFxuICAgIGdsb2JhbFNtYXJ0UnVsZXM6IHRydWUsXG4gICAgc21hcnRSdWxlczogdHJ1ZSxcbiAgICBzdWJhc3NldHM6IHRydWUsXG4gICAgc2VhcmNoOiB0cnVlLFxuICAgIGRhc2hib2FyZE1hbmFnZXI6IHRydWVcbiAgfSxcbiAgaGlkZU5hdmlnYXRvcjogZmFsc2UsXG4gIGhvbWVEYXNoYm9hcmROYW1lOiBERUZBVUxUX0hPTUVfREFTSEJPQVJEX05BTUUsXG4gIHVzZXJTcGVjaWZpY0hvbWVEYXNoYm9hcmQ6IGZhbHNlLFxuICBpY29uOiB7XG4gICAgY2xhc3M6ICdjOHktY29ja3BpdCdcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2NrcGl0Q29uZmlnUm9vdE5vZGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGhpZGVEZXZpY2VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gSG9tZURhc2hib2FyZFR5cGUge1xuICAvKipcbiAgICogU2hhcmVkIGJ5IGFsbCBDb2NrcGl0IGFwcHNcbiAgICovXG4gIERFRkFVTFQsXG4gIC8qKlxuICAgKiBPbmx5IGZvciB0aGUgY3VycmVudCBDb2NrcGl0LlxuICAgKi9cbiAgQVBQLFxuICAvKipcbiAgICogT25seSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIFVTRVJcbn1cblxuZXhwb3J0IGNvbnN0IENPQ0tQSVRfQ09ORklHX1BBVEggPSAnY29ja3BpdC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uJztcbiJdfQ==
|