barsa-sap-ui 2.0.73 → 2.0.75

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.
@@ -150,13 +150,13 @@ export class FormDialogComponent extends BaseComponent {
150
150
  this.caption = typeDefName + ':' + moCaption;
151
151
  }
152
152
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormDialogComponent, deps: [{ token: i1.DialogService }, { token: i2.DialogParams }, { token: i2.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormDialogComponent, selector: "bsu-form-dialog", providers: [ContainerService], viewQueries: [{ propertyName: "dialogTemplateRef", first: true, predicate: ["dialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <h1 fd-title style=\"max-width: 15rem\">{{ title || dialogConfig.data.caption }}</h1>\n </div>\n <div fd-bar-center style=\"flex: 1\"></div>\n <div fd-bar-right>\n <bsu-form-toolbar\n fd-bar-right\n style=\"width: auto\"\n [deviceSize]=\"deviceSize\"\n [buttons]=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n @if (dialogConfig.data.canFullscreen) {\n <fd-button-bar\n ariaLabel=\"fullscreen\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [dialog]=\"dialog\"\n [fullscreen]=\"fullscreen\"\n (fullscreenChanged)=\"fullscreen = $event\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onCancel()\"></fd-button-bar>\n </div>\n </ng-template>\n <!-- <ng-template\n fdkTemplate=\"subheader\"\n *ngIf=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false as toolbarItems\"\n >\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"!tw-justify-end\">\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n </fd-bar-element>\n </div>\n </ng-template> -->\n </fd-dialog-header>\n\n <fd-dialog-body>\n <bnrc-form\n [formPanelCtrl]=\"formPanelCtrlr\"\n [params]=\"params\"\n (formClose)=\"onFormClose()\"\n (uiComponent)=\"onFormUiComponentReady($event)\"\n ></bnrc-form>\n </fd-dialog-body>\n <fd-dialog-footer [style.display]=\"!showFooter ? 'none' : null\">\n @for (btn of (extendToolbarItems$ | async); track btn.Id) { @if (!(btn === '-' || btn.text === '-') &&\n ((btn.isBuiltin && btn.inFooter) || btn.isWorkflow)) {\n <ng-container\n *ngTemplateOutlet=\"\n btn.Data?.CustomUi?.Selector ? dynamicBtnTemplate : btnTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n <ng-template #btnTemplate let-btn>\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-dialog-decisive-button\n [fdType]=\"btn.isWorkflow ? 'attention' : btn.design\"\n [label]=\"btn.text | bbbTranslate\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n (click)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n </ng-template>\n <ng-template #dynamicBtnTemplate let-btn>\n <fd-dialog-footer-button>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [component]=\"btn.Data.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n (btnClick)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></bnrc-dynamic-form-toolbaritem>\n </fd-dialog-footer-button>\n </ng-template>\n } } @if (!isNonePersistance && showSaveButton !== false) {\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-initial-focus\n fd-dialog-decisive-button\n [label]=\"'Cancel' | bbbTranslate\"\n (click)=\"onCancel()\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:auto}fd-dialog-body{display:flex;flex-direction:column;height:100%;align-items:stretch;justify-content:stretch}fd-dialog-body>bnrc-form{flex-grow:1;display:flex;flex-direction:row;height:100%;justify-content:stretch;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i2.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "deviceSize", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i6.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i7.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i9.FormToolbarComponent, selector: "bsu-form-toolbar", outputs: ["toolbarClick"] }, { kind: "directive", type: i10.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TlbButtonsPipe, name: "tlbButtons" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FormDialogComponent, selector: "bsu-form-dialog", providers: [ContainerService], viewQueries: [{ propertyName: "dialogTemplateRef", first: true, predicate: ["dialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <h1 fd-title style=\"max-width: 15rem\">{{ title || dialogConfig.data.caption }}</h1>\n </div>\n <div fd-bar-center style=\"flex: 1\"></div>\n <div fd-bar-right>\n <bsu-form-toolbar\n fd-bar-right\n style=\"width: auto\"\n [deviceSize]=\"deviceSize\"\n [buttons]=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n @if (dialogConfig.data.canFullscreen) {\n <fd-button-bar\n ariaLabel=\"fullscreen\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [dialog]=\"dialog\"\n [fullscreen]=\"fullscreen\"\n (fullscreenChanged)=\"fullscreen = $event\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onCancel()\"></fd-button-bar>\n </div>\n </ng-template>\n <!-- <ng-template\n fdkTemplate=\"subheader\"\n *ngIf=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false as toolbarItems\"\n >\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"!tw-justify-end\">\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n </fd-bar-element>\n </div>\n </ng-template> -->\n </fd-dialog-header>\n\n <fd-dialog-body>\n <bnrc-form\n [formPanelCtrl]=\"formPanelCtrlr\"\n [params]=\"params\"\n (formClose)=\"onFormClose()\"\n (uiComponent)=\"onFormUiComponentReady($event)\"\n ></bnrc-form>\n </fd-dialog-body>\n <fd-dialog-footer [style.display]=\"!showFooter ? 'none' : null\">\n @for (btn of (extendToolbarItems$ | async | tlbButtons: 'inFooter':true) ; track btn.Id) { @if (!(btn ===\n '-' || btn.text === '-') && ((btn.isBuiltin && btn.inFooter) || btn.isWorkflow)) {\n <ng-container\n *ngTemplateOutlet=\"\n btn.Data?.CustomUi?.Selector ? dynamicBtnTemplate : btnTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n <ng-template #btnTemplate let-btn>\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-dialog-decisive-button\n [fdType]=\"btn.isWorkflow ? 'attention' : btn.design\"\n [label]=\"btn.text | bbbTranslate\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n (click)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n </ng-template>\n <ng-template #dynamicBtnTemplate let-btn>\n <fd-dialog-footer-button>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [component]=\"btn.Data.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n (btnClick)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></bnrc-dynamic-form-toolbaritem>\n </fd-dialog-footer-button>\n </ng-template>\n } } @if (!isNonePersistance && showSaveButton !== false) {\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-initial-focus\n fd-dialog-decisive-button\n [label]=\"'Cancel' | bbbTranslate\"\n (click)=\"onCancel()\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:auto}fd-dialog-body{display:flex;flex-direction:column;height:100%;align-items:stretch;justify-content:stretch}fd-dialog-body>bnrc-form{flex-grow:1;display:flex;flex-direction:row;height:100%;justify-content:stretch;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i2.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "deviceSize", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i5.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i5.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i5.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i6.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i7.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i9.FormToolbarComponent, selector: "bsu-form-toolbar", outputs: ["toolbarClick"] }, { kind: "directive", type: i10.FullscreenDialogDirective, selector: "[fullscreenDialog]", inputs: ["dialog", "dialogComponent", "fullscreen"], outputs: ["fullscreenChanged"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TlbButtonsPipe, name: "tlbButtons" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
154
154
  }
155
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FormDialogComponent, decorators: [{
156
156
  type: Component,
157
- args: [{ selector: 'bsu-form-dialog', providers: [ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <h1 fd-title style=\"max-width: 15rem\">{{ title || dialogConfig.data.caption }}</h1>\n </div>\n <div fd-bar-center style=\"flex: 1\"></div>\n <div fd-bar-right>\n <bsu-form-toolbar\n fd-bar-right\n style=\"width: auto\"\n [deviceSize]=\"deviceSize\"\n [buttons]=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n @if (dialogConfig.data.canFullscreen) {\n <fd-button-bar\n ariaLabel=\"fullscreen\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [dialog]=\"dialog\"\n [fullscreen]=\"fullscreen\"\n (fullscreenChanged)=\"fullscreen = $event\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onCancel()\"></fd-button-bar>\n </div>\n </ng-template>\n <!-- <ng-template\n fdkTemplate=\"subheader\"\n *ngIf=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false as toolbarItems\"\n >\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"!tw-justify-end\">\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n </fd-bar-element>\n </div>\n </ng-template> -->\n </fd-dialog-header>\n\n <fd-dialog-body>\n <bnrc-form\n [formPanelCtrl]=\"formPanelCtrlr\"\n [params]=\"params\"\n (formClose)=\"onFormClose()\"\n (uiComponent)=\"onFormUiComponentReady($event)\"\n ></bnrc-form>\n </fd-dialog-body>\n <fd-dialog-footer [style.display]=\"!showFooter ? 'none' : null\">\n @for (btn of (extendToolbarItems$ | async); track btn.Id) { @if (!(btn === '-' || btn.text === '-') &&\n ((btn.isBuiltin && btn.inFooter) || btn.isWorkflow)) {\n <ng-container\n *ngTemplateOutlet=\"\n btn.Data?.CustomUi?.Selector ? dynamicBtnTemplate : btnTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n <ng-template #btnTemplate let-btn>\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-dialog-decisive-button\n [fdType]=\"btn.isWorkflow ? 'attention' : btn.design\"\n [label]=\"btn.text | bbbTranslate\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n (click)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n </ng-template>\n <ng-template #dynamicBtnTemplate let-btn>\n <fd-dialog-footer-button>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [component]=\"btn.Data.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n (btnClick)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></bnrc-dynamic-form-toolbaritem>\n </fd-dialog-footer-button>\n </ng-template>\n } } @if (!isNonePersistance && showSaveButton !== false) {\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-initial-focus\n fd-dialog-decisive-button\n [label]=\"'Cancel' | bbbTranslate\"\n (click)=\"onCancel()\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:auto}fd-dialog-body{display:flex;flex-direction:column;height:100%;align-items:stretch;justify-content:stretch}fd-dialog-body>bnrc-form{flex-grow:1;display:flex;flex-direction:row;height:100%;justify-content:stretch;align-items:stretch}\n"] }]
157
+ args: [{ selector: 'bsu-form-dialog', providers: [ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTplRef>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <h1 fd-title style=\"max-width: 15rem\">{{ title || dialogConfig.data.caption }}</h1>\n </div>\n <div fd-bar-center style=\"flex: 1\"></div>\n <div fd-bar-right>\n <bsu-form-toolbar\n fd-bar-right\n style=\"width: auto\"\n [deviceSize]=\"deviceSize\"\n [buttons]=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n @if (dialogConfig.data.canFullscreen) {\n <fd-button-bar\n ariaLabel=\"fullscreen\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n fullscreenDialog\n [dialog]=\"dialog\"\n [fullscreen]=\"fullscreen\"\n (fullscreenChanged)=\"fullscreen = $event\"\n [dialogComponent]=\"dialogTplRef\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onCancel()\"></fd-button-bar>\n </div>\n </ng-template>\n <!-- <ng-template\n fdkTemplate=\"subheader\"\n *ngIf=\"extendToolbarItems$ | async | tlbButtons: 'inFooter':false as toolbarItems\"\n >\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\" class=\"!tw-justify-end\">\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"onToolbarClick($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n </fd-bar-element>\n </div>\n </ng-template> -->\n </fd-dialog-header>\n\n <fd-dialog-body>\n <bnrc-form\n [formPanelCtrl]=\"formPanelCtrlr\"\n [params]=\"params\"\n (formClose)=\"onFormClose()\"\n (uiComponent)=\"onFormUiComponentReady($event)\"\n ></bnrc-form>\n </fd-dialog-body>\n <fd-dialog-footer [style.display]=\"!showFooter ? 'none' : null\">\n @for (btn of (extendToolbarItems$ | async | tlbButtons: 'inFooter':true) ; track btn.Id) { @if (!(btn ===\n '-' || btn.text === '-') && ((btn.isBuiltin && btn.inFooter) || btn.isWorkflow)) {\n <ng-container\n *ngTemplateOutlet=\"\n btn.Data?.CustomUi?.Selector ? dynamicBtnTemplate : btnTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n <ng-template #btnTemplate let-btn>\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-dialog-decisive-button\n [fdType]=\"btn.isWorkflow ? 'attention' : btn.design\"\n [label]=\"btn.text | bbbTranslate\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n (click)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n </ng-template>\n <ng-template #dynamicBtnTemplate let-btn>\n <fd-dialog-footer-button>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [component]=\"btn.Data.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n (btnClick)=\"btn.handler(btn, formPanelCtrlr?.Adapter?.Control)\"\n ></bnrc-dynamic-form-toolbaritem>\n </fd-dialog-footer-button>\n </ng-template>\n } } @if (!isNonePersistance && showSaveButton !== false) {\n <fd-dialog-footer-button>\n <fd-button-bar\n fd-initial-focus\n fd-dialog-decisive-button\n [label]=\"'Cancel' | bbbTranslate\"\n (click)=\"onCancel()\"\n ></fd-button-bar>\n </fd-dialog-footer-button>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:auto}fd-dialog-body{display:flex;flex-direction:column;height:100%;align-items:stretch;justify-content:stretch}fd-dialog-body>bnrc-form{flex-grow:1;display:flex;flex-direction:row;height:100%;justify-content:stretch;align-items:stretch}\n"] }]
158
158
  }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.DialogParams }, { type: i2.PortalService }], propDecorators: { dialogTemplateRef: [{
159
159
  type: ViewChild,
160
160
  args: ['dialog', { read: TemplateRef, static: true }]
161
161
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQ0gsUUFBUSxFQUlSLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsU0FBUyxFQUNaLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQVU5QixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQWlDbEQsWUFDWSxjQUE2QixFQUM3QixZQUEwQixFQUMxQixjQUE2QjtRQUVyQyxLQUFLLEVBQUUsQ0FBQztRQUpBLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBL0J6QyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVluQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsY0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBY3BCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFB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QUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7SUFDakMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxjQUFtQjtRQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDakQsQ0FBQzs4R0EvS1EsbUJBQW1CO2tHQUFuQixtQkFBbUIsMENBSGpCLENBQUMsZ0JBQWdCLENBQUMsa0hBSUEsV0FBVyxrRUN0QjVDLGkrSkF3R0E7OzJGRG5GYSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksaUJBQWlCLGFBR2hCLENBQUMsZ0JBQWdCLENBQUMsbUJBQ1osdUJBQXVCLENBQUMsTUFBTTt5SUFJL0MsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcsIERpYWxvZ1JlZiwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhcnNhQXBpLFxuICAgIERpYWxvZ1BhcmFtcyxcbiAgICBGb3JtQ29tcG9uZW50LFxuICAgIFBvcnRhbFNlcnZpY2UsXG4gICAgQ29udGFpbmVyU2VydmljZSxcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEZvcm1CYXNlQ29tcG9uZW50LFxuICAgIGlzRmlyZWZveFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWZvcm0tZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29udGFpbmVyU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9ybURpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGRpYWxvZ1RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgZm9ybUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEZvcm1Db21wb25lbnQ+O1xuICAgIGNhcHRpb24gPSAnJztcbiAgICBmdWxsc2NyZWVuID0gZmFsc2U7XG4gICAgZGlhbG9nT3BlbmVkOiBib29sZWFuO1xuICAgIGRpYWxvZ1JlZjogRGlhbG9nUmVmO1xuICAgIGluRGlhbG9nOiBhbnk7XG4gICAgcGFyYW1zOiB7XG4gICAgICAgIG1vSWQ6IHN0cmluZztcbiAgICAgICAgdHlwZURlZklkOiBzdHJpbmc7XG4gICAgICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgICAgIGluRGlhbG9nOiBib29sZWFuO1xuICAgIH07XG4gICAgcGFyZW50Q29udGFpbmVyOiBhbnk7XG4gICAgZGV2aWNlU2l6ZTogc3RyaW5nO1xuICAgIGlzTm9uZVBlcnNpc3RhbmNlID0gZmFsc2U7XG4gICAgc2hvd1NhdmVCdXR0b24gPSB0cnVlO1xuICAgIHNob3dUb29sYmFyID0gdHJ1ZTtcbiAgICBzaG93Rm9vdGVyOiBib29sZWFuO1xuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgY2FuTW92ZTogYm9vbGVhbjtcbiAgICBjYW5SZXNpemU6IGJvb2xlYW47XG4gICAgaXNGaXJlZm94ID0gaXNGaXJlZm94KCk7XG4gICAgZnVsbHNjcmVlbkRlZmF1bHQ6IGJvb2xlYW47XG4gICAgZXh0ZW5kVG9vbGJhckl0ZW1zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8J3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJz47XG4gICAgZGlyVmFsdWUkOiBPYnNlcnZhYmxlPCdydGwnIHwgJ2x0cic+O1xuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgX2Zvcm1VaUNvbXBvbmVudDogRm9ybUJhc2VDb21wb25lbnQ7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dQYXJhbXM6IERpYWxvZ1BhcmFtcyxcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnN1YnNjcmliZSgoZGV2aWNlU2l6ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXZpY2VTaXplID0gZGV2aWNlU2l6ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5mb3JtcGFuZWxDdHJscjtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3LkN1c3RvbVVpLlBhcmFtZXRlcnMnLCBudWxsKTtcbiAgICAgICAgdGhpcy50aXRsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3LkhlYWRlckxheW91dC5UaXRsZScsIG51bGwpO1xuICAgICAgICBjb25zdCBtb0lkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5pZDtcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC50eWlkO1xuICAgICAgICBjb25zdCByZXBvcnRJZCA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQucmVwaWQ7XG4gICAgICAgIHRoaXMuaW5EaWFsb2cgPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LmluRGlhbG9nO1xuICAgICAgICB0aGlzLmZ1bGxzY3JlZW4gPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LmZ1bGxzY3JlZW47XG4gICAgICAgIHRoaXMuY2FuRnVsbHNjcmVlbiA9IHBhcmFtZXRlcnM/LkNhbkZ1bGxzY3JlZW47XG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbkRlZmF1bHQgPSBwYXJhbWV0ZXJzPy5GdWxsc2NyZWVuRGVmYXVsdDtcbiAgICAgICAgaWYgKHRoaXMuZnVsbHNjcmVlbkRlZmF1bHQpIHtcbiAgICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYW5Nb3ZlID0gcGFyYW1ldGVycz8uQ2FuTW92ZTtcbiAgICAgICAgdGhpcy5jYW5SZXNpemUgPSBwYXJhbWV0ZXJzPy5DYW5SZXNpemU7XG4gICAgICAgIHRoaXMucGFyYW1zID0geyBtb0lkLCB0eXBlRGVmSWQsIHJlcG9ydElkLCBpbkRpYWxvZzogdHJ1ZSB9O1xuICAgICAgICB0aGlzLl9zZXRDYXB0aW9uKGZvcm1QYW5lbEN0cmxyKTtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGZvcm1QYW5lbEN0cmxyO1xuICAgIH1cbiAgICBnZXQgQWRhcHRlcigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJsci5BZGFwdGVyO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xuICAgICAgICB0aGlzLnNob3dTYXZlQnV0dG9uID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICBmb3JtUGFuZWxDdHJscixcbiAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuRm9ybVNldHRpbmdzLlNob3dTYXZlQnV0dG9uJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuRm9ybVNldHRpbmdzLlNob3dUb29sYmFyJyk7XG4gICAgICAgIHRoaXMuaXNOb25lUGVyc2lzdGFuY2UgPSBmb3JtUGFuZWxDdHJscj8uU2V0dGluZz8uVmlldz8uSXNOb25lUGVyc2lzdGFuY2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvb3RlciA9IHRoaXMuaXNOb25lUGVyc2lzdGFuY2VcbiAgICAgICAgICAgID8gdGhpcy5zaG93U2F2ZUJ1dHRvbiAhPT0gZmFsc2UgJiYgdGhpcy5zaG93VG9vbGJhciAhPT0gZmFsc2VcbiAgICAgICAgICAgIDogdGhpcy5zaG93U2F2ZUJ1dHRvbjtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNob3dGb290ZXIgPT0gdHlwZW9mIG51bGwgfHwgZm9ybVBhbmVsQ3RybHI/LlNldHRpbmc/LldvcmtmbG93KSB7XG4gICAgICAgICAgICB0aGlzLnNob3dGb290ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgIH1cbiAgICBvblRvb2xiYXJDbGljayhlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1VaUNvbXBvbmVudC5vblRvb2xiYXJDbGljayhlKTtcbiAgICB9XG4gICAgb25Gb3JtVWlDb21wb25lbnRSZWFkeSh1aUNvbXBvbmVudDogRm9ybUJhc2VDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybVVpQ29tcG9uZW50ID0gdWlDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuZXh0ZW5kVG9vbGJhckl0ZW1zJCA9IHVpQ29tcG9uZW50LmV4dGVuZFRvb2xiYXJJdGVtcyQ7XG4gICAgICAgIHRoaXMucnRsJCA9IHVpQ29tcG9uZW50LnJ0bCQ7XG4gICAgICAgIHRoaXMuZGlyVmFsdWUkID0gdWlDb21wb25lbnQuZGlyVmFsdWUkO1xuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gdWlDb21wb25lbnQuZGV2aWNlU2l6ZSQ7XG4gICAgfVxuICAgIG9wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNtYWxsRGV2aWNlID0gdGhpcy5kZXZpY2VTaXplID09PSAncycgfHwgdGhpcy5kZXZpY2VTaXplID09PSAnbSc7XG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGxldCB3aWR0aCA9IHNtYWxsRGV2aWNlID8gJzEwMCUnIDogJzMwdncnO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiAnYXV0byc7XG4gICAgICAgIGlmICh3aW5kb3dXaWR0aCA8IDE0NDApIHtcbiAgICAgICAgICAgIHdpZHRoID0gJzgwc3Z3JztcbiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3dXaWR0aCA8IDkwMCkge1xuICAgICAgICAgICAgd2lkdGggPSAnMTAwc3Z3JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZpZXdXaWR0aCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuTWluU2l6ZS53aWR0aCcsIG51bGwpO1xuICAgICAgICBjb25zdCB2aWV3SGllZ2h0ID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5mb3JtUGFuZWxDdHJsciwgJ1NldHRpbmcuVmlldy5NaW5TaXplLmhlaWdodCcsIG51bGwpO1xuICAgICAgICBjb25zdCBtaW5XaWR0aCA9IHNtYWxsRGV2aWNlID8gJzEwMCUnIDogdmlld1dpZHRoID8gdmlld1dpZHRoICsgJ3B4JyA6ICdhdXRvJztcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiB2aWV3SGllZ2h0ID8gdmlld0hpZWdodCArICdweCcgOiAnYXV0byc7XG4gICAgICAgIGlmICh2aWV3SGllZ2h0KSB7XG4gICAgICAgICAgICBoZWlnaHQgPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IGAke3ZpZXdIaWVnaHQgKyAxMDB9cHhgO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGFsU2V0dGluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJscixcbiAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuQ3VzdG9tVWkuUGFyYW1ldGVycy5Nb2RhbFNldHRpbmcnLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBzZXR0aW5nOiBEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBiYWNrZHJvcENsaWNrQ2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIG1vYmlsZTogc21hbGxEZXZpY2UsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIC8vIGJvZHlNaW5IZWlnaHQ6IG1pbkhlaWdodCxcbiAgICAgICAgICAgIG1pbkhlaWdodCxcbiAgICAgICAgICAgIG1pbldpZHRoLFxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0aGlzLmNhbk1vdmUsXG4gICAgICAgICAgICByZXNpemFibGU6IHRoaXMuY2FuUmVzaXplLFxuICAgICAgICAgICAgZGF0YTogeyBjYXB0aW9uOiB0aGlzLmNhcHRpb24sIGNhbkZ1bGxzY3JlZW46IHRoaXMuY2FuRnVsbHNjcmVlbiwgY2FuTW92ZTogdGhpcy5jYW5Nb3ZlIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG1vZGFsU2V0dGluZykge1xuICAgICAgICAgICAgc2V0dGluZyA9IHsgLi4uc2V0dGluZywgLi4ubW9kYWxTZXR0aW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dUZW1wbGF0ZVJlZiwgc2V0dGluZyk7XG4gICAgfVxuXG4gICAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XG4gICAgICAgIGFkYXB0ZXIuZmlyZUV2ZW50KCdUb29sQ2xpY2snLCBhZGFwdGVyLCB7IEtleTogJ0NhbmNlbCcgfSk7XG4gICAgICAgIHRoaXMuX2Nsb3NlKCk7XG4gICAgfVxuICAgIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuQWRhcHRlcjtcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnU2F2ZUFuZENsb3NlJyB9KTtcbiAgICB9XG4gICAgb25PaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuQWRhcHRlcjtcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnT2snIH0pO1xuICAgIH1cblxuICAgIG9uRm9ybUNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1BhcmFtcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRpYWxvZ09wZW5lZCA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEBJbnB1dCgpIFNob3dGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcbiAgICAvLyAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEBJbnB1dCgpIEZvcmNlQ2xvc2VDaGlsZCA9ICgpID0+IHt9O1xuICAgIC8vIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQElucHV0KCkgUmVmcmVzaEZvcm1QYW5lbENvbnRyb2wgPSAoZm9ybXBhbmVsQ3RybHIpID0+IHt9O1xuICAgIHByaXZhdGUgX2Nsb3NlKCk6IHZvaWQge1xuICAgICAgICAvLyB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LmNsb3NlKCk7XG4gICAgICAgIGlmICh0aGlzLkFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuQWRhcHRlci5Db250cm9sLmZpcmVFdmVudCgnUmVxdWVzdEZvckNsb3NlJywgdGhpcy5BZGFwdGVyLkNvbnRyb2wsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUGFyYW1zLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuZGlhbG9nT3BlbmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Q2FwdGlvbihmb3JtUGFuZWxDdHJscjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHR5cGVEZWZOYW1lID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdNby4kVHlwZURlZk5hbWUnLCAnJyk7XG4gICAgICAgIGNvbnN0IG1vQ2FwdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnTW8uJENhcHRpb24nLCAnJyk7XG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHR5cGVEZWZOYW1lICsgJzonICsgbW9DYXB0aW9uO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjZGlhbG9nPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiICNkaWFsb2dUcGxSZWY+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPGgxIGZkLXRpdGxlIHN0eWxlPVwibWF4LXdpZHRoOiAxNXJlbVwiPnt7IHRpdGxlIHx8IGRpYWxvZ0NvbmZpZy5kYXRhLmNhcHRpb24gfX08L2gxPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWNlbnRlciBzdHlsZT1cImZsZXg6IDFcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJhci1yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zXT1cImV4dGVuZFRvb2xiYXJJdGVtcyQgfCBhc3luYyB8IHRsYkJ1dHRvbnM6ICdpbkZvb3Rlcic6ZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RpclZhbHVlXT1cIihkaXJWYWx1ZSQgfCBhc3luYykhIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNGaXJlZm94XT1cImlzRmlyZWZveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9vbGJhckNsaWNrKT1cIm9uVG9vbGJhckNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgID48L2JzdS1mb3JtLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlhbG9nQ29uZmlnLmRhdGEuY2FuRnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuRGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nXT1cImRpYWxvZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnVsbHNjcmVlbl09XCJmdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuQ2hhbmdlZCk9XCJmdWxsc2NyZWVuID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFsb2dDb21wb25lbnRdPVwiZGlhbG9nVHBsUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgZmRrVGVtcGxhdGU9XCJzdWJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jIHwgdGxiQnV0dG9uczogJ2luRm9vdGVyJzpmYWxzZSBhcyB0b29sYmFySXRlbXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50IFtmdWxsV2lkdGhdPVwidHJ1ZVwiIGNsYXNzPVwiIXR3LWp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnN1LWZvcm0tdG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zXT1cInRvb2xiYXJJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpclZhbHVlXT1cIihkaXJWYWx1ZSQgfCBhc3luYykhIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b29sYmFyQ2xpY2spPVwib25Ub29sYmFyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cblxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgICAgICA8Ym5yYy1mb3JtXG4gICAgICAgICAgICAgICAgW2Zvcm1QYW5lbEN0cmxdPVwiZm9ybVBhbmVsQ3RybHJcIlxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcbiAgICAgICAgICAgICAgICAoZm9ybUNsb3NlKT1cIm9uRm9ybUNsb3NlKClcIlxuICAgICAgICAgICAgICAgICh1aUNvbXBvbmVudCk9XCJvbkZvcm1VaUNvbXBvbmVudFJlYWR5KCRldmVudClcIlxuICAgICAgICAgICAgPjwvYm5yYy1mb3JtPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmQtZGlhbG9nLWZvb3RlciBbc3R5bGUuZGlzcGxheV09XCIhc2hvd0Zvb3RlciA/ICdub25lJyA6IG51bGxcIj5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiAoZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jKTsgdHJhY2sgYnRuLklkKSB7IEBpZiAoIShidG4gPT09ICctJyB8fCBidG4udGV4dCA9PT0gJy0nKSAmJlxuICAgICAgICAgICAgKChidG4uaXNCdWlsdGluICYmIGJ0bi5pbkZvb3RlcikgfHwgYnRuLmlzV29ya2Zsb3cpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgYnRuLkRhdGE/LkN1c3RvbVVpPy5TZWxlY3RvciA/IGR5bmFtaWNCdG5UZW1wbGF0ZSA6IGJ0blRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnRuIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidG5UZW1wbGF0ZSBsZXQtYnRuPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiYnRuLmlzV29ya2Zsb3cgPyAnYXR0ZW50aW9uJyA6IGJ0bi5kZXNpZ25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuLmhhbmRsZXIoYnRuLCBmb3JtUGFuZWxDdHJscj8uQWRhcHRlcj8uQ29udHJvbClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljQnRuVGVtcGxhdGUgbGV0LWJ0bj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxibnJjLWR5bmFtaWMtZm9ybS10b29sYmFyaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29tcG9uZW50XT1cImJ0bi5EYXRhLkN1c3RvbVVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNFbmFibGVdPVwiYnRuLkNvbW1hbmQ/Ll9pc0VuYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuQ2xpY2spPVwiYnRuLmhhbmRsZXIoYnRuLCBmb3JtUGFuZWxDdHJscj8uQWRhcHRlcj8uQ29udHJvbClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9ibnJjLWR5bmFtaWMtZm9ybS10b29sYmFyaXRlbT5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH0gfSBAaWYgKCFpc05vbmVQZXJzaXN0YW5jZSAmJiBzaG93U2F2ZUJ1dHRvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZC1pbml0aWFsLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDYW5jZWwnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQ0gsUUFBUSxFQUlSLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsU0FBUyxFQUNaLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQVU5QixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQWlDbEQsWUFDWSxjQUE2QixFQUM3QixZQUEwQixFQUMxQixjQUE2QjtRQUVyQyxLQUFLLEVBQUUsQ0FBQztRQUpBLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBL0J6QyxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVluQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsY0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBY3BCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFB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QUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7SUFDakMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxjQUFtQjtRQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDakQsQ0FBQzs4R0EvS1EsbUJBQW1CO2tHQUFuQixtQkFBbUIsMENBSGpCLENBQUMsZ0JBQWdCLENBQUMsa0hBSUEsV0FBVyxrRUN0QjVDLGdnS0F3R0E7OzJGRG5GYSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksaUJBQWlCLGFBR2hCLENBQUMsZ0JBQWdCLENBQUMsbUJBQ1osdUJBQXVCLENBQUMsTUFBTTt5SUFJL0MsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbmZpZywgRGlhbG9nUmVmLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgRGlhbG9nUGFyYW1zLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBDb250YWluZXJTZXJ2aWNlLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEZvcm1CYXNlQ29tcG9uZW50LFxyXG4gICAgaXNGaXJlZm94XHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWZvcm0tZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29udGFpbmVyU2VydmljZV0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybURpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBkaWFsb2dUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XHJcbiAgICBmb3JtQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Rm9ybUNvbXBvbmVudD47XHJcbiAgICBjYXB0aW9uID0gJyc7XHJcbiAgICBmdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICBkaWFsb2dPcGVuZWQ6IGJvb2xlYW47XHJcbiAgICBkaWFsb2dSZWY6IERpYWxvZ1JlZjtcclxuICAgIGluRGlhbG9nOiBhbnk7XHJcbiAgICBwYXJhbXM6IHtcclxuICAgICAgICBtb0lkOiBzdHJpbmc7XHJcbiAgICAgICAgdHlwZURlZklkOiBzdHJpbmc7XHJcbiAgICAgICAgcmVwb3J0SWQ6IHN0cmluZztcclxuICAgICAgICBpbkRpYWxvZzogYm9vbGVhbjtcclxuICAgIH07XHJcbiAgICBwYXJlbnRDb250YWluZXI6IGFueTtcclxuICAgIGRldmljZVNpemU6IHN0cmluZztcclxuICAgIGlzTm9uZVBlcnNpc3RhbmNlID0gZmFsc2U7XHJcbiAgICBzaG93U2F2ZUJ1dHRvbiA9IHRydWU7XHJcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XHJcbiAgICBzaG93Rm9vdGVyOiBib29sZWFuO1xyXG4gICAgY2FuRnVsbHNjcmVlbjogYm9vbGVhbjtcclxuICAgIGNhbk1vdmU6IGJvb2xlYW47XHJcbiAgICBjYW5SZXNpemU6IGJvb2xlYW47XHJcbiAgICBpc0ZpcmVmb3ggPSBpc0ZpcmVmb3goKTtcclxuICAgIGZ1bGxzY3JlZW5EZWZhdWx0OiBib29sZWFuO1xyXG4gICAgZXh0ZW5kVG9vbGJhckl0ZW1zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTwncnRsJyB8ICdsdHInPjtcclxuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBfZm9ybVVpQ29tcG9uZW50OiBGb3JtQmFzZUNvbXBvbmVudDtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nUGFyYW1zOiBEaWFsb2dQYXJhbXMsXHJcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnN1YnNjcmliZSgoZGV2aWNlU2l6ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRldmljZVNpemUgPSBkZXZpY2VTaXplO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5mb3JtcGFuZWxDdHJscjtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuQ3VzdG9tVWkuUGFyYW1ldGVycycsIG51bGwpO1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShmb3JtUGFuZWxDdHJsciwgJ1NldHRpbmcuVmlldy5IZWFkZXJMYXlvdXQuVGl0bGUnLCBudWxsKTtcclxuICAgICAgICBjb25zdCBtb0lkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5pZDtcclxuICAgICAgICBjb25zdCB0eXBlRGVmSWQgPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LnR5aWQ7XHJcbiAgICAgICAgY29uc3QgcmVwb3J0SWQgPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LnJlcGlkO1xyXG4gICAgICAgIHRoaXMuaW5EaWFsb2cgPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LmluRGlhbG9nO1xyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQuZnVsbHNjcmVlbjtcclxuICAgICAgICB0aGlzLmNhbkZ1bGxzY3JlZW4gPSBwYXJhbWV0ZXJzPy5DYW5GdWxsc2NyZWVuO1xyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbkRlZmF1bHQgPSBwYXJhbWV0ZXJzPy5GdWxsc2NyZWVuRGVmYXVsdDtcclxuICAgICAgICBpZiAodGhpcy5mdWxsc2NyZWVuRGVmYXVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW4gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbk1vdmUgPSBwYXJhbWV0ZXJzPy5DYW5Nb3ZlO1xyXG4gICAgICAgIHRoaXMuY2FuUmVzaXplID0gcGFyYW1ldGVycz8uQ2FuUmVzaXplO1xyXG4gICAgICAgIHRoaXMucGFyYW1zID0geyBtb0lkLCB0eXBlRGVmSWQsIHJlcG9ydElkLCBpbkRpYWxvZzogdHJ1ZSB9O1xyXG4gICAgICAgIHRoaXMuX3NldENhcHRpb24oZm9ybVBhbmVsQ3RybHIpO1xyXG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIgPSBmb3JtUGFuZWxDdHJscjtcclxuICAgIH1cclxuICAgIGdldCBBZGFwdGVyKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHIuQWRhcHRlcjtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xyXG4gICAgICAgIHRoaXMuc2hvd1NhdmVCdXR0b24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHIsXHJcbiAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuRm9ybVNldHRpbmdzLlNob3dTYXZlQnV0dG9uJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3LkZvcm1TZXR0aW5ncy5TaG93VG9vbGJhcicpO1xyXG4gICAgICAgIHRoaXMuaXNOb25lUGVyc2lzdGFuY2UgPSBmb3JtUGFuZWxDdHJscj8uU2V0dGluZz8uVmlldz8uSXNOb25lUGVyc2lzdGFuY2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9vdGVyID0gdGhpcy5pc05vbmVQZXJzaXN0YW5jZVxyXG4gICAgICAgICAgICA/IHRoaXMuc2hvd1NhdmVCdXR0b24gIT09IGZhbHNlICYmIHRoaXMuc2hvd1Rvb2xiYXIgIT09IGZhbHNlXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93U2F2ZUJ1dHRvbjtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2hvd0Zvb3RlciA9PSB0eXBlb2YgbnVsbCB8fCBmb3JtUGFuZWxDdHJscj8uU2V0dGluZz8uV29ya2Zsb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9vdGVyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vcGVuRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgICBvblRvb2xiYXJDbGljayhlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZm9ybVVpQ29tcG9uZW50Lm9uVG9vbGJhckNsaWNrKGUpO1xyXG4gICAgfVxyXG4gICAgb25Gb3JtVWlDb21wb25lbnRSZWFkeSh1aUNvbXBvbmVudDogRm9ybUJhc2VDb21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9mb3JtVWlDb21wb25lbnQgPSB1aUNvbXBvbmVudDtcclxuICAgICAgICB0aGlzLmV4dGVuZFRvb2xiYXJJdGVtcyQgPSB1aUNvbXBvbmVudC5leHRlbmRUb29sYmFySXRlbXMkO1xyXG4gICAgICAgIHRoaXMucnRsJCA9IHVpQ29tcG9uZW50LnJ0bCQ7XHJcbiAgICAgICAgdGhpcy5kaXJWYWx1ZSQgPSB1aUNvbXBvbmVudC5kaXJWYWx1ZSQ7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHVpQ29tcG9uZW50LmRldmljZVNpemUkO1xyXG4gICAgfVxyXG4gICAgb3BlbkRpYWxvZygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzbWFsbERldmljZSA9IHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnIHx8IHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ20nO1xyXG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiAnMzB2dyc7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNtYWxsRGV2aWNlID8gJzEwMCUnIDogJ2F1dG8nO1xyXG4gICAgICAgIGlmICh3aW5kb3dXaWR0aCA8IDE0NDApIHtcclxuICAgICAgICAgICAgd2lkdGggPSAnODBzdncnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2luZG93V2lkdGggPCA5MDApIHtcclxuICAgICAgICAgICAgd2lkdGggPSAnMTAwc3Z3JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHZpZXdXaWR0aCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuTWluU2l6ZS53aWR0aCcsIG51bGwpO1xyXG4gICAgICAgIGNvbnN0IHZpZXdIaWVnaHQgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3Lk1pblNpemUuaGVpZ2h0JywgbnVsbCk7XHJcbiAgICAgICAgY29uc3QgbWluV2lkdGggPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IHZpZXdXaWR0aCA/IHZpZXdXaWR0aCArICdweCcgOiAnYXV0byc7XHJcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiB2aWV3SGllZ2h0ID8gdmlld0hpZWdodCArICdweCcgOiAnYXV0byc7XHJcbiAgICAgICAgaWYgKHZpZXdIaWVnaHQpIHtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiBgJHt2aWV3SGllZ2h0ICsgMTAwfXB4YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW9kYWxTZXR0aW5nID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIsXHJcbiAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuQ3VzdG9tVWkuUGFyYW1ldGVycy5Nb2RhbFNldHRpbmcnLFxyXG4gICAgICAgICAgICBudWxsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgbGV0IHNldHRpbmc6IERpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBtb2JpbGU6IHNtYWxsRGV2aWNlLFxyXG4gICAgICAgICAgICB3aWR0aCxcclxuICAgICAgICAgICAgaGVpZ2h0LFxyXG4gICAgICAgICAgICAvLyBib2R5TWluSGVpZ2h0OiBtaW5IZWlnaHQsXHJcbiAgICAgICAgICAgIG1pbkhlaWdodCxcclxuICAgICAgICAgICAgbWluV2lkdGgsXHJcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0aGlzLmNhbk1vdmUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdGhpcy5jYW5SZXNpemUsXHJcbiAgICAgICAgICAgIGRhdGE6IHsgY2FwdGlvbjogdGhpcy5jYXB0aW9uLCBjYW5GdWxsc2NyZWVuOiB0aGlzLmNhbkZ1bGxzY3JlZW4sIGNhbk1vdmU6IHRoaXMuY2FuTW92ZSB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAobW9kYWxTZXR0aW5nKSB7XHJcbiAgICAgICAgICAgIHNldHRpbmcgPSB7IC4uLnNldHRpbmcsIC4uLm1vZGFsU2V0dGluZyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ1RlbXBsYXRlUmVmLCBzZXR0aW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBhZGFwdGVyID0gdGhpcy5BZGFwdGVyO1xyXG4gICAgICAgIGFkYXB0ZXIuZmlyZUV2ZW50KCdUb29sQ2xpY2snLCBhZGFwdGVyLCB7IEtleTogJ0NhbmNlbCcgfSk7XHJcbiAgICAgICAgdGhpcy5fY2xvc2UoKTtcclxuICAgIH1cclxuICAgIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBhZGFwdGVyID0gdGhpcy5BZGFwdGVyO1xyXG4gICAgICAgIGFkYXB0ZXIuZmlyZUV2ZW50KCdUb29sQ2xpY2snLCBhZGFwdGVyLCB7IEtleTogJ1NhdmVBbmRDbG9zZScgfSk7XHJcbiAgICB9XHJcbiAgICBvbk9rKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XHJcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnT2snIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybUNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dQYXJhbXMuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ09wZW5lZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIC8vIEBJbnB1dCgpIFNob3dGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcclxuICAgIC8vIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAvLyBASW5wdXQoKSBGb3JjZUNsb3NlQ2hpbGQgPSAoKSA9PiB7fTtcclxuICAgIC8vIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAvLyBASW5wdXQoKSBSZWZyZXNoRm9ybVBhbmVsQ29udHJvbCA9IChmb3JtcGFuZWxDdHJscikgPT4ge307XHJcbiAgICBwcml2YXRlIF9jbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICAvLyB0aGlzLmRpYWxvZ1JlZi5uYXRpdmVFbGVtZW50LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuQWRhcHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLkFkYXB0ZXIuQ29udHJvbC5maXJlRXZlbnQoJ1JlcXVlc3RGb3JDbG9zZScsIHRoaXMuQWRhcHRlci5Db250cm9sLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICAvLyB0aGlzLmRpYWxvZ1BhcmFtcy5jbG9zZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZGlhbG9nT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0Q2FwdGlvbihmb3JtUGFuZWxDdHJscjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdHlwZURlZk5hbWUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShmb3JtUGFuZWxDdHJsciwgJ01vLiRUeXBlRGVmTmFtZScsICcnKTtcclxuICAgICAgICBjb25zdCBtb0NhcHRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShmb3JtUGFuZWxDdHJsciwgJ01vLiRDYXB0aW9uJywgJycpO1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHR5cGVEZWZOYW1lICsgJzonICsgbW9DYXB0aW9uO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjZGlhbG9nPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiICNkaWFsb2dUcGxSZWY+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPGgxIGZkLXRpdGxlIHN0eWxlPVwibWF4LXdpZHRoOiAxNXJlbVwiPnt7IHRpdGxlIHx8IGRpYWxvZ0NvbmZpZy5kYXRhLmNhcHRpb24gfX08L2gxPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWNlbnRlciBzdHlsZT1cImZsZXg6IDFcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJhci1yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zXT1cImV4dGVuZFRvb2xiYXJJdGVtcyQgfCBhc3luYyB8IHRsYkJ1dHRvbnM6ICdpbkZvb3Rlcic6ZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RpclZhbHVlXT1cIihkaXJWYWx1ZSQgfCBhc3luYykhIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNGaXJlZm94XT1cImlzRmlyZWZveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9vbGJhckNsaWNrKT1cIm9uVG9vbGJhckNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgID48L2JzdS1mb3JtLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlhbG9nQ29uZmlnLmRhdGEuY2FuRnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuRGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nXT1cImRpYWxvZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnVsbHNjcmVlbl09XCJmdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuQ2hhbmdlZCk9XCJmdWxsc2NyZWVuID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFsb2dDb21wb25lbnRdPVwiZGlhbG9nVHBsUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgZmRrVGVtcGxhdGU9XCJzdWJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jIHwgdGxiQnV0dG9uczogJ2luRm9vdGVyJzpmYWxzZSBhcyB0b29sYmFySXRlbXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50IFtmdWxsV2lkdGhdPVwidHJ1ZVwiIGNsYXNzPVwiIXR3LWp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnN1LWZvcm0tdG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25zXT1cInRvb2xiYXJJdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpclZhbHVlXT1cIihkaXJWYWx1ZSQgfCBhc3luYykhIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b29sYmFyQ2xpY2spPVwib25Ub29sYmFyQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cblxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgICAgICA8Ym5yYy1mb3JtXG4gICAgICAgICAgICAgICAgW2Zvcm1QYW5lbEN0cmxdPVwiZm9ybVBhbmVsQ3RybHJcIlxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcbiAgICAgICAgICAgICAgICAoZm9ybUNsb3NlKT1cIm9uRm9ybUNsb3NlKClcIlxuICAgICAgICAgICAgICAgICh1aUNvbXBvbmVudCk9XCJvbkZvcm1VaUNvbXBvbmVudFJlYWR5KCRldmVudClcIlxuICAgICAgICAgICAgPjwvYm5yYy1mb3JtPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmQtZGlhbG9nLWZvb3RlciBbc3R5bGUuZGlzcGxheV09XCIhc2hvd0Zvb3RlciA/ICdub25lJyA6IG51bGxcIj5cbiAgICAgICAgICAgIEBmb3IgKGJ0biBvZiAoZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jIHwgdGxiQnV0dG9uczogJ2luRm9vdGVyJzp0cnVlKSA7IHRyYWNrIGJ0bi5JZCkgeyBAaWYgKCEoYnRuID09PVxuICAgICAgICAgICAgJy0nIHx8IGJ0bi50ZXh0ID09PSAnLScpICYmICgoYnRuLmlzQnVpbHRpbiAmJiBidG4uaW5Gb290ZXIpIHx8IGJ0bi5pc1dvcmtmbG93KSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGJ0bi5EYXRhPy5DdXN0b21VaT8uU2VsZWN0b3IgPyBkeW5hbWljQnRuVGVtcGxhdGUgOiBidG5UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ0biB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnRuVGVtcGxhdGUgbGV0LWJ0bj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cImJ0bi5pc1dvcmtmbG93ID8gJ2F0dGVudGlvbicgOiBidG4uZGVzaWduXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJidG4udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnRuLm5ld0ljb24gPyBidG4ubmV3SWNvbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bi5oYW5kbGVyKGJ0biwgZm9ybVBhbmVsQ3RybHI/LkFkYXB0ZXI/LkNvbnRyb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHluYW1pY0J0blRlbXBsYXRlIGxldC1idG4+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJidG4uRGF0YS5DdXN0b21VaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJidG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRW5hYmxlXT1cImJ0bi5Db21tYW5kPy5faXNFbmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bkNsaWNrKT1cImJ0bi5oYW5kbGVyKGJ0biwgZm9ybVBhbmVsQ3RybHI/LkFkYXB0ZXI/LkNvbnRyb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9IH0gQGlmICghaXNOb25lUGVyc2lzdGFuY2UgJiYgc2hvd1NhdmVCdXR0b24gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmQtaW5pdGlhbC1mb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ2FuY2VsJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -21,6 +21,9 @@ export class ReportTreeBaseComponent extends SapUiReportBaseComponent {
21
21
  this.rtl$ = this._portalService.rtl$;
22
22
  this.contentDensity$ = this._contentDensityService.contentDensity;
23
23
  this._rootSource.next(this.context.root);
24
+ if (this.viewSetting?.DefaultCollapsed) {
25
+ this.collapseAll();
26
+ }
24
27
  this._selectedNodeSource.next(this.context.selNode);
25
28
  this.context.on({
26
29
  rootChanged: (root) => {
@@ -380,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
380
383
  changeDetection: ChangeDetectionStrategy.OnPush
381
384
  }]
382
385
  }] });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRyZWUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3JlcG9ydC10cmVlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEVBQ0gsUUFBUSxFQUtSLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHdCQUFpRDtJQUw5Rjs7UUFZSSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUlyQix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFDcEUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7S0FxWnpFO0lBcFpHLElBQVksS0FBSztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9FLEtBQUssQ0FBQyxRQUFRLEVBQUUs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QUUsS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pELE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDSixVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNuQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELG9CQUFvQjtJQUNaLE1BQU0sQ0FBQyx1QkFBdUI7UUFDbEMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0FoYVEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsbUZBSHRCLEVBQUU7OzJGQUdILHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBEaWFsb2dDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhcnNhQXBpLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgVWlSZXBvcnRWaWV3QmFzZVNldHRpbmcsXG4gICAgVHJlZU5vZGVPYmosXG4gICAgUmVsYXRpb25JdGVtVHlwZSxcbiAgICBnZXRBbGxJdGVtc1BlckNoaWxkcmVuLFxuICAgIHNldE9uZURlcHRoTGV2ZWxcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9zYXAtdWktcmVwb3J0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERyb3BJbmZvIH0gZnJvbSAnLi91aS10cmVlLXZpZXcvdWktdHJlZS12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXJlcG9ydC10cmVlLWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRUcmVlQmFzZUNvbXBvbmVudCBleHRlbmRzIFNhcFVpUmVwb3J0QmFzZUNvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBkaWFsb2dTZWxlY3RlZE5vZGU7XG4gICAgc2VsZWN0ZWROb2RlJDogT2JzZXJ2YWJsZTxUcmVlTm9kZU9iaiB8IG51bGw+O1xuICAgIHJvb3QkOiBPYnNlcnZhYmxlPFRyZWVOb2RlT2JqIHwgbnVsbD47XG4gICAgZHJvcEFjdGlvblRvZG86IERyb3BJbmZvO1xuICAgIF9kcmFnTW92ZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBmbGF0TW9EYXRhTGlzdDtcbiAgICBkaWFsb2dSZWY7XG5cbiAgICBwcm90ZWN0ZWQgX3NlbGVjdGVkTm9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJlZU5vZGVPYmogfCBudWxsPihudWxsKTtcbiAgICBwcm90ZWN0ZWQgX3Jvb3RTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyZWVOb2RlT2JqIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBnZXQgX3Jvb3QoKTogVHJlZU5vZGVPYmogfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlJCA9IHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5yb290JCA9IHRoaXMuX3Jvb3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnJ0bCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnJ0bCQ7XG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHkkID0gdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLmNvbnRlbnREZW5zaXR5O1xuICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQodGhpcy5jb250ZXh0LnJvb3QpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVTb3VyY2UubmV4dCh0aGlzLmNvbnRleHQuc2VsTm9kZSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5vbih7XG4gICAgICAgICAgICByb290Q2hhbmdlZDogKHJvb3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQocm9vdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWROb2RlQ2hhbmdlOiAobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5uZXh0KG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcm9vdFNvdXJjZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIG1hcCgocm9vdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9MaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9PcGVuTGV2ZWxzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuVHJlZUF1dG9PcGVuTGV2ZWxzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QWxsSXRlbXNQZXJDaGlsZHJlbihyb290LCAwLCBtb0xpc3QsIHJvb3QsIGF1dG9PcGVuTGV2ZWxzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb0xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmbGF0TW9EYXRhTGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QgPSBmbGF0TW9EYXRhTGlzdC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6IGMucGFyZW50Tm9kZSA/IHsgLi4uYy5wYXJlbnROb2RlIH0gOiBudWxsXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Jlc2V0RHJvcEFjdGlvblRvZG8oKTtcbiAgICAgICAgdGhpcy5fZHJhZ01vdmVcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoNTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kb0RyYWdNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ3JlYXRlTmV3KGU6IFJlbGF0aW9uSXRlbVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY3JlYXRlTmV3JywgZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBkcmFnTW92ZWQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHJhZ01vdmUubmV4dChldmVudCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBkcm9wKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZU5vRHJvcHMoKTtcbiAgICAgICAgdGhpcy5fY2xlYXJEcmFnSW5mbygpO1xuICAgICAgICBjb25zdCBkcmFnQWN0aW9uID0gdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb247XG4gICAgICAgIGlmICghZHJhZ0FjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcmFnQWN0aW9uID09PSAnZm9yYmlkJykge1xuICAgICAgICAgICAgUmVwb3J0VHJlZUJhc2VDb21wb25lbnQuX3Nob3dGb3JiaWRkZW5Nb3ZlQWxlcnQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUlkID0gZXZlbnQuaXRlbS5kYXRhO1xuICAgICAgICBjb25zdCB0YXJnZXRJdGVtSWQgPSB0aGlzLmRyb3BBY3Rpb25Ub2RvLnRhcmdldElkO1xuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IHRoaXMuX2dldE5vZGVCeUlkKGRyYWdnZWRJdGVtSWQpO1xuICAgICAgICBjb25zdCB0YXJnZXRJdGVtID0gdGhpcy5fZ2V0Tm9kZUJ5SWQodGFyZ2V0SXRlbUlkKTtcbiAgICAgICAgY29uc3Qgb2xkUGFyZW50Tm9kZUlkID0gZHJhZ2dlZEl0ZW0ucGFyZW50Tm9kZT8uRGF0YT8uSWQgfHwgJyRSb290JztcbiAgICAgICAgY29uc3QgbmV3UGFyZW50Tm9kZUlkID0gdGFyZ2V0SXRlbS5wYXJlbnROb2RlPy5EYXRhPy5JZCB8fCAnJFJvb3QnO1xuICAgICAgICBjb25zdCBvbGRQYXJlbnROb2RlID0gZHJhZ2dlZEl0ZW0ucGFyZW50Tm9kZTtcbiAgICAgICAgbGV0IG5ld1BhcmVudE5vZGUgPSB0YXJnZXRJdGVtLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChvbGRQYXJlbnROb2RlICYmIG5ld1BhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZHJhZ0FjdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZXJ2ZXJUYXJnZXQ6IFRyZWVOb2RlT2JqIHwgbnVsbCA9IHRhcmdldEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGlmIChkcmFnQWN0aW9uID09PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHRoaXMuZmxhdE1vRGF0YUxpc3QuZmluZEluZGV4KChjKSA9PiBjLkRhdGEuSWQgPT09IHRhcmdldEl0ZW0uRGF0YS5JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SW5kZXggPT09IHRoaXMuZmxhdE1vRGF0YUxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVyVGFyZ2V0ID0gdGhpcy5mbGF0TW9EYXRhTGlzdFt0YXJnZXRJbmRleCArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZnRlclRhcmdldC5wYXJlbnROb2RlID09PSB0YXJnZXRJdGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyVGFyZ2V0ID0gYWZ0ZXJUYXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVRvU2VydmVyKGRyYWdnZWRJdGVtLkRhdGEuSWQsIHNlcnZlclRhcmdldCwgbmV3UGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURyYWdnZWRJdGVtc09yZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZEl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRQYXJlbnROb2RlSWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1BhcmVudE5vZGVJZCAhPT0gJyRSb290Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdC5pbmRleE9mKGRyYWdnZWRJdGVtKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdC5pbmRleE9mKHRhcmdldEl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnROb2RlPy5jaGlsZHJlbi5zcGxpY2UoaSwgMCwgZHJhZ2dlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc2VuZCBuZXcgbW9EYXRhTGlzdCBUbyBzZXJ2ZXI6XG4gICAgICAgICAgICAgICAgICAgIC8vIChkcmFnZ2VkSXRlbSwgZHJhZ2dlZEl0ZW0ucGFyZW50Tm9kZSwgZHJhZ2dlZEl0ZW0ucGFyZW50Tm9kZS5jaGlsZHJlbj8uaW5kZXhPZihkcmFnZ2VkSXRlbSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50Tm9kZSA9IHRhcmdldEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVUb1NlcnZlcihkcmFnZ2VkSXRlbS5EYXRhLklkLCBudWxsLCBuZXdQYXJlbnROb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW92ZU5vZGVJbnNpZGVBbm90aGVyKGRyYWdnZWRJdGVtLCB0YXJnZXRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0T25lRGVwdGhMZXZlbChuZXdQYXJlbnROb2RlKTtcbiAgICAgICAgICAgIHNldE9uZURlcHRoTGV2ZWwob2xkUGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckRyYWdJbmZvKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmViaW5kUm9vdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm9vdFNvdXJjZS5uZXh0KHRoaXMuX3Jvb3QpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2F2ZVRvU2VydmVyKGRyYWdnZWRJZDogc3RyaW5nLCB0YXJnZXQ6IFRyZWVOb2RlT2JqIHwgbnVsbCwgcGFyZW50OiBUcmVlTm9kZU9iaik6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXRJZDogc3RyaW5nID0gdGFyZ2V0ID8gdGFyZ2V0LkRhdGEuSWQgOiAnMCc7XG4gICAgICAgIGNvbnN0IHBhcmVudElkOiBzdHJpbmcgPSBwYXJlbnQuRGF0YS5JZCA9PT0gJyRSb290JyA/ICcwJyA6IHBhcmVudC5EYXRhLklkO1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZCgnTW92ZVRyZWVOb2RlJywgZHJhZ2dlZElkLCB0YXJnZXRJZCwgcGFyZW50SWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25maXJtRGlhbG9nKHNlbGVjdGVkTm9kZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShzZWxlY3RlZE5vZGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkaXNtaXNzRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kaXNtaXNzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbGxhcHNlQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdjb2xsYXBzZUFsbCcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvcGVuTW92ZVRvRGlhbG9nKHNvdXJjZU5vZGUsIGRldmljZTogc3RyaW5nLCBkaWFsb2dUbXApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnOiBEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmRpYWxvZ0NvbmZpZyxcbiAgICAgICAgICAgIGRhdGE6IHsgY29udGV4dDogdGhpcy5jb250ZXh0IH0sXG4gICAgICAgICAgICBtb2JpbGU6IGRldmljZSA9PT0gJ21vYmlsZScsXG4gICAgICAgICAgICBtaW5XaWR0aDogZGV2aWNlID09PSAnbW9iaWxlJyA/ICdhdXRvJyA6IHRoaXMuZGlhbG9nQ29uZmlnLm1pbldpZHRoLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBkZXZpY2UgPT09ICdtb2JpbGUnID8gJ2F1dG8nIDogdGhpcy5kaWFsb2dDb25maWcubWluSGVpZ2h0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKGRpYWxvZ1RtcCwgY29uZmlnKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkZXN0aW5hdGlvbk5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25Ob2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2FuTW92ZSA9IHRoaXMuX2Nhbk1vdmUoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlKTtcbiAgICAgICAgICAgIGlmIChjYW5Nb3ZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW92ZU5vZGVJbnNpZGVBbm90aGVyKHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFJlcG9ydFRyZWVCYXNlQ29tcG9uZW50Ll9zaG93Rm9yYmlkZGVuTW92ZUFsZXJ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQodGhpcy5fcm9vdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZWxlY3ROb2RlSW5Nb3ZlRGlhbG9nKGV2OiB7IG5vZGU6IFRyZWVOb2RlT2JqOyBpbmRleDogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZWxlY3RlZE5vZGUgPSBldi5ub2RlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ2hpbGRyZW4obm9kZTogVHJlZU5vZGVPYmopOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnbG9hZE5vZGVDaGlsZHJlbicsIG5vZGUpO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVHcmlkU2V0dGluZygpOiB2b2lkIHt9XG5cbiAgICBwcm90ZWN0ZWQgX3NlbGVjdE5vZGUobm9kZTogVHJlZU5vZGVPYmopOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlbE5vZGUgPSBub2RlO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVTb3VyY2UubmV4dChub2RlKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY2xpY2snKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnc2VsZWN0aW9uY2hhbmdlJyk7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBwcm90ZWN0ZWQgX2Rlc2VsZWN0Tm9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlbE5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVTb3VyY2UubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JhaXNlUm93Q2xpY2soaW5kZXgsIG1vKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zZWxOb2RlID0gbW87XG4gICAgICAgIHRoaXMuY29udGV4dD8uZmlyZUV2ZW50KCdkYmxjbGljaycsIHRoaXMuY29udGV4dCwgaW5kZXgsIG1vKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNldERyb3BBY3Rpb25Ub2RvKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3BBY3Rpb25Ub2RvID0geyB0YXJnZXRJZDogbnVsbCwgYWN0aW9uOiBudWxsIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hhbmdlRHJhZ2dlZEl0ZW1zT3JkZXIoXG4gICAgICAgIGRyYWdnZWRJdGVtOiBUcmVlTm9kZU9iaixcbiAgICAgICAgdGFyZ2V0SXRlbTogVHJlZU5vZGVPYmosXG4gICAgICAgIG5ld1BhcmVudE5vZGU6IFRyZWVOb2RlT2JqLFxuICAgICAgICBvbGRQYXJlbnROb2RlOiBUcmVlTm9kZU9iaixcbiAgICAgICAgb2xkUGFyZW50Tm9kZUlkXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZURyYWdnZWRJdGVtRnJvbU1vRGF0YUxpc3QoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICBpZiAob2xkUGFyZW50Tm9kZUlkICE9PSAnJFJvb3QnKSB7XG4gICAgICAgICAgICAvLyBvbGRQYXJlbnROb2RlLmNoaWxkcmVuPy5yZW1vdmUoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICAgICAgb2xkUGFyZW50Tm9kZS5jaGlsZHJlbiA9IG9sZFBhcmVudE5vZGUuY2hpbGRyZW4uZmlsdGVyKChjKSA9PiBjLkRhdGEuSWQgIT09IGRyYWdnZWRJdGVtLkRhdGEuSWQpO1xuXG4gICAgICAgICAgICBvbGRQYXJlbnROb2RlLmxlYWYgPSAhKG9sZFBhcmVudE5vZGUuY2hpbGRyZW4/Lmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgb2xkUGFyZW50Tm9kZS5EYXRhLiRIYXNDaGlsZHJlbiA9ICFvbGRQYXJlbnROb2RlLmxlYWY7XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ2dlZEl0ZW0ucGFyZW50Tm9kZSA9IG5ld1BhcmVudE5vZGU7XG4gICAgICAgIHRoaXMuX3NldExldmVsRm9yRHJhZ2dlZEl0ZW1zKGRyYWdnZWRJdGVtLCBuZXdQYXJlbnROb2RlLmxldmVsIHx8IDApO1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHRoaXMuZmxhdE1vRGF0YUxpc3QuaW5kZXhPZih0YXJnZXRJdGVtKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRyb3BBY3Rpb25Ub2RvLmFjdGlvbiA9PT0gJ2JlZm9yZScgPyB0YXJnZXRJbmRleCA6IHRoaXMuX25leHRJbmRleEluTW9EYXRhTGlzdCh0YXJnZXRJdGVtKTtcbiAgICAgICAgdGhpcy5fYWRkRHJhZ2dlZEl0ZW1zVG9Nb0RhdGFMaXN0KGRyYWdnZWRJdGVtLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkRHJhZ2dlZEl0ZW1zVG9Nb0RhdGFMaXN0KG5vZGU6IFRyZWVOb2RlT2JqLCBpKTogbnVtYmVyIHtcbiAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdC5zcGxpY2UoaSwgMCwgbm9kZSk7XG4gICAgICAgIG5vZGU/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgaSA9IHRoaXMuX2FkZERyYWdnZWRJdGVtc1RvTW9EYXRhTGlzdChjaGlsZCwgaSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVEcmFnZ2VkSXRlbUZyb21Nb0RhdGFMaXN0KG5vZGU6IFRyZWVOb2RlT2JqKTogdm9pZCB7XG4gICAgICAgIG5vZGU/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRHJhZ2dlZEl0ZW1Gcm9tTW9EYXRhTGlzdChjaGlsZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZsYXRNb0RhdGFMaXN0LnJlbW92ZShub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9uZXh0SW5kZXhJbk1vRGF0YUxpc3Qobm9kZTogVHJlZU5vZGVPYmopOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYXRNb0RhdGFMaXN0LmluZGV4T2Yobm9kZSkgKyB0aGlzLl9hbGxOZXN0ZWRDaGlsZGVzQ291bnQobm9kZSkgKyAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FsbE5lc3RlZENoaWxkZXNDb3VudChub2RlOiBUcmVlTm9kZU9iaiwgaSA9IDApOiBudW1iZXIge1xuICAgICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaSA9IHRoaXMuX2FsbE5lc3RlZENoaWxkZXNDb3VudChjaGlsZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXROb2RlQnlJZChpZDogYW55KTogVHJlZU5vZGVPYmoge1xuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgZm9yIChjb25zdCBtbyBvZiB0aGlzLmZsYXRNb0RhdGFMaXN0KSB7XG4gICAgICAgICAgICBpZiAobW8uRGF0YS5JZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gbW87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0TGV2ZWxGb3JEcmFnZ2VkSXRlbXMobm9kZSwgcGFyZW50TGV2ZWwpOiB2b2lkIHtcbiAgICAgICAgcGFyZW50TGV2ZWwrKztcbiAgICAgICAgbm9kZS5sZXZlbCA9IHBhcmVudExldmVsO1xuICAgICAgICBub2RlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldExldmVsRm9yRHJhZ2dlZEl0ZW1zKGNoaWxkLCBwYXJlbnRMZXZlbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21vdmVOb2RlSW5zaWRlQW5vdGhlcihzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkUGFyZW50Tm9kZSA9IHNvdXJjZU5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgY29uc3Qgb2xkUGFyZW50Tm9kZUlkID0gb2xkUGFyZW50Tm9kZT8uRGF0YT8uSWQgfHwgJyRSb290JztcbiAgICAgICAgdGhpcy5fY2hhbmdlRHJhZ2dlZEl0ZW1zT3JkZXIoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlLCBkZXN0aW5hdGlvbk5vZGUsIG9sZFBhcmVudE5vZGUsIG9sZFBhcmVudE5vZGVJZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ21vdmVOb2RlSW5zaWRlQW5vdGhlcicsIHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYXJEcmFnSW5mbyhkcm9wcGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRyb3BwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0RHJvcEFjdGlvblRvZG8oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcC1iZWZvcmUnKVxuICAgICAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdkcm9wLWJlZm9yZScpKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtYWZ0ZXInKVxuICAgICAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdkcm9wLWFmdGVyJykpO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcC1pbnNpZGUnKVxuICAgICAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdkcm9wLWluc2lkZScpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdG9wRHJhZ2dpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8oKTtcbiAgICAgICAgdGhpcy5fcmVzZXREcm9wQWN0aW9uVG9kbygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3dEcmFnSW5mbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xlYXJEcmFnSW5mbygpO1xuICAgICAgICBpZiAodGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZCkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZ2V0Tm9kZUJ5SWQodGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZCk7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXJlbnRJZCA9IHBhcmVudD8ucGFyZW50Tm9kZT8uRGF0YT8uSWQgfHwgJyRSb290JztcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5vZGVFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNub2RlLScgKyB0aGlzLmRyb3BBY3Rpb25Ub2RvLnRhcmdldElkKTtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldERyb3BBY3Rpb25Ub2RvKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdQYXJlbnRJZCA9PT0gJyRSb290JyAmJiB0aGlzLmRyb3BBY3Rpb25Ub2RvLmFjdGlvbiAhPT0gJ2luc2lkZScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb290Q29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ZkLWxheW91dC1wYW5lbCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHJvb3RDb250YWluZXIsICdkcm9wLWluc2lkZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGFyZ2V0Tm9kZUVsZW1lbnQsICdkcm9wLScgKyB0aGlzLmRyb3BBY3Rpb25Ub2RvPy5hY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZG9EcmFnTW92ZShldmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50RnJvbVBvaW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5wb2ludGVyUG9zaXRpb24ueCwgZXZlbnQucG9pbnRlclBvc2l0aW9uLnkpO1xuXG4gICAgICAgIGlmICghZWxlbWVudEZyb21Qb2ludCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcERyYWdnaW5nKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZUVsZW1lbnQgPSBlbGVtZW50RnJvbVBvaW50LmNsYXNzTGlzdC5jb250YWlucygnbm9kZS1pdGVtJylcbiAgICAgICAgICAgID8gZWxlbWVudEZyb21Qb2ludFxuICAgICAgICAgICAgOiBlbGVtZW50RnJvbVBvaW50LmNsb3Nlc3QoJy5ub2RlLWl0ZW0nKTtcbiAgICAgICAgaWYgKCF0YXJnZXROb2RlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcERyYWdnaW5nKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kbyA9IHtcbiAgICAgICAgICAgIHRhcmdldElkOiB0YXJnZXROb2RlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGFyZ2V0Tm9kZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG9uZVRoaXJkID0gdGFyZ2V0UmVjdC5oZWlnaHQgLyAzO1xuXG4gICAgICAgIGlmIChldmVudC5wb2ludGVyUG9zaXRpb24ueSAtIHRhcmdldFJlY3QudG9wIDwgb25lVGhpcmQpIHtcbiAgICAgICAgICAgIC8vIGJlZm9yZVxuICAgICAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPSAnYmVmb3JlJztcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5wb2ludGVyUG9zaXRpb24ueSAtIHRhcmdldFJlY3QudG9wID4gMiAqIG9uZVRoaXJkKSB7XG4gICAgICAgICAgICAvLyBhZnRlclxuICAgICAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPSAnYWZ0ZXInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW5zaWRlXG4gICAgICAgICAgICB0aGlzLmRyb3BBY3Rpb25Ub2RvLmFjdGlvbiA9ICdpbnNpZGUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5vRHJvcEl0ZW1zKGV2ZW50LnNvdXJjZS5kYXRhKTtcbiAgICAgICAgdGhpcy5fc2V0Tm9Ecm9wU3R5bGUoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuX2dldE5vZGVCeUlkKHRoaXMuZHJvcEFjdGlvblRvZG8udGFyZ2V0SWQpO1xuICAgICAgICBpZiAodGFyZ2V0Tm9kZS5ub0Ryb3ApIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BEcmFnZ2luZygpO1xuICAgICAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPSAnZm9yYmlkJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93RHJhZ0luZm8oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVOb0Ryb3BzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZsYXRNb0RhdGFMaXN0XG4gICAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLm5vRHJvcClcbiAgICAgICAgICAgIC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgbm9kZS5ub0Ryb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbm9kZS0nICsgbm9kZS5EYXRhLklkKTtcbiAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWwsICduby1kcm9wJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Tm9Ecm9wSXRlbXMoZHJhZ2dlZEl0ZW1JZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fZ2V0Tm9kZUJ5SWQoZHJhZ2dlZEl0ZW1JZCk7XG4gICAgICAgIG5vZGUubm9Ecm9wID0gdHJ1ZTtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldE5vRHJvcEl0ZW1zKGNoaWxkLkRhdGEuSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXROb0Ryb3BTdHlsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdFxuICAgICAgICAgICAgLmZpbHRlcigobm9kZSkgPT4gbm9kZS5ub0Ryb3ApXG4gICAgICAgICAgICAuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNub2RlLScgKyBub2RlLkRhdGEuSWQpO1xuICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ25vLWRyb3AnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYW5Nb3ZlKHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY2FuTW92ZSA9IHRydWU7XG4gICAgICAgIGlmIChzb3VyY2VOb2RlLkRhdGEuSWQgPT09IGRlc3RpbmF0aW9uTm9kZS5EYXRhLklkKSB7XG4gICAgICAgICAgICBjYW5Nb3ZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3VyY2VOb2RlLmNoaWxkcmVuPy5mb3JlYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNhbk1vdmUgPSB0aGlzLl9jYW5Nb3ZlKHNvdXJjZU5vZGUsIGNoaWxkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW5Nb3ZlO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHByaXZhdGUgc3RhdGljIF9zaG93Rm9yYmlkZGVuTW92ZUFsZXJ0KCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5Nc2cuRXJyb3IoJ9mG2YXbjNiq2YjYp9mG24zYryDYotuM2KrZhSDYsdinINio2Ycg2LLbjNix2LTYp9iu2Ycg2K7ZiNiv2LQg2YXZhtiq2YLZhCDaqdmG24zYry4nKTtcbiAgICB9XG59XG4iXX0=
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRyZWUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3JlcG9ydC10cmVlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEVBQ0gsUUFBUSxFQUtSLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFRMUUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHdCQUFpRDtJQUw5Rjs7UUFZSSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUlyQix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFDcEUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7S0F3WnpFO0lBdlpHLElBQVksS0FBSztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9FLEtBQUssQ0FBQyxRQUFRLEVBQUUs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UUFBUSxDQUFDLFVBQVUsRUFBRSxlQUFlO1FBQ3hDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakQsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNKLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0Qsb0JBQW9CO0lBQ1osTUFBTSxDQUFDLHVCQUF1QjtRQUNsQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMzRSxDQUFDOzhHQW5hUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixtRkFIdEIsRUFBRTs7MkZBR0gsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIERpYWxvZ0NvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyxcbiAgICBUcmVlTm9kZU9iaixcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxuICAgIGdldEFsbEl0ZW1zUGVyQ2hpbGRyZW4sXG4gICAgc2V0T25lRGVwdGhMZXZlbFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBTYXBVaVJlcG9ydEJhc2VDb21wb25lbnQgfSBmcm9tICcuL3NhcC11aS1yZXBvcnQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcEluZm8gfSBmcm9tICcuL3VpLXRyZWUtdmlldy91aS10cmVlLXZpZXcuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtcmVwb3J0LXRyZWUtYmFzZScsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydFRyZWVCYXNlQ29tcG9uZW50IGV4dGVuZHMgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29udGVudERlbnNpdHkkOiBPYnNlcnZhYmxlPENvbnRlbnREZW5zaXR5PjtcbiAgICBydGwkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGRpYWxvZ1NlbGVjdGVkTm9kZTtcbiAgICBzZWxlY3RlZE5vZGUkOiBPYnNlcnZhYmxlPFRyZWVOb2RlT2JqIHwgbnVsbD47XG4gICAgcm9vdCQ6IE9ic2VydmFibGU8VHJlZU5vZGVPYmogfCBudWxsPjtcbiAgICBkcm9wQWN0aW9uVG9kbzogRHJvcEluZm87XG4gICAgX2RyYWdNb3ZlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIGZsYXRNb0RhdGFMaXN0O1xuICAgIGRpYWxvZ1JlZjtcblxuICAgIHByb3RlY3RlZCBfc2VsZWN0ZWROb2RlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZU9iaiB8IG51bGw+KG51bGwpO1xuICAgIHByb3RlY3RlZCBfcm9vdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJlZU5vZGVPYmogfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIGdldCBfcm9vdCgpOiBUcmVlTm9kZU9iaiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUkID0gdGhpcy5fc2VsZWN0ZWROb2RlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLnJvb3QkID0gdGhpcy5fcm9vdFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucnRsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UucnRsJDtcbiAgICAgICAgdGhpcy5jb250ZW50RGVuc2l0eSQgPSB0aGlzLl9jb250ZW50RGVuc2l0eVNlcnZpY2UuY29udGVudERlbnNpdHk7XG4gICAgICAgIHRoaXMuX3Jvb3RTb3VyY2UubmV4dCh0aGlzLmNvbnRleHQucm9vdCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdTZXR0aW5nPy5EZWZhdWx0Q29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlQWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2RlU291cmNlLm5leHQodGhpcy5jb250ZXh0LnNlbE5vZGUpO1xuICAgICAgICB0aGlzLmNvbnRleHQub24oe1xuICAgICAgICAgICAgcm9vdENoYW5nZWQ6IChyb290KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcm9vdFNvdXJjZS5uZXh0KHJvb3QpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZUNoYW5nZTogKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVTb3VyY2UubmV4dChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Jvb3RTb3VyY2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBtYXAoKHJvb3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvT3BlbkxldmVscyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2V0dGluZy5WaWV3LlRyZWVBdXRvT3BlbkxldmVscycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEFsbEl0ZW1zUGVyQ2hpbGRyZW4ocm9vdCwgMCwgbW9MaXN0LCByb290LCBhdXRvT3BlbkxldmVscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9MaXN0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZmxhdE1vRGF0YUxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXRNb0RhdGFMaXN0ID0gZmxhdE1vRGF0YUxpc3QubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiBjLnBhcmVudE5vZGUgPyB7IC4uLmMucGFyZW50Tm9kZSB9IDogbnVsbFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZXNldERyb3BBY3Rpb25Ub2RvKCk7XG4gICAgICAgIHRoaXMuX2RyYWdNb3ZlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDUwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZG9EcmFnTW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNyZWF0ZU5ldyhlOiBSZWxhdGlvbkl0ZW1UeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NyZWF0ZU5ldycsIGUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZHJhZ01vdmVkKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RyYWdNb3ZlLm5leHQoZXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZHJvcChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVOb0Ryb3BzKCk7XG4gICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8oKTtcbiAgICAgICAgY29uc3QgZHJhZ0FjdGlvbiA9IHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uO1xuICAgICAgICBpZiAoIWRyYWdBY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHJhZ0FjdGlvbiA9PT0gJ2ZvcmJpZCcpIHtcbiAgICAgICAgICAgIFJlcG9ydFRyZWVCYXNlQ29tcG9uZW50Ll9zaG93Rm9yYmlkZGVuTW92ZUFsZXJ0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1JZCA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbUlkID0gdGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZDtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW0gPSB0aGlzLl9nZXROb2RlQnlJZChkcmFnZ2VkSXRlbUlkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuX2dldE5vZGVCeUlkKHRhcmdldEl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGVJZCA9IGRyYWdnZWRJdGVtLnBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgIGNvbnN0IG5ld1BhcmVudE5vZGVJZCA9IHRhcmdldEl0ZW0ucGFyZW50Tm9kZT8uRGF0YT8uSWQgfHwgJyRSb290JztcbiAgICAgICAgY29uc3Qgb2xkUGFyZW50Tm9kZSA9IGRyYWdnZWRJdGVtLnBhcmVudE5vZGU7XG4gICAgICAgIGxldCBuZXdQYXJlbnROb2RlID0gdGFyZ2V0SXRlbS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAob2xkUGFyZW50Tm9kZSAmJiBuZXdQYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRyYWdBY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzoge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VydmVyVGFyZ2V0OiBUcmVlTm9kZU9iaiB8IG51bGwgPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0FjdGlvbiA9PT0gJ2FmdGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLmZsYXRNb0RhdGFMaXN0LmZpbmRJbmRleCgoYykgPT4gYy5EYXRhLklkID09PSB0YXJnZXRJdGVtLkRhdGEuSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSB0aGlzLmZsYXRNb0RhdGFMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZnRlclRhcmdldCA9IHRoaXMuZmxhdE1vRGF0YUxpc3RbdGFyZ2V0SW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWZ0ZXJUYXJnZXQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0SXRlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclRhcmdldCA9IGFmdGVyVGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVUb1NlcnZlcihkcmFnZ2VkSXRlbS5EYXRhLklkLCBzZXJ2ZXJUYXJnZXQsIG5ld1BhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2VkSXRlbXNPcmRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRQYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGFyZW50Tm9kZUlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYXJlbnROb2RlSWQgIT09ICckUm9vdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QuaW5kZXhPZihkcmFnZ2VkSXRlbSkgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QuaW5kZXhPZih0YXJnZXRJdGVtLnBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50Tm9kZT8uY2hpbGRyZW4uc3BsaWNlKGksIDAsIGRyYWdnZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgbmV3IG1vRGF0YUxpc3QgVG8gc2VydmVyOlxuICAgICAgICAgICAgICAgICAgICAvLyAoZHJhZ2dlZEl0ZW0sIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUsIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUuY2hpbGRyZW4/LmluZGV4T2YoZHJhZ2dlZEl0ZW0pKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpbnNpZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BhcmVudE5vZGUgPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlVG9TZXJ2ZXIoZHJhZ2dlZEl0ZW0uRGF0YS5JZCwgbnVsbCwgbmV3UGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVOb2RlSW5zaWRlQW5vdGhlcihkcmFnZ2VkSXRlbSwgdGFyZ2V0SXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldE9uZURlcHRoTGV2ZWwobmV3UGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBzZXRPbmVEZXB0aExldmVsKG9sZFBhcmVudE5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJEcmFnSW5mbyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlYmluZFJvb3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvb3RTb3VyY2UubmV4dCh0aGlzLl9yb290KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NhdmVUb1NlcnZlcihkcmFnZ2VkSWQ6IHN0cmluZywgdGFyZ2V0OiBUcmVlTm9kZU9iaiB8IG51bGwsIHBhcmVudDogVHJlZU5vZGVPYmopOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0SWQ6IHN0cmluZyA9IHRhcmdldCA/IHRhcmdldC5EYXRhLklkIDogJzAnO1xuICAgICAgICBjb25zdCBwYXJlbnRJZDogc3RyaW5nID0gcGFyZW50LkRhdGEuSWQgPT09ICckUm9vdCcgPyAnMCcgOiBwYXJlbnQuRGF0YS5JZDtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2QoJ01vdmVUcmVlTm9kZScsIGRyYWdnZWRJZCwgdGFyZ2V0SWQsIHBhcmVudElkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uZmlybURpYWxvZyhzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoc2VsZWN0ZWROb2RlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGlzbWlzc0RpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb2xsYXBzZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY29sbGFwc2VBbGwnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3Blbk1vdmVUb0RpYWxvZyhzb3VyY2VOb2RlLCBkZXZpY2U6IHN0cmluZywgZGlhbG9nVG1wKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5kaWFsb2dDb25maWcsXG4gICAgICAgICAgICBkYXRhOiB7IGNvbnRleHQ6IHRoaXMuY29udGV4dCB9LFxuICAgICAgICAgICAgbW9iaWxlOiBkZXZpY2UgPT09ICdtb2JpbGUnLFxuICAgICAgICAgICAgbWluV2lkdGg6IGRldmljZSA9PT0gJ21vYmlsZScgPyAnYXV0bycgOiB0aGlzLmRpYWxvZ0NvbmZpZy5taW5XaWR0aCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogZGV2aWNlID09PSAnbW9iaWxlJyA/ICdhdXRvJyA6IHRoaXMuZGlhbG9nQ29uZmlnLm1pbkhlaWdodFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihkaWFsb2dUbXAsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGVzdGluYXRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uTm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNhbk1vdmUgPSB0aGlzLl9jYW5Nb3ZlKHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSk7XG4gICAgICAgICAgICBpZiAoY2FuTW92ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVOb2RlSW5zaWRlQW5vdGhlcihzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSZXBvcnRUcmVlQmFzZUNvbXBvbmVudC5fc2hvd0ZvcmJpZGRlbk1vdmVBbGVydCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcm9vdFNvdXJjZS5uZXh0KHRoaXMuX3Jvb3QpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2VsZWN0Tm9kZUluTW92ZURpYWxvZyhldjogeyBub2RlOiBUcmVlTm9kZU9iajsgaW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWROb2RlID0gZXYubm9kZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZENoaWxkcmVuKG5vZGU6IFRyZWVOb2RlT2JqKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2xvYWROb2RlQ2hpbGRyZW4nLCBub2RlKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlR3JpZFNldHRpbmcoKTogdm9pZCB7fVxuXG4gICAgcHJvdGVjdGVkIF9zZWxlY3ROb2RlKG5vZGU6IFRyZWVOb2RlT2JqKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zZWxOb2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2RlU291cmNlLm5leHQobm9kZSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NsaWNrJyk7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ3NlbGVjdGlvbmNoYW5nZScpO1xuICAgIH1cblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgcHJvdGVjdGVkIF9kZXNlbGVjdE5vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zZWxOb2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2RlU291cmNlLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVJvd0NsaWNrKGluZGV4LCBtbyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuc2VsTm9kZSA9IG1vO1xuICAgICAgICB0aGlzLmNvbnRleHQ/LmZpcmVFdmVudCgnZGJsY2xpY2snLCB0aGlzLmNvbnRleHQsIGluZGV4LCBtbyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzZXREcm9wQWN0aW9uVG9kbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kbyA9IHsgdGFyZ2V0SWQ6IG51bGwsIGFjdGlvbjogbnVsbCB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoYW5nZURyYWdnZWRJdGVtc09yZGVyKFxuICAgICAgICBkcmFnZ2VkSXRlbTogVHJlZU5vZGVPYmosXG4gICAgICAgIHRhcmdldEl0ZW06IFRyZWVOb2RlT2JqLFxuICAgICAgICBuZXdQYXJlbnROb2RlOiBUcmVlTm9kZU9iaixcbiAgICAgICAgb2xkUGFyZW50Tm9kZTogVHJlZU5vZGVPYmosXG4gICAgICAgIG9sZFBhcmVudE5vZGVJZFxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVEcmFnZ2VkSXRlbUZyb21Nb0RhdGFMaXN0KGRyYWdnZWRJdGVtKTtcbiAgICAgICAgaWYgKG9sZFBhcmVudE5vZGVJZCAhPT0gJyRSb290Jykge1xuICAgICAgICAgICAgLy8gb2xkUGFyZW50Tm9kZS5jaGlsZHJlbj8ucmVtb3ZlKGRyYWdnZWRJdGVtKTtcbiAgICAgICAgICAgIG9sZFBhcmVudE5vZGUuY2hpbGRyZW4gPSBvbGRQYXJlbnROb2RlLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5EYXRhLklkICE9PSBkcmFnZ2VkSXRlbS5EYXRhLklkKTtcblxuICAgICAgICAgICAgb2xkUGFyZW50Tm9kZS5sZWFmID0gIShvbGRQYXJlbnROb2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgIG9sZFBhcmVudE5vZGUuRGF0YS4kSGFzQ2hpbGRyZW4gPSAhb2xkUGFyZW50Tm9kZS5sZWFmO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUgPSBuZXdQYXJlbnROb2RlO1xuICAgICAgICB0aGlzLl9zZXRMZXZlbEZvckRyYWdnZWRJdGVtcyhkcmFnZ2VkSXRlbSwgbmV3UGFyZW50Tm9kZS5sZXZlbCB8fCAwKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLmZsYXRNb0RhdGFMaXN0LmluZGV4T2YodGFyZ2V0SXRlbSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPT09ICdiZWZvcmUnID8gdGFyZ2V0SW5kZXggOiB0aGlzLl9uZXh0SW5kZXhJbk1vRGF0YUxpc3QodGFyZ2V0SXRlbSk7XG4gICAgICAgIHRoaXMuX2FkZERyYWdnZWRJdGVtc1RvTW9EYXRhTGlzdChkcmFnZ2VkSXRlbSwgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZERyYWdnZWRJdGVtc1RvTW9EYXRhTGlzdChub2RlOiBUcmVlTm9kZU9iaiwgaSk6IG51bWJlciB7XG4gICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3Quc3BsaWNlKGksIDAsIG5vZGUpO1xuICAgICAgICBub2RlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIGkgPSB0aGlzLl9hZGREcmFnZ2VkSXRlbXNUb01vRGF0YUxpc3QoY2hpbGQsIGkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtb3ZlRHJhZ2dlZEl0ZW1Gcm9tTW9EYXRhTGlzdChub2RlOiBUcmVlTm9kZU9iaik6IHZvaWQge1xuICAgICAgICBub2RlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZURyYWdnZWRJdGVtRnJvbU1vRGF0YUxpc3QoY2hpbGQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdC5yZW1vdmUobm9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmV4dEluZGV4SW5Nb0RhdGFMaXN0KG5vZGU6IFRyZWVOb2RlT2JqKTogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGF0TW9EYXRhTGlzdC5pbmRleE9mKG5vZGUpICsgdGhpcy5fYWxsTmVzdGVkQ2hpbGRlc0NvdW50KG5vZGUpICsgMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hbGxOZXN0ZWRDaGlsZGVzQ291bnQobm9kZTogVHJlZU5vZGVPYmosIGkgPSAwKTogbnVtYmVyIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIGlmIChjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9hbGxOZXN0ZWRDaGlsZGVzQ291bnQoY2hpbGQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Tm9kZUJ5SWQoaWQ6IGFueSk6IFRyZWVOb2RlT2JqIHtcbiAgICAgICAgbGV0IG5vZGU7XG4gICAgICAgIGZvciAoY29uc3QgbW8gb2YgdGhpcy5mbGF0TW9EYXRhTGlzdCkge1xuICAgICAgICAgICAgaWYgKG1vLkRhdGEuSWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG1vO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldExldmVsRm9yRHJhZ2dlZEl0ZW1zKG5vZGUsIHBhcmVudExldmVsKTogdm9pZCB7XG4gICAgICAgIHBhcmVudExldmVsKys7XG4gICAgICAgIG5vZGUubGV2ZWwgPSBwYXJlbnRMZXZlbDtcbiAgICAgICAgbm9kZT8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXRMZXZlbEZvckRyYWdnZWRJdGVtcyhjaGlsZCwgcGFyZW50TGV2ZWwpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tb3ZlTm9kZUluc2lkZUFub3RoZXIoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGUgPSBzb3VyY2VOb2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGVJZCA9IG9sZFBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnZWRJdGVtc09yZGVyKHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSwgZGVzdGluYXRpb25Ob2RlLCBvbGRQYXJlbnROb2RlLCBvbGRQYXJlbnROb2RlSWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdtb3ZlTm9kZUluc2lkZUFub3RoZXInLCBzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsZWFyRHJhZ0luZm8oZHJvcHBlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChkcm9wcGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldERyb3BBY3Rpb25Ub2RvKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtYmVmb3JlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1iZWZvcmUnKSk7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wLWFmdGVyJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1hZnRlcicpKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtaW5zaWRlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1pbnNpZGUnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RvcERyYWdnaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhckRyYWdJbmZvKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0RHJvcEFjdGlvblRvZG8oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zaG93RHJhZ0luZm8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8oKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEFjdGlvblRvZG8udGFyZ2V0SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2dldE5vZGVCeUlkKHRoaXMuZHJvcEFjdGlvblRvZG8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50SWQgPSBwYXJlbnQ/LnBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXROb2RlRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbm9kZS0nICsgdGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZCk7XG4gICAgICAgICAgICBpZiAoIXRhcmdldE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXREcm9wQWN0aW9uVG9kbygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UGFyZW50SWQgPT09ICckUm9vdCcgJiYgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gIT09ICdpbnNpZGUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdENvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdmZC1sYXlvdXQtcGFuZWwnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhyb290Q29udGFpbmVyLCAnZHJvcC1pbnNpZGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRhcmdldE5vZGVFbGVtZW50LCAnZHJvcC0nICsgdGhpcy5kcm9wQWN0aW9uVG9kbz8uYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2RvRHJhZ01vdmUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEZyb21Qb2ludCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucG9pbnRlclBvc2l0aW9uLngsIGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55KTtcblxuICAgICAgICBpZiAoIWVsZW1lbnRGcm9tUG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BEcmFnZ2luZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGVFbGVtZW50ID0gZWxlbWVudEZyb21Qb2ludC5jbGFzc0xpc3QuY29udGFpbnMoJ25vZGUtaXRlbScpXG4gICAgICAgICAgICA/IGVsZW1lbnRGcm9tUG9pbnRcbiAgICAgICAgICAgIDogZWxlbWVudEZyb21Qb2ludC5jbG9zZXN0KCcubm9kZS1pdGVtJyk7XG4gICAgICAgIGlmICghdGFyZ2V0Tm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BEcmFnZ2luZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8gPSB7XG4gICAgICAgICAgICB0YXJnZXRJZDogdGFyZ2V0Tm9kZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IHRhcmdldE5vZGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBvbmVUaGlyZCA9IHRhcmdldFJlY3QuaGVpZ2h0IC8gMztcblxuICAgICAgICBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgLSB0YXJnZXRSZWN0LnRvcCA8IG9uZVRoaXJkKSB7XG4gICAgICAgICAgICAvLyBiZWZvcmVcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2JlZm9yZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgLSB0YXJnZXRSZWN0LnRvcCA+IDIgKiBvbmVUaGlyZCkge1xuICAgICAgICAgICAgLy8gYWZ0ZXJcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2FmdGVyJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGluc2lkZVxuICAgICAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPSAnaW5zaWRlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXROb0Ryb3BJdGVtcyhldmVudC5zb3VyY2UuZGF0YSk7XG4gICAgICAgIHRoaXMuX3NldE5vRHJvcFN0eWxlKCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0aGlzLl9nZXROb2RlQnlJZCh0aGlzLmRyb3BBY3Rpb25Ub2RvLnRhcmdldElkKTtcbiAgICAgICAgaWYgKHRhcmdldE5vZGUubm9Ecm9wKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9wRHJhZ2dpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2ZvcmJpZCc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hvd0RyYWdJbmZvKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtb3ZlTm9Ecm9wcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdFxuICAgICAgICAgICAgLmZpbHRlcigobm9kZSkgPT4gbm9kZS5ub0Ryb3ApXG4gICAgICAgICAgICAuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIG5vZGUubm9Ecm9wID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI25vZGUtJyArIG5vZGUuRGF0YS5JZCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKGVsLCAnbm8tZHJvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldE5vRHJvcEl0ZW1zKGRyYWdnZWRJdGVtSWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX2dldE5vZGVCeUlkKGRyYWdnZWRJdGVtSWQpO1xuICAgICAgICBub2RlLm5vRHJvcCA9IHRydWU7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXROb0Ryb3BJdGVtcyhjaGlsZC5EYXRhLklkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Tm9Ecm9wU3R5bGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3RcbiAgICAgICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUubm9Ecm9wKVxuICAgICAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbm9kZS0nICsgbm9kZS5EYXRhLklkKTtcbiAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3MoZWwsICduby1kcm9wJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2FuTW92ZShzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGNhbk1vdmUgPSB0cnVlO1xuICAgICAgICBpZiAoc291cmNlTm9kZS5EYXRhLklkID09PSBkZXN0aW5hdGlvbk5vZGUuRGF0YS5JZCkge1xuICAgICAgICAgICAgY2FuTW92ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc291cmNlTm9kZS5jaGlsZHJlbj8uZm9yZWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICBjYW5Nb3ZlID0gdGhpcy5fY2FuTW92ZShzb3VyY2VOb2RlLCBjaGlsZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FuTW92ZTtcbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBfc2hvd0ZvcmJpZGRlbk1vdmVBbGVydCgpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuTXNnLkVycm9yKCfZhtmF24zYqtmI2KfZhtuM2K8g2KLbjNiq2YUg2LHYpyDYqNmHINiy24zYsdi02KfYrtmHINiu2YjYr9i0INmF2YbYqtmC2YQg2qnZhtuM2K8uJyk7XG4gICAgfVxufVxuIl19
@@ -21,23 +21,10 @@ export class TableThDirective extends BaseDirective {
21
21
  super(_el);
22
22
  this._el = _el;
23
23
  this.disableThResize = false;
24
- this.isImageOrIcon = false;
25
24
  this._renderer2 = inject(Renderer2);
26
25
  }
27
26
  ngOnInit() {
28
27
  super.ngOnInit();
29
- const fieldTypeId = this.fieldTypeId;
30
- const displayType = this.displayType;
31
- this.isImageOrIcon =
32
- fieldTypeId === 38 ||
33
- fieldTypeId === 42 ||
34
- ((fieldTypeId === 6 || fieldTypeId === 5) && displayType === 'Image');
35
- this.disableThResize =
36
- this.disableResize ||
37
- this.displayType === 'Image' ||
38
- fieldTypeId === 38 ||
39
- fieldTypeId === 42 ||
40
- ((fieldTypeId === 6 || fieldTypeId === 5) && displayType === 'Image');
41
28
  this._setWidth();
42
29
  }
43
30
  _setWidth() {
@@ -46,9 +33,12 @@ export class TableThDirective extends BaseDirective {
46
33
  if (this.last && this.tableHeaderMode === 2) {
47
34
  this._renderer2.setStyle(this._el.nativeElement, 'width', `auto`);
48
35
  }
36
+ if (this.isImageOrIcon) {
37
+ this._renderer2.setStyle(this._el.nativeElement, 'width', `42px`);
38
+ }
49
39
  }
50
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableThDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
51
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: TableThDirective, selector: "[tableth]", inputs: { fieldTypeId: "fieldTypeId", caption: "caption", icon: "icon", inlineEditMode: "inlineEditMode", tableWidth: "tableWidth", last: "last", rtl: "rtl", column: "column", disableResponsive: "disableResponsive", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", tableHeaderMode: "tableHeaderMode", colClass: "colClass", displayType: "displayType", name: "name", index: "index" }, usesInheritance: true, ngImport: i0 }); }
41
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: TableThDirective, selector: "[tableth]", inputs: { fieldTypeId: "fieldTypeId", caption: "caption", icon: "icon", inlineEditMode: "inlineEditMode", isImageOrIcon: "isImageOrIcon", tableWidth: "tableWidth", last: "last", rtl: "rtl", column: "column", disableResponsive: "disableResponsive", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", tableHeaderMode: "tableHeaderMode", colClass: "colClass", displayType: "displayType", name: "name", index: "index" }, usesInheritance: true, ngImport: i0 }); }
52
42
  }
53
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TableThDirective, decorators: [{
54
44
  type: Directive,
@@ -63,6 +53,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
63
53
  type: Input
64
54
  }], inlineEditMode: [{
65
55
  type: Input
56
+ }], isImageOrIcon: [{
57
+ type: Input
66
58
  }], tableWidth: [{
67
59
  type: Input
68
60
  }], last: [{
@@ -88,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
88
80
  }], index: [{
89
81
  type: Input
90
82
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdGFibGUtdGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGFBQWEsRUFBMEMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLN0YsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUFjL0MsSUFBYSxRQUFRLENBQUMsR0FBVztRQUM3QixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxJQUFhLFdBQVcsQ0FBQyxHQUFXO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsR0FBVztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUtELFlBQXNCLEdBQWU7UUFDakMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUhyQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRy9CLENBQUM7SUFDRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYTtZQUNkLFdBQVcsS0FBSyxFQUFFO2dCQUNsQixXQUFXLEtBQUssRUFBRTtnQkFDbEIsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsZUFBZTtZQUNoQixJQUFJLENBQUMsYUFBYTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsS0FBSyxPQUFPO2dCQUM1QixXQUFXLEtBQUssRUFBRTtnQkFDbEIsV0FBVyxLQUFLLEVBQUU7Z0JBQ2xCLENBQUMsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxXQUFXLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1FBQ3JHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0wsQ0FBQzs4R0EzRFEsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOytFQUVZLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFNTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBR08sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBSZW5kZXJlcjIsIGluamVjdCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUsIFJlcG9ydFZpZXdDb2x1bW4sIFRhYmxlSGVhZGVyV2lkdGhNb2RlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0YWJsZXRoXSdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVUaERpcmVjdGl2ZSBleHRlbmRzIEJhc2VEaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIGZpZWxkVHlwZUlkOiBudW1iZXI7XG4gICAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB0YWJsZVdpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgbGFzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNpemU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRhYmxlSGVhZGVyTW9kZTogVGFibGVIZWFkZXJXaWR0aE1vZGU7XG5cbiAgICBASW5wdXQoKSBzZXQgY29sQ2xhc3ModmFsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IHZhbD8uc3BsaXQoJyAnKTtcbiAgICAgICAgY2xhc3Nlcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5fZWwubmF0aXZlRWxlbWVudCwgYyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgZGlzcGxheVR5cGUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5SWNvbicpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRBdHRyaWJ1dGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2NvbHVtbk5hbWUnLCB2YWwpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgaW5kZXgodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnaW5kZXgnLCB2YWwudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgZGlzYWJsZVRoUmVzaXplID0gZmFsc2U7XG4gICAgaXNJbWFnZU9ySWNvbiA9IGZhbHNlO1xuICAgIF9yZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKF9lbCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBmaWVsZFR5cGVJZCA9IHRoaXMuZmllbGRUeXBlSWQ7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUeXBlID0gdGhpcy5kaXNwbGF5VHlwZTtcbiAgICAgICAgdGhpcy5pc0ltYWdlT3JJY29uID1cbiAgICAgICAgICAgIGZpZWxkVHlwZUlkID09PSAzOCB8fFxuICAgICAgICAgICAgZmllbGRUeXBlSWQgPT09IDQyIHx8XG4gICAgICAgICAgICAoKGZpZWxkVHlwZUlkID09PSA2IHx8IGZpZWxkVHlwZUlkID09PSA1KSAmJiBkaXNwbGF5VHlwZSA9PT0gJ0ltYWdlJyk7XG4gICAgICAgIHRoaXMuZGlzYWJsZVRoUmVzaXplID1cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVJlc2l6ZSB8fFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VHlwZSA9PT0gJ0ltYWdlJyB8fFxuICAgICAgICAgICAgZmllbGRUeXBlSWQgPT09IDM4IHx8XG4gICAgICAgICAgICBmaWVsZFR5cGVJZCA9PT0gNDIgfHxcbiAgICAgICAgICAgICgoZmllbGRUeXBlSWQgPT09IDYgfHwgZmllbGRUeXBlSWQgPT09IDUpICYmIGRpc3BsYXlUeXBlID09PSAnSW1hZ2UnKTtcbiAgICAgICAgdGhpcy5fc2V0V2lkdGgoKTtcbiAgICB9XG4gICAgX3NldFdpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5jb2x1bW4uJEZpdENvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgKTtcbiAgICAgICAgaWYgKHRoaXMubGFzdCAmJiB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGBhdXRvYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdGFibGUtdGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGFBQWEsRUFBMEMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLN0YsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUFlL0MsSUFBYSxRQUFRLENBQUMsR0FBVztRQUM3QixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxJQUFhLFdBQVcsQ0FBQyxHQUFXO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsR0FBVztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUlELFlBQXNCLEdBQWU7UUFDakMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUZyQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRy9CLENBQUM7SUFDRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsU0FBUztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUNyRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0wsQ0FBQzs4R0FsRFEsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOytFQUVZLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFTyxRQUFRO3NCQUFwQixLQUFLO2dCQU1PLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFHTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIFJlbmRlcmVyMiwgaW5qZWN0LCBFbGVtZW50UmVmLCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSwgUmVwb3J0Vmlld0NvbHVtbiwgVGFibGVIZWFkZXJXaWR0aE1vZGUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RhYmxldGhdJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVRoRGlyZWN0aXZlIGV4dGVuZHMgQmFzZURpcmVjdGl2ZSB7XG4gICAgQElucHV0KCkgZmllbGRUeXBlSWQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlubGluZUVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzSW1hZ2VPckljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgdGFibGVXaWR0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzcG9uc2l2ZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzaXplOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVIZWFkZXJDb250ZXh0TWVudTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB0YWJsZUhlYWRlck1vZGU6IFRhYmxlSGVhZGVyV2lkdGhNb2RlO1xuXG4gICAgQElucHV0KCkgc2V0IGNvbENsYXNzKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSB2YWw/LnNwbGl0KCcgJyk7XG4gICAgICAgIGNsYXNzZXMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsIGMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGRpc3BsYXlUeXBlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheUljb24nKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbmFtZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0QXR0cmlidXRlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICdjb2x1bW5OYW1lJywgdmFsKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGluZGV4KHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRBdHRyaWJ1dGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2luZGV4JywgdmFsLnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGRpc2FibGVUaFJlc2l6ZSA9IGZhbHNlO1xuICAgIF9yZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKF9lbCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xuICAgIH1cbiAgICBfc2V0V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB0aGlzLmNvbHVtbi4kRml0Q29udGFpbmVyV2lkdGgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGApO1xuICAgICAgICBpZiAodGhpcy5sYXN0ICYmIHRoaXMudGFibGVIZWFkZXJNb2RlID09PSAyKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYGF1dG9gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0ltYWdlT3JJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYDQycHhgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==