barsa-sap-ui 2.0.106 → 2.0.108

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 (31) hide show
  1. package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +1 -1
  2. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +10 -9
  3. package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +2 -2
  4. package/esm2022/lib/barsa-sap-ui.module.mjs +216 -215
  5. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +1 -1
  6. package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +2 -2
  7. package/esm2022/lib/card-item/card-item.component.mjs +1 -1
  8. package/esm2022/lib/card-view-content/card-view-content.component.mjs +1 -1
  9. package/esm2022/lib/index.mjs +3 -1
  10. package/esm2022/lib/layout-actions/layout-actions.component.mjs +3 -3
  11. package/esm2022/lib/layout-control/layout-control.component.mjs +3 -3
  12. package/esm2022/lib/list-item/list-item.component.mjs +1 -1
  13. package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +2 -2
  14. package/esm2022/lib/sap-ui-report-base.component.mjs +1 -1
  15. package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +8 -3
  16. package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +6 -5
  17. package/esm2022/lib/ui-map/ui-map.component.mjs +58 -0
  18. package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +2 -2
  19. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +3 -3
  20. package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +32 -5
  21. package/esm2022/public-api.mjs +2 -1
  22. package/fesm2022/barsa-sap-ui.mjs +269 -186
  23. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  24. package/lib/barsa-sap-ui.module.d.ts +228 -227
  25. package/lib/index.d.ts +1 -1
  26. package/lib/sap-ui-report-base.component.d.ts +2 -1
  27. package/lib/ui-check-box/ui-check-box.component.d.ts +1 -0
  28. package/lib/ui-map/ui-map.component.d.ts +18 -0
  29. package/lib/ulv-context-menu/ulv-context-menu.component.d.ts +8 -1
  30. package/package.json +1 -1
  31. package/public-api.d.ts +1 -0
@@ -180,11 +180,11 @@ export class LayoutControlComponent extends LayoutItemBaseComponent {
180
180
  }
181
181
  }
182
182
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LayoutControlComponent, deps: [{ token: i1.FormPanelService }, { token: i0.ElementRef }, { token: i2.ContentDensityService }, { token: i3.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.BbbTranslatePipe }, { token: i1.LayoutService, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LayoutControlComponent, selector: "bsu-layout-control", inputs: { inlineEdit: "inlineEdit", caption: "caption", focusControl: "focusControl", showLabel: "showLabel", maxLabelWidth: "maxLabelWidth", hasHorizontalText: "hasHorizontalText", contentDensity: "contentDensity", flex: "flex", RefreshLabel: "RefreshLabel", SetVisible: "SetVisible" }, outputs: { events: "events" }, host: { properties: { "class.layout-control": "this.layoutControlClass", "class.row-direction": "this.isRowDirection", "class.row-reverse-direction": "this.isRowReverseDirection", "class.column-direction": "this.isColumnDirection", "class.column-reverse-direction": "this.isColumnReverseDirection", "class.container-field": "this.isContainer", "style.max-width": "this.maxWidth", "style.min-width": "this.minWidth", "style.min-height": "this.minHeight", "style.height": "this.height", "attr.isCheckbox": "this.isCheckbox", "attr.controlIsReadonly": "this.controlIsReadonly", "attr.isButton": "this.isButton", "attr.issinglepicture": "this.isSinglePicture", "attr.minWidth": "this.attrMinWidth", "attr.ismobile": "this.isMobile", "attr.controlId": "this.attrControlId", "attr.caption": "this.attrCaption" } }, providers: [LayoutService], viewQueries: [{ propertyName: "tempLabelRef", first: true, predicate: ["tempLabelRef"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!hide) { @if (labelVisible) {\n<bsu-ly-label\n [attr.labelWidth]=\"labelWidth\"\n [attrRtl]\n [class.no-padding]=\"config.Padding[0] === 0\"\n [config]=\"config\"\n [caption]=\"labelCaption\"\n [originalWidth]=\"labelWidth\"\n [style.min-width]=\"\n isCheckbox\n ? checkboxWidth\n : config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && controlIsReadonly)\n ? 'fit-content'\n : isColumnDirection || isColumnReverseDirection\n ? '100%'\n : maxLabelWidth + 'px'\n \"\n [style.width]=\"\n config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && (isCheckbox || controlIsReadonly))\n ? 'auto'\n : isColumnDirection || isColumnReverseDirection\n ? '100%'\n : maxLabelWidth + 'px'\n \"\n [isMandatory]=\"isMandatory\"\n [fieldIcon]=\"fieldIcon\"\n [helpDescription]=\"helpDescription\"\n [originalXtype]=\"originalXtype\"\n [textVisible]=\"textVisible\"\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\n></bsu-ly-label>\n}\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\n<bnrc-field-ui\n [attr.xtype]=\"config.FieldUi.originalXtype\"\n [attr.fieldWidth]=\"layoutControlWidth\"\n [attr.isCheckbox]=\"isCheckbox\"\n [attr.isbutton]=\"isButton\"\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\n [class.no-padding]=\"config.Padding[0] === 0\"\n [customField]=\"config.FieldUi\"\n [layoutInfo]=\"config\"\n [inlineEdit]=\"inlineEdit\"\n [formHeight]=\"(formHeight$ | async)!!\"\n [focusControl]=\"focusControl\"\n [isSearchPanel]=\"isSearchPanel\"\n [style.height]=\"isUlv ? '100%' : 'auto'\"\n [attr.isulv]=\"isUlv\"\n></bnrc-field-ui>\n}\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bnrc-field-ui{padding:0 5px;margin:auto}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"], dependencies: [{ kind: "component", type: i1.FieldUiComponent, selector: "bnrc-field-ui", inputs: ["isSearchPanel", "customField", "componentUi", "layoutInfo", "inlineEdit", "focusControl", "formHeight"] }, { kind: "directive", type: i1.AttrRtlDirective, selector: "[attrRtl]", inputs: ["attrRtl"] }, { kind: "component", type: i4.LyLabelComponent, selector: "bsu-ly-label", inputs: ["originalWidth", "minWidth", "caption", "captionIcon", "helpDescription", "isColumn", "isMandatory", "fieldIcon", "originalXtype", "textVisible"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LayoutControlComponent, selector: "bsu-layout-control", inputs: { inlineEdit: "inlineEdit", caption: "caption", focusControl: "focusControl", showLabel: "showLabel", maxLabelWidth: "maxLabelWidth", hasHorizontalText: "hasHorizontalText", contentDensity: "contentDensity", flex: "flex", RefreshLabel: "RefreshLabel", SetVisible: "SetVisible" }, outputs: { events: "events" }, host: { properties: { "class.layout-control": "this.layoutControlClass", "class.row-direction": "this.isRowDirection", "class.row-reverse-direction": "this.isRowReverseDirection", "class.column-direction": "this.isColumnDirection", "class.column-reverse-direction": "this.isColumnReverseDirection", "class.container-field": "this.isContainer", "style.max-width": "this.maxWidth", "style.min-width": "this.minWidth", "style.min-height": "this.minHeight", "style.height": "this.height", "attr.isCheckbox": "this.isCheckbox", "attr.controlIsReadonly": "this.controlIsReadonly", "attr.isButton": "this.isButton", "attr.issinglepicture": "this.isSinglePicture", "attr.minWidth": "this.attrMinWidth", "attr.ismobile": "this.isMobile", "attr.controlId": "this.attrControlId", "attr.caption": "this.attrCaption" } }, providers: [LayoutService], viewQueries: [{ propertyName: "tempLabelRef", first: true, predicate: ["tempLabelRef"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!hide) { @if (labelVisible) {\r\n<bsu-ly-label\r\n [attr.labelWidth]=\"labelWidth\"\r\n [attrRtl]\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [config]=\"config\"\r\n [caption]=\"labelCaption\"\r\n [originalWidth]=\"labelWidth\"\r\n [style.min-width]=\"\r\n isCheckbox\r\n ? checkboxWidth\r\n : config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && controlIsReadonly)\r\n ? 'fit-content'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [style.width]=\"\r\n config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && (isCheckbox || controlIsReadonly))\r\n ? 'auto'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [isMandatory]=\"isMandatory\"\r\n [fieldIcon]=\"fieldIcon\"\r\n [helpDescription]=\"helpDescription\"\r\n [originalXtype]=\"originalXtype\"\r\n [textVisible]=\"textVisible\"\r\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\r\n></bsu-ly-label>\r\n}\r\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\r\n<bnrc-field-ui\r\n [attr.xtype]=\"config.FieldUi.originalXtype\"\r\n [attr.fieldWidth]=\"layoutControlWidth\"\r\n [attr.isCheckbox]=\"isCheckbox\"\r\n [attr.isbutton]=\"isButton\"\r\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [customField]=\"config.FieldUi\"\r\n [layoutInfo]=\"config\"\r\n [inlineEdit]=\"inlineEdit\"\r\n [formHeight]=\"(formHeight$ | async)!!\"\r\n [focusControl]=\"focusControl\"\r\n [isSearchPanel]=\"isSearchPanel\"\r\n [style.height]=\"isUlv ? '100%' : 'auto'\"\r\n [attr.isulv]=\"isUlv\"\r\n></bnrc-field-ui>\r\n}\r\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bnrc-field-ui{padding:0 5px;margin:auto}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"], dependencies: [{ kind: "component", type: i1.FieldUiComponent, selector: "bnrc-field-ui", inputs: ["isSearchPanel", "customField", "componentUi", "layoutInfo", "inlineEdit", "focusControl", "formHeight"] }, { kind: "directive", type: i1.AttrRtlDirective, selector: "[attrRtl]", inputs: ["attrRtl"] }, { kind: "component", type: i4.LyLabelComponent, selector: "bsu-ly-label", inputs: ["originalWidth", "minWidth", "caption", "captionIcon", "helpDescription", "isColumn", "isMandatory", "fieldIcon", "originalXtype", "textVisible"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
184
184
  }
185
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LayoutControlComponent, decorators: [{
186
186
  type: Component,
187
- args: [{ selector: 'bsu-layout-control', providers: [LayoutService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!hide) { @if (labelVisible) {\n<bsu-ly-label\n [attr.labelWidth]=\"labelWidth\"\n [attrRtl]\n [class.no-padding]=\"config.Padding[0] === 0\"\n [config]=\"config\"\n [caption]=\"labelCaption\"\n [originalWidth]=\"labelWidth\"\n [style.min-width]=\"\n isCheckbox\n ? checkboxWidth\n : config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && controlIsReadonly)\n ? 'fit-content'\n : isColumnDirection || isColumnReverseDirection\n ? '100%'\n : maxLabelWidth + 'px'\n \"\n [style.width]=\"\n config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && (isCheckbox || controlIsReadonly))\n ? 'auto'\n : isColumnDirection || isColumnReverseDirection\n ? '100%'\n : maxLabelWidth + 'px'\n \"\n [isMandatory]=\"isMandatory\"\n [fieldIcon]=\"fieldIcon\"\n [helpDescription]=\"helpDescription\"\n [originalXtype]=\"originalXtype\"\n [textVisible]=\"textVisible\"\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\n></bsu-ly-label>\n}\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\n<bnrc-field-ui\n [attr.xtype]=\"config.FieldUi.originalXtype\"\n [attr.fieldWidth]=\"layoutControlWidth\"\n [attr.isCheckbox]=\"isCheckbox\"\n [attr.isbutton]=\"isButton\"\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\n [class.no-padding]=\"config.Padding[0] === 0\"\n [customField]=\"config.FieldUi\"\n [layoutInfo]=\"config\"\n [inlineEdit]=\"inlineEdit\"\n [formHeight]=\"(formHeight$ | async)!!\"\n [focusControl]=\"focusControl\"\n [isSearchPanel]=\"isSearchPanel\"\n [style.height]=\"isUlv ? '100%' : 'auto'\"\n [attr.isulv]=\"isUlv\"\n></bnrc-field-ui>\n}\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bnrc-field-ui{padding:0 5px;margin:auto}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"] }]
187
+ args: [{ selector: 'bsu-layout-control', providers: [LayoutService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!hide) { @if (labelVisible) {\r\n<bsu-ly-label\r\n [attr.labelWidth]=\"labelWidth\"\r\n [attrRtl]\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [config]=\"config\"\r\n [caption]=\"labelCaption\"\r\n [originalWidth]=\"labelWidth\"\r\n [style.min-width]=\"\r\n isCheckbox\r\n ? checkboxWidth\r\n : config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && controlIsReadonly)\r\n ? 'fit-content'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [style.width]=\"\r\n config.CaptionSetting?.AlignMode === 'AutoSize' || (isMobile && (isCheckbox || controlIsReadonly))\r\n ? 'auto'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [isMandatory]=\"isMandatory\"\r\n [fieldIcon]=\"fieldIcon\"\r\n [helpDescription]=\"helpDescription\"\r\n [originalXtype]=\"originalXtype\"\r\n [textVisible]=\"textVisible\"\r\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\r\n></bsu-ly-label>\r\n}\r\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\r\n<bnrc-field-ui\r\n [attr.xtype]=\"config.FieldUi.originalXtype\"\r\n [attr.fieldWidth]=\"layoutControlWidth\"\r\n [attr.isCheckbox]=\"isCheckbox\"\r\n [attr.isbutton]=\"isButton\"\r\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [customField]=\"config.FieldUi\"\r\n [layoutInfo]=\"config\"\r\n [inlineEdit]=\"inlineEdit\"\r\n [formHeight]=\"(formHeight$ | async)!!\"\r\n [focusControl]=\"focusControl\"\r\n [isSearchPanel]=\"isSearchPanel\"\r\n [style.height]=\"isUlv ? '100%' : 'auto'\"\r\n [attr.isulv]=\"isUlv\"\r\n></bnrc-field-ui>\r\n}\r\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bnrc-field-ui{padding:0 5px;margin:auto}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"] }]
188
188
  }], ctorParameters: () => [{ type: i1.FormPanelService }, { type: i0.ElementRef }, { type: i2.ContentDensityService }, { type: i3.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.BbbTranslatePipe }, { type: i1.LayoutService, decorators: [{
189
189
  type: SkipSelf
190
190
  }] }], propDecorators: { tempLabelRef: [{
@@ -267,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
267
267
  }], SetVisible: [{
268
268
  type: Input
269
269
  }] } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBTXZCLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFFYixpQkFBaUIsRUFFakIsV0FBVyxFQUNkLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHVCQUF1QjtJQW1EL0QsWUFDYyxnQkFBa0MsRUFDckMsRUFBYyxFQUNyQixzQkFBNkMsRUFDbkMsWUFBMEIsRUFDMUIsSUFBdUIsRUFDdkIsT0FBZSxFQUNmLFVBQXFCLEVBQ3JCLGFBQStCLEVBQ25CLG9CQUFtQztRQUV6RCxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFWcEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRVgsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ25CLHlCQUFvQixHQUFw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dkQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ1AsUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxlQUFlO2dCQUNTLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNMLFlBQVk7c0JBQXpDLFdBQVc7dUJBQUMsZUFBZTtnQkFDRSxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ0csYUFBYTtzQkFBM0MsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ0EsV0FBVztzQkFBdkMsV0FBVzt1QkFBQyxjQUFjO2dCQUNsQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQWdMRSxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBOZ1pvbmUsXG4gICAgUmVuZGVyZXIyLFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhcnNhQXBpLFxuICAgIExheW91dEl0ZW1CYXNlQ29tcG9uZW50LFxuICAgIExheW91dFNlcnZpY2UsXG4gICAgRm9ybVBhbmVsU2VydmljZSxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxuICAgIG1lYXN1cmVUZXh0XG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtbGF5b3V0LWNvbnRyb2wnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtMYXlvdXRTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgTGF5b3V0SXRlbUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3RlbXBMYWJlbFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdGVtcExhYmVsUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXlvdXQtY29udHJvbCcpIGxheW91dENvbnRyb2xDbGFzcyA9IHRydWU7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3ctZGlyZWN0aW9uJykgaXNSb3dEaXJlY3Rpb247XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3ctcmV2ZXJzZS1kaXJlY3Rpb24nKSBpc1Jvd1JldmVyc2VEaXJlY3Rpb247XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2x1bW4tZGlyZWN0aW9uJykgaXNDb2x1bW5EaXJlY3Rpb247XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2x1bW4tcmV2ZXJzZS1kaXJlY3Rpb24nKSBpc0NvbHVtblJldmVyc2VEaXJlY3Rpb247XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb250YWluZXItZmllbGQnKSBpc0NvbnRhaW5lciA9IHRydWU7XG4gICAgLy8gQEhvc3RCaW5kaW5nKCdzdHlsZS52aXNpYmlsaXR5JykgdmlzaWJpbGl0eTogc3RyaW5nO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJykgbWF4V2lkdGg7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBtaW5XaWR0aDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBtaW5IZWlnaHQgPSAnMi4yNXJlbSc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBoZWlnaHQ7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzQ2hlY2tib3gnKSBpc0NoZWNrYm94O1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5jb250cm9sSXNSZWFkb25seScpIGNvbnRyb2xJc1JlYWRvbmx5ID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzQnV0dG9uJykgaXNCdXR0b247XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzc2luZ2xlcGljdHVyZScpIGlzU2luZ2xlUGljdHVyZTtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIubWluV2lkdGgnKSBhdHRyTWluV2lkdGg7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzbW9iaWxlJykgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5jb250cm9sSWQnKSBhdHRyQ29udHJvbElkO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5jYXB0aW9uJykgYXR0ckNhcHRpb247XG4gICAgQElucHV0KCkgaW5saW5lRWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9jdXNDb250cm9sOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBtYXhMYWJlbFdpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgaGFzSG9yaXpvbnRhbFRleHQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGZsZXg6IHN0cmluZztcbiAgICBAT3V0cHV0KCkgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfT4oKTtcblxuICAgIGhpZGUgPSB0cnVlO1xuICAgIGxheW91dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHdyYXBDb250ZW50OiBib29sZWFuO1xuICAgIGxhYmVsV2lkdGg6IG51bWJlcjtcbiAgICBsYWJlbENhcHRpb246IHN0cmluZyB8IFNhZmVIdG1sO1xuICAgIGxhYmVsVmlzaWJsZT86IGJvb2xlYW47XG4gICAgbGF5b3V0U2V0U2l6ZTogYm9vbGVhbjtcbiAgICBydGwkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGlzVWx2OiBib29sZWFuO1xuICAgIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICAgIGZpZWxkSWNvbjogc3RyaW5nO1xuICAgIG9yaWdpbmFsWHR5cGU6IHN0cmluZztcbiAgICB0ZXh0VmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBlbXB0eVRleHQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgnJiM4MjAzOycpO1xuICAgIGxheW91dENvbnRyb2xXaWR0aDogbnVtYmVyO1xuICAgIGZvcm1IZWlnaHQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgY2hlY2tib3hXaWR0aCA9ICdmaXQtY29udGVudCc7XG4gICAgaGVscERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBmb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByb3RlY3RlZCBfYmJiVHJhbnNsYXRlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudExheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybVBhbmVsU2VydmljZSwgX2Nkcik7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnREZW5zaXR5ID09PSAnY29tcGFjdCcpIHtcbiAgICAgICAgICAgIHRoaXMubWluSGVpZ2h0ID0gJzJyZW0nO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgZmxleCB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKGZsZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZsZXgoZmxleC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmZvcm1IZWlnaHQkID0gdGhpcy5mb3JtUGFuZWxTZXJ2aWNlLmZvcm1IZWlnaHQkO1xuICAgICAgICB0aGlzLl9zZXRGbGV4KHRoaXMuZmxleCk7XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDb250cm9sV2lkdGggPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICAgIGNvbnN0IG1pbkhlaWdodEF1dG8gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICdGaWVsZFVpLlNldHRpbmcuQ3VzdG9tVWkuUGFyYW1ldGVycy5NaW5IZWlnaHRBdXRvJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXQgfHwgbWluSGVpZ2h0QXV0byB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbkhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZSA9PT0gJ1VpLlVsdk1haW5VaScpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVbHYgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2lzVWx2Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdHRyQ2FwdGlvbiA9IGNvbmZpZy5DYXB0aW9uLnJlcGxhY2UoJzonLCAnJyk7XG4gICAgICAgIHRoaXMuYXR0ckNvbnRyb2xJZCA9IGNvbmZpZy5Db250cm9sSWQ7XG4gICAgICAgIHRoaXMuaXNCdXR0b24gPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuQnV0dG9uJztcbiAgICAgICAgdGhpcy5fcmVmcmVzaExhYmVsKCk7XG5cbiAgICAgICAgdGhpcy5pc1Jvd0RpcmVjdGlvbiA9IGNvbmZpZy5UZXh0TG9jYXRpb24gPT09ICdSaWdodCcgfHwgY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0RlZmF1bHQnO1xuICAgICAgICB0aGlzLmlzUm93UmV2ZXJzZURpcmVjdGlvbiA9IGNvbmZpZy5UZXh0TG9jYXRpb24gPT09ICdMZWZ0JztcbiAgICAgICAgdGhpcy5pc0NvbHVtbkRpcmVjdGlvbiA9IGNvbmZpZy5UZXh0TG9jYXRpb24gPT09ICdUb3AnIHx8IHRoaXMuaXNTZWFyY2hQYW5lbDtcbiAgICAgICAgdGhpcy5pc0NvbHVtblJldmVyc2VEaXJlY3Rpb24gPSBjb25maWcuVGV4dExvY2F0aW9uID09PSAnQm90dG9tJztcblxuICAgICAgICBjb25maWcuRmllbGRVaS5MYXlvdXRDb250cm9sID0gdGhpcztcbiAgICAgICAgdGhpcy5oZWxwRGVzY3JpcHRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb25maWcuRmllbGRVaSwgJ1NldHRpbmcuSGVscERlc2NyaXB0aW9uJywgJycpO1xuXG4gICAgICAgIHRoaXMuZmllbGRJY29uID0gY29uZmlnLkZpZWxkVWkuU2V0dGluZy5GaWVsZEljb247XG4gICAgICAgIHRoaXMuY29udHJvbElzUmVhZG9ubHkgPSBjb25maWcuRmllbGRVaS5TZXR0aW5nLkNvbnRyb2xJc1JlYWRPbmx5O1xuICAgICAgICB0aGlzLmNvbnRyb2xJc1JlYWRvbmx5ID1cbiAgICAgICAgICAgIHRoaXMuY29udHJvbElzUmVhZG9ubHkgfHxcbiAgICAgICAgICAgIGNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSW5uZXJDdHJscj8uSXNSZWFkT25seSB8fFxuICAgICAgICAgICAgY29uZmlnLkZpZWxkVWkuU2V0dGluZy5Jbm5lckN0cmxyPy54dHlwZSA9PT0gJ1VsLlJlYWRPbmx5RmllbGRDdHJscic7XG4gICAgICAgIHRoaXMub3JpZ2luYWxYdHlwZSA9IGNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGU7XG4gICAgICAgIHRoaXMudGV4dFZpc2libGUgPSBjb25maWcuVGV4dFZpc2libGU7XG4gICAgICAgIGlmIChjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuU2VhcmNoQ29tbWFuZEluZm9VaScpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxDYXB0aW9uID0gJyYjODIwMzsnO1xuICAgICAgICAgICAgdGhpcy5sYWJlbFZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50ZXh0VmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmVwYXJlTWluQW5kTWF4U2l6ZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWZyZXNoTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgICBjb25zdCBsYWJlbENhcHRpb24gPSBjb25maWcuQ2FwdGlvbjtcbiAgICAgICAgLy8gaWYgKGNvbmZpZy5GaWVsZFVpLlNldHRpbmc/LklzTWFuZGF0b3J5KSB7XG4gICAgICAgIC8vICAgICBpZiAobGFiZWxDYXB0aW9uLmluZGV4T2YoJyonKSA8IDApIHtcbiAgICAgICAgLy8gICAgICAgICBsYWJlbENhcHRpb24gPSBsYWJlbENhcHRpb24gKyAnIConO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgbGFiZWxDYXB0aW9uID0gbGFiZWxDYXB0aW9uLnJlcGxhY2UoJyonLCAnJyk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICB0aGlzLmlzQ2hlY2tib3ggPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuQ2hlY2tCb3gnO1xuICAgICAgICBpZiAodGhpcy5pc0NoZWNrYm94KSB7XG4gICAgICAgICAgICBjb25zdCB4ID0gbWVhc3VyZVRleHQobGFiZWxDYXB0aW9uKTtcbiAgICAgICAgICAgIGlmICh4IDwgdGhpcy5tYXhMYWJlbFdpZHRoICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveFdpZHRoID0gYCR7dGhpcy5tYXhMYWJlbFdpZHRofXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNTaW5nbGVQaWN0dXJlID0gY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZSA9PT0gJ1VpLlNpbmdsZVBpY3R1cmUnO1xuICAgICAgICBjb25zdCBjb2xvbkxhYmVsID0gdGhpcy5mb3JtUGFuZWxTZXJ2aWNlLkNvbG9uSW5MYWJlbCA/ICc6JyA6ICcnO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVDYXB0aW9uID0gYCR7dGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybShsYWJlbENhcHRpb24pfSR7XG4gICAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWwgfHwgbGFiZWxDYXB0aW9uID09PSAnJnp3bmo7JyA/ICcnIDogY29sb25MYWJlbFxuICAgICAgICB9YDtcbiAgICAgICAgdGhpcy5sYWJlbENhcHRpb24gPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0cmFuc2xhdGVDYXB0aW9uKTtcbiAgICAgICAgdGhpcy5sYWJlbFZpc2libGUgPSBjb25maWcuVGV4dFZpc2libGUgJiYgdGhpcy5zaG93TGFiZWwgIT09IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX3NldEhpZGUoY29uZmlnLkZpZWxkVWkuU2V0dGluZy5Jc1Zpc2libGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc01hbmRhdG9yeSA9IGNvbmZpZy5GaWVsZFVpLlNldHRpbmc/LklzTWFuZGF0b3J5O1xuICAgIH1cblxuICAgIF9yZXNpemVVbHZCeURldmljZShkZXZpY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVWx2KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRldmljZUhlaWdodCA9ICdEZXNrdG9wSGVpZ2h0JztcbiAgICAgICAgc3dpdGNoIChkZXZpY2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIGRldmljZUhlaWdodCA9ICdNb2JpbGVIZWlnaHQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgZGV2aWNlSGVpZ2h0ID0gJ1RhYmxldEhlaWdodCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oZWlnaHQgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgJ0ZpZWxkVWkuU2V0dGluZy5DbGFzc05hbWVzLkN1c3RvbVVpLlBhcmFtZXRlcnMuJyArIGRldmljZUhlaWdodCxcbiAgICAgICAgICAgICdhdXRvJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBwcmVwYXJlTWluQW5kTWF4U2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICAgIGNvbnN0IGxheW91dEluZm8gPSBjb25maWc7XG4gICAgICAgIGNvbnN0IGlzQnV0dG9uID0gdGhpcy5pc0J1dHRvbjtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVQaWN0dXJlID0gdGhpcy5pc1NpbmdsZVBpY3R1cmU7XG4gICAgICAgIGNvbnN0IGlzQ2hlY2tib3ggPSB0aGlzLmlzQ2hlY2tib3g7XG4gICAgICAgIGlmICghdGhpcy5pbmxpbmVFZGl0ICYmIGxheW91dEluZm8gJiYgKGlzQnV0dG9uIHx8IGlzQ2hlY2tib3ggfHwgaXNTaW5nbGVQaWN0dXJlKSkge1xuICAgICAgICAgICAgdGhpcy5hdHRyTWluV2lkdGggPSBjb25maWcuQm91bmRzLndpZHRoO1xuICAgICAgICAgICAgbGV0IGV4dHJhVmFsID0gMDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoKGlzQnV0dG9uIHx8IGlzQ2hlY2tib3gpICYmIGxheW91dEluZm8uRmllbGRVaS5TZXR0aW5nPy5GaWVsZEljb24pIHx8XG4gICAgICAgICAgICAgICAgbGF5b3V0SW5mby5GaWVsZFVpLlNldHRpbmcuSnNvbkV4dHJhUHJvcD8uR2x5cGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV4dHJhVmFsID0gMTg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IE1heFNpemUsIE1pblNpemUgfSA9IGxheW91dEluZm87XG4gICAgICAgICAgICBpZiAoTWF4U2l6ZT8ud2lkdGggPiAwICYmICF0aGlzLmlzQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heFdpZHRoID0gTWF4U2l6ZS53aWR0aCArIGV4dHJhVmFsICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChNaW5TaXplPy53aWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbldpZHRoID0gTWluU2l6ZS53aWR0aCArIGV4dHJhVmFsICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1NlYXJjaFBhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJNaW5XaWR0aCA9IHRoaXMubWF4TGFiZWxXaWR0aCArIDIwMDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heFdpZHRoID0gJzMyMHB4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5taW5XaWR0aCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBSZWZyZXNoTGFiZWwgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hMYWJlbCgpO1xuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyZWZyZXNoTGFiZWwnLCBkYXRhOiB0aGlzLmNvbmZpZyB9KTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH07XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBTZXRWaXNpYmxlID0gKHZpc2libGUsIHJlZnJlc2gpID0+IHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSXNWaXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgICAgIHRoaXMuX3NldEhpZGUoIXZpc2libGUpO1xuICAgICAgICAgICAgLy8gdGhpcy5jb25maWcuRmllbGRVaS5TZXR0aW5nLiRCUnVsZUhpZGUgPSAhdmlzaWJsZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcHJpdmF0ZSBfc2V0SGlkZShoaWRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGhpZGUgPSB0aGlzLmNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSGlkZVNlYXJjaENvbW1hbmRJbmZvVWkgPT09IHRydWUgPyB0cnVlIDogaGlkZTsgLy8gaGlkZSBkZWZhdWx0IGJ1dHRvbnMgb2Ygc2VhcmNoIHBhbmVsXG4gICAgICAgIHRoaXMuaGlkZSA9IGhpZGU7XG4gICAgICAgIGlmIChoaWRlKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaGlkZS1mb3JtLWl0ZW0nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRlLWZvcm0taXRlbScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3NldEZsZXgoZmxleDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgZmxleCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vYmlsZSB8fCB0aGlzLmNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGUgIT09ICdVaS5UZXh0QXJlYScpXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2ZsZXgnLCBmbGV4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoIWhpZGUpIHsgQGlmIChsYWJlbFZpc2libGUpIHtcbjxic3UtbHktbGFiZWxcbiAgICBbYXR0ci5sYWJlbFdpZHRoXT1cImxhYmVsV2lkdGhcIlxuICAgIFthdHRyUnRsXVxuICAgIFtjbGFzcy5uby1wYWRkaW5nXT1cImNvbmZpZy5QYWRkaW5nWzBdID09PSAwXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2NhcHRpb25dPVwibGFiZWxDYXB0aW9uXCJcbiAgICBbb3JpZ2luYWxXaWR0aF09XCJsYWJlbFdpZHRoXCJcbiAgICBbc3R5bGUubWluLXdpZHRoXT1cIlxuICAgICAgICBpc0NoZWNrYm94XG4gICAgICAgICAgICA/IGNoZWNrYm94V2lkdGhcbiAgICAgICAgICAgIDogY29uZmlnLkNhcHRpb25TZXR0aW5nPy5BbGlnbk1vZGUgPT09ICdBdXRvU2l6ZScgfHwgKGlzTW9iaWxlICYmIGNvbnRyb2xJc1JlYWRvbmx5KVxuICAgICAgICAgICAgPyAnZml0LWNvbnRlbnQnXG4gICAgICAgICAgICA6IGlzQ29sdW1uRGlyZWN0aW9uIHx8IGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvblxuICAgICAgICAgICAgPyAnMTAwJSdcbiAgICAgICAgICAgIDogbWF4TGFiZWxXaWR0aCArICdweCdcbiAgICBcIlxuICAgIFtzdHlsZS53aWR0aF09XCJcbiAgICAgICAgY29uZmlnLkNhcHRpb25TZXR0aW5nPy5BbGlnbk1vZGUgPT09ICdBdXRvU2l6ZScgfHwgKGlzTW9iaWxlICYmIChpc0NoZWNrYm94IHx8IGNvbnRyb2xJc1JlYWRvbmx5KSlcbiAgICAgICAgICAgID8gJ2F1dG8nXG4gICAgICAgICAgICA6IGlzQ29sdW1uRGlyZWN0aW9uIHx8IGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvblxuICAgICAgICAgICAgPyAnMTAwJSdcbiAgICAgICAgICAgIDogbWF4TGFiZWxXaWR0aCArICdweCdcbiAgICBcIlxuICAgIFtpc01hbmRhdG9yeV09XCJpc01hbmRhdG9yeVwiXG4gICAgW2ZpZWxkSWNvbl09XCJmaWVsZEljb25cIlxuICAgIFtoZWxwRGVzY3JpcHRpb25dPVwiaGVscERlc2NyaXB0aW9uXCJcbiAgICBbb3JpZ2luYWxYdHlwZV09XCJvcmlnaW5hbFh0eXBlXCJcbiAgICBbdGV4dFZpc2libGVdPVwidGV4dFZpc2libGVcIlxuICAgIFtpc0NvbHVtbl09XCJpc0NvbHVtbkRpcmVjdGlvbiB8fCBpc0NvbHVtblJldmVyc2VEaXJlY3Rpb25cIlxuPjwvYnN1LWx5LWxhYmVsPlxufVxuPGxhYmVsIFthdHRyLnZpc2libGVdPVwibGFiZWxWaXNpYmxlXCIgY2xhc3M9XCJob3Jpem9udGFsLWxhYmVsXCIgW2lubmVySHRtbF09XCJlbXB0eVRleHRcIj48L2xhYmVsPlxuPGJucmMtZmllbGQtdWlcbiAgICBbYXR0ci54dHlwZV09XCJjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlXCJcbiAgICBbYXR0ci5maWVsZFdpZHRoXT1cImxheW91dENvbnRyb2xXaWR0aFwiXG4gICAgW2F0dHIuaXNDaGVja2JveF09XCJpc0NoZWNrYm94XCJcbiAgICBbYXR0ci5pc2J1dHRvbl09XCJpc0J1dHRvblwiXG4gICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJpc0NoZWNrYm94ID8gMSA6IDBcIlxuICAgIFtjbGFzcy5uby1wYWRkaW5nXT1cImNvbmZpZy5QYWRkaW5nWzBdID09PSAwXCJcbiAgICBbY3VzdG9tRmllbGRdPVwiY29uZmlnLkZpZWxkVWlcIlxuICAgIFtsYXlvdXRJbmZvXT1cImNvbmZpZ1wiXG4gICAgW2lubGluZUVkaXRdPVwiaW5saW5lRWRpdFwiXG4gICAgW2Zvcm1IZWlnaHRdPVwiKGZvcm1IZWlnaHQkIHwgYXN5bmMpISFcIlxuICAgIFtmb2N1c0NvbnRyb2xdPVwiZm9jdXNDb250cm9sXCJcbiAgICBbaXNTZWFyY2hQYW5lbF09XCJpc1NlYXJjaFBhbmVsXCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImlzVWx2ID8gJzEwMCUnIDogJ2F1dG8nXCJcbiAgICBbYXR0ci5pc3Vsdl09XCJpc1VsdlwiXG4+PC9ibnJjLWZpZWxkLXVpPlxufVxuIl19
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBTXZCLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFFYixpQkFBaUIsRUFFakIsV0FBVyxFQUNkLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHVCQUF1QjtJQW1EL0QsWUFDYyxnQkFBa0MsRUFDckMsRUFBYyxFQUNyQixzQkFBNkMsRUFDbkMsWUFBMEIsRUFDMUIsSUFBdUIsRUFDdkIsT0FBZSxFQUNmLFVBQXFCLEVBQ3JCLGFBQStCLEVBQ25CLG9CQUFtQztRQUV6RCxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFWcEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRVgsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ25CLHlCQUFvQixHQUFw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dkQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ1AsUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxlQUFlO2dCQUNTLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNMLFlBQVk7c0JBQXpDLFdBQVc7dUJBQUMsZUFBZTtnQkFDRSxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ0csYUFBYTtzQkFBM0MsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ0EsV0FBVztzQkFBdkMsV0FBVzt1QkFBQyxjQUFjO2dCQUNsQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQWdMRSxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgTmdab25lLFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFNraXBTZWxmLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgTGF5b3V0SXRlbUJhc2VDb21wb25lbnQsXHJcbiAgICBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgRm9ybVBhbmVsU2VydmljZSxcclxuICAgIGdldERldmljZUlzTW9iaWxlLFxyXG4gICAgQmJiVHJhbnNsYXRlUGlwZSxcclxuICAgIG1lYXN1cmVUZXh0XHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS1sYXlvdXQtY29udHJvbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0xheW91dFNlcnZpY2VdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBMYXlvdXRJdGVtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCd0ZW1wTGFiZWxSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgdGVtcExhYmVsUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubGF5b3V0LWNvbnRyb2wnKSBsYXlvdXRDb250cm9sQ2xhc3MgPSB0cnVlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3ctZGlyZWN0aW9uJykgaXNSb3dEaXJlY3Rpb247XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy1yZXZlcnNlLWRpcmVjdGlvbicpIGlzUm93UmV2ZXJzZURpcmVjdGlvbjtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY29sdW1uLWRpcmVjdGlvbicpIGlzQ29sdW1uRGlyZWN0aW9uO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2x1bW4tcmV2ZXJzZS1kaXJlY3Rpb24nKSBpc0NvbHVtblJldmVyc2VEaXJlY3Rpb247XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbnRhaW5lci1maWVsZCcpIGlzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgIC8vIEBIb3N0QmluZGluZygnc3R5bGUudmlzaWJpbGl0eScpIHZpc2liaWxpdHk6IHN0cmluZztcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJykgbWF4V2lkdGg7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi13aWR0aCcpIG1pbldpZHRoO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4taGVpZ2h0JykgbWluSGVpZ2h0ID0gJzIuMjVyZW0nO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBoZWlnaHQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaXNDaGVja2JveCcpIGlzQ2hlY2tib3g7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuY29udHJvbElzUmVhZG9ubHknKSBjb250cm9sSXNSZWFkb25seSA9IGZhbHNlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzQnV0dG9uJykgaXNCdXR0b247XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaXNzaW5nbGVwaWN0dXJlJykgaXNTaW5nbGVQaWN0dXJlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm1pbldpZHRoJykgYXR0ck1pbldpZHRoO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzbW9iaWxlJykgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmNvbnRyb2xJZCcpIGF0dHJDb250cm9sSWQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuY2FwdGlvbicpIGF0dHJDYXB0aW9uO1xyXG4gICAgQElucHV0KCkgaW5saW5lRWRpdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNhcHRpb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGZvY3VzQ29udHJvbDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG1heExhYmVsV2lkdGg6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGhhc0hvcml6b250YWxUZXh0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xyXG4gICAgQElucHV0KCkgZmxleDogc3RyaW5nO1xyXG4gICAgQE91dHB1dCgpIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0+KCk7XHJcblxyXG4gICAgaGlkZSA9IHRydWU7XHJcbiAgICBsYXlvdXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHdyYXBDb250ZW50OiBib29sZWFuO1xyXG4gICAgbGFiZWxXaWR0aDogbnVtYmVyO1xyXG4gICAgbGFiZWxDYXB0aW9uOiBzdHJpbmcgfCBTYWZlSHRtbDtcclxuICAgIGxhYmVsVmlzaWJsZT86IGJvb2xlYW47XHJcbiAgICBsYXlvdXRTZXRTaXplOiBib29sZWFuO1xyXG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGlzVWx2OiBib29sZWFuO1xyXG4gICAgaXNNYW5kYXRvcnk6IGJvb2xlYW47XHJcbiAgICBmaWVsZEljb246IHN0cmluZztcclxuICAgIG9yaWdpbmFsWHR5cGU6IHN0cmluZztcclxuICAgIHRleHRWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gICAgZW1wdHlUZXh0ID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJyYjODIwMzsnKTtcclxuICAgIGxheW91dENvbnRyb2xXaWR0aDogbnVtYmVyO1xyXG4gICAgZm9ybUhlaWdodCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuICAgIGNoZWNrYm94V2lkdGggPSAnZml0LWNvbnRlbnQnO1xyXG4gICAgaGVscERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgZm9ybVBhbmVsU2VydmljZTogRm9ybVBhbmVsU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5U2VydmljZTogQ29udGVudERlbnNpdHlTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyMjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByb3RlY3RlZCBfYmJiVHJhbnNsYXRlOiBCYmJUcmFuc2xhdGVQaXBlLFxyXG4gICAgICAgIEBTa2lwU2VsZigpIHByb3RlY3RlZCBfcGFyZW50TGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZm9ybVBhbmVsU2VydmljZSwgX2Nkcik7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGVudERlbnNpdHkgPT09ICdjb21wYWN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkhlaWdodCA9ICcycmVtJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBmbGV4IH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChmbGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEZsZXgoZmxleC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtSGVpZ2h0JCA9IHRoaXMuZm9ybVBhbmVsU2VydmljZS5mb3JtSGVpZ2h0JDtcclxuICAgICAgICB0aGlzLl9zZXRGbGV4KHRoaXMuZmxleCk7XHJcblxyXG4gICAgICAgIHRoaXMubGF5b3V0Q29udHJvbFdpZHRoID0gKHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0QXV0byA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICAgICdGaWVsZFVpLlNldHRpbmcuQ3VzdG9tVWkuUGFyYW1ldGVycy5NaW5IZWlnaHRBdXRvJyxcclxuICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXQgfHwgbWluSGVpZ2h0QXV0byB8fCB0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluSGVpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZSA9PT0gJ1VpLlVsdk1haW5VaScpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1VsdiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpc1VsdicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF0dHJDYXB0aW9uID0gY29uZmlnLkNhcHRpb24ucmVwbGFjZSgnOicsICcnKTtcclxuICAgICAgICB0aGlzLmF0dHJDb250cm9sSWQgPSBjb25maWcuQ29udHJvbElkO1xyXG4gICAgICAgIHRoaXMuaXNCdXR0b24gPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuQnV0dG9uJztcclxuICAgICAgICB0aGlzLl9yZWZyZXNoTGFiZWwoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1Jvd0RpcmVjdGlvbiA9IGNvbmZpZy5UZXh0TG9jYXRpb24gPT09ICdSaWdodCcgfHwgY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0RlZmF1bHQnO1xyXG4gICAgICAgIHRoaXMuaXNSb3dSZXZlcnNlRGlyZWN0aW9uID0gY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0xlZnQnO1xyXG4gICAgICAgIHRoaXMuaXNDb2x1bW5EaXJlY3Rpb24gPSBjb25maWcuVGV4dExvY2F0aW9uID09PSAnVG9wJyB8fCB0aGlzLmlzU2VhcmNoUGFuZWw7XHJcbiAgICAgICAgdGhpcy5pc0NvbHVtblJldmVyc2VEaXJlY3Rpb24gPSBjb25maWcuVGV4dExvY2F0aW9uID09PSAnQm90dG9tJztcclxuXHJcbiAgICAgICAgY29uZmlnLkZpZWxkVWkuTGF5b3V0Q29udHJvbCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5oZWxwRGVzY3JpcHRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb25maWcuRmllbGRVaSwgJ1NldHRpbmcuSGVscERlc2NyaXB0aW9uJywgJycpO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkSWNvbiA9IGNvbmZpZy5GaWVsZFVpLlNldHRpbmcuRmllbGRJY29uO1xyXG4gICAgICAgIHRoaXMuY29udHJvbElzUmVhZG9ubHkgPSBjb25maWcuRmllbGRVaS5TZXR0aW5nLkNvbnRyb2xJc1JlYWRPbmx5O1xyXG4gICAgICAgIHRoaXMuY29udHJvbElzUmVhZG9ubHkgPVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xJc1JlYWRvbmx5IHx8XHJcbiAgICAgICAgICAgIGNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSW5uZXJDdHJscj8uSXNSZWFkT25seSB8fFxyXG4gICAgICAgICAgICBjb25maWcuRmllbGRVaS5TZXR0aW5nLklubmVyQ3RybHI/Lnh0eXBlID09PSAnVWwuUmVhZE9ubHlGaWVsZEN0cmxyJztcclxuICAgICAgICB0aGlzLm9yaWdpbmFsWHR5cGUgPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlO1xyXG4gICAgICAgIHRoaXMudGV4dFZpc2libGUgPSBjb25maWcuVGV4dFZpc2libGU7XHJcbiAgICAgICAgaWYgKGNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5TZWFyY2hDb21tYW5kSW5mb1VpJykge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ2FwdGlvbiA9ICcmIzgyMDM7JztcclxuICAgICAgICAgICAgdGhpcy5sYWJlbFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnRleHRWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlTWluQW5kTWF4U2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfcmVmcmVzaExhYmVsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGxhYmVsQ2FwdGlvbiA9IGNvbmZpZy5DYXB0aW9uO1xyXG4gICAgICAgIC8vIGlmIChjb25maWcuRmllbGRVaS5TZXR0aW5nPy5Jc01hbmRhdG9yeSkge1xyXG4gICAgICAgIC8vICAgICBpZiAobGFiZWxDYXB0aW9uLmluZGV4T2YoJyonKSA8IDApIHtcclxuICAgICAgICAvLyAgICAgICAgIGxhYmVsQ2FwdGlvbiA9IGxhYmVsQ2FwdGlvbiArICcgKic7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICBsYWJlbENhcHRpb24gPSBsYWJlbENhcHRpb24ucmVwbGFjZSgnKicsICcnKTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNDaGVja2JveCA9IGNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5DaGVja0JveCc7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2JveCkge1xyXG4gICAgICAgICAgICBjb25zdCB4ID0gbWVhc3VyZVRleHQobGFiZWxDYXB0aW9uKTtcclxuICAgICAgICAgICAgaWYgKHggPCB0aGlzLm1heExhYmVsV2lkdGggJiYgIXRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3hXaWR0aCA9IGAke3RoaXMubWF4TGFiZWxXaWR0aH1weGA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNTaW5nbGVQaWN0dXJlID0gY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZSA9PT0gJ1VpLlNpbmdsZVBpY3R1cmUnO1xyXG4gICAgICAgIGNvbnN0IGNvbG9uTGFiZWwgPSB0aGlzLmZvcm1QYW5lbFNlcnZpY2UuQ29sb25JbkxhYmVsID8gJzonIDogJyc7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlQ2FwdGlvbiA9IGAke3RoaXMuX2JiYlRyYW5zbGF0ZS50cmFuc2Zvcm0obGFiZWxDYXB0aW9uKX0ke1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VhcmNoUGFuZWwgfHwgbGFiZWxDYXB0aW9uID09PSAnJnp3bmo7JyA/ICcnIDogY29sb25MYWJlbFxyXG4gICAgICAgIH1gO1xyXG4gICAgICAgIHRoaXMubGFiZWxDYXB0aW9uID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodHJhbnNsYXRlQ2FwdGlvbik7XHJcbiAgICAgICAgdGhpcy5sYWJlbFZpc2libGUgPSBjb25maWcuVGV4dFZpc2libGUgJiYgdGhpcy5zaG93TGFiZWwgIT09IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLl9zZXRIaWRlKGNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSXNWaXNpYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5pc01hbmRhdG9yeSA9IGNvbmZpZy5GaWVsZFVpLlNldHRpbmc/LklzTWFuZGF0b3J5O1xyXG4gICAgfVxyXG5cclxuICAgIF9yZXNpemVVbHZCeURldmljZShkZXZpY2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNVbHYpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGV2aWNlSGVpZ2h0ID0gJ0Rlc2t0b3BIZWlnaHQnO1xyXG4gICAgICAgIHN3aXRjaCAoZGV2aWNlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgZGV2aWNlSGVpZ2h0ID0gJ01vYmlsZUhlaWdodCc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgICAgICAgICBkZXZpY2VIZWlnaHQgPSAnVGFibGV0SGVpZ2h0JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhlaWdodCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICAgICAgJ0ZpZWxkVWkuU2V0dGluZy5DbGFzc05hbWVzLkN1c3RvbVVpLlBhcmFtZXRlcnMuJyArIGRldmljZUhlaWdodCxcclxuICAgICAgICAgICAgJ2F1dG8nXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgcHJlcGFyZU1pbkFuZE1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgY29uc3QgbGF5b3V0SW5mbyA9IGNvbmZpZztcclxuICAgICAgICBjb25zdCBpc0J1dHRvbiA9IHRoaXMuaXNCdXR0b247XHJcbiAgICAgICAgY29uc3QgaXNTaW5nbGVQaWN0dXJlID0gdGhpcy5pc1NpbmdsZVBpY3R1cmU7XHJcbiAgICAgICAgY29uc3QgaXNDaGVja2JveCA9IHRoaXMuaXNDaGVja2JveDtcclxuICAgICAgICBpZiAoIXRoaXMuaW5saW5lRWRpdCAmJiBsYXlvdXRJbmZvICYmIChpc0J1dHRvbiB8fCBpc0NoZWNrYm94IHx8IGlzU2luZ2xlUGljdHVyZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5hdHRyTWluV2lkdGggPSBjb25maWcuQm91bmRzLndpZHRoO1xyXG4gICAgICAgICAgICBsZXQgZXh0cmFWYWwgPSAwO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAoKGlzQnV0dG9uIHx8IGlzQ2hlY2tib3gpICYmIGxheW91dEluZm8uRmllbGRVaS5TZXR0aW5nPy5GaWVsZEljb24pIHx8XHJcbiAgICAgICAgICAgICAgICBsYXlvdXRJbmZvLkZpZWxkVWkuU2V0dGluZy5Kc29uRXh0cmFQcm9wPy5HbHlwaFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGV4dHJhVmFsID0gMTg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyBNYXhTaXplLCBNaW5TaXplIH0gPSBsYXlvdXRJbmZvO1xyXG4gICAgICAgICAgICBpZiAoTWF4U2l6ZT8ud2lkdGggPiAwICYmICF0aGlzLmlzQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF4V2lkdGggPSBNYXhTaXplLndpZHRoICsgZXh0cmFWYWwgKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChNaW5TaXplPy53aWR0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWluV2lkdGggPSBNaW5TaXplLndpZHRoICsgZXh0cmFWYWwgKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlzU2VhcmNoUGFuZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5hdHRyTWluV2lkdGggPSB0aGlzLm1heExhYmVsV2lkdGggKyAyMDA7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhXaWR0aCA9ICczMjBweCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5taW5XaWR0aCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIFJlZnJlc2hMYWJlbCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoTGFiZWwoKTtcclxuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyZWZyZXNoTGFiZWwnLCBkYXRhOiB0aGlzLmNvbmZpZyB9KTtcclxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9O1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIFNldFZpc2libGUgPSAodmlzaWJsZSwgcmVmcmVzaCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSXNWaXNpYmxlID0gdmlzaWJsZTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGlkZSghdmlzaWJsZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29uZmlnLkZpZWxkVWkuU2V0dGluZy4kQlJ1bGVIaWRlID0gIXZpc2libGU7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBfc2V0SGlkZShoaWRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaGlkZSA9IHRoaXMuY29uZmlnLkZpZWxkVWkuU2V0dGluZy5IaWRlU2VhcmNoQ29tbWFuZEluZm9VaSA9PT0gdHJ1ZSA/IHRydWUgOiBoaWRlOyAvLyBoaWRlIGRlZmF1bHQgYnV0dG9ucyBvZiBzZWFyY2ggcGFuZWxcclxuICAgICAgICB0aGlzLmhpZGUgPSBoaWRlO1xyXG4gICAgICAgIGlmIChoaWRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRlLWZvcm0taXRlbScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRlLWZvcm0taXRlbScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldEZsZXgoZmxleDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmbGV4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgfHwgdGhpcy5jb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlICE9PSAnVWkuVGV4dEFyZWEnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2ZsZXgnLCBmbGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiQGlmICghaGlkZSkgeyBAaWYgKGxhYmVsVmlzaWJsZSkge1xyXG48YnN1LWx5LWxhYmVsXHJcbiAgICBbYXR0ci5sYWJlbFdpZHRoXT1cImxhYmVsV2lkdGhcIlxyXG4gICAgW2F0dHJSdGxdXHJcbiAgICBbY2xhc3Mubm8tcGFkZGluZ109XCJjb25maWcuUGFkZGluZ1swXSA9PT0gMFwiXHJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICBbY2FwdGlvbl09XCJsYWJlbENhcHRpb25cIlxyXG4gICAgW29yaWdpbmFsV2lkdGhdPVwibGFiZWxXaWR0aFwiXHJcbiAgICBbc3R5bGUubWluLXdpZHRoXT1cIlxyXG4gICAgICAgIGlzQ2hlY2tib3hcclxuICAgICAgICAgICAgPyBjaGVja2JveFdpZHRoXHJcbiAgICAgICAgICAgIDogY29uZmlnLkNhcHRpb25TZXR0aW5nPy5BbGlnbk1vZGUgPT09ICdBdXRvU2l6ZScgfHwgKGlzTW9iaWxlICYmIGNvbnRyb2xJc1JlYWRvbmx5KVxyXG4gICAgICAgICAgICA/ICdmaXQtY29udGVudCdcclxuICAgICAgICAgICAgOiBpc0NvbHVtbkRpcmVjdGlvbiB8fCBpc0NvbHVtblJldmVyc2VEaXJlY3Rpb25cclxuICAgICAgICAgICAgPyAnMTAwJSdcclxuICAgICAgICAgICAgOiBtYXhMYWJlbFdpZHRoICsgJ3B4J1xyXG4gICAgXCJcclxuICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICBjb25maWcuQ2FwdGlvblNldHRpbmc/LkFsaWduTW9kZSA9PT0gJ0F1dG9TaXplJyB8fCAoaXNNb2JpbGUgJiYgKGlzQ2hlY2tib3ggfHwgY29udHJvbElzUmVhZG9ubHkpKVxyXG4gICAgICAgICAgICA/ICdhdXRvJ1xyXG4gICAgICAgICAgICA6IGlzQ29sdW1uRGlyZWN0aW9uIHx8IGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvblxyXG4gICAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgICA6IG1heExhYmVsV2lkdGggKyAncHgnXHJcbiAgICBcIlxyXG4gICAgW2lzTWFuZGF0b3J5XT1cImlzTWFuZGF0b3J5XCJcclxuICAgIFtmaWVsZEljb25dPVwiZmllbGRJY29uXCJcclxuICAgIFtoZWxwRGVzY3JpcHRpb25dPVwiaGVscERlc2NyaXB0aW9uXCJcclxuICAgIFtvcmlnaW5hbFh0eXBlXT1cIm9yaWdpbmFsWHR5cGVcIlxyXG4gICAgW3RleHRWaXNpYmxlXT1cInRleHRWaXNpYmxlXCJcclxuICAgIFtpc0NvbHVtbl09XCJpc0NvbHVtbkRpcmVjdGlvbiB8fCBpc0NvbHVtblJldmVyc2VEaXJlY3Rpb25cIlxyXG4+PC9ic3UtbHktbGFiZWw+XHJcbn1cclxuPGxhYmVsIFthdHRyLnZpc2libGVdPVwibGFiZWxWaXNpYmxlXCIgY2xhc3M9XCJob3Jpem9udGFsLWxhYmVsXCIgW2lubmVySHRtbF09XCJlbXB0eVRleHRcIj48L2xhYmVsPlxyXG48Ym5yYy1maWVsZC11aVxyXG4gICAgW2F0dHIueHR5cGVdPVwiY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZVwiXHJcbiAgICBbYXR0ci5maWVsZFdpZHRoXT1cImxheW91dENvbnRyb2xXaWR0aFwiXHJcbiAgICBbYXR0ci5pc0NoZWNrYm94XT1cImlzQ2hlY2tib3hcIlxyXG4gICAgW2F0dHIuaXNidXR0b25dPVwiaXNCdXR0b25cIlxyXG4gICAgW3N0eWxlLmZsZXgtZ3Jvd109XCJpc0NoZWNrYm94ID8gMSA6IDBcIlxyXG4gICAgW2NsYXNzLm5vLXBhZGRpbmddPVwiY29uZmlnLlBhZGRpbmdbMF0gPT09IDBcIlxyXG4gICAgW2N1c3RvbUZpZWxkXT1cImNvbmZpZy5GaWVsZFVpXCJcclxuICAgIFtsYXlvdXRJbmZvXT1cImNvbmZpZ1wiXHJcbiAgICBbaW5saW5lRWRpdF09XCJpbmxpbmVFZGl0XCJcclxuICAgIFtmb3JtSGVpZ2h0XT1cIihmb3JtSGVpZ2h0JCB8IGFzeW5jKSEhXCJcclxuICAgIFtmb2N1c0NvbnRyb2xdPVwiZm9jdXNDb250cm9sXCJcclxuICAgIFtpc1NlYXJjaFBhbmVsXT1cImlzU2VhcmNoUGFuZWxcIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJpc1VsdiA/ICcxMDAlJyA6ICdhdXRvJ1wiXHJcbiAgICBbYXR0ci5pc3Vsdl09XCJpc1VsdlwiXHJcbj48L2JucmMtZmllbGQtdWk+XHJcbn1cclxuIl19
@@ -21,7 +21,7 @@ export class ListItemComponent extends BaseViewItemPropsComponent {
21
21
  PreventDefaulEvent(e);
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ListItemComponent, selector: "bsu-list-item", inputs: { setting: "setting", isDisplayType: "isDisplayType" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.CounterField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i6.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "directive", type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i8.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i9.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i10.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i11.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i11.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i11.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ListItemComponent, selector: "bsu-list-item", inputs: { setting: "setting", isDisplayType: "isDisplayType" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.CounterField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i6.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "directive", type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i8.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: i9.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i10.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i11.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i11.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i11.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ListItemComponent, decorators: [{
27
27
  type: Component,
@@ -10,11 +10,11 @@ export class LySimpleLabelComponent extends LayoutItemBaseComponent {
10
10
  this.flex = Bounds.width;
11
11
  }
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LySimpleLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LySimpleLabelComponent, selector: "bsu-ly-simple-label", host: { properties: { "style.flex": "this.flex" } }, usesInheritance: true, ngImport: i0, template: "<!-- <label fd-form-label [wrap]=\"true\">{{ config.Text }}</label> -->\n@if (!config.CustomUi) {\n<h6 fd-title [wrap]=\"true\">{{ config.Text }}</h6>\n} @if (config.CustomUi) {\n<bnrc-dynamic-component [component]=\"config.CustomUi\" [value]=\"config.Text\"></bnrc-dynamic-component>\n}\n", styles: [":host{display:block}h6{overflow:hidden}\n"], dependencies: [{ kind: "component", type: i1.BaseDynamicComponent, selector: "bnrc-dynamic-component", inputs: ["component", "value"], outputs: ["events"] }, { kind: "component", type: i2.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: LySimpleLabelComponent, selector: "bsu-ly-simple-label", host: { properties: { "style.flex": "this.flex" } }, usesInheritance: true, ngImport: i0, template: "<!-- <label fd-form-label [wrap]=\"true\">{{ config.Text }}</label> -->\n@if (!config.CustomUi) {\n<h6 fd-title [wrap]=\"true\">{{ config.Text }}</h6>\n} @if (config.CustomUi) {\n<bnrc-dynamic-component [component]=\"config.CustomUi\" [value]=\"config.Text\"></bnrc-dynamic-component>\n}\n", styles: [":host{display:flex;align-items:center}:host:not(.isMobile){min-height:var(--sapElement_Height)}:host.isMobile{width:100%}h6{overflow:hidden}\n"], dependencies: [{ kind: "component", type: i1.BaseDynamicComponent, selector: "bnrc-dynamic-component", inputs: ["component", "value"], outputs: ["events"] }, { kind: "component", type: i2.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LySimpleLabelComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'bsu-ly-simple-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <label fd-form-label [wrap]=\"true\">{{ config.Text }}</label> -->\n@if (!config.CustomUi) {\n<h6 fd-title [wrap]=\"true\">{{ config.Text }}</h6>\n} @if (config.CustomUi) {\n<bnrc-dynamic-component [component]=\"config.CustomUi\" [value]=\"config.Text\"></bnrc-dynamic-component>\n}\n", styles: [":host{display:block}h6{overflow:hidden}\n"] }]
17
+ args: [{ selector: 'bsu-ly-simple-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <label fd-form-label [wrap]=\"true\">{{ config.Text }}</label> -->\n@if (!config.CustomUi) {\n<h6 fd-title [wrap]=\"true\">{{ config.Text }}</h6>\n} @if (config.CustomUi) {\n<bnrc-dynamic-component [component]=\"config.CustomUi\" [value]=\"config.Text\"></bnrc-dynamic-component>\n}\n", styles: [":host{display:flex;align-items:center}:host:not(.isMobile){min-height:var(--sapElement_Height)}:host.isMobile{width:100%}h6{overflow:hidden}\n"] }]
18
18
  }], propDecorators: { flex: [{
19
19
  type: HostBinding,
20
20
  args: ['style.flex']