@c8y/ngx-components 1021.54.10 → 1021.54.11

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.
Files changed (29) hide show
  1. package/datapoint-selector/datapoint-library.service.d.ts +2 -2
  2. package/datapoint-selector/datapoint-library.service.d.ts.map +1 -1
  3. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts +5 -0
  4. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts.map +1 -1
  5. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts +13 -2
  6. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts.map +1 -1
  7. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts +2 -0
  8. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  9. package/datapoint-selector/datapoint-selector.component.d.ts +11 -1
  10. package/datapoint-selector/datapoint-selector.component.d.ts.map +1 -1
  11. package/esm2022/datapoint-selector/datapoint-library.service.mjs +11 -6
  12. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +5 -3
  13. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +12 -6
  14. package/esm2022/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.mjs +5 -3
  15. package/esm2022/datapoint-selector/datapoint-selector.component.mjs +22 -5
  16. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -1
  17. package/esm2022/upgrade/ng1/index.mjs +4 -3
  18. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +49 -19
  19. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  20. package/fesm2022/c8y-ngx-components-upgrade.mjs +4 -2
  21. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  22. package/locales/de.po +6 -6
  23. package/locales/fr.po +7 -7
  24. package/locales/ja_JP.po +222 -171
  25. package/locales/locales.pot +12 -3
  26. package/package.json +1 -1
  27. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  28. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  29. package/upgrade/ng1/index.d.ts.map +1 -1
@@ -13,7 +13,7 @@ export declare class DatapointLibraryService {
13
13
  getFirstDatapointLibraryPage(): Promise<IResultList<ManagedObjectKPI>>;
14
14
  getAllDatapointLibraryItemsCached(): Promise<KPIDetails[]>;
15
15
  updateDatapoints(datapoints: KPIDetails[], skipUpdatingTarget?: boolean): Promise<KPIDetails[]>;
16
- getDatapointsOfAsset(parentReference: IIdentified, ignoreDatapointTemplates?: boolean): Promise<KPIDetails[]>;
16
+ getDatapointsOfAsset(parentReference: IIdentified, ignoreDatapointTemplates?: boolean, datapointTemplatesOnly?: boolean): Promise<KPIDetails[]>;
17
17
  /**
18
18
  * Requests the last measurement with the given fragment and series to extract it's unit.
19
19
  * If the source attribute is provided, it will check the last measurement for this specific source.
@@ -23,7 +23,7 @@ export declare class DatapointLibraryService {
23
23
  protected combineFragmentSeriesTuplesWithDetails(tuples: Array<{
24
24
  fragment: string;
25
25
  series: string;
26
- }>, target: IIdentified, kpis: ManagedObjectKPI[]): Promise<KPIDetails[]>;
26
+ }>, target: IIdentified, kpis: ManagedObjectKPI[], datapointTemplatesOnly?: boolean): Promise<KPIDetails[]>;
27
27
  protected assignColorToDatapoints(datapoints: KPIDetails[]): Promise<void>;
28
28
  protected getAllDatapointLibraryEntries(): Promise<ManagedObjectKPI[]>;
29
29
  protected mapDatapointLibraryEntry(entry: ManagedObjectKPI): KPIDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-library.service.d.ts","sourceRoot":"","sources":["../../datapoint-selector/datapoint-library.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAEL,UAAU,EACV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;;AAErC,qBACa,uBAAuB;IAGhC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IALf,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAEnC,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,YAAY;IAOvB,mCAAmC,CAAC,eAAe,UAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUzF,4BAA4B,IAAI,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAUtE,iCAAiC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ1D,gBAAgB,CACpB,UAAU,EAAE,UAAU,EAAE,EACxB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC;IAyClB,oBAAoB,CACxB,eAAe,EAAE,WAAW,EAC5B,wBAAwB,CAAC,EAAE,OAAO,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC;IAexB;;;;OAIG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;cA2BF,sCAAsC,CACpD,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,EAAE;cAwBV,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAWhE,6BAA6B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsB5E,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU;cAUvD,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;cAMZ,wCAAwC,CACtD,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;cAMZ,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;yCAjOxE,uBAAuB;6CAAvB,uBAAuB;CAsPnC"}
1
+ {"version":3,"file":"datapoint-library.service.d.ts","sourceRoot":"","sources":["../../datapoint-selector/datapoint-library.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAEL,UAAU,EACV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;;AAErC,qBACa,uBAAuB;IAGhC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IALf,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAEnC,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,YAAY;IAOvB,mCAAmC,CAAC,eAAe,UAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUzF,4BAA4B,IAAI,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAUtE,iCAAiC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ1D,gBAAgB,CACpB,UAAU,EAAE,UAAU,EAAE,EACxB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC;IAyClB,oBAAoB,CACxB,eAAe,EAAE,WAAW,EAC5B,wBAAwB,CAAC,EAAE,OAAO,EAClC,sBAAsB,UAAQ,GAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;IAoBxB;;;;OAIG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;cA2BF,sCAAsC,CACpD,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EACnD,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,EAAE,EACxB,sBAAsB,UAAQ;cA6BhB,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAWhE,6BAA6B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsB5E,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU;cAUvD,iCAAiC,CAC/C,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;cAMZ,wCAAwC,CACtD,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC;cAMZ,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;yCA7OxE,uBAAuB;6CAAvB,uBAAuB;CAkQnC"}
@@ -25,6 +25,11 @@ export declare class DatapointSelectionListComponent implements ControlValueAcce
25
25
  formArray: FormArray;
26
26
  datapointLibraryEntries: Observable<IResultList<ManagedObjectKPI>>;
27
27
  maxActiveCountReached: boolean;
28
+ AddButtonTypes: {
29
+ readonly none: "none";
30
+ readonly addRemove: "add-remove";
31
+ readonly select: "select";
32
+ };
28
33
  isValid: Observable<boolean>;
29
34
  change: Observable<any[]>;
30
35
  private usedValidators;
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-selection-list.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAIL,SAAS,EACT,MAAM,EAGN,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,WAAW,EAGX,gBAAgB,EAChB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,UAAU,EACV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAEzE,qBAgBa,+BACX,YAAW,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IAmB3D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACP,OAAO,CAAC,eAAe;IApB5B,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,gBAAgB,UAAQ;IACxB,MAAM,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IACpD,kBAAkB,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,SAAK;IACnB,cAAc,UAAQ;IACtB,SAAS,SAAM;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,qBAAqB,UAAS;IAEpB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,cAAc,CAAsC;gBAGlD,iBAAiB,EAAE,wBAAwB,EAC3C,gBAAgB,EAAE,uBAAuB,EACzC,WAAW,EAAE,WAAW,EACZ,eAAe,EAAE,qBAAqB;IAU5D,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAezC,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAIrD,QAAQ,IAAI,IAAI;IAQhB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;IAYnC,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAY/B,GAAG;IAqBH,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;IAMrC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;yCA9HpB,+BAA+B;2CAA/B,+BAA+B;CAqI3C"}
1
+ {"version":3,"file":"datapoint-selection-list.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAIL,SAAS,EACT,MAAM,EAGN,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,WAAW,EAGX,gBAAgB,EAChB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,UAAU,EACV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAGzE,qBAgBa,+BACX,YAAW,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IAoB3D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACP,OAAO,CAAC,eAAe;IArB5B,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,gBAAgB,UAAQ;IACxB,MAAM,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IACpD,kBAAkB,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,SAAK;IACnB,cAAc,UAAQ;IACtB,SAAS,SAAM;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,qBAAqB,UAAS;IAC9B,cAAc;;;;MAAkB;IAEtB,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,cAAc,CAAsC;gBAGlD,iBAAiB,EAAE,wBAAwB,EAC3C,gBAAgB,EAAE,uBAAuB,EACzC,WAAW,EAAE,WAAW,EACZ,eAAe,EAAE,qBAAqB;IAU5D,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAezC,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAIrD,QAAQ,IAAI,IAAI;IAQhB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;IAYnC,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAY/B,GAAG;IAqBH,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;IAMrC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;yCA/HpB,+BAA+B;2CAA/B,+BAA+B;CAsI3C"}
@@ -5,13 +5,19 @@ import { Observable } from 'rxjs';
5
5
  import { ForOfFilterPipe, ListItemDragHandleComponent } from '@c8y/ngx-components';
6
6
  import { DatapointAction, DatapointAttributesFormConfig, KPIDetails, ManagedObjectKPI } from '../datapoint-selection.model';
7
7
  import * as i0 from "@angular/core";
8
+ export declare const AddButtonTypes: {
9
+ readonly none: "none";
10
+ readonly addRemove: "add-remove";
11
+ readonly select: "select";
12
+ };
13
+ export type AddButtonType = (typeof AddButtonTypes)[keyof typeof AddButtonTypes];
8
14
  export declare class DatapointSelectorListItemComponent implements ControlValueAccessor, Validator {
9
15
  private formBuilder;
10
16
  formGroup: FormGroup;
11
17
  defaultFormOptions: Partial<DatapointAttributesFormConfig>;
12
18
  isSelected: boolean;
13
19
  isCollapsed: boolean;
14
- showAddRemoveButton: boolean;
20
+ addButtonType: AddButtonType;
15
21
  editable: boolean;
16
22
  showActiveToggle: boolean;
17
23
  activeToggleDisabled: boolean;
@@ -30,6 +36,11 @@ export declare class DatapointSelectorListItemComponent implements ControlValueA
30
36
  filterPipe: ForOfFilterPipe<ManagedObjectKPI>;
31
37
  isValid$: Observable<boolean>;
32
38
  errorMessage: string;
39
+ AddButtonTypes: {
40
+ readonly none: "none";
41
+ readonly addRemove: "add-remove";
42
+ readonly select: "select";
43
+ };
33
44
  constructor(formBuilder: FormBuilder);
34
45
  validate(_control: AbstractControl): ValidationErrors;
35
46
  writeValue(obj: any): void;
@@ -46,6 +57,6 @@ export declare class DatapointSelectorListItemComponent implements ControlValueA
46
57
  private filterDatapointLabel;
47
58
  private transformFormValue;
48
59
  static ɵfac: i0.ɵɵFactoryDeclaration<DatapointSelectorListItemComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<DatapointSelectorListItemComponent, "c8y-datapoint-selector-list-item", never, { "defaultFormOptions": { "alias": "defaultFormOptions"; "required": false; }; "isSelected": { "alias": "isSelected"; "required": false; }; "isCollapsed": { "alias": "isCollapsed"; "required": false; }; "showAddRemoveButton": { "alias": "showAddRemoveButton"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "showActiveToggle": { "alias": "showActiveToggle"; "required": false; }; "activeToggleDisabled": { "alias": "activeToggleDisabled"; "required": false; }; "showOptions": { "alias": "showOptions"; "required": false; }; "datapointLibraryEntries": { "alias": "datapointLibraryEntries"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "optionToRemove": { "alias": "optionToRemove"; "required": false; }; "hasUnlinkTemplateOption": { "alias": "hasUnlinkTemplateOption"; "required": false; }; "colorPickerDisabled": { "alias": "colorPickerDisabled"; "required": false; }; "disableTypeaheadIfSelected": { "alias": "disableTypeaheadIfSelected"; "required": false; }; "highlightText": { "alias": "highlightText"; "required": false; }; }, { "added": "added"; "removed": "removed"; }, ["dragHandle"], ["c8y-li-drag-handle"], false, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatapointSelectorListItemComponent, "c8y-datapoint-selector-list-item", never, { "defaultFormOptions": { "alias": "defaultFormOptions"; "required": false; }; "isSelected": { "alias": "isSelected"; "required": false; }; "isCollapsed": { "alias": "isCollapsed"; "required": false; }; "addButtonType": { "alias": "addButtonType"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "showActiveToggle": { "alias": "showActiveToggle"; "required": false; }; "activeToggleDisabled": { "alias": "activeToggleDisabled"; "required": false; }; "showOptions": { "alias": "showOptions"; "required": false; }; "datapointLibraryEntries": { "alias": "datapointLibraryEntries"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "optionToRemove": { "alias": "optionToRemove"; "required": false; }; "hasUnlinkTemplateOption": { "alias": "hasUnlinkTemplateOption"; "required": false; }; "colorPickerDisabled": { "alias": "colorPickerDisabled"; "required": false; }; "disableTypeaheadIfSelected": { "alias": "disableTypeaheadIfSelected"; "required": false; }; "highlightText": { "alias": "highlightText"; "required": false; }; }, { "added": "added"; "removed": "removed"; }, ["dragHandle"], ["c8y-li-drag-handle"], false, never>;
50
61
  }
51
62
  //# sourceMappingURL=datapoint-selector-list-item.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-selector-list-item.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAA6B,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,SAAS,EAGT,gBAAgB,EAChB,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,6BAA6B,EAE7B,UAAU,EACV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;;AAEtC,qBAgBa,kCAAmC,YAAW,oBAAoB,EAAE,SAAS;IA0B5E,OAAO,CAAC,WAAW;IAzB/B,SAAS,EAAE,SAAS,CAAC;IACZ,kBAAkB,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IAChE,UAAU,UAAS;IACnB,WAAW,UAAQ;IACnB,mBAAmB,UAAQ;IAC3B,QAAQ,UAAQ;IAChB,gBAAgB,UAAS;IACzB,oBAAoB,UAAS;IAC7B,WAAW,UAAS;IACpB,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,cAAc,UAAS;IACvB,uBAAuB,UAAS;IAC/B,KAAK,2BAAkC;IACvC,OAAO,2BAAkC;IAC1C,mBAAmB,UAAQ;IAC3B,0BAA0B,UAAS;IACnC,aAAa,EAAE,MAAM,CAAC;IACY,UAAU,EAAE,2BAA2B,CAAC;IAEnF,OAAO,SAAM;IACb,UAAU,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC9C,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;gBAED,WAAW,EAAE,WAAW;IAgB5C,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAerD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAO3C,QAAQ;IAIR,eAAe;IASf,MAAM;IAIN,OAAO,CAAC,SAAS,EAAE,MAAM;IASzB,uBAAuB,IAAI,IAAI;IAM/B,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB;IA8BpD,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,kBAAkB;yCApKf,kCAAkC;2CAAlC,kCAAkC;CAyK9C"}
1
+ {"version":3,"file":"datapoint-selector-list-item.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAA6B,MAAM,eAAe,CAAC;AACjG,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,SAAS,EAGT,gBAAgB,EAChB,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,6BAA6B,EAE7B,UAAU,EACV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;;AAEtC,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEjF,qBAgBa,kCAAmC,YAAW,oBAAoB,EAAE,SAAS;IA2B5E,OAAO,CAAC,WAAW;IA1B/B,SAAS,EAAE,SAAS,CAAC;IACZ,kBAAkB,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAM;IAChE,UAAU,UAAS;IACnB,WAAW,UAAQ;IACnB,aAAa,EAAE,aAAa,CAA4B;IACxD,QAAQ,UAAQ;IAChB,gBAAgB,UAAS;IACzB,oBAAoB,UAAS;IAC7B,WAAW,UAAS;IACpB,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,cAAc,UAAS;IACvB,uBAAuB,UAAS;IAC/B,KAAK,2BAAkC;IACvC,OAAO,2BAAkC;IAC1C,mBAAmB,UAAQ;IAC3B,0BAA0B,UAAS;IACnC,aAAa,EAAE,MAAM,CAAC;IACY,UAAU,EAAE,2BAA2B,CAAC;IAEnF,OAAO,SAAM;IACb,UAAU,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC9C,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc;;;;MAAkB;gBAEZ,WAAW,EAAE,WAAW;IAgB5C,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB;IAerD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAO3C,QAAQ;IAIR,eAAe;IASf,MAAM;IAIN,OAAO,CAAC,SAAS,EAAE,MAAM;IASzB,uBAAuB,IAAI,IAAI;IAM/B,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB;IA8BpD,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,kBAAkB;yCArKf,kCAAkC;2CAAlC,kCAAkC;CA0K9C"}
@@ -17,6 +17,8 @@ export declare class DatapointSelectorModalComponent implements OnInit {
17
17
  defaultActiveState: boolean;
18
18
  finishWithFirstSelection: boolean;
19
19
  ignoreDatapointTemplates: boolean;
20
+ itemsEditable: boolean;
21
+ datapointTemplatesOnly: boolean;
20
22
  assetSelectorConfig: Partial<DatapointSelectorModalAssetSelectorOptions>;
21
23
  readonly result: Promise<KPIDetails[]>;
22
24
  private save;
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-selector-modal.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACL,0CAA0C,EAC1C,UAAU,EACX,MAAM,8BAA8B,CAAC;;AAEtC,qBAIa,+BAAgC,YAAW,MAAM;IAqBhD,OAAO,CAAC,OAAO;IAAc,OAAO,CAAC,UAAU;IApB3D,YAAY,EAAE,WAAW,CAAC;IAC1B,oBAAoB,UAAQ;IAC5B,WAAW,UAAQ;IACnB,iCAAiC,UAAQ;IACzC,kBAAkB,eAA2B;IAC7C,KAAK,EAAE,MAAM,CAAkC;IAC/C,eAAe,EAAE,MAAM,CAA8B;IACrD,kBAAkB,UAAQ;IAC1B,kBAAkB,UAAQ;IAC1B,wBAAwB,UAAS;IACjC,wBAAwB,UAAS;IACjC,mBAAmB,EAAE,OAAO,CAAC,0CAA0C,CAAC,CAAM;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAGnC;IAEH,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,MAAM,CAAyB;gBAEnB,OAAO,EAAE,UAAU,EAAU,UAAU,EAAE,UAAU;IAEvE,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;IAKnB,KAAK;IAKL,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC;IAO5C;;;;OAIG;IACH,OAAO,CAAC,4DAA4D;yCAjDzD,+BAA+B;2CAA/B,+BAA+B;CAwD3C"}
1
+ {"version":3,"file":"datapoint-selector-modal.component.d.ts","sourceRoot":"","sources":["../../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACL,0CAA0C,EAC1C,UAAU,EACX,MAAM,8BAA8B,CAAC;;AAEtC,qBAIa,+BAAgC,YAAW,MAAM;IAwB1D,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAxBpB,YAAY,EAAE,WAAW,CAAC;IAC1B,oBAAoB,UAAQ;IAC5B,WAAW,UAAQ;IACnB,iCAAiC,UAAQ;IACzC,kBAAkB,eAA2B;IAC7C,KAAK,EAAE,MAAM,CAAkC;IAC/C,eAAe,EAAE,MAAM,CAA8B;IACrD,kBAAkB,UAAQ;IAC1B,kBAAkB,UAAQ;IAC1B,wBAAwB,UAAS;IACjC,wBAAwB,UAAS;IACjC,aAAa,UAAQ;IACrB,sBAAsB,UAAS;IAC/B,mBAAmB,EAAE,OAAO,CAAC,0CAA0C,CAAC,CAAM;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAGnC;IAEH,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,MAAM,CAAyB;gBAG7B,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU;IAGhC,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;IAKnB,KAAK;IAKL,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC;IAO5C;;;;OAIG;IACH,OAAO,CAAC,4DAA4D;yCAtDzD,+BAA+B;2CAA/B,+BAA+B;CA6D3C"}
@@ -13,11 +13,21 @@ export declare class DatapointSelectorComponent implements OnInit, ControlValueA
13
13
  selectedDatapoints: KPIDetails[];
14
14
  defaultActiveState: boolean;
15
15
  ignoreDatapointTemplates: boolean;
16
+ datapointTemplatesOnly: boolean;
16
17
  guessDatapointUnit: boolean;
17
18
  allowSearch: boolean;
18
19
  hideSelection: boolean;
20
+ itemsEditable: boolean;
19
21
  searchString: string;
20
22
  maxNumberOfDatapoints: number;
23
+ selectorTitle: string;
24
+ emptyStateTitle: string;
25
+ selectedListTitle: string;
26
+ AddButtonTypes: {
27
+ readonly none: "none";
28
+ readonly addRemove: "add-remove";
29
+ readonly select: "select";
30
+ };
21
31
  loadingDatapoints: boolean;
22
32
  assetSelection: BehaviorSubject<IIdentified>;
23
33
  datapoints$: Observable<KPIDetails[]>;
@@ -47,6 +57,6 @@ export declare class DatapointSelectorComponent implements OnInit, ControlValueA
47
57
  private markAsTouched;
48
58
  private includesSearchString;
49
59
  static ɵfac: i0.ɵɵFactoryDeclaration<DatapointSelectorComponent, never>;
50
- static ɵcmp: i0.ɵɵComponentDeclaration<DatapointSelectorComponent, "c8y-datapoint-selector", never, { "contextAsset": { "alias": "contextAsset"; "required": false; }; "allowChangingContext": { "alias": "allowChangingContext"; "required": false; }; "allowDatapointsFromMultipleAssets": { "alias": "allowDatapointsFromMultipleAssets"; "required": false; }; "defaultActiveState": { "alias": "defaultActiveState"; "required": false; }; "ignoreDatapointTemplates": { "alias": "ignoreDatapointTemplates"; "required": false; }; "guessDatapointUnit": { "alias": "guessDatapointUnit"; "required": false; }; "allowSearch": { "alias": "allowSearch"; "required": false; }; "hideSelection": { "alias": "hideSelection"; "required": false; }; }, {}, never, never, false, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatapointSelectorComponent, "c8y-datapoint-selector", never, { "contextAsset": { "alias": "contextAsset"; "required": false; }; "allowChangingContext": { "alias": "allowChangingContext"; "required": false; }; "allowDatapointsFromMultipleAssets": { "alias": "allowDatapointsFromMultipleAssets"; "required": false; }; "defaultActiveState": { "alias": "defaultActiveState"; "required": false; }; "ignoreDatapointTemplates": { "alias": "ignoreDatapointTemplates"; "required": false; }; "datapointTemplatesOnly": { "alias": "datapointTemplatesOnly"; "required": false; }; "guessDatapointUnit": { "alias": "guessDatapointUnit"; "required": false; }; "allowSearch": { "alias": "allowSearch"; "required": false; }; "hideSelection": { "alias": "hideSelection"; "required": false; }; "itemsEditable": { "alias": "itemsEditable"; "required": false; }; }, {}, never, never, false, never>;
51
61
  }
52
62
  //# sourceMappingURL=datapoint-selector.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datapoint-selector.component.d.ts","sourceRoot":"","sources":["../../datapoint-selector/datapoint-selector.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAuB,UAAU,EAAE,MAAM,MAAM,CAAC;AASxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;;AAE3E,qBAWa,0BAA2B,YAAW,MAAM,EAAE,oBAAoB;IA8BjE,OAAO,CAAC,gBAAgB;IA7B3B,YAAY,EAAE,WAAW,CAAC;IAC1B,oBAAoB,UAAQ;IAC5B,iCAAiC,UAAQ;IAClD,kBAAkB,eAA2B;IACpC,kBAAkB,UAAQ;IAC1B,wBAAwB,UAAS;IACjC,kBAAkB,UAAQ;IAC1B,WAAW,UAAQ;IACnB,aAAa,UAAS;IAC/B,YAAY,SAAM;IAClB,qBAAqB,SAAM;IAE3B,iBAAiB,UAAS;IAC1B,cAAc,+BAA0C;IACxD,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACtC,mBAAmB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEnE,0CAA0C,6BAAuC;IACjF,yCAAyC,oDAEvC;IAEF,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,SAAS,CAAa;gBAEV,gBAAgB,EAAE,uBAAuB;IAE7D,QAAQ,IAAI,IAAI;IAWhB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;IAInC,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAYpC,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAWtC,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI;IAiBxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAInD,mBAAmB,CAAC,QAAQ,SAAK,GAAG,IAAI;IAKxC,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,oBAAoB;yCAlKjB,0BAA0B;2CAA1B,0BAA0B;CAoLtC"}
1
+ {"version":3,"file":"datapoint-selector.component.d.ts","sourceRoot":"","sources":["../../datapoint-selector/datapoint-selector.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAuB,UAAU,EAAE,MAAM,MAAM,CAAC;AASxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;;AAG3E,qBAWa,0BAA2B,YAAW,MAAM,EAAE,oBAAoB;IAoCjE,OAAO,CAAC,gBAAgB;IAnC3B,YAAY,EAAE,WAAW,CAAC;IAC1B,oBAAoB,UAAQ;IAC5B,iCAAiC,UAAQ;IAClD,kBAAkB,eAA2B;IACpC,kBAAkB,UAAQ;IAC1B,wBAAwB,UAAS;IACjC,sBAAsB,UAAS;IAC/B,kBAAkB,UAAQ;IAC1B,WAAW,UAAQ;IACnB,aAAa,UAAS;IACtB,aAAa,UAAQ;IAC9B,YAAY,SAAM;IAClB,qBAAqB,SAAM;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc;;;;MAAkB;IAEhC,iBAAiB,UAAS;IAC1B,cAAc,+BAA0C;IACxD,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACtC,mBAAmB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,uBAAuB,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEnE,0CAA0C,6BAAuC;IACjF,yCAAyC,oDAEvC;IAEF,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,SAAS,CAAa;gBAEV,gBAAgB,EAAE,uBAAuB;IAE7D,QAAQ,IAAI,IAAI;IAoBhB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI;IAInC,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAYpC,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAWtC,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI;IAiBxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAInD,mBAAmB,CAAC,QAAQ,SAAK,GAAG,IAAI;IAKxC,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,oBAAoB;yCArLjB,0BAA0B;2CAA1B,0BAA0B;CAuMtC"}
@@ -79,7 +79,7 @@ export class DatapointLibraryService {
79
79
  }
80
80
  return datapoints;
81
81
  }
82
- async getDatapointsOfAsset(parentReference, ignoreDatapointTemplates) {
82
+ async getDatapointsOfAsset(parentReference, ignoreDatapointTemplates, datapointTemplatesOnly = false) {
83
83
  const [kpiResponse, details] = await Promise.all([
84
84
  (ignoreDatapointTemplates
85
85
  ? Promise.resolve(null)
@@ -88,7 +88,7 @@ export class DatapointLibraryService {
88
88
  ]);
89
89
  const kpis = kpiResponse && kpiResponse.data ? kpiResponse.data : [];
90
90
  const sortedDetails = sortBy(details, ['fragment', 'series']);
91
- return await this.combineFragmentSeriesTuplesWithDetails(sortedDetails, parentReference, kpis);
91
+ return await this.combineFragmentSeriesTuplesWithDetails(sortedDetails, parentReference, kpis, datapointTemplatesOnly);
92
92
  }
93
93
  /**
94
94
  * Requests the last measurement with the given fragment and series to extract it's unit.
@@ -122,11 +122,15 @@ export class DatapointLibraryService {
122
122
  }
123
123
  return '';
124
124
  }
125
- async combineFragmentSeriesTuplesWithDetails(tuples, target, kpis) {
126
- const datapoints = tuples.map(tuple => {
125
+ async combineFragmentSeriesTuplesWithDetails(tuples, target, kpis, datapointTemplatesOnly = false) {
126
+ const datapoints = tuples
127
+ .map(tuple => {
127
128
  const foundDatapointLibraryEntry = kpis.find(kpi => kpi[DATAPOINT_LIBRARY_FRAGMENT] &&
128
129
  kpi[DATAPOINT_LIBRARY_FRAGMENT].fragment === tuple.fragment &&
129
130
  kpi[DATAPOINT_LIBRARY_FRAGMENT].series === tuple.series);
131
+ if (!foundDatapointLibraryEntry && datapointTemplatesOnly) {
132
+ return null;
133
+ }
130
134
  const datapoint = this.mapDatapointLibraryEntry(foundDatapointLibraryEntry) || tuple;
131
135
  if (!datapoint.label) {
132
136
  datapoint.label = `${datapoint.fragment} → ${datapoint.series}`;
@@ -136,7 +140,8 @@ export class DatapointLibraryService {
136
140
  }
137
141
  datapoint.__target = target;
138
142
  return datapoint;
139
- });
143
+ })
144
+ .filter(Boolean);
140
145
  await this.assignColorToDatapoints(datapoints);
141
146
  return datapoints;
142
147
  }
@@ -211,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
211
216
  type: Injectable,
212
217
  args: [{ providedIn: 'root' }]
213
218
  }], ctorParameters: () => [{ type: i1.InventoryService }, { type: i2.AppStateService }, { type: i1.MeasurementService }, { type: i2.ColorService }] });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtbGlicmFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUdMLGdCQUFnQixFQUVoQixrQkFBa0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsMEJBQTBCLEVBRzNCLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFHckMsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUNVLFNBQTJCLEVBQzNCLFFBQXlCLEVBQ3pCLFlBQWdDLEVBQ2hDLEtBQW1CO1FBSG5CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBRTNCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsbUNBQW1DLENBQUMsZUFBZSxHQUFHLEtBQUs7UUFDL0QsSUFBSSxl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O2FBQ3hCLENBQUMsQ0FBQztZQUNILE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxzRUFBc0U7WUFDdEUsMERBQTBEO1lBQzFELGdFQUFnRTtZQUNoRSxPQUFPLENBQUMsSUFBSSxDQUNWLHNFQUFzRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUNyRyxDQUFDO1lBQ0YsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQzs4R0FyUFUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIElJZGVudGlmaWVkLFxuICBJTWFuYWdlZE9iamVjdCxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgSVJlc3VsdExpc3QsXG4gIE1lYXN1cmVtZW50U2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIENvbG9yU2VydmljZSwgTUFYX1BBR0VfU0laRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZ2V0LCBzb3J0QnksIHVuaXEgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlQsXG4gIEtQSURldGFpbHMsXG4gIE1hbmFnZWRPYmplY3RLUElcbn0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB7XG4gIHByb3RlY3RlZCBjYWNoZTogUHJvbWlzZTxNYW5hZ2VkT2JqZWN0S1BJW10+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWFzdXJlbWVudHM6IE1lYXN1cmVtZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbG9yOiBDb2xvclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci5waXBlKGZpbHRlcih1c2VyID0+ICF1c2VyKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2FjaGUgPSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRBbGxEYXRhcG9pbnRMaWJyYXJ5RW50cmllc0NhY2hlZChmb3JjZUNhY2hlUmVuZXcgPSBmYWxzZSk6IFByb21pc2U8TWFuYWdlZE9iamVjdEtQSVtdPiB7XG4gICAgaWYgKGZvcmNlQ2FjaGVSZW5ldykge1xuICAgICAgdGhpcy5jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNhY2hlKSB7XG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5nZXRBbGxEYXRhcG9pbnRMaWJyYXJ5RW50cmllcygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpcnN0RGF0YXBvaW50TGlicmFyeVBhZ2UoKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj4ge1xuICAgIGNvbnN0IGZpbHRlck9iaiA9IHtcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgZnJhZ21lbnRUeXBlOiBEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3QoZmlsdGVyT2JqKSkgYXMgSVJlc3VsdExpc3Q8TWFuYWdlZE9iamVjdEtQST47XG4gIH1cblxuICBhc3luYyBnZXRBbGxEYXRhcG9pbnRMaWJyYXJ5SXRlbXNDYWNoZWQoKTogUHJvbWlzZTxLUElEZXRhaWxzW10+IHtcbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmdldEFsbERhdGFwb2ludExpYnJhcnlFbnRyaWVzKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2FjaGU7XG4gICAgcmV0dXJuIHJlcy5tYXAodG1wID0+IHRtcFtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGF0YXBvaW50cyhcbiAgICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW10sXG4gICAgc2tpcFVwZGF0aW5nVGFyZ2V0ID0gZmFsc2VcbiAgKTogUHJvbWlzZTxLUElEZXRhaWxzW10+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YXBvaW50cykpIHtcbiAgICAgIHJldHVybiBkYXRhcG9pbnRzO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0c1Byb21pc2U6IFByb21pc2U8SU1hbmFnZWRPYmplY3RbXT4gPSAhc2tpcFVwZGF0aW5nVGFyZ2V0XG4gICAgICA/IHRoaXMuZ2V0Q3VycmVudFZlcnNpb25PZlRhcmdldHNGcm9tRGF0YXBvaW50cyhkYXRhcG9pbnRzKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIGNvbnN0IFtjdXJyZW50VGVtcGxhdGVzLCBjdXJyZW50VGFyZ2V0c10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmdldEN1cnJlbnRUZW1wbGF0ZXNGcm9tRGF0YXBvaW50cyhkYXRhcG9pbnRzKSxcbiAgICAgIGN1cnJlbnRUYXJnZXRzUHJvbWlzZVxuICAgIF0pO1xuICAgIGNvbnN0IGN1cnJlbnRUZW1wbGF0ZVZlcnNpb25zID0gY3VycmVudFRlbXBsYXRlc1xuICAgICAgLm1hcCh0bXAgPT4gdGhpcy5tYXBEYXRhcG9pbnRMaWJyYXJ5RW50cnkodG1wIGFzIE1hbmFnZWRPYmplY3RLUEkpKVxuICAgICAgLmZpbHRlcih0bXAgPT4gISF0bXApO1xuICAgIGZvciAoY29uc3QgZGF0YXBvaW50IG9mIGRhdGFwb2ludHMpIHtcbiAgICAgIGNvbnN0IHsgZnJhZ21lbnQsIHNlcmllcywgX19hY3RpdmUsIF9fdGFyZ2V0LCBjb2xvciwgbGFiZWwsIF9fdGVtcGxhdGUgfSA9IGRhdGFwb2ludDtcbiAgICAgIGNvbnN0IGZvdW5kQ3VycmVudFRlbXBsYXRlVmVyc2lvbiA9IGN1cnJlbnRUZW1wbGF0ZVZlcnNpb25zLmZpbmQoXG4gICAgICAgIHRtcCA9PiB0bXAuX190ZW1wbGF0ZSA9PT0gZGF0YXBvaW50Ll9fdGVtcGxhdGVcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmRDdXJyZW50VGVtcGxhdGVWZXJzaW9uKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YXBvaW50LCBmb3VuZEN1cnJlbnRUZW1wbGF0ZVZlcnNpb24pO1xuICAgICAgICBPYmplY3QuYXNzaWduKGRhdGFwb2ludCwge1xuICAgICAgICAgIGZyYWdtZW50LFxuICAgICAgICAgIHNlcmllcyxcbiAgICAgICAgICBfX2FjdGl2ZSxcbiAgICAgICAgICBfX3RhcmdldCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBfX3RlbXBsYXRlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3VuZEN1cnJlbnRUYXJnZXQgPSBjdXJyZW50VGFyZ2V0cy5maW5kKHRhcmdldCA9PiB0YXJnZXQuaWQgPT09IF9fdGFyZ2V0Py5pZCk7XG4gICAgICBpZiAoZm91bmRDdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgIGNvbnN0IHsgaWQsIG5hbWUgfSA9IGZvdW5kQ3VycmVudFRhcmdldDtcbiAgICAgICAgZGF0YXBvaW50Ll9fdGFyZ2V0ID0geyBpZCwgbmFtZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YXBvaW50cztcbiAgfVxuXG4gIGFzeW5jIGdldERhdGFwb2ludHNPZkFzc2V0KFxuICAgIHBhcmVudFJlZmVyZW5jZTogSUlkZW50aWZpZWQsXG4gICAgaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzPzogYm9vbGVhblxuICApOiBQcm9taXNlPEtQSURldGFpbHNbXT4ge1xuICAgIGNvbnN0IFtrcGlSZXNwb25zZSwgZGV0YWlsc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAoaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKG51bGwpXG4gICAgICAgIDogdGhpcy5pbnZlbnRvcnkuYXNzZXRLUElzTGlzdChwYXJlbnRSZWZlcmVuY2UsIHsgcGFnZVNpemU6IE1BWF9QQUdFX1NJWkUgfSkpIGFzIFByb21pc2U8XG4gICAgICAgIElSZXN1bHRMaXN0PE1hbmFnZWRPYmplY3RLUEk+XG4gICAgICA+LFxuICAgICAgdGhpcy5pbnZlbnRvcnkuZ2V0TWVhc3VyZW1lbnRzQW5kU2VyaWVzKHBhcmVudFJlZmVyZW5jZSlcbiAgICBdKTtcbiAgICBjb25zdCBrcGlzID0ga3BpUmVzcG9uc2UgJiYga3BpUmVzcG9uc2UuZGF0YSA/IGtwaVJlc3BvbnNlLmRhdGEgOiBbXTtcbiAgICBjb25zdCBzb3J0ZWREZXRhaWxzID0gc29ydEJ5KGRldGFpbHMsIFsnZnJhZ21lbnQnLCAnc2VyaWVzJ10pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tYmluZUZyYWdtZW50U2VyaWVzVHVwbGVzV2l0aERldGFpbHMoc29ydGVkRGV0YWlscywgcGFyZW50UmVmZXJlbmNlLCBrcGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyB0aGUgbGFzdCBtZWFzdXJlbWVudCB3aXRoIHRoZSBnaXZlbiBmcmFnbWVudCBhbmQgc2VyaWVzIHRvIGV4dHJhY3QgaXQncyB1bml0LlxuICAgKiBJZiB0aGUgc291cmNlIGF0dHJpYnV0ZSBpcyBwcm92aWRlZCwgaXQgd2lsbCBjaGVjayB0aGUgbGFzdCBtZWFzdXJlbWVudCBmb3IgdGhpcyBzcGVjaWZpYyBzb3VyY2UuXG4gICAqIEByZXR1cm5zIGZvdW5kIHVuaXQgb3IgYW4gZW1wdHkgc3RyaW5nIGluc3RlYWRcbiAgICovXG4gIGFzeW5jIGd1ZXNzVW5pdE9mRGF0YXBvaW50KFxuICAgIGZyYWdtZW50OiBzdHJpbmcsXG4gICAgc2VyaWVzOiBzdHJpbmcsXG4gICAgc291cmNlPzogSUlkZW50aWZpZWRcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBtZWFzdXJlbWVudGZpbHRlcjogYW55ID0ge1xuICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGZyYWdtZW50LFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICByZXZlcnQ6IHRydWUsXG4gICAgICBkYXRlRnJvbTogJzE5NzAtMDEtMDEnXG4gICAgfTtcbiAgICBpZiAoc291cmNlPy5pZCkge1xuICAgICAgbWVhc3VyZW1lbnRmaWx0ZXIuc291cmNlID0gc291cmNlPy5pZDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogbGFzdE1lYXN1cmVtZW50cyB9ID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudHMubGlzdChtZWFzdXJlbWVudGZpbHRlcik7XG4gICAgICBjb25zdCBtZWFzdXJlbWVudCA9IGxhc3RNZWFzdXJlbWVudHNbMF07XG4gICAgICBpZiAobWVhc3VyZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcGF0aFRvVW5pdCA9IGAke2ZyYWdtZW50fS4ke3Nlcmllc30udW5pdGA7XG4gICAgICAgIGNvbnN0IHVuaXQgPSBnZXQobWVhc3VyZW1lbnQsIHBhdGhUb1VuaXQpO1xuICAgICAgICBpZiAodW5pdD8ubGVuZ3RoICYmIHR5cGVvZiB1bml0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB1bml0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21iaW5lRnJhZ21lbnRTZXJpZXNUdXBsZXNXaXRoRGV0YWlscyhcbiAgICB0dXBsZXM6IEFycmF5PHsgZnJhZ21lbnQ6IHN0cmluZzsgc2VyaWVzOiBzdHJpbmcgfT4sXG4gICAgdGFyZ2V0OiBJSWRlbnRpZmllZCxcbiAgICBrcGlzOiBNYW5hZ2VkT2JqZWN0S1BJW11cbiAgKSB7XG4gICAgY29uc3QgZGF0YXBvaW50cyA9IHR1cGxlcy5tYXAodHVwbGUgPT4ge1xuICAgICAgY29uc3QgZm91bmREYXRhcG9pbnRMaWJyYXJ5RW50cnkgPSBrcGlzLmZpbmQoXG4gICAgICAgIGtwaSA9PlxuICAgICAgICAgIGtwaVtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF0gJiZcbiAgICAgICAgICBrcGlbREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlRdLmZyYWdtZW50ID09PSB0dXBsZS5mcmFnbWVudCAmJlxuICAgICAgICAgIGtwaVtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF0uc2VyaWVzID09PSB0dXBsZS5zZXJpZXNcbiAgICAgICk7XG4gICAgICBjb25zdCBkYXRhcG9pbnQ6IEtQSURldGFpbHMgPVxuICAgICAgICB0aGlzLm1hcERhdGFwb2ludExpYnJhcnlFbnRyeShmb3VuZERhdGFwb2ludExpYnJhcnlFbnRyeSkgfHwgdHVwbGU7XG4gICAgICBpZiAoIWRhdGFwb2ludC5sYWJlbCkge1xuICAgICAgICBkYXRhcG9pbnQubGFiZWwgPSBgJHtkYXRhcG9pbnQuZnJhZ21lbnR9IOKGkiAke2RhdGFwb2ludC5zZXJpZXN9YDtcbiAgICAgIH1cbiAgICAgIGlmICghZGF0YXBvaW50LnVuaXQ/Lmxlbmd0aCkge1xuICAgICAgICBkYXRhcG9pbnQudW5pdCA9ICcnO1xuICAgICAgfVxuICAgICAgZGF0YXBvaW50Ll9fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgcmV0dXJuIGRhdGFwb2ludDtcbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLmFzc2lnbkNvbG9yVG9EYXRhcG9pbnRzKGRhdGFwb2ludHMpO1xuICAgIHJldHVybiBkYXRhcG9pbnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGFzc2lnbkNvbG9yVG9EYXRhcG9pbnRzKGRhdGFwb2ludHM6IEtQSURldGFpbHNbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGFwb2ludHNXaXRob3V0Q29sb3IgPSBkYXRhcG9pbnRzLmZpbHRlcihkYXRhcG9pbnQgPT4gIWRhdGFwb2ludC5jb2xvcik7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBkYXRhcG9pbnRzV2l0aG91dENvbG9yLm1hcChkYXRhcG9pbnQgPT5cbiAgICAgICAgdGhpcy5jb2xvclxuICAgICAgICAgIC5nZW5lcmF0ZUNvbG9yRm9yRGF0YXBvaW50KGRhdGFwb2ludC5mcmFnbWVudCwgZGF0YXBvaW50LnNlcmllcylcbiAgICAgICAgICAudGhlbihjb2xvciA9PiAoZGF0YXBvaW50LmNvbG9yID0gY29sb3IpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QWxsRGF0YXBvaW50TGlicmFyeUVudHJpZXMoKTogUHJvbWlzZTxNYW5hZ2VkT2JqZWN0S1BJW10+IHtcbiAgICBjb25zdCBlbnRyaWVzID0gbmV3IEFycmF5PE1hbmFnZWRPYmplY3RLUEk+KCk7XG4gICAgY29uc3QgZmlsdGVyT2JqID0ge1xuICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICBwYWdlU2l6ZTogTUFYX1BBR0VfU0laRSxcbiAgICAgIGZyYWdtZW50VHlwZTogREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlRcbiAgICB9O1xuICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KGZpbHRlck9iaik7XG4gICAgd2hpbGUgKHJlcy5kYXRhLmxlbmd0aCkge1xuICAgICAgZW50cmllcy5wdXNoKC4uLihyZXMuZGF0YSBhcyBNYW5hZ2VkT2JqZWN0S1BJW10pKTtcbiAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGggPCByZXMucGFnaW5nLnBhZ2VTaXplKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKCFyZXMucGFnaW5nLm5leHRQYWdlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXMgPSBhd2FpdCByZXMucGFnaW5nLm5leHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFwRGF0YXBvaW50TGlicmFyeUVudHJ5KGVudHJ5OiBNYW5hZ2VkT2JqZWN0S1BJKTogS1BJRGV0YWlscyB7XG4gICAgaWYgKCFlbnRyeSB8fCAhZW50cnlbREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlRdKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhcG9pbnQgPSBlbnRyeVtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF07XG4gICAgZGF0YXBvaW50Ll9fdGVtcGxhdGUgPSBlbnRyeS5pZDtcbiAgICByZXR1cm4gZGF0YXBvaW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEN1cnJlbnRUZW1wbGF0ZXNGcm9tRGF0YXBvaW50cyhcbiAgICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW11cbiAgKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhUZW1wbGF0ZUlkID0gZGF0YXBvaW50cy5maWx0ZXIoZHAgPT4gISFkcC5fX3RlbXBsYXRlKTtcbiAgICBjb25zdCB1c2VkVGVtcGxhdGVJZHMgPSBkYXRhcG9pbnRzV2l0aFRlbXBsYXRlSWQubWFwKGRwID0+IGRwLl9fdGVtcGxhdGUpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE1Pc0J5SWRzKHVzZWRUZW1wbGF0ZUlkcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Q3VycmVudFZlcnNpb25PZlRhcmdldHNGcm9tRGF0YXBvaW50cyhcbiAgICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW11cbiAgKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhUYXJnZXQgPSBkYXRhcG9pbnRzLmZpbHRlcihkcCA9PiAhIWRwLl9fdGFyZ2V0Py5pZCk7XG4gICAgY29uc3QgdXNlZFRhcmdldElkcyA9IGRhdGFwb2ludHNXaXRoVGFyZ2V0Lm1hcChkcCA9PiBkcC5fX3RhcmdldC5pZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TU9zQnlJZHModXNlZFRhcmdldElkcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0TU9zQnlJZHMoaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgdW5pcU1hbmFnZWRPYmplY3RJZHMgPSB1bmlxKGlkcyk7XG4gICAgaWYgKCF1bmlxTWFuYWdlZE9iamVjdElkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogbWFuYWdlZE9iamVjdHMgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgICBpZHM6IHVuaXFNYW5hZ2VkT2JqZWN0SWRzLmpvaW4oKSxcbiAgICAgICAgcGFnZVNpemU6IE1BWF9QQUdFX1NJWkVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1hbmFnZWRPYmplY3RzO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFpbCBzaWxlbnRseSBpbiBjYXNlIHdlIGFyZSBub3QgYWJsZSB0byB0YWxrIHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgcmVhY2hlZCBpbiBjYXNlIG9mIGFuIHNlcnZlciBzaWRlIGVycm9yLlxuICAgICAgLy8gaW5zdGVhZCBvZiBmYWlsaW5nLCBwcmV0ZW5kIGxpa2Ugd2UgZGlkbid0IHJlY2VpdmUgYW55IGl0ZW1zLlxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRmFpbGVkIHRvIGdldCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBmb2xsb3dpbmcgbWFuYWdlZE9iamVjdHM6ICR7dW5pcU1hbmFnZWRPYmplY3RJZHMuam9pbigpfS5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtbGlicmFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUdMLGdCQUFnQixFQUVoQixrQkFBa0IsRUFDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsMEJBQTBCLEVBRzNCLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFHckMsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUNVLFNBQTJCLEVBQzNCLFFBQXlCLEVBQ3pCLFlBQWdDLEVBQ2hDLEtBQW1CO1FBSG5CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBRTNCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsbUNBQW1DLENBQUMsZUFBZSxHQUFHLEtBQUs7UUFDL0QsSUFBSSxl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O1FBQ1osQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDekQsR0FBRyxFQUFFLG9CQUFvQixDQUFDLElBQUksRUFBRTtnQkFDaEMsUUFBUSxFQUFFLGFBQWE7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLHNFQUFzRTtZQUN0RSwwREFBMEQ7WUFDMUQsZ0VBQWdFO1lBQ2hFLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysc0VBQXNFLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQ3JHLENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOzhHQWpRVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQURWLE1BQU07OzJGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUlkZW50aWZpZWQsXG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJbnZlbnRvcnlTZXJ2aWNlLFxuICBJUmVzdWx0TGlzdCxcbiAgTWVhc3VyZW1lbnRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgQ29sb3JTZXJ2aWNlLCBNQVhfUEFHRV9TSVpFIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXQsIHNvcnRCeSwgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVCxcbiAgS1BJRGV0YWlscyxcbiAgTWFuYWdlZE9iamVjdEtQSVxufSBmcm9tICcuL2RhdGFwb2ludC1zZWxlY3Rpb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludExpYnJhcnlTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGNhY2hlOiBQcm9taXNlPE1hbmFnZWRPYmplY3RLUElbXT47XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50czogTWVhc3VyZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sb3I6IENvbG9yU2VydmljZVxuICApIHtcbiAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnBpcGUoZmlsdGVyKHVzZXIgPT4gIXVzZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEFsbERhdGFwb2ludExpYnJhcnlFbnRyaWVzQ2FjaGVkKGZvcmNlQ2FjaGVSZW5ldyA9IGZhbHNlKTogUHJvbWlzZTxNYW5hZ2VkT2JqZWN0S1BJW10+IHtcbiAgICBpZiAoZm9yY2VDYWNoZVJlbmV3KSB7XG4gICAgICB0aGlzLmNhY2hlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmdldEFsbERhdGFwb2ludExpYnJhcnlFbnRyaWVzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rmlyc3REYXRhcG9pbnRMaWJyYXJ5UGFnZSgpOiBQcm9taXNlPElSZXN1bHRMaXN0PE1hbmFnZWRPYmplY3RLUEk+PiB7XG4gICAgY29uc3QgZmlsdGVyT2JqID0ge1xuICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICBwYWdlU2l6ZTogNTAsXG4gICAgICBmcmFnbWVudFR5cGU6IERBVEFQT0lOVF9MSUJSQVJZX0ZSQUdNRU5ULFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdChmaWx0ZXJPYmopKSBhcyBJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPjtcbiAgfVxuXG4gIGFzeW5jIGdldEFsbERhdGFwb2ludExpYnJhcnlJdGVtc0NhY2hlZCgpOiBQcm9taXNlPEtQSURldGFpbHNbXT4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuZ2V0QWxsRGF0YXBvaW50TGlicmFyeUVudHJpZXMoKTtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jYWNoZTtcbiAgICByZXR1cm4gcmVzLm1hcCh0bXAgPT4gdG1wW0RBVEFQT0lOVF9MSUJSQVJZX0ZSQUdNRU5UXSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEYXRhcG9pbnRzKFxuICAgIGRhdGFwb2ludHM6IEtQSURldGFpbHNbXSxcbiAgICBza2lwVXBkYXRpbmdUYXJnZXQgPSBmYWxzZVxuICApOiBQcm9taXNlPEtQSURldGFpbHNbXT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhcG9pbnRzKSkge1xuICAgICAgcmV0dXJuIGRhdGFwb2ludHM7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXRzUHJvbWlzZTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiA9ICFza2lwVXBkYXRpbmdUYXJnZXRcbiAgICAgID8gdGhpcy5nZXRDdXJyZW50VmVyc2lvbk9mVGFyZ2V0c0Zyb21EYXRhcG9pbnRzKGRhdGFwb2ludHMpXG4gICAgICA6IFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgY29uc3QgW2N1cnJlbnRUZW1wbGF0ZXMsIGN1cnJlbnRUYXJnZXRzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0Q3VycmVudFRlbXBsYXRlc0Zyb21EYXRhcG9pbnRzKGRhdGFwb2ludHMpLFxuICAgICAgY3VycmVudFRhcmdldHNQcm9taXNlXG4gICAgXSk7XG4gICAgY29uc3QgY3VycmVudFRlbXBsYXRlVmVyc2lvbnMgPSBjdXJyZW50VGVtcGxhdGVzXG4gICAgICAubWFwKHRtcCA9PiB0aGlzLm1hcERhdGFwb2ludExpYnJhcnlFbnRyeSh0bXAgYXMgTWFuYWdlZE9iamVjdEtQSSkpXG4gICAgICAuZmlsdGVyKHRtcCA9PiAhIXRtcCk7XG4gICAgZm9yIChjb25zdCBkYXRhcG9pbnQgb2YgZGF0YXBvaW50cykge1xuICAgICAgY29uc3QgeyBmcmFnbWVudCwgc2VyaWVzLCBfX2FjdGl2ZSwgX190YXJnZXQsIGNvbG9yLCBsYWJlbCwgX190ZW1wbGF0ZSB9ID0gZGF0YXBvaW50O1xuICAgICAgY29uc3QgZm91bmRDdXJyZW50VGVtcGxhdGVWZXJzaW9uID0gY3VycmVudFRlbXBsYXRlVmVyc2lvbnMuZmluZChcbiAgICAgICAgdG1wID0+IHRtcC5fX3RlbXBsYXRlID09PSBkYXRhcG9pbnQuX190ZW1wbGF0ZVxuICAgICAgKTtcbiAgICAgIGlmIChmb3VuZEN1cnJlbnRUZW1wbGF0ZVZlcnNpb24pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhcG9pbnQsIGZvdW5kQ3VycmVudFRlbXBsYXRlVmVyc2lvbik7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YXBvaW50LCB7XG4gICAgICAgICAgZnJhZ21lbnQsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIF9fYWN0aXZlLFxuICAgICAgICAgIF9fdGFyZ2V0LFxuICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIF9fdGVtcGxhdGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kQ3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXRzLmZpbmQodGFyZ2V0ID0+IHRhcmdldC5pZCA9PT0gX190YXJnZXQ/LmlkKTtcbiAgICAgIGlmIChmb3VuZEN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgY29uc3QgeyBpZCwgbmFtZSB9ID0gZm91bmRDdXJyZW50VGFyZ2V0O1xuICAgICAgICBkYXRhcG9pbnQuX190YXJnZXQgPSB7IGlkLCBuYW1lIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhcG9pbnRzO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGF0YXBvaW50c09mQXNzZXQoXG4gICAgcGFyZW50UmVmZXJlbmNlOiBJSWRlbnRpZmllZCxcbiAgICBpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXM/OiBib29sZWFuLFxuICAgIGRhdGFwb2ludFRlbXBsYXRlc09ubHkgPSBmYWxzZVxuICApOiBQcm9taXNlPEtQSURldGFpbHNbXT4ge1xuICAgIGNvbnN0IFtrcGlSZXNwb25zZSwgZGV0YWlsc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAoaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKG51bGwpXG4gICAgICAgIDogdGhpcy5pbnZlbnRvcnkuYXNzZXRLUElzTGlzdChwYXJlbnRSZWZlcmVuY2UsIHsgcGFnZVNpemU6IE1BWF9QQUdFX1NJWkUgfSkpIGFzIFByb21pc2U8XG4gICAgICAgIElSZXN1bHRMaXN0PE1hbmFnZWRPYmplY3RLUEk+XG4gICAgICA+LFxuICAgICAgdGhpcy5pbnZlbnRvcnkuZ2V0TWVhc3VyZW1lbnRzQW5kU2VyaWVzKHBhcmVudFJlZmVyZW5jZSlcbiAgICBdKTtcbiAgICBjb25zdCBrcGlzID0ga3BpUmVzcG9uc2UgJiYga3BpUmVzcG9uc2UuZGF0YSA/IGtwaVJlc3BvbnNlLmRhdGEgOiBbXTtcbiAgICBjb25zdCBzb3J0ZWREZXRhaWxzID0gc29ydEJ5KGRldGFpbHMsIFsnZnJhZ21lbnQnLCAnc2VyaWVzJ10pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tYmluZUZyYWdtZW50U2VyaWVzVHVwbGVzV2l0aERldGFpbHMoXG4gICAgICBzb3J0ZWREZXRhaWxzLFxuICAgICAgcGFyZW50UmVmZXJlbmNlLFxuICAgICAga3BpcyxcbiAgICAgIGRhdGFwb2ludFRlbXBsYXRlc09ubHlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIHRoZSBsYXN0IG1lYXN1cmVtZW50IHdpdGggdGhlIGdpdmVuIGZyYWdtZW50IGFuZCBzZXJpZXMgdG8gZXh0cmFjdCBpdCdzIHVuaXQuXG4gICAqIElmIHRoZSBzb3VyY2UgYXR0cmlidXRlIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGNoZWNrIHRoZSBsYXN0IG1lYXN1cmVtZW50IGZvciB0aGlzIHNwZWNpZmljIHNvdXJjZS5cbiAgICogQHJldHVybnMgZm91bmQgdW5pdCBvciBhbiBlbXB0eSBzdHJpbmcgaW5zdGVhZFxuICAgKi9cbiAgYXN5bmMgZ3Vlc3NVbml0T2ZEYXRhcG9pbnQoXG4gICAgZnJhZ21lbnQ6IHN0cmluZyxcbiAgICBzZXJpZXM6IHN0cmluZyxcbiAgICBzb3VyY2U/OiBJSWRlbnRpZmllZFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG1lYXN1cmVtZW50ZmlsdGVyOiBhbnkgPSB7XG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBzZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnQsXG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIHJldmVydDogdHJ1ZSxcbiAgICAgIGRhdGVGcm9tOiAnMTk3MC0wMS0wMSdcbiAgICB9O1xuICAgIGlmIChzb3VyY2U/LmlkKSB7XG4gICAgICBtZWFzdXJlbWVudGZpbHRlci5zb3VyY2UgPSBzb3VyY2U/LmlkO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhOiBsYXN0TWVhc3VyZW1lbnRzIH0gPSBhd2FpdCB0aGlzLm1lYXN1cmVtZW50cy5saXN0KG1lYXN1cmVtZW50ZmlsdGVyKTtcbiAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID0gbGFzdE1lYXN1cmVtZW50c1swXTtcbiAgICAgIGlmIChtZWFzdXJlbWVudCkge1xuICAgICAgICBjb25zdCBwYXRoVG9Vbml0ID0gYCR7ZnJhZ21lbnR9LiR7c2VyaWVzfS51bml0YDtcbiAgICAgICAgY29uc3QgdW5pdCA9IGdldChtZWFzdXJlbWVudCwgcGF0aFRvVW5pdCk7XG4gICAgICAgIGlmICh1bml0Py5sZW5ndGggJiYgdHlwZW9mIHVuaXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHVuaXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbWJpbmVGcmFnbWVudFNlcmllc1R1cGxlc1dpdGhEZXRhaWxzKFxuICAgIHR1cGxlczogQXJyYXk8eyBmcmFnbWVudDogc3RyaW5nOyBzZXJpZXM6IHN0cmluZyB9PixcbiAgICB0YXJnZXQ6IElJZGVudGlmaWVkLFxuICAgIGtwaXM6IE1hbmFnZWRPYmplY3RLUElbXSxcbiAgICBkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5ID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgZGF0YXBvaW50cyA9IHR1cGxlc1xuICAgICAgLm1hcCh0dXBsZSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kRGF0YXBvaW50TGlicmFyeUVudHJ5ID0ga3Bpcy5maW5kKFxuICAgICAgICAgIGtwaSA9PlxuICAgICAgICAgICAga3BpW0RBVEFQT0lOVF9MSUJSQVJZX0ZSQUdNRU5UXSAmJlxuICAgICAgICAgICAga3BpW0RBVEFQT0lOVF9MSUJSQVJZX0ZSQUdNRU5UXS5mcmFnbWVudCA9PT0gdHVwbGUuZnJhZ21lbnQgJiZcbiAgICAgICAgICAgIGtwaVtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF0uc2VyaWVzID09PSB0dXBsZS5zZXJpZXNcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFmb3VuZERhdGFwb2ludExpYnJhcnlFbnRyeSAmJiBkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YXBvaW50OiBLUElEZXRhaWxzID1cbiAgICAgICAgICB0aGlzLm1hcERhdGFwb2ludExpYnJhcnlFbnRyeShmb3VuZERhdGFwb2ludExpYnJhcnlFbnRyeSkgfHwgdHVwbGU7XG4gICAgICAgIGlmICghZGF0YXBvaW50LmxhYmVsKSB7XG4gICAgICAgICAgZGF0YXBvaW50LmxhYmVsID0gYCR7ZGF0YXBvaW50LmZyYWdtZW50fSDihpIgJHtkYXRhcG9pbnQuc2VyaWVzfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhcG9pbnQudW5pdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgZGF0YXBvaW50LnVuaXQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBkYXRhcG9pbnQuX190YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHJldHVybiBkYXRhcG9pbnQ7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBhd2FpdCB0aGlzLmFzc2lnbkNvbG9yVG9EYXRhcG9pbnRzKGRhdGFwb2ludHMpO1xuICAgIHJldHVybiBkYXRhcG9pbnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGFzc2lnbkNvbG9yVG9EYXRhcG9pbnRzKGRhdGFwb2ludHM6IEtQSURldGFpbHNbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGFwb2ludHNXaXRob3V0Q29sb3IgPSBkYXRhcG9pbnRzLmZpbHRlcihkYXRhcG9pbnQgPT4gIWRhdGFwb2ludC5jb2xvcik7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBkYXRhcG9pbnRzV2l0aG91dENvbG9yLm1hcChkYXRhcG9pbnQgPT5cbiAgICAgICAgdGhpcy5jb2xvclxuICAgICAgICAgIC5nZW5lcmF0ZUNvbG9yRm9yRGF0YXBvaW50KGRhdGFwb2ludC5mcmFnbWVudCwgZGF0YXBvaW50LnNlcmllcylcbiAgICAgICAgICAudGhlbihjb2xvciA9PiAoZGF0YXBvaW50LmNvbG9yID0gY29sb3IpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QWxsRGF0YXBvaW50TGlicmFyeUVudHJpZXMoKTogUHJvbWlzZTxNYW5hZ2VkT2JqZWN0S1BJW10+IHtcbiAgICBjb25zdCBlbnRyaWVzID0gbmV3IEFycmF5PE1hbmFnZWRPYmplY3RLUEk+KCk7XG4gICAgY29uc3QgZmlsdGVyT2JqID0ge1xuICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICBwYWdlU2l6ZTogTUFYX1BBR0VfU0laRSxcbiAgICAgIGZyYWdtZW50VHlwZTogREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlRcbiAgICB9O1xuICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KGZpbHRlck9iaik7XG4gICAgd2hpbGUgKHJlcy5kYXRhLmxlbmd0aCkge1xuICAgICAgZW50cmllcy5wdXNoKC4uLihyZXMuZGF0YSBhcyBNYW5hZ2VkT2JqZWN0S1BJW10pKTtcbiAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGggPCByZXMucGFnaW5nLnBhZ2VTaXplKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKCFyZXMucGFnaW5nLm5leHRQYWdlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXMgPSBhd2FpdCByZXMucGFnaW5nLm5leHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFwRGF0YXBvaW50TGlicmFyeUVudHJ5KGVudHJ5OiBNYW5hZ2VkT2JqZWN0S1BJKTogS1BJRGV0YWlscyB7XG4gICAgaWYgKCFlbnRyeSB8fCAhZW50cnlbREFUQVBPSU5UX0xJQlJBUllfRlJBR01FTlRdKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhcG9pbnQgPSBlbnRyeVtEQVRBUE9JTlRfTElCUkFSWV9GUkFHTUVOVF07XG4gICAgZGF0YXBvaW50Ll9fdGVtcGxhdGUgPSBlbnRyeS5pZDtcbiAgICByZXR1cm4gZGF0YXBvaW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEN1cnJlbnRUZW1wbGF0ZXNGcm9tRGF0YXBvaW50cyhcbiAgICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW11cbiAgKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhUZW1wbGF0ZUlkID0gZGF0YXBvaW50cy5maWx0ZXIoZHAgPT4gISFkcC5fX3RlbXBsYXRlKTtcbiAgICBjb25zdCB1c2VkVGVtcGxhdGVJZHMgPSBkYXRhcG9pbnRzV2l0aFRlbXBsYXRlSWQubWFwKGRwID0+IGRwLl9fdGVtcGxhdGUpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE1Pc0J5SWRzKHVzZWRUZW1wbGF0ZUlkcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Q3VycmVudFZlcnNpb25PZlRhcmdldHNGcm9tRGF0YXBvaW50cyhcbiAgICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW11cbiAgKTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhUYXJnZXQgPSBkYXRhcG9pbnRzLmZpbHRlcihkcCA9PiAhIWRwLl9fdGFyZ2V0Py5pZCk7XG4gICAgY29uc3QgdXNlZFRhcmdldElkcyA9IGRhdGFwb2ludHNXaXRoVGFyZ2V0Lm1hcChkcCA9PiBkcC5fX3RhcmdldC5pZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TU9zQnlJZHModXNlZFRhcmdldElkcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0TU9zQnlJZHMoaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogUHJvbWlzZTxJTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgdW5pcU1hbmFnZWRPYmplY3RJZHMgPSB1bmlxKGlkcyk7XG4gICAgaWYgKCF1bmlxTWFuYWdlZE9iamVjdElkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogbWFuYWdlZE9iamVjdHMgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgICBpZHM6IHVuaXFNYW5hZ2VkT2JqZWN0SWRzLmpvaW4oKSxcbiAgICAgICAgcGFnZVNpemU6IE1BWF9QQUdFX1NJWkVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1hbmFnZWRPYmplY3RzO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFpbCBzaWxlbnRseSBpbiBjYXNlIHdlIGFyZSBub3QgYWJsZSB0byB0YWxrIHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgcmVhY2hlZCBpbiBjYXNlIG9mIGFuIHNlcnZlciBzaWRlIGVycm9yLlxuICAgICAgLy8gaW5zdGVhZCBvZiBmYWlsaW5nLCBwcmV0ZW5kIGxpa2Ugd2UgZGlkbid0IHJlY2VpdmUgYW55IGl0ZW1zLlxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgRmFpbGVkIHRvIGdldCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBmb2xsb3dpbmcgbWFuYWdlZE9iamVjdHM6ICR7dW5pcU1hbmFnZWRPYmplY3RJZHMuam9pbigpfS5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -7,6 +7,7 @@ import { from, Observable } from 'rxjs';
7
7
  import { map, shareReplay, take, tap } from 'rxjs/operators';
8
8
  import { DatapointLibraryService } from '../datapoint-library.service';
9
9
  import { DatapointSelectorService } from '../datapoint-selector.service';
10
+ import { AddButtonTypes } from '../datapoint-selector-list-item/datapoint-selector-list-item.component';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "../datapoint-selector.service";
12
13
  import * as i2 from "../datapoint-library.service";
@@ -30,6 +31,7 @@ export class DatapointSelectionListComponent {
30
31
  this.resolveContext = true;
31
32
  this.listTitle = '';
32
33
  this.maxActiveCountReached = false;
34
+ this.AddButtonTypes = AddButtonTypes;
33
35
  this.usedValidators = {};
34
36
  this.formArray = this.formBuilder.array([]);
35
37
  this.isValid = this.formArray.statusChanges.pipe(map(status => status === 'VALID'));
@@ -131,7 +133,7 @@ export class DatapointSelectionListComponent {
131
133
  useExisting: forwardRef(() => DatapointSelectionListComponent),
132
134
  multi: true
133
135
  }
134
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
136
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [addButtonType]=\"AddButtonTypes.none\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "addButtonType", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] }); }
135
137
  }
136
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointSelectionListComponent, decorators: [{
137
139
  type: Component,
@@ -146,7 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
146
148
  useExisting: forwardRef(() => DatapointSelectionListComponent),
147
149
  multi: true
148
150
  }
149
- ], template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
151
+ ], template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [addButtonType]=\"AddButtonTypes.none\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
150
152
  }], ctorParameters: () => [{ type: i1.DatapointSelectorService }, { type: i2.DatapointLibraryService }, { type: i3.FormBuilder }, { type: i4.WidgetConfigComponent, decorators: [{
151
153
  type: Optional
152
154
  }] }], propDecorators: { actions: [{
@@ -170,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
170
172
  }], change: [{
171
173
  type: Output
172
174
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFJbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBa0J6RSxNQUFNLE9BQU8sK0JBQStCO0lBbUIxQyxZQUNVLGlCQUEyQyxFQUMzQyxnQkFBeUMsRUFDekMsV0FBd0IsRUFDWixlQUFzQztRQUhsRCxzQkFBaUIsR0FB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QkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQzh5VmFsaWRhdG9ycyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uL2RhdGFwb2ludC1saWJyYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50QWN0aW9uLFxuICBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyxcbiAgS1BJRGV0YWlscyxcbiAgTWFuYWdlZE9iamVjdEtQSVxufSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zIH0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsL2RhdGFwb2ludC1zZWxlY3Rvci1tb2RhbC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnQpXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0aW9uTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgYWN0aW9uczogRGF0YXBvaW50QWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgYWxsb3dEcmFnQW5kRHJvcCA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbmZpZzogUGFydGlhbDxEYXRhcG9pbnRTZWxlY3Rvck1vZGFsT3B0aW9ucz4gPSB7fTtcbiAgQElucHV0KCkgZGVmYXVsdEZvcm1PcHRpb25zOiBQYXJ0aWFsPERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29uZmlnPiA9IHt9O1xuICBASW5wdXQoKSBtYXhBY3RpdmVDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBtaW5BY3RpdmVDb3VudCA9IDE7XG4gIEBJbnB1dCgpIHJlc29sdmVDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgbGlzdFRpdGxlID0gJyc7XG4gIGZvcm1BcnJheTogRm9ybUFycmF5O1xuICBkYXRhcG9pbnRMaWJyYXJ5RW50cmllczogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj47XG4gIG1heEFjdGl2ZUNvdW50UmVhY2hlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBpc1ZhbGlkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2hhbmdlOiBPYnNlcnZhYmxlPGFueVtdPjtcbiAgcHJpdmF0ZSB1c2VkVmFsaWRhdG9yczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0b3JGbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRTZWxlY3RvcjogRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50TGlicmFyeTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3aWRnZXRDb21wb25lbnQ6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRoaXMuZm9ybUFycmF5LnN0YXR1c0NoYW5nZXMucGlwZShtYXAoc3RhdHVzID0+IHN0YXR1cyA9PT0gJ1ZBTElEJykpO1xuICAgIHRoaXMuZGF0YXBvaW50TGlicmFyeUVudHJpZXMgPSBmcm9tKHRoaXMuZGF0YXBvaW50TGlicmFyeS5nZXRGaXJzdERhdGFwb2ludExpYnJhcnlQYWdlKCkpLnBpcGUoXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLmNoYW5nZSA9IHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlcy5waXBlKG1hcChyZXMgPT4gdGhpcy50cmFuc2Zvcm1WYWx1ZShyZXMpKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2VzLm1heEFjdGl2ZUNvdW50ICYmICFjaGFuZ2VzLm1pbkFjdGl2ZUNvdW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICB0aGlzLnVzZWRWYWxpZGF0b3JzLm1heEFjdGl2ZUNvdW50ID0gQzh5VmFsaWRhdG9ycy5tYXhBY3RpdmVDb3VudCh0aGlzLm1heEFjdGl2ZUNvdW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5taW5BY3RpdmVDb3VudCkge1xuICAgICAgdGhpcy51c2VkVmFsaWRhdG9ycy5taW5BY3RpdmVDb3VudCA9IEM4eVZhbGlkYXRvcnMubWluQWN0aXZlQ291bnQodGhpcy5taW5BY3RpdmVDb3VudCk7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMudXNlZFZhbGlkYXRvcnMpO1xuICAgIHRoaXMuZm9ybUFycmF5LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkudmFsaWQgPyBudWxsIDogeyBmb3JtSW52YWxpZDoge30gfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLndpZGdldENvbXBvbmVudD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQgJiYgdGhpcy5yZXNvbHZlQ29udGV4dCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH0gPSBjb250ZXh0O1xuICAgICAgdGhpcy5jb25maWcuY29udGV4dEFzc2V0ID0geyBuYW1lLCBpZCwgYzh5X0lzRGV2aWNlIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUFycmF5LmNsZWFyKCk7XG4gICAgaWYgKG9iaj8ubGVuZ3RoKSB7XG4gICAgICBvYmouZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICBjb25zdCBmb3JtZ3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgZGV0YWlsczogW10gfSk7XG4gICAgICAgIGZvcm1ncm91cC5wYXRjaFZhbHVlKHsgZGV0YWlsczogdmFsIH0pO1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKGZvcm1ncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVNYXhBY3RpdmVDb3VudCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlKHJlcykpLFxuICAgICAgICAvLyBjaGVjayBtYXhBY3RpdmVDb3VudFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTWF4QWN0aXZlQ291bnQoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGFsbG93Q2hhbmdpbmdDb250ZXh0ID1cbiAgICAgICF0aGlzLndpZGdldENvbXBvbmVudD8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkICYmIHRoaXMuY29uZmlnPy5hbGxvd0NoYW5naW5nQ29udGV4dCAhPT0gZmFsc2U7XG4gICAgdGhpcy5kYXRhcG9pbnRTZWxlY3RvclxuICAgICAgLnNlbGVjdERhdGFQb2ludHMoe1xuICAgICAgICAuLi4odGhpcy5jb25maWcgfHwge30pLFxuICAgICAgICBzZWxlY3RlZERhdGFwb2ludHM6IHRoaXMudHJhbnNmb3JtVmFsdWUodGhpcy5mb3JtQXJyYXkudmFsdWUpLFxuICAgICAgICBkZWZhdWx0QWN0aXZlU3RhdGU6IHRydWUsXG4gICAgICAgIGFsbG93Q2hhbmdpbmdDb250ZXh0LFxuICAgICAgICBhbGxvd1NlYXJjaDogIXRoaXMuY29uZmlnPy5jb250ZXh0QXNzZXRcbiAgICAgIH0pXG4gICAgICAudGhlbihcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUocmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8sIG1vZGFsIHdhcyBjbG9zZWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIG9uSXRlbVJlbW92ZWQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEtQSURldGFpbHNbXT4pIHtcbiAgICBjb25zdCBjdXJyZW50U29ydGluZyA9IHRoaXMuZm9ybUFycmF5LnZhbHVlO1xuICAgIG1vdmVJdGVtSW5BcnJheShjdXJyZW50U29ydGluZywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRWYWx1ZShjdXJyZW50U29ydGluZyk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKGZvcm1BcnJheVZhbHVlOiBhbnlbXSkge1xuICAgIGlmICghZm9ybUFycmF5VmFsdWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1BcnJheVZhbHVlLm1hcCh0bXAgPT4gT2JqZWN0LmFzc2lnbih7fSwgLi4uT2JqZWN0LnZhbHVlcyh0bXApKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZU1heEFjdGl2ZUNvdW50KCkge1xuICAgIGlmICh0aGlzLm1heEFjdGl2ZUNvdW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50bHlBY3RpdmUgPSB0aGlzLmZvcm1BcnJheS52YWx1ZS5maWx0ZXIodG1wID0+IHRtcC5kZXRhaWxzPy5fX2FjdGl2ZSkubGVuZ3RoO1xuICAgICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBjdXJyZW50bHlBY3RpdmUgPj0gdGhpcy5tYXhBY3RpdmVDb3VudDtcbiAgICB9XG4gICAgdGhpcy5tYXhBY3RpdmVDb3VudFJlYWNoZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wIGJnLWluaGVyaXRcIj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImNhcmQtdGl0bGUgaDRcIlxuICAgICpuZ0lmPVwibGlzdFRpdGxlXCJcbiAgPlxuICAgIHt7IGxpc3RUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJjYXJkLXRpdGxlIGg0XCJcbiAgICAqbmdJZj1cIiFsaXN0VGl0bGVcIlxuICA+XG4gICAge3sgJ0RhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG48L2Rpdj5cblxuPGM4eS1saXN0LWdyb3VwXG4gIGNsYXNzPVwiZmxleC1ncm93IGZmLXNjcm9sbC1maXggY2RrLWRyb3BsaXN0XCJcbiAgY2RrRHJvcExpc3RcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxuICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhYWxsb3dEcmFnQW5kRHJvcCB8fCBmb3JtQXJyYXkuY29udHJvbHM/Lmxlbmd0aCA8IDJcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG0tdC04XCJcbiAgICByb2xlPVwiYWxlcnRcIlxuICAgIG5nTm9uQmluZGFibGVcbiAgICAqbmdJZj1cImZvcm1BcnJheS5lcnJvcnM/Lm1pbkFjdGl2ZUNvdW50XCJcbiAgICB0cmFuc2xhdGVcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1BcnJheS5lcnJvcnM/Lm1pbkFjdGl2ZUNvdW50XCJcbiAgPlxuICAgIEF0IGxlYXN0IHt7IG1pbkFjdGl2ZSB9fSBhY3RpdmUgZGF0YSBwb2ludHMgbXVzdCBiZSBzZWxlY3RlZC5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLXQtOFwiXG4gICAgcm9sZT1cImFsZXJ0XCJcbiAgICBuZ05vbkJpbmRhYmxlXG4gICAgKm5nSWY9XCJmb3JtQXJyYXkuZXJyb3JzPy5tYXhBY3RpdmVDb3VudFwiXG4gICAgdHJhbnNsYXRlXG4gICAgW3RyYW5zbGF0ZVBhcmFtc109XCJmb3JtQXJyYXkuZXJyb3JzPy5tYXhBY3RpdmVDb3VudFwiXG4gID5cbiAgICBBdCBtYXhpbXVtIHt7IG1heEFjdGl2ZSB9fSBhY3RpdmUgZGF0YSBwb2ludHMgYXJlIGFsbG93ZWQgdG8gYmUgc2VsZWN0ZWQuXG4gIDwvZGl2PlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5hbGVydFwiPjwvbmctY29udGVudD5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJwLXQtOFwiXG4gICAgKm5nSWY9XCIhZm9ybUFycmF5LmNvbnRyb2xzPy5sZW5ndGhcIlxuICA+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgY2xhc3M9XCJwLXQtOFwiXG4gICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc3VidGl0bGVdPVwiJ0FkZCB5b3VyIGZpcnN0IGRhdGEgcG9pbnQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgW2Zvcm1Hcm91cF09XCJkcEZvcm1cIlxuICAgICpuZ0Zvcj1cImxldCBkcEZvcm0gb2YgZm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gID5cbiAgICA8Yzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICBbZGVmYXVsdEZvcm1PcHRpb25zXT1cImRlZmF1bHRGb3JtT3B0aW9uc1wiXG4gICAgICBbYWN0aXZlVG9nZ2xlRGlzYWJsZWRdPVwibWF4QWN0aXZlQ291bnRSZWFjaGVkXCJcbiAgICAgIFtzaG93QWN0aXZlVG9nZ2xlXT1cInRydWVcIlxuICAgICAgW3Nob3dBZGRSZW1vdmVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgW3Nob3dPcHRpb25zXT1cInRydWVcIlxuICAgICAgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgW2NvbG9yUGlja2VyRGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgICBbb3B0aW9uVG9SZW1vdmVdPVwidHJ1ZVwiXG4gICAgICBbZGF0YXBvaW50TGlicmFyeUVudHJpZXNdPVwiZGF0YXBvaW50TGlicmFyeUVudHJpZXNcIlxuICAgICAgW2hhc1VubGlua1RlbXBsYXRlT3B0aW9uXT1cInRydWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGV0YWlsc1wiXG4gICAgICAocmVtb3ZlZCk9XCJvbkl0ZW1SZW1vdmVkKGluZGV4KVwiXG4gICAgICBjZGtEcmFnXG4gICAgPlxuICAgICAgPGM4eS1saS1kcmFnLWhhbmRsZVxuICAgICAgICB0aXRsZT1cInt7ICdDbGljayBhbmQgZHJhZyB0byByZW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImRyYWctcmVvcmRlclwiPjwvaT5cbiAgICAgIDwvYzh5LWxpLWRyYWctaGFuZGxlPlxuICAgIDwvYzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cblxuPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJnLWluaGVyaXRcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgW3RpdGxlXT1cIidBZGQgZGF0YSBwb2ludCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRhdGEtY3k9XCJjOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LS1hZGQtZGF0YXBvaW50LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QvZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFJbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7Ozs7Ozs7OztBQWtCeEcsTUFBTSxPQUFPLCtCQUErQjtJQW9CMUMsWUFDVSxpQkFBMkMsRUFDM0MsZ0JB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QkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1JLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQXJyYXksXG4gIEZvcm1CdWlsZGVyLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JGblxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEM4eVZhbGlkYXRvcnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YXBvaW50TGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnQtbGlicmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIERhdGFwb2ludEFjdGlvbixcbiAgRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1Db25maWcsXG4gIEtQSURldGFpbHMsXG4gIE1hbmFnZWRPYmplY3RLUElcbn0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3Rvck1vZGFsT3B0aW9ucyB9IGZyb20gJy4uL2RhdGFwb2ludC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwubW9kZWwnO1xuaW1wb3J0IHsgRGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkQnV0dG9uVHlwZXMgfSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2RhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1zZWxlY3Rpb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0aW9uTGlzdENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBhY3Rpb25zOiBEYXRhcG9pbnRBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBhbGxvd0RyYWdBbmREcm9wID0gdHJ1ZTtcbiAgQElucHV0KCkgY29uZmlnOiBQYXJ0aWFsPERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zPiA9IHt9O1xuICBASW5wdXQoKSBkZWZhdWx0Rm9ybU9wdGlvbnM6IFBhcnRpYWw8RGF0YXBvaW50QXR0cmlidXRlc0Zvcm1Db25maWc+ID0ge307XG4gIEBJbnB1dCgpIG1heEFjdGl2ZUNvdW50OiBudW1iZXI7XG4gIEBJbnB1dCgpIG1pbkFjdGl2ZUNvdW50ID0gMTtcbiAgQElucHV0KCkgcmVzb2x2ZUNvbnRleHQgPSB0cnVlO1xuICBASW5wdXQoKSBsaXN0VGl0bGUgPSAnJztcbiAgZm9ybUFycmF5OiBGb3JtQXJyYXk7XG4gIGRhdGFwb2ludExpYnJhcnlFbnRyaWVzOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PE1hbmFnZWRPYmplY3RLUEk+PjtcbiAgbWF4QWN0aXZlQ291bnRSZWFjaGVkID0gZmFsc2U7XG4gIEFkZEJ1dHRvblR5cGVzID0gQWRkQnV0dG9uVHlwZXM7XG5cbiAgQE91dHB1dCgpIGlzVmFsaWQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIEBPdXRwdXQoKSBjaGFuZ2U6IE9ic2VydmFibGU8YW55W10+O1xuICBwcml2YXRlIHVzZWRWYWxpZGF0b3JzOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRvckZuIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRhdGFwb2ludFNlbGVjdG9yOiBEYXRhcG9pbnRTZWxlY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRMaWJyYXJ5OiBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHdpZGdldENvbXBvbmVudDogV2lkZ2V0Q29uZmlnQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMuZm9ybUFycmF5ID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSk7XG4gICAgdGhpcy5pc1ZhbGlkID0gdGhpcy5mb3JtQXJyYXkuc3RhdHVzQ2hhbmdlcy5waXBlKG1hcChzdGF0dXMgPT4gc3RhdHVzID09PSAnVkFMSUQnKSk7XG4gICAgdGhpcy5kYXRhcG9pbnRMaWJyYXJ5RW50cmllcyA9IGZyb20odGhpcy5kYXRhcG9pbnRMaWJyYXJ5LmdldEZpcnN0RGF0YXBvaW50TGlicmFyeVBhZ2UoKSkucGlwZShcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICAgIHRoaXMuY2hhbmdlID0gdGhpcy5mb3JtQXJyYXkudmFsdWVDaGFuZ2VzLnBpcGUobWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlKHJlcykpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMubWF4QWN0aXZlQ291bnQgJiYgIWNoYW5nZXMubWluQWN0aXZlQ291bnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWF4QWN0aXZlQ291bnQpIHtcbiAgICAgIHRoaXMudXNlZFZhbGlkYXRvcnMubWF4QWN0aXZlQ291bnQgPSBDOHlWYWxpZGF0b3JzLm1heEFjdGl2ZUNvdW50KHRoaXMubWF4QWN0aXZlQ291bnQpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm1pbkFjdGl2ZUNvdW50KSB7XG4gICAgICB0aGlzLnVzZWRWYWxpZGF0b3JzLm1pbkFjdGl2ZUNvdW50ID0gQzh5VmFsaWRhdG9ycy5taW5BY3RpdmVDb3VudCh0aGlzLm1pbkFjdGl2ZUNvdW50KTtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IE9iamVjdC52YWx1ZXModGhpcy51c2VkVmFsaWRhdG9ycyk7XG4gICAgdGhpcy5mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm4pO1xuICB9XG5cbiAgdmFsaWRhdGUoX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS52YWxpZCA/IG51bGwgOiB7IGZvcm1JbnZhbGlkOiB7fSB9O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMud2lkZ2V0Q29tcG9uZW50Py5jb250ZXh0O1xuICAgIGlmIChjb250ZXh0Py5pZCAmJiB0aGlzLnJlc29sdmVDb250ZXh0KSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGlkLCBjOHlfSXNEZXZpY2UgfSA9IGNvbnRleHQ7XG4gICAgICB0aGlzLmNvbmZpZy5jb250ZXh0QXNzZXQgPSB7IG5hbWUsIGlkLCBjOHlfSXNEZXZpY2UgfTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogS1BJRGV0YWlsc1tdKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQXJyYXkuY2xlYXIoKTtcbiAgICBpZiAob2JqPy5sZW5ndGgpIHtcbiAgICAgIG9iai5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1ncm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBkZXRhaWxzOiBbXSB9KTtcbiAgICAgICAgZm9ybWdyb3VwLnBhdGNoVmFsdWUoeyBkZXRhaWxzOiB2YWwgfSk7XG4gICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2goZm9ybWdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNhbGN1bGF0ZU1heEFjdGl2ZUNvdW50KCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHRoaXMudHJhbnNmb3JtVmFsdWUocmVzKSksXG4gICAgICAgIC8vIGNoZWNrIG1heEFjdGl2ZUNvdW50XG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVNYXhBY3RpdmVDb3VudCgpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmbik7XG4gIH1cblxuICBhZGQoKSB7XG4gICAgY29uc3QgYWxsb3dDaGFuZ2luZ0NvbnRleHQgPVxuICAgICAgIXRoaXMud2lkZ2V0Q29tcG9uZW50Py5pc0RldmljZVR5cGVEYXNoYm9hcmQgJiYgdGhpcy5jb25maWc/LmFsbG93Q2hhbmdpbmdDb250ZXh0ICE9PSBmYWxzZTtcbiAgICB0aGlzLmRhdGFwb2ludFNlbGVjdG9yXG4gICAgICAuc2VsZWN0RGF0YVBvaW50cyh7XG4gICAgICAgIC4uLih0aGlzLmNvbmZpZyB8fCB7fSksXG4gICAgICAgIHNlbGVjdGVkRGF0YXBvaW50czogdGhpcy50cmFuc2Zvcm1WYWx1ZSh0aGlzLmZvcm1BcnJheS52YWx1ZSksXG4gICAgICAgIGRlZmF1bHRBY3RpdmVTdGF0ZTogdHJ1ZSxcbiAgICAgICAgYWxsb3dDaGFuZ2luZ0NvbnRleHQsXG4gICAgICAgIGFsbG93U2VhcmNoOiAhdGhpcy5jb25maWc/LmNvbnRleHRBc3NldFxuICAgICAgfSlcbiAgICAgIC50aGVuKFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShyZXN1bHQpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgLy8gbm90aGluZyB0byBkbywgbW9kYWwgd2FzIGNsb3NlZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgb25JdGVtUmVtb3ZlZChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8S1BJRGV0YWlsc1tdPikge1xuICAgIGNvbnN0IGN1cnJlbnRTb3J0aW5nID0gdGhpcy5mb3JtQXJyYXkudmFsdWU7XG4gICAgbW92ZUl0ZW1JbkFycmF5KGN1cnJlbnRTb3J0aW5nLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuZm9ybUFycmF5LnNldFZhbHVlKGN1cnJlbnRTb3J0aW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtVmFsdWUoZm9ybUFycmF5VmFsdWU6IGFueVtdKSB7XG4gICAgaWYgKCFmb3JtQXJyYXlWYWx1ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybUFycmF5VmFsdWUubWFwKHRtcCA9PiBPYmplY3QuYXNzaWduKHt9LCAuLi5PYmplY3QudmFsdWVzKHRtcCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlTWF4QWN0aXZlQ291bnQoKSB7XG4gICAgaWYgKHRoaXMubWF4QWN0aXZlQ291bnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRseUFjdGl2ZSA9IHRoaXMuZm9ybUFycmF5LnZhbHVlLmZpbHRlcih0bXAgPT4gdG1wLmRldGFpbHM/Ll9fYWN0aXZlKS5sZW5ndGg7XG4gICAgICB0aGlzLm1heEFjdGl2ZUNvdW50UmVhY2hlZCA9IGN1cnJlbnRseUFjdGl2ZSA+PSB0aGlzLm1heEFjdGl2ZUNvdW50O1xuICAgIH1cbiAgICB0aGlzLm1heEFjdGl2ZUNvdW50UmVhY2hlZCA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIHN0aWNreS10b3AgYmctaW5oZXJpdFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwiY2FyZC10aXRsZSBoNFwiXG4gICAgKm5nSWY9XCJsaXN0VGl0bGVcIlxuICA+XG4gICAge3sgbGlzdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImNhcmQtdGl0bGUgaDRcIlxuICAgICpuZ0lmPVwiIWxpc3RUaXRsZVwiXG4gID5cbiAgICB7eyAnRGF0YSBwb2ludHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbjwvZGl2PlxuXG48Yzh5LWxpc3QtZ3JvdXBcbiAgY2xhc3M9XCJmbGV4LWdyb3cgZmYtc2Nyb2xsLWZpeCBjZGstZHJvcGxpc3RcIlxuICBjZGtEcm9wTGlzdFxuICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd0RyYWdBbmREcm9wIHx8IGZvcm1BcnJheS5jb250cm9scz8ubGVuZ3RoIDwgMlwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbS10LThcIlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgbmdOb25CaW5kYWJsZVxuICAgICpuZ0lmPVwiZm9ybUFycmF5LmVycm9ycz8ubWluQWN0aXZlQ291bnRcIlxuICAgIHRyYW5zbGF0ZVxuICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUFycmF5LmVycm9ycz8ubWluQWN0aXZlQ291bnRcIlxuICA+XG4gICAgQXQgbGVhc3Qge3sgbWluQWN0aXZlIH19IGFjdGl2ZSBkYXRhIHBvaW50cyBtdXN0IGJlIHNlbGVjdGVkLlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG0tdC04XCJcbiAgICByb2xlPVwiYWxlcnRcIlxuICAgIG5nTm9uQmluZGFibGVcbiAgICAqbmdJZj1cImZvcm1BcnJheS5lcnJvcnM/Lm1heEFjdGl2ZUNvdW50XCJcbiAgICB0cmFuc2xhdGVcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cImZvcm1BcnJheS5lcnJvcnM/Lm1heEFjdGl2ZUNvdW50XCJcbiAgPlxuICAgIEF0IG1heGltdW0ge3sgbWF4QWN0aXZlIH19IGFjdGl2ZSBkYXRhIHBvaW50cyBhcmUgYWxsb3dlZCB0byBiZSBzZWxlY3RlZC5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmFsZXJ0XCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInAtdC04XCJcbiAgICAqbmdJZj1cIiFmb3JtQXJyYXkuY29udHJvbHM/Lmxlbmd0aFwiXG4gID5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBjbGFzcz1cInAtdC04XCJcbiAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdWJ0aXRsZV09XCInQWRkIHlvdXIgZmlyc3QgZGF0YSBwb2ludC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBbZm9ybUdyb3VwXT1cImRwRm9ybVwiXG4gICAgKm5nRm9yPVwibGV0IGRwRm9ybSBvZiBmb3JtQXJyYXkuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgPlxuICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgIFtkZWZhdWx0Rm9ybU9wdGlvbnNdPVwiZGVmYXVsdEZvcm1PcHRpb25zXCJcbiAgICAgIFthY3RpdmVUb2dnbGVEaXNhYmxlZF09XCJtYXhBY3RpdmVDb3VudFJlYWNoZWRcIlxuICAgICAgW3Nob3dBY3RpdmVUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICBbYWRkQnV0dG9uVHlwZV09XCJBZGRCdXR0b25UeXBlcy5ub25lXCJcbiAgICAgIFtzaG93T3B0aW9uc109XCJ0cnVlXCJcbiAgICAgIFtlZGl0YWJsZV09XCJ0cnVlXCJcbiAgICAgIFtjb2xvclBpY2tlckRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgIFthY3Rpb25zXT1cImFjdGlvbnNcIlxuICAgICAgW29wdGlvblRvUmVtb3ZlXT1cInRydWVcIlxuICAgICAgW2RhdGFwb2ludExpYnJhcnlFbnRyaWVzXT1cImRhdGFwb2ludExpYnJhcnlFbnRyaWVzXCJcbiAgICAgIFtoYXNVbmxpbmtUZW1wbGF0ZU9wdGlvbl09XCJ0cnVlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldGFpbHNcIlxuICAgICAgKHJlbW92ZWQpPVwib25JdGVtUmVtb3ZlZChpbmRleClcIlxuICAgICAgY2RrRHJhZ1xuICAgID5cbiAgICAgIDxjOHktbGktZHJhZy1oYW5kbGVcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2xpY2sgYW5kIGRyYWcgdG8gcmVvcmRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJkcmFnLXJlb3JkZXJcIj48L2k+XG4gICAgICA8L2M4eS1saS1kcmFnLWhhbmRsZT5cbiAgICA8L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtPlxuICA8L2Rpdj5cbjwvYzh5LWxpc3QtZ3JvdXA+XG5cbjxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBiZy1pbmhlcml0XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgIFt0aXRsZV09XCInQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBkYXRhLWN5PVwiYzh5LWRhdGFwb2ludC1zZWxlY3Rpb24tbGlzdC0tYWRkLWRhdGFwb2ludC1idXR0b25cIlxuICAgIChjbGljayk9XCJhZGQoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19