imm-element-ui 0.1.4 → 0.1.5

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.
@@ -180,7 +180,7 @@ export class PageFormComponent extends AmComponent {
180
180
  });
181
181
  }
182
182
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmDialogModule }] }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmDialogModule }] }); }
184
184
  }
185
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
186
186
  type: Component,
@@ -197,7 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
197
197
  RowSelectorComponent,
198
198
  TranslatePipe,
199
199
  ConfirmDialogModule
200
- ], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
200
+ ], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
201
201
  }], ctorParameters: () => [], propDecorators: { customGrid: [{
202
202
  type: ViewChild,
203
203
  args: ['customGrid']
@@ -205,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
205
205
  type: ViewChild,
206
206
  args: ['cForm']
207
207
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxHQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFC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QUM7b0JBQ3ZFLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQ3pFLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQXhLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiwrbkRBRmxCLEVBQUUsNE9DdkNkLHlnSUE2R2UsK1FEckZYLFlBQVksaWJBQ1osbUJBQW1CLHFiQUNuQixhQUFhLGdHQUNiLFlBQVksK0VBQ1osb0JBQW9CLGtNQUNwQixjQUFjLHlIQUNkLGFBQWEsb09BQ2IsVUFBVSw0WEFDVixLQUFLLGlVQUNMLG9CQUFvQixrSkFDcEIsYUFBYSxpREFDYixtQkFBbUI7OzRGQU1WLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsS0FBSzt3QkFDTCxvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsbUJBQW1CO3FCQUNwQixhQUdTLEVBQUU7d0RBZWEsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNILEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdXNlckhpc3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5wdXQsIGVmZmVjdCwgY29tcHV0ZWQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1Db21wb25lbnQsRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3dTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQ3J1bWJBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9jcnVtYi1hY3Rpb24vY3J1bWItYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LFN0ZXAgfSBmcm9tICcuLi9zdGVwcy9zdGVwcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50LCBHcmlkT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnMnO1xyXG5pbXBvcnQgeyBBbUNvbXBvbmVudCwgR2V0LCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgSHJlZkJ0bkxpc3QsR3JpZExpc3QgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQnRuIH0gZnJvbSAnLi9wYWdlLWZvcm0uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIExvZ0NvbXBvbmVudCxcclxuICAgIENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgU3RlcHNDb21wb25lbnQsXHJcbiAgICBHcmlkQ29tcG9uZW50LFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIFRvYXN0LFxyXG4gICAgUm93U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOltdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlRm9ybUNvbXBvbmVudCBleHRlbmRzIEFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpXHJcbiAgZ3JpZExpc3QgPSBpbnB1dDxHcmlkTGlzdFtdPihbXSlcclxuICBmb3JtID0gaW5wdXQucmVxdWlyZWQ8Rm9ybU9wdGlvbnM+KHt9KVxyXG4gIGdldFBybUlucHV0ID0gaW5wdXQucmVxdWlyZWQ8R2V0Pih7fSlcclxuICBzdGF0dXNTdGVwcyA9IGlucHV0PFN0ZXBbXT4oW10pXHJcbiAgc3RhdHVzS2V5ID0gaW5wdXQoJ3N0YXR1cycpXHJcbiAgaHJlZkJ0bkxpc3QgPSBpbnB1dDxIcmVmQnRuTGlzdFtdPihbXSlcclxuICBzZXRUaXRsZSA9IGlucHV0PHN0cmluZz4oKVxyXG4gIGFjdGlvbkxpc3QgPSBpbnB1dDxQZXJtaXNzaW9uQnRuW10+KFtdKVxyXG4gIG1vZGVsTG9nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpXHJcbiAgZm9ybURpc2FibGVkID0gaW5wdXQ8RnVuY3Rpb24+KClcclxuXHJcbiAgQFZpZXdDaGlsZCgnY3VzdG9tR3JpZCcpIGN1c3RvbUdyaWQhOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50XHJcbiAgdXNlckhpc3RvcnlTZXJ2aWNlID0gIGluamVjdChVc2VySGlzdG9yeVNlcnZpY2UpXHJcbiAgaW5kZXhWYWx1ZSA9IDBcclxuICB2aXNpYmxlID0gZmFsc2VcclxuICBkaWFsb2dTZWFyY2hQcm0hOiBTZWFyY2hcclxuICBzZWxlY3RPcHRpb25zITpHcmlkT3B0aW9uc1xyXG4gIHNlbGVjdERhdGEgOmFueVtdPSBbXVxyXG4gIHBhZ2VVcmwgPSAnJ1xyXG4gIG5ld1VybCA9ICcnXHJcbiAgaTE4biA9IGluamVjdChJMThuU2VydmljZSlcclxuICBhdXRoTGV2ZWwgPSBpbnB1dDxudW1iZXI+KC0xKVxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgICBzdXBlcigpXHJcbiAgICB0aGlzLmlkID0gTnVtYmVyKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpKVxyXG4gICAgdGhpcy5wYWdlVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmwubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJykucmVwbGFjZSgvKFteXFwvXSopJC8sIFwiXCIpXHJcbiAgICB0aGlzLm5ld1VybCA9IGAke3RoaXMucGFnZVVybH1uZXdgXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ2V0UHJtSW5wdXQoKS5tb2RlbE5hbWUhXHJcbiAgICAgIHRoaXMuZ2V0UHJtID0gey4uLnRoaXMuZ2V0UHJtSW5wdXQoKX1cclxuICAgICAgdGhpcy5pZCAmJiAodGhpcy5nZXRQcm0uaWQgPSB0aGlzLmlkKVxyXG4gICAgICB0aGlzLmlkICYmIHRoaXMuZ2V0RGV0YWlsKClcclxuICAgIH0seyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7Li4udGhpcy5mb3JtKCl9XHJcbiAgICB9KVxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvZyA9IHRoaXMubW9kZWxMb2coKVxyXG4gICAgICBjb25zb2xlLmxvZygnbW9kZWwtLS0tLScsdGhpcy5pc0xvZyx0aGlzLm1vZGVsTG9nKCkpXHJcbiAgICB9LHthbGxvd1NpZ25hbFdyaXRlczp0cnVlfSlcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwQ2IgPSB0aGlzLnVwQ2IuYmluZCh0aGlzKVxyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIDphbnl7XHJcbiAgICBpZih0aGlzLmNGb3JtLnZhbGlkYXRlKCkpe1xyXG4gICAgICBsZXQgY2I6YW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2JcclxuICAgICAgdGhpcy51cHNlcnQobnVsbCxjYilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbFJvd3MoZTphbnkpIHtcclxuICAgIGNvbnN0IGdyaWRUYWIgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVxyXG4gICAgY29uc3QgZGVsZXRlRnVuYyA9IGdyaWRUYWIuZGVsZXRlRnVuY1xyXG4gICAgY29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcclxuXHJcbiAgICBsZXQgcHJtID0geyBcclxuICAgICAgbW9kZWxOYW1lOiBzdWJUYWJsZSwgXHJcbiAgICAgIGlkczplIFxyXG4gICAgfTtcclxuICAgIGlmKCFkZWxldGVGdW5jKXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHBybSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmdldCgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZUZ1bmMoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0KClcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICB1cENiKHJlcz86YW55KXtcclxuICAgIGlmKHJlcy5pZCA9PSAwKXtcclxuICAgICAgdGhpcy5nZXREZXRhaWwoKVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBsZXQgZWRpdFVybCA9IGAke3RoaXMucGFnZVVybH0ke3Jlcy5pZH1gXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2VkaXRVcmxdKVxyXG4gICAgICB9LCAxNTAwKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jRm9ybS5maW5hbGl6ZSgpXHJcbiAgfVxyXG4gIC8vIFRPRE8g5piv5ZCm6ZyA6KaB5pWw5o2u6L2s5o2i5Zue6LCD5Ye95pWwXHJcbiAgb25PayhlOmFueSl7XHJcbiAgICB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhID0gW11cclxuICAgIGlmKGUubGVuZ3RoID4gMCl7XHJcbiAgICAgIGxldCB7IHNlbGVjdERhdGFDYiB9ID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1cclxuICAgICAgZS5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmogPSBzZWxlY3REYXRhQ2IgPyBzZWxlY3REYXRhQ2IoaXRlbSk6IHsuLi5pdGVtfVxyXG4gICAgICAgIHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdLnNlbGVjdERhdGEhLnB1c2gob2JqKVxyXG4gICAgICB9KVxyXG4gICAgfSBcclxuICB9XHJcbiAgZ2V0RGV0YWlsKCl7XHJcbiAgICB0aGlzLndlYl9nZXQodGhpcy5nZXRQcm0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKHJlcylcclxuICAgICAgdGhpcy5mb3JtRGlzYWJsZWQoKSAmJiB0aGlzLmZvcm1EaXNGdW5jKClcclxuICAgIH0pXHJcbiAgfVxyXG4gIHVwZGF0ZVRpdGxlKHJlczphbnkpe1xyXG4gICAgLy8gbGV0IHRpdGxlID0gdGhpcy5zZXRUaXRsZSgpID8gdGhpcy5zZXRUaXRsZSgpIDogJydcclxuICAgIC8vIHRpdGxlICE9PSAnJyAmJiB0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpXHJcbiAgICBsZXQgbWFpbkZpZWxkID0gdGhpcy5mb3JtKCkubWFpbkZpZWxkXHJcbiAgICBsZXQgdGl0bGUgPSByZXNbbWFpbkZpZWxkIV1cclxuICAgIHRoaXMudXNlckhpc3RvcnlTZXJ2aWNlLnNldExhc3RUaXRsZSh0aXRsZSlcclxuICB9XHJcbiAgZGF0YVNvdXJjZVNob3coKXtcclxuICAgIHRoaXMuZGlhbG9nU2VhcmNoUHJtID0gey4uLnRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdWydzZWFyY2hQcm0nXSF9XHJcbiAgICB0aGlzLnNlbGVjdE9wdGlvbnMgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VsZWN0T3B0aW9ucyddIVxyXG4gICAgY29uc29sZS5sb2coJ3NlbGV0Yy0tLS0tJyx0aGlzLnNlbGVjdE9wdGlvbnMpXHJcbiAgICB0aGlzLmRpYWxvZ1NlYXJjaFBybS5tb2RlbE5hbWUgPSB0aGlzLnNlbGVjdE9wdGlvbnMubW9kZWxOYW1lXHJcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBnb1J1bihkYXRhOmFueSl7XHJcbiAgICBpZihkYXRhLmlkS2V5KXtcclxuICAgICAgbGV0IGlkID0gdGhpcy5nZXRQcm0uZGF0YVtkYXRhLmlkS2V5XVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7ZGF0YS51cmx9LyR7aWR9YF0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZGF0YS51cmxdKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aENsaWNrKGJ0bjphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ2F1dGhDbGljaycsYnRuKVxyXG4gICAgaWYoYnRuLmhhc093blByb3BlcnR5KCdvbkNsaWNrJykpe1xyXG4gICAgICBidG4ub25DbGljayh0aGlzLmdldFBybS5kYXRhKVxyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0dXNDaGFuZ2UodmFsdWU6YW55KXtcclxuICAgIGlmKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcbiAgICBpZih0aGlzLmlkKXtcclxuICAgICAgbGV0IHBhcmFtIDphbnk9IHtcclxuICAgICAgICBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLFxyXG4gICAgICAgIGRhdGE6e2lkOiB0aGlzLmlkLCBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaXNMb2cpe1xyXG4gICAgICAgIHBhcmFtLmxvZ01vZGVsID0gYCR7dGhpcy5tb2RlbE5hbWV9TG9nYFxyXG4gICAgICAgIHBhcmFtLmxvZyA9IHtcclxuICAgICAgICAgIHBpZDp0aGlzLmlkLFxyXG4gICAgICAgICAgY29udGVudDpgW+eKtuaAgV0gJHt0aGlzLmdldFBybS5kYXRhIVt0aGlzLnN0YXR1c0tleSgpXX0gLT4gJHt2YWx1ZX1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud2ViX3dyaXRlKHBhcmFtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmdldERldGFpbCgpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFBybS5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmdldFBybS5kYXRhfHx7fSx7XHJcbiAgICAgICAgW3RoaXMuc3RhdHVzS2V5KCldOnZhbHVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3RoaXMuc3RhdHVzS2V5KCldID0gdmFsdWVcclxuICAgICAgdGhpcy5jRm9ybS50cmlnZ2VyTW9kZWxFZmZlY3Qoe1t0aGlzLnN0YXR1c0tleSgpXTp2YWx1ZX0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtRGlzRnVuYygpe1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5maWVsZHM/LmZvckVhY2goKHYpID0+IHtcclxuICAgICAgdi5ncm91cD8uZm9yRWFjaCgoZzphbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKSBcclxuICAgICAgICA/IHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KSBcclxuICAgICAgICA6ICB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KSBcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMSBweC0xIGJvcmRlci1iLVsxcHhdIGJvcmRlci1bI2RiZGJkYl0gYmctd2hpdGVcIj5cclxuICAgIDxhcHAtY3J1bWItYWN0aW9uXHJcbiAgICAgIFtuZXdVcmxdPVwibmV3VXJsXCJcclxuICAgICAgW2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuICAgICAgW291dGxpbmVkXT1cInRydWVcIlxyXG4gICAgICBbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuICAgICAgKHNhdmVFdmVudCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgIDwvYXBwLWNydW1iLWFjdGlvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJocmVmQnRuTGlzdFwiPlxyXG4gICAgICBAaWYoaWQpe1xyXG4gICAgICAgIEBmb3IoYnRuIG9mIGhyZWZCdG5MaXN0KCk7dHJhY2sgYnRuKXtcclxuICAgICAgICAgIDxwLWJ1dHRvbiBcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuPy52YXJpYW50XCIgXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXItWzZweF1cIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJidG4/Lmljb25cIlxyXG4gICAgICAgICAgICBsYWJlbD1cInt7YnRuLmkxOG5LZXk/IGkxOG4uZmFueWkoYnRuLmkxOG5LZXkpIDogYnRuLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29SdW4oYnRuKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9wLWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+PC9kaXY+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIG1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0xLzMgcHktMSBiYXNpcy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtcm93IG9yZGVyLTFcIj5cclxuICAgICAgICBAZm9yIChidG4gb2YgYWN0aW9uTGlzdCgpO2xldCBpID0gJGluZGV4OyB0cmFjayBidG4pIHtcclxuICAgICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgICBbdmFyaWFudF09XCJidG4/LnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2V2ZXJpdHldPVwiYnRuPy5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXItWzRweF1cIlxyXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJidG4/Lmljb25cIlxyXG4gICAgICAgICAgICBsYWJlbD1cInt7IGJ0bi5pMThuS2V5ID8gKGJ0bi5pMThuS2V5IHwgdHJhbnNsYXRlKSA6IGJ0bi5sYWJlbCB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhdXRoQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4uYnRuRGlzYWJsZWQgPyBidG4uYnRuRGlzYWJsZWQoZ2V0UHJtLmRhdGEpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3AtYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0yLzMgYmFzaXMtZnVsbCBmbGV4IG1kOmZsZXgtcm93LXJldmVyc2UgZmxleC1yb3cgbWQ6b3JkZXItMiBvcmRlci1maXJzdFwiPlxyXG4gICAgICAgIDxjdXN0b20tc3RlcHNcclxuICAgICAgICAgIFtzdGVwc109XCJzdGF0dXNTdGVwcygpXCJcclxuICAgICAgICAgIFtjdXJyZW50XT1cImdldFBybS5kYXRhICYmIGdldFBybS5kYXRhW3N0YXR1c0tleSgpXSAhPT0gdW5kZWZpbmVkID8gZ2V0UHJtLmRhdGFbc3RhdHVzS2V5KCldIDogMFwiXHJcbiAgICAgICAgICBbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwic3RhdHVzQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICA8L2N1c3RvbS1zdGVwcz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibWFpbiBmbGV4IGZsZXgtd3JhcCBvdmVyZmxvdy15LWhpZGRlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsIGgtZnVsbCBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIG14LTIgZm9ybS1wYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgZmxleC0xXCI+XHJcbiAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm0oKS5mb3JtIVwiPlxyXG4gICAgICAgICAgICA8Y3VzdG9tLWZvcm1cclxuICAgICAgICAgICAgICAjY0Zvcm1cclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJmb3JtT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJnZXRQcm0uZGF0YT8/e31cIj48L2N1c3RvbS1mb3JtPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZihncmlkTGlzdCgpICYmIGdyaWRMaXN0KCkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbWItMlwiPlxyXG4gICAgICAgICAgICA8cC10YWJzIFsodmFsdWUpXT1cImluZGV4VmFsdWVcIj5cclxuICAgICAgICAgICAgICA8cC10YWJsaXN0PlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZmNoaWxkIG9mIGdyaWRMaXN0KCk7bGV0IGkgPSAkaW5kZXg7IHRyYWNrIGZjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICA8cC10YWIgW3ZhbHVlXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2ZjaGlsZC5pMThuS2V5ID8gaTE4bi5mYW55aShmY2hpbGQuaTE4bktleSkgOiBmY2hpbGQudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICA8L3AtdGFiPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvcC10YWJsaXN0PlxyXG4gICAgICAgICAgICA8L3AtdGFicz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAZm9yIChncmlkIG9mIGdyaWRMaXN0KCk7IGxldCBpID0gJGluZGV4O3RyYWNrIGdyaWQpIHtcclxuICAgICAgICAgIDxjdXN0b20tZ3JpZFxyXG4gICAgICAgICAgICAjY3VzdG9tR3JpZFxyXG4gICAgICAgICAgICBbaGlkZGVuXT1cImluZGV4VmFsdWUgIT1pIFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cImdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV18fCBbXVwiXHJcbiAgICAgICAgICAgIFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUVtaXQpPVwiZGVsUm93cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2FkZFR5cGVdPVwiZ3JpZC5zdWJUYWJsZVNvdXJjZVwiXHJcbiAgICAgICAgICAgIChhZGRFbWl0KT1cImRhdGFTb3VyY2VTaG93KClcIlxyXG4gICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZC5ncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0RGF0YV09XCJncmlkLnNlbGVjdERhdGFcIj5cclxuICAgICAgICAgIDwvY3VzdG9tLWdyaWQ+XHJcbiAgICAgICAgfSAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0xLzMgYmFzaXMtZnVsbCBoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgIDxjdXN0b20tbG9nIFtsb2dzXT1cImdldFBybS5kYXRhPy5sb2c/P1tdXCI+PC9jdXN0b20tbG9nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cC10b2FzdCAvPlxyXG48cm93LXNlbGVjdG9yXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRbc2VhcmNoUHJtXT1cImRpYWxvZ1NlYXJjaFBybVwiXHJcblx0W2dyaWRPcHRpb25zXT1cInNlbGVjdE9wdGlvbnNcIlxyXG5cdChvbk9rKT1cIm9uT2soJGV2ZW50KVwiPlxyXG48L3Jvdy1zZWxlY3Rvcj4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxHQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQXNCNUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUF5QmhEO1FBQ0UsS0FBSyxFQUFFLENBQUE7UUF6QlQsZUFBVSxHQUFHLEtBQUssRUFBVyxDQUFBO1FBQzdCLGFBQVEsR0FBRyxLQUFLLENBQWEsRUFBRSxDQUFDLENBQUE7UUFDaEMsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQWMsRUFBRSxDQUFDLENBQUE7UUFDdEMsZ0JBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3JDLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDM0IsZ0JBQVcsR0FBRyxLQUFLLENBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBQ3RDLGFBQVEsR0FBRyxLQUFLLEVBQVUsQ0FBQTtRQUMxQixlQUFVLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQTtRQUN2QyxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBQ2hDLGlCQUFZLEdBQUcsS0FBSyxFQUFZLENBQUE7UUFJaEMsdUJBQWtCLEdBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDaEQsZUFBVSxHQUFHLENBQUMsQ0FBQTtRQUNkLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFHZixlQUFVLEdBQVMsRUFBRSxDQUFBO1FBQ3JCLFlBQU8sR0FBRyxFQUFFLENBQUE7UUFDWixXQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ1gsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFHM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN0RyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFBO1FBQ2xDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFVLENBQUE7WUFDOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNyQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUM3QixDQUFDLEVBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRTlCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ3RELENBQUMsRUFBQyxFQUFDLGlCQUFpQixFQUFDLElBQUksRUFBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUM7WUFDeEIsSUFBSSxFQUFFLEdBQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBQyxFQUFFLENBQUMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFLO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNoRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBRS9DLElBQUksR0FBRyxHQUFHO1lBQ1IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFDLENBQUM7U0FDTixDQUFDO1FBQ0YsSUFBRyxDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUNaLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUVILENBQUM7SUFDRCxJQUFJLENBQUMsR0FBUTtRQUNYLElBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNsQixDQUFDO2FBQUssQ0FBQztZQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtnQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ2pDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNWLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxvQkFBb0I7SUFDcEIsSUFBSSxDQUFDLENBQUs7UUFDUixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDaEQsSUFBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDdkQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO2dCQUNyQixJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksRUFBQyxDQUFBO2dCQUN0RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDeEQsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFPO1FBQ2pCLHFEQUFxRDtRQUNyRCw4REFBOEQ7UUFDOUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQTtRQUNyQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsU0FBVSxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFFLEVBQUMsQ0FBQTtRQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFFLENBQUE7UUFDdkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUTtRQUNaLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQ2IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBTztRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzVCLElBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFTO1FBQ3BCLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7WUFBRSxPQUFPO1FBQ2hDLElBQUcsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDO1lBQ1YsSUFBSSxLQUFLLEdBQU87Z0JBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixJQUFJLEVBQUMsRUFBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBQzthQUM5QyxDQUFBO1lBQ0QsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUM7Z0JBQ2IsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQTtnQkFDdkMsS0FBSyxDQUFDLEdBQUcsR0FBRztvQkFDVixHQUFHLEVBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsT0FBTyxFQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sS0FBSyxFQUFFO2lCQUNsRSxDQUFBO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDbEIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUUsRUFBRSxFQUFDO2dCQUNwRCxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLEtBQUs7YUFDekIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFBO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFlBQVksRUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUM7b0JBQ3ZFLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQ3pFLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQXhLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiwrbkRBRmxCLEVBQUUsNE9DdkNkLGdqSUE4R2UsK1FEdEZYLFlBQVksaWJBQ1osbUJBQW1CLHFiQUNuQixhQUFhLGdHQUNiLFlBQVksK0VBQ1osb0JBQW9CLGtNQUNwQixjQUFjLHlIQUNkLGFBQWEsb09BQ2IsVUFBVSw0WEFDVixLQUFLLGlVQUNMLG9CQUFvQixrSkFDcEIsYUFBYSxpREFDYixtQkFBbUI7OzRGQU1WLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsS0FBSzt3QkFDTCxvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsbUJBQW1CO3FCQUNwQixhQUdTLEVBQUU7d0RBZWEsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNILEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdXNlckhpc3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5wdXQsIGVmZmVjdCwgY29tcHV0ZWQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1Db21wb25lbnQsRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3dTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQ3J1bWJBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9jcnVtYi1hY3Rpb24vY3J1bWItYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LFN0ZXAgfSBmcm9tICcuLi9zdGVwcy9zdGVwcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50LCBHcmlkT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnMnO1xyXG5pbXBvcnQgeyBBbUNvbXBvbmVudCwgR2V0LCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgSHJlZkJ0bkxpc3QsR3JpZExpc3QgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQnRuIH0gZnJvbSAnLi9wYWdlLWZvcm0uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhZ2UtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIExvZ0NvbXBvbmVudCxcclxuICAgIENydW1iQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgU3RlcHNDb21wb25lbnQsXHJcbiAgICBHcmlkQ29tcG9uZW50LFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIFRvYXN0LFxyXG4gICAgUm93U2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3BhZ2UtZm9ybS5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOltdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlRm9ybUNvbXBvbmVudCBleHRlbmRzIEFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpXHJcbiAgZ3JpZExpc3QgPSBpbnB1dDxHcmlkTGlzdFtdPihbXSlcclxuICBmb3JtID0gaW5wdXQucmVxdWlyZWQ8Rm9ybU9wdGlvbnM+KHt9KVxyXG4gIGdldFBybUlucHV0ID0gaW5wdXQucmVxdWlyZWQ8R2V0Pih7fSlcclxuICBzdGF0dXNTdGVwcyA9IGlucHV0PFN0ZXBbXT4oW10pXHJcbiAgc3RhdHVzS2V5ID0gaW5wdXQoJ3N0YXR1cycpXHJcbiAgaHJlZkJ0bkxpc3QgPSBpbnB1dDxIcmVmQnRuTGlzdFtdPihbXSlcclxuICBzZXRUaXRsZSA9IGlucHV0PHN0cmluZz4oKVxyXG4gIGFjdGlvbkxpc3QgPSBpbnB1dDxQZXJtaXNzaW9uQnRuW10+KFtdKVxyXG4gIG1vZGVsTG9nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpXHJcbiAgZm9ybURpc2FibGVkID0gaW5wdXQ8RnVuY3Rpb24+KClcclxuXHJcbiAgQFZpZXdDaGlsZCgnY3VzdG9tR3JpZCcpIGN1c3RvbUdyaWQhOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50XHJcbiAgdXNlckhpc3RvcnlTZXJ2aWNlID0gIGluamVjdChVc2VySGlzdG9yeVNlcnZpY2UpXHJcbiAgaW5kZXhWYWx1ZSA9IDBcclxuICB2aXNpYmxlID0gZmFsc2VcclxuICBkaWFsb2dTZWFyY2hQcm0hOiBTZWFyY2hcclxuICBzZWxlY3RPcHRpb25zITpHcmlkT3B0aW9uc1xyXG4gIHNlbGVjdERhdGEgOmFueVtdPSBbXVxyXG4gIHBhZ2VVcmwgPSAnJ1xyXG4gIG5ld1VybCA9ICcnXHJcbiAgaTE4biA9IGluamVjdChJMThuU2VydmljZSlcclxuICBhdXRoTGV2ZWwgPSBpbnB1dDxudW1iZXI+KC0xKVxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgICBzdXBlcigpXHJcbiAgICB0aGlzLmlkID0gTnVtYmVyKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpKVxyXG4gICAgdGhpcy5wYWdlVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmwubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJykucmVwbGFjZSgvKFteXFwvXSopJC8sIFwiXCIpXHJcbiAgICB0aGlzLm5ld1VybCA9IGAke3RoaXMucGFnZVVybH1uZXdgXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ2V0UHJtSW5wdXQoKS5tb2RlbE5hbWUhXHJcbiAgICAgIHRoaXMuZ2V0UHJtID0gey4uLnRoaXMuZ2V0UHJtSW5wdXQoKX1cclxuICAgICAgdGhpcy5pZCAmJiAodGhpcy5nZXRQcm0uaWQgPSB0aGlzLmlkKVxyXG4gICAgICB0aGlzLmlkICYmIHRoaXMuZ2V0RGV0YWlsKClcclxuICAgIH0seyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7Li4udGhpcy5mb3JtKCl9XHJcbiAgICB9KVxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvZyA9IHRoaXMubW9kZWxMb2coKVxyXG4gICAgICBjb25zb2xlLmxvZygnbW9kZWwtLS0tLScsdGhpcy5pc0xvZyx0aGlzLm1vZGVsTG9nKCkpXHJcbiAgICB9LHthbGxvd1NpZ25hbFdyaXRlczp0cnVlfSlcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwQ2IgPSB0aGlzLnVwQ2IuYmluZCh0aGlzKVxyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIDphbnl7XHJcbiAgICBpZih0aGlzLmNGb3JtLnZhbGlkYXRlKCkpe1xyXG4gICAgICBsZXQgY2I6YW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2JcclxuICAgICAgdGhpcy51cHNlcnQobnVsbCxjYilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbFJvd3MoZTphbnkpIHtcclxuICAgIGNvbnN0IGdyaWRUYWIgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVxyXG4gICAgY29uc3QgZGVsZXRlRnVuYyA9IGdyaWRUYWIuZGVsZXRlRnVuY1xyXG4gICAgY29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcclxuXHJcbiAgICBsZXQgcHJtID0geyBcclxuICAgICAgbW9kZWxOYW1lOiBzdWJUYWJsZSwgXHJcbiAgICAgIGlkczplIFxyXG4gICAgfTtcclxuICAgIGlmKCFkZWxldGVGdW5jKXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHBybSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmdldCgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZUZ1bmMoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0KClcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICB1cENiKHJlcz86YW55KXtcclxuICAgIGlmKHJlcy5pZCA9PSAwKXtcclxuICAgICAgdGhpcy5nZXREZXRhaWwoKVxyXG4gICAgfWVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBsZXQgZWRpdFVybCA9IGAke3RoaXMucGFnZVVybH0ke3Jlcy5pZH1gXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2VkaXRVcmxdKVxyXG4gICAgICB9LCAxNTAwKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jRm9ybS5maW5hbGl6ZSgpXHJcbiAgfVxyXG4gIC8vIFRPRE8g5piv5ZCm6ZyA6KaB5pWw5o2u6L2s5o2i5Zue6LCD5Ye95pWwXHJcbiAgb25PayhlOmFueSl7XHJcbiAgICB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhID0gW11cclxuICAgIGlmKGUubGVuZ3RoID4gMCl7XHJcbiAgICAgIGxldCB7IHNlbGVjdERhdGFDYiB9ID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1cclxuICAgICAgZS5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmogPSBzZWxlY3REYXRhQ2IgPyBzZWxlY3REYXRhQ2IoaXRlbSk6IHsuLi5pdGVtfVxyXG4gICAgICAgIHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdLnNlbGVjdERhdGEhLnB1c2gob2JqKVxyXG4gICAgICB9KVxyXG4gICAgfSBcclxuICB9XHJcbiAgZ2V0RGV0YWlsKCl7XHJcbiAgICB0aGlzLndlYl9nZXQodGhpcy5nZXRQcm0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRpdGxlKHJlcylcclxuICAgICAgdGhpcy5mb3JtRGlzYWJsZWQoKSAmJiB0aGlzLmZvcm1EaXNGdW5jKClcclxuICAgIH0pXHJcbiAgfVxyXG4gIHVwZGF0ZVRpdGxlKHJlczphbnkpe1xyXG4gICAgLy8gbGV0IHRpdGxlID0gdGhpcy5zZXRUaXRsZSgpID8gdGhpcy5zZXRUaXRsZSgpIDogJydcclxuICAgIC8vIHRpdGxlICE9PSAnJyAmJiB0aGlzLnVzZXJIaXN0b3J5U2VydmljZS5zZXRMYXN0VGl0bGUodGl0bGUpXHJcbiAgICBsZXQgbWFpbkZpZWxkID0gdGhpcy5mb3JtKCkubWFpbkZpZWxkXHJcbiAgICBsZXQgdGl0bGUgPSByZXNbbWFpbkZpZWxkIV1cclxuICAgIHRoaXMudXNlckhpc3RvcnlTZXJ2aWNlLnNldExhc3RUaXRsZSh0aXRsZSlcclxuICB9XHJcbiAgZGF0YVNvdXJjZVNob3coKXtcclxuICAgIHRoaXMuZGlhbG9nU2VhcmNoUHJtID0gey4uLnRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdWydzZWFyY2hQcm0nXSF9XHJcbiAgICB0aGlzLnNlbGVjdE9wdGlvbnMgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXVsnc2VsZWN0T3B0aW9ucyddIVxyXG4gICAgY29uc29sZS5sb2coJ3NlbGV0Yy0tLS0tJyx0aGlzLnNlbGVjdE9wdGlvbnMpXHJcbiAgICB0aGlzLmRpYWxvZ1NlYXJjaFBybS5tb2RlbE5hbWUgPSB0aGlzLnNlbGVjdE9wdGlvbnMubW9kZWxOYW1lXHJcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBnb1J1bihkYXRhOmFueSl7XHJcbiAgICBpZihkYXRhLmlkS2V5KXtcclxuICAgICAgbGV0IGlkID0gdGhpcy5nZXRQcm0uZGF0YVtkYXRhLmlkS2V5XVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7ZGF0YS51cmx9LyR7aWR9YF0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZGF0YS51cmxdKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aENsaWNrKGJ0bjphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ2F1dGhDbGljaycsYnRuKVxyXG4gICAgaWYoYnRuLmhhc093blByb3BlcnR5KCdvbkNsaWNrJykpe1xyXG4gICAgICBidG4ub25DbGljayh0aGlzLmdldFBybS5kYXRhKVxyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0dXNDaGFuZ2UodmFsdWU6YW55KXtcclxuICAgIGlmKHRoaXMuYXV0aExldmVsKCkgPCA0KSByZXR1cm47XHJcbiAgICBpZih0aGlzLmlkKXtcclxuICAgICAgbGV0IHBhcmFtIDphbnk9IHtcclxuICAgICAgICBtb2RlbE5hbWU6IHRoaXMubW9kZWxOYW1lLFxyXG4gICAgICAgIGRhdGE6e2lkOiB0aGlzLmlkLCBbdGhpcy5zdGF0dXNLZXkoKV06IHZhbHVlfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaXNMb2cpe1xyXG4gICAgICAgIHBhcmFtLmxvZ01vZGVsID0gYCR7dGhpcy5tb2RlbE5hbWV9TG9nYFxyXG4gICAgICAgIHBhcmFtLmxvZyA9IHtcclxuICAgICAgICAgIHBpZDp0aGlzLmlkLFxyXG4gICAgICAgICAgY29udGVudDpgW+eKtuaAgV0gJHt0aGlzLmdldFBybS5kYXRhIVt0aGlzLnN0YXR1c0tleSgpXX0gLT4gJHt2YWx1ZX1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud2ViX3dyaXRlKHBhcmFtKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmdldERldGFpbCgpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFBybS5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmdldFBybS5kYXRhfHx7fSx7XHJcbiAgICAgICAgW3RoaXMuc3RhdHVzS2V5KCldOnZhbHVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudXBzZXJ0UHJtLmFkZERhdGEhW3RoaXMuc3RhdHVzS2V5KCldID0gdmFsdWVcclxuICAgICAgdGhpcy5jRm9ybS50cmlnZ2VyTW9kZWxFZmZlY3Qoe1t0aGlzLnN0YXR1c0tleSgpXTp2YWx1ZX0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtRGlzRnVuYygpe1xyXG4gICAgdGhpcy5mb3JtT3B0aW9ucy5maWVsZHM/LmZvckVhY2goKHYpID0+IHtcclxuICAgICAgdi5ncm91cD8uZm9yRWFjaCgoZzphbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKSBcclxuICAgICAgICA/IHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KSBcclxuICAgICAgICA6ICB0aGlzLmNGb3JtLmdldEZpZWxkKGcua2V5KT8uZmllbGRDb250cm9sIS5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KSBcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMSBweC0xIGJvcmRlci1iLVsxcHhdIGJvcmRlci1bI2RiZGJkYl0gYmctd2hpdGVcIj5cclxuICAgIDxhcHAtY3J1bWItYWN0aW9uXHJcbiAgICAgIFthZGRWaXNpYmxlXT1cImFkZFZpc2libGUoKVwiXHJcbiAgICAgIFtuZXdVcmxdPVwibmV3VXJsXCJcclxuICAgICAgW2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuICAgICAgW291dGxpbmVkXT1cInRydWVcIlxyXG4gICAgICBbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuICAgICAgKHNhdmVFdmVudCk9XCJzdWJtaXRGb3JtKClcIj5cclxuICAgIDwvYXBwLWNydW1iLWFjdGlvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJocmVmQnRuTGlzdFwiPlxyXG4gICAgICBAaWYoaWQpe1xyXG4gICAgICAgIEBmb3IoYnRuIG9mIGhyZWZCdG5MaXN0KCk7dHJhY2sgYnRuKXtcclxuICAgICAgICAgIDxwLWJ1dHRvbiBcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuPy52YXJpYW50XCIgXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4/LnNldmVyaXR5XCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXItWzZweF1cIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJidG4/Lmljb25cIlxyXG4gICAgICAgICAgICBsYWJlbD1cInt7YnRuLmkxOG5LZXk/IGkxOG4uZmFueWkoYnRuLmkxOG5LZXkpIDogYnRuLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29SdW4oYnRuKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9wLWJ1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+PC9kaXY+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIG1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0xLzMgcHktMSBiYXNpcy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtcm93IG9yZGVyLTFcIj5cclxuICAgICAgICBAZm9yIChidG4gb2YgYWN0aW9uTGlzdCgpO2xldCBpID0gJGluZGV4OyB0cmFjayBidG4pIHtcclxuICAgICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgICBbdmFyaWFudF09XCJidG4/LnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2V2ZXJpdHldPVwiYnRuPy5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXItWzRweF1cIlxyXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICBbaWNvbl09XCJidG4/Lmljb25cIlxyXG4gICAgICAgICAgICBsYWJlbD1cInt7IGJ0bi5pMThuS2V5ID8gKGJ0bi5pMThuS2V5IHwgdHJhbnNsYXRlKSA6IGJ0bi5sYWJlbCB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhdXRoQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4uYnRuRGlzYWJsZWQgPyBidG4uYnRuRGlzYWJsZWQoZ2V0UHJtLmRhdGEpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3AtYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0yLzMgYmFzaXMtZnVsbCBmbGV4IG1kOmZsZXgtcm93LXJldmVyc2UgZmxleC1yb3cgbWQ6b3JkZXItMiBvcmRlci1maXJzdFwiPlxyXG4gICAgICAgIDxjdXN0b20tc3RlcHNcclxuICAgICAgICAgIFtzdGVwc109XCJzdGF0dXNTdGVwcygpXCJcclxuICAgICAgICAgIFtjdXJyZW50XT1cImdldFBybS5kYXRhICYmIGdldFBybS5kYXRhW3N0YXR1c0tleSgpXSAhPT0gdW5kZWZpbmVkID8gZ2V0UHJtLmRhdGFbc3RhdHVzS2V5KCldIDogMFwiXHJcbiAgICAgICAgICBbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwic3RhdHVzQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICA8L2N1c3RvbS1zdGVwcz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibWFpbiBmbGV4IGZsZXgtd3JhcCBvdmVyZmxvdy15LWhpZGRlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1kOmJhc2lzLTIvMyBiYXNpcy1mdWxsIGgtZnVsbCBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIG14LTIgZm9ybS1wYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgZmxleC0xXCI+XHJcbiAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm0oKS5mb3JtIVwiPlxyXG4gICAgICAgICAgICA8Y3VzdG9tLWZvcm1cclxuICAgICAgICAgICAgICAjY0Zvcm1cclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJmb3JtT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJnZXRQcm0uZGF0YT8/e31cIj48L2N1c3RvbS1mb3JtPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZihncmlkTGlzdCgpICYmIGdyaWRMaXN0KCkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbWItMlwiPlxyXG4gICAgICAgICAgICA8cC10YWJzIFsodmFsdWUpXT1cImluZGV4VmFsdWVcIj5cclxuICAgICAgICAgICAgICA8cC10YWJsaXN0PlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZmNoaWxkIG9mIGdyaWRMaXN0KCk7bGV0IGkgPSAkaW5kZXg7IHRyYWNrIGZjaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgICA8cC10YWIgW3ZhbHVlXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2ZjaGlsZC5pMThuS2V5ID8gaTE4bi5mYW55aShmY2hpbGQuaTE4bktleSkgOiBmY2hpbGQudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICA8L3AtdGFiPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvcC10YWJsaXN0PlxyXG4gICAgICAgICAgICA8L3AtdGFicz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAZm9yIChncmlkIG9mIGdyaWRMaXN0KCk7IGxldCBpID0gJGluZGV4O3RyYWNrIGdyaWQpIHtcclxuICAgICAgICAgIDxjdXN0b20tZ3JpZFxyXG4gICAgICAgICAgICAjY3VzdG9tR3JpZFxyXG4gICAgICAgICAgICBbaGlkZGVuXT1cImluZGV4VmFsdWUgIT1pIFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cImdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV18fCBbXVwiXHJcbiAgICAgICAgICAgIFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUVtaXQpPVwiZGVsUm93cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2FkZFR5cGVdPVwiZ3JpZC5zdWJUYWJsZVNvdXJjZVwiXHJcbiAgICAgICAgICAgIChhZGRFbWl0KT1cImRhdGFTb3VyY2VTaG93KClcIlxyXG4gICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZC5ncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0RGF0YV09XCJncmlkLnNlbGVjdERhdGFcIj5cclxuICAgICAgICAgIDwvY3VzdG9tLWdyaWQ+XHJcbiAgICAgICAgfSAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZDpiYXNpcy0xLzMgYmFzaXMtZnVsbCBoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgIDxjdXN0b20tbG9nIFtsb2dzXT1cImdldFBybS5kYXRhPy5sb2c/P1tdXCI+PC9jdXN0b20tbG9nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cC10b2FzdCAvPlxyXG48cm93LXNlbGVjdG9yXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRbc2VhcmNoUHJtXT1cImRpYWxvZ1NlYXJjaFBybVwiXHJcblx0W2dyaWRPcHRpb25zXT1cInNlbGVjdE9wdGlvbnNcIlxyXG5cdChvbk9rKT1cIm9uT2soJGV2ZW50KVwiPlxyXG48L3Jvdy1zZWxlY3Rvcj4iXX0=
@@ -31,10 +31,10 @@ export class PageGridListComponent extends AmComponent {
31
31
  });
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageGridListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: PageGridListComponent, isStandalone: true, selector: "app-page-grid-list", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName??''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"], dependencies: [{ kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: PagerComponent, selector: "custom-pager" }, { kind: "component", type: HeadComponent, selector: "custom-head", inputs: ["gridOptions", "grid", "actions"] }, { kind: "component", type: ImportComponent, selector: "app-import", inputs: ["visible", "fileName", "funcName", "orgField", "modelName"], outputs: ["visibleChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: PageGridListComponent, isStandalone: true, selector: "app-page-grid-list", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"params().addVisible\"\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"], dependencies: [{ kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: PagerComponent, selector: "custom-pager" }, { kind: "component", type: HeadComponent, selector: "custom-head", inputs: ["gridOptions", "grid", "actions"] }, { kind: "component", type: ImportComponent, selector: "app-import", inputs: ["visible", "fileName", "funcName", "orgField", "modelName"], outputs: ["visibleChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageGridListComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'app-page-grid-list', standalone: true, imports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName??''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"] }]
38
+ args: [{ selector: 'app-page-grid-list', standalone: true, imports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"params().addVisible\"\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"] }]
39
39
  }], ctorParameters: () => [] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ncmlkLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9wYWdlLWdyaWQtbGlzdC9wYWdlLWdyaWQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZ3JpZC1saXN0L3BhZ2UtZ3JpZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxHQUFnQixNQUFNLDZCQUE2QixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBVTlFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBS3JEO1FBQ0MsS0FBSyxFQUFFLENBQUM7UUFMVCxXQUFNLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDdEIsWUFBTyxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ25DLGNBQVMsR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUc3QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsU0FBVSxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUTtnQkFDaEMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxjQUFjO2dCQUN6QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSTthQUNYLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBeEJXLHFCQUFxQjttR0FBckIscUJBQXFCLHduQkNoQmxDLGcyQ0FzQ0Esd0xEM0JXLGFBQWEscU9BQUUsb0JBQW9CLGtNQUFFLGNBQWMseURBQUUsYUFBYSxvR0FBRSxlQUFlOzs0RkFLakYscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsaUJBRy9FLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5wdXQsIGVmZmVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgIEltcG9ydE9wdGlvbnMsIEltcG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2ltcG9ydC9pbXBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZENvbXBvbmVudCB9IGZyb20gJy4uL2hlYWQvaGVhZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50LCBHcmlkT3B0aW9ucywgfSBmcm9tICcuLi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQnXHJcbmltcG9ydCB7IEFtQ29tcG9uZW50fSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnXHJcbmltcG9ydCB7IFBhZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC9wYWdlci9wYWdlci5jb21wb25lbnQnXHJcbmltcG9ydCB7IENydW1iQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3J1bWItYWN0aW9uL2NydW1iLWFjdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcGFnZS1ncmlkLWxpc3QnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0dyaWRDb21wb25lbnQsIENydW1iQWN0aW9uQ29tcG9uZW50LCBQYWdlckNvbXBvbmVudCwgSGVhZENvbXBvbmVudCwgSW1wb3J0Q29tcG9uZW50XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGFnZS1ncmlkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9wYWdlLWdyaWQtbGlzdC5jb21wb25lbnQuc2NzcycsXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VHcmlkTGlzdENvbXBvbmVudCBleHRlbmRzIEFtQ29tcG9uZW50IHtcclxuXHRwYXJhbXMgPSBpbnB1dDxhbnk+KCk7XHJcblx0YWN0aW9ucyA9IGlucHV0PGFueVtdPihbXSk7XHJcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oKTtcclxuXHRhdXRoTGV2ZWwgPSBpbnB1dDxudW1iZXI+KC0xKTtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0XHR0aGlzLmV4cG9ydFBybSA9IHt9O1xyXG5cdFx0dGhpcy5pbXBvcnRQcm0gPSB7fTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ3JpZE9wdGlvbnMoKSEubW9kZWxOYW1lITtcclxuXHRcdFx0aWYgKCF0aGlzLmdyaWRPcHRpb25zKCkhLmNhY2hlQmxvY2tTaXplKSB7XHJcblx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucygpIS5jYWNoZUJsb2NrU2l6ZSA9IDUwO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuc2VhcmNoUHJtID0ge1xyXG5cdFx0XHRcdG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsXHJcblx0XHRcdFx0b3JnRmllbGQ6IHRoaXMucGFyYW1zKCkub3JnRmllbGQsXHJcblx0XHRcdFx0b2Zmc2V0OiAwLFxyXG5cdFx0XHRcdGxpbWl0OiB0aGlzLmdyaWRPcHRpb25zKCkhLmNhY2hlQmxvY2tTaXplLFxyXG5cdFx0XHRcdHNvcnRzOiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGlzQXNjOiBmYWxzZSB9XSxcclxuXHRcdFx0XHRjb3VudDogdHJ1ZSxcclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XHJcblx0PGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBweS0xIHB4LTEgYmctd2hpdGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJsZzpiYXNpcy0xLzYgbWQ6YmFzaXMtMS80IGJhc2lzLTEvMiBmbGV4IGp1c3RpZnktc3RhcnQgb3JkZXItMVwiPlxyXG5cdFx0XHQ8YXBwLWNydW1iLWFjdGlvblxyXG5cdFx0XHRcdFtuZXdVcmxdPVwicGFyYW1zKCkubmV3VXJsXCJcclxuXHRcdFx0XHRbb25FeHBvcnRdPVwicGFyYW1zKCkub25FeHBvcnRcIlxyXG5cdFx0XHRcdFtpc0xpc3RdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuXHRcdFx0XHRbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCI+XHJcblx0XHRcdDwvYXBwLWNydW1iLWFjdGlvbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImxnOmJhc2lzLTQvNiBtZDpiYXNpcy0xLzIgYmFzaXMtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtZDpvcmRlci0yIG9yZGVyLWxhc3RcIj5cclxuXHRcdFx0PGN1c3RvbS1oZWFkXHJcblx0XHRcdFx0Y2xhc3M9XCJtYXgtbGc6bWluLXctZnVsbFwiXHJcblx0XHRcdFx0W2FjdGlvbnNdPVwiYWN0aW9ucygpXCJcclxuXHRcdFx0XHRbZ3JpZF09XCJncmlkXCJcclxuXHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLWhlYWQ+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJsZzpiYXNpcy0xLzYgbWQ6YmFzaXMtMS80IGJhc2lzLTEvMiBmbGV4IGp1c3RpZnktZW5kIG9yZGVyLTNcIj5cclxuXHRcdFx0PGN1c3RvbS1wYWdlcj48L2N1c3RvbS1wYWdlcj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cclxuXHRcdDxjdXN0b20tZ3JpZFxyXG5cdFx0XHQjZ3JpZFxyXG5cdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcblx0XHRcdFsoc2VhcmNoUHJtKV09XCJzZWFyY2hQcm1cIlxyXG5cdFx0XHRbc2hvd0FjdF09XCJmYWxzZVwiXHJcblx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpIVwiPlxyXG5cdFx0PC9jdXN0b20tZ3JpZD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtaW1wb3J0XHJcblx0W2ZpbGVOYW1lXT1cInBhcmFtcygpPy5pbXBvcnRGaWxlTmFtZVwiXHJcblx0W2Z1bmNOYW1lXT1cInBhcmFtcygpPy5pbXBvcnRGdW5jTmFtZVwiXHJcblx0W29yZ0ZpZWxkXT1cInBhcmFtcygpPy5pbXBvcnRPcmdGaWVsZFwiXHJcblx0W21vZGVsTmFtZV09XCJncmlkT3B0aW9ucygpIS5tb2RlbE5hbWU/PycnXCI+XHJcbjwvYXBwLWltcG9ydD5cclxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ncmlkLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9wYWdlLWdyaWQtbGlzdC9wYWdlLWdyaWQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZ3JpZC1saXN0L3BhZ2UtZ3JpZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxHQUFnQixNQUFNLDZCQUE2QixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBVTlFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBS3JEO1FBQ0MsS0FBSyxFQUFFLENBQUM7UUFMVCxXQUFNLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDdEIsWUFBTyxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUMzQixnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ25DLGNBQVMsR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUc3QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsU0FBVSxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUTtnQkFDaEMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxjQUFjO2dCQUN6QyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSTthQUNYLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBeEJXLHFCQUFxQjttR0FBckIscUJBQXFCLHduQkNoQmxDLGs1Q0F1Q0Esd0xENUJXLGFBQWEscU9BQUUsb0JBQW9CLGtNQUFFLGNBQWMseURBQUUsYUFBYSxvR0FBRSxlQUFlOzs0RkFLakYscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsaUJBRy9FLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5wdXQsIGVmZmVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgIEltcG9ydE9wdGlvbnMsIEltcG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2ltcG9ydC9pbXBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZENvbXBvbmVudCB9IGZyb20gJy4uL2hlYWQvaGVhZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50LCBHcmlkT3B0aW9ucywgfSBmcm9tICcuLi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQnXHJcbmltcG9ydCB7IEFtQ29tcG9uZW50fSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnXHJcbmltcG9ydCB7IFBhZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC9wYWdlci9wYWdlci5jb21wb25lbnQnXHJcbmltcG9ydCB7IENydW1iQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3J1bWItYWN0aW9uL2NydW1iLWFjdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcGFnZS1ncmlkLWxpc3QnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0dyaWRDb21wb25lbnQsIENydW1iQWN0aW9uQ29tcG9uZW50LCBQYWdlckNvbXBvbmVudCwgSGVhZENvbXBvbmVudCwgSW1wb3J0Q29tcG9uZW50XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGFnZS1ncmlkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9wYWdlLWdyaWQtbGlzdC5jb21wb25lbnQuc2NzcycsXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VHcmlkTGlzdENvbXBvbmVudCBleHRlbmRzIEFtQ29tcG9uZW50IHtcclxuXHRwYXJhbXMgPSBpbnB1dDxhbnk+KCk7XHJcblx0YWN0aW9ucyA9IGlucHV0PGFueVtdPihbXSk7XHJcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oKTtcclxuXHRhdXRoTGV2ZWwgPSBpbnB1dDxudW1iZXI+KC0xKTtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0XHR0aGlzLmV4cG9ydFBybSA9IHt9O1xyXG5cdFx0dGhpcy5pbXBvcnRQcm0gPSB7fTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ3JpZE9wdGlvbnMoKSEubW9kZWxOYW1lITtcclxuXHRcdFx0aWYgKCF0aGlzLmdyaWRPcHRpb25zKCkhLmNhY2hlQmxvY2tTaXplKSB7XHJcblx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucygpIS5jYWNoZUJsb2NrU2l6ZSA9IDUwO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuc2VhcmNoUHJtID0ge1xyXG5cdFx0XHRcdG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsXHJcblx0XHRcdFx0b3JnRmllbGQ6IHRoaXMucGFyYW1zKCkub3JnRmllbGQsXHJcblx0XHRcdFx0b2Zmc2V0OiAwLFxyXG5cdFx0XHRcdGxpbWl0OiB0aGlzLmdyaWRPcHRpb25zKCkhLmNhY2hlQmxvY2tTaXplLFxyXG5cdFx0XHRcdHNvcnRzOiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGlzQXNjOiBmYWxzZSB9XSxcclxuXHRcdFx0XHRjb3VudDogdHJ1ZSxcclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XHJcblx0PGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBweS0xIHB4LTEgYmctd2hpdGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJsZzpiYXNpcy0xLzYgbWQ6YmFzaXMtMS80IGJhc2lzLTEvMiBmbGV4IGp1c3RpZnktc3RhcnQgb3JkZXItMVwiPlxyXG5cdFx0XHQ8YXBwLWNydW1iLWFjdGlvblxyXG5cdFx0XHRcdFthZGRWaXNpYmxlXT1cInBhcmFtcygpLmFkZFZpc2libGVcIlxyXG5cdFx0XHRcdFtuZXdVcmxdPVwicGFyYW1zKCkubmV3VXJsXCJcclxuXHRcdFx0XHRbb25FeHBvcnRdPVwicGFyYW1zKCkub25FeHBvcnRcIlxyXG5cdFx0XHRcdFtpc0xpc3RdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2lzU2hvd0NvZ109XCJ0cnVlXCJcclxuXHRcdFx0XHRbYXV0aExldmVsXT1cImF1dGhMZXZlbCgpXCI+XHJcblx0XHRcdDwvYXBwLWNydW1iLWFjdGlvbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImxnOmJhc2lzLTQvNiBtZDpiYXNpcy0xLzIgYmFzaXMtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtZDpvcmRlci0yIG9yZGVyLWxhc3RcIj5cclxuXHRcdFx0PGN1c3RvbS1oZWFkXHJcblx0XHRcdFx0Y2xhc3M9XCJtYXgtbGc6bWluLXctZnVsbFwiXHJcblx0XHRcdFx0W2FjdGlvbnNdPVwiYWN0aW9ucygpXCJcclxuXHRcdFx0XHRbZ3JpZF09XCJncmlkXCJcclxuXHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLWhlYWQ+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJsZzpiYXNpcy0xLzYgbWQ6YmFzaXMtMS80IGJhc2lzLTEvMiBmbGV4IGp1c3RpZnktZW5kIG9yZGVyLTNcIj5cclxuXHRcdFx0PGN1c3RvbS1wYWdlcj48L2N1c3RvbS1wYWdlcj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cclxuXHRcdDxjdXN0b20tZ3JpZFxyXG5cdFx0XHQjZ3JpZFxyXG5cdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXHJcblx0XHRcdFsoc2VhcmNoUHJtKV09XCJzZWFyY2hQcm1cIlxyXG5cdFx0XHRbc2hvd0FjdF09XCJmYWxzZVwiXHJcblx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpIVwiPlxyXG5cdFx0PC9jdXN0b20tZ3JpZD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtaW1wb3J0XHJcblx0W2ZpbGVOYW1lXT1cInBhcmFtcygpPy5pbXBvcnRGaWxlTmFtZVwiXHJcblx0W2Z1bmNOYW1lXT1cInBhcmFtcygpPy5pbXBvcnRGdW5jTmFtZVwiXHJcblx0W29yZ0ZpZWxkXT1cInBhcmFtcygpPy5pbXBvcnRPcmdGaWVsZFwiXHJcblx0W21vZGVsTmFtZV09XCJncmlkT3B0aW9ucygpIS5tb2RlbE5hbWUgPz8gJydcIj5cclxuPC9hcHAtaW1wb3J0PlxyXG4iXX0=
@@ -6323,7 +6323,7 @@ class PageFormComponent extends AmComponent {
6323
6323
  });
6324
6324
  }
6325
6325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6326
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.TabList, selector: "p-tablist" }, { kind: "component", type: i3$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmDialogModule }] }); }
6326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "customGrid", first: true, predicate: ["customGrid"], descendants: true }, { propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["steps", "current", "authLevel"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.TabList, selector: "p-tablist" }, { kind: "component", type: i3$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ConfirmDialogModule }] }); }
6327
6327
  }
6328
6328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
6329
6329
  type: Component,
@@ -6340,7 +6340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
6340
6340
  RowSelectorComponent,
6341
6341
  TranslatePipe,
6342
6342
  ConfirmDialogModule
6343
- ], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
6343
+ ], providers: [], template: "<div class=\"overflow-hidden\">\r\n <div class=\"flex items-center justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n <app-crumb-action\r\n [addVisible]=\"addVisible()\"\r\n [newUrl]=\"newUrl\"\r\n [isShowCog]=\"true\"\r\n [outlined]=\"true\"\r\n [authLevel]=\"authLevel()\"\r\n (saveEvent)=\"submitForm()\">\r\n </app-crumb-action>\r\n <div class=\"hrefBtnList\">\r\n @if(id){\r\n @for(btn of hrefBtnList();track btn){\r\n <p-button \r\n [variant]=\"btn?.variant\" \r\n [severity]=\"btn?.severity\" \r\n class=\"mr-[6px]\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{btn.i18nKey? i18n.fanyi(btn.i18nKey) : btn.label}}\"\r\n (click)=\"goRun(btn)\"\r\n >\r\n </p-button>\r\n }\r\n }\r\n \r\n </div>\r\n <div></div>\r\n \r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"px-2 flex flex-wrap items-center md:basis-2/3 basis-full\">\r\n <div class=\"md:basis-1/3 py-1 basis-full flex items-center gap-2 flex-row order-1\">\r\n @for (btn of actionList();let i = $index; track btn) {\r\n <p-button\r\n [variant]=\"btn?.variant\"\r\n [severity]=\"btn?.severity\"\r\n class=\"mr-[4px]\"\r\n size=\"small\"\r\n [icon]=\"btn?.icon\"\r\n label=\"{{ btn.i18nKey ? (btn.i18nKey | translate) : btn.label }}\"\r\n (click)=\"authClick(btn)\"\r\n [disabled]=\"btn.btnDisabled ? btn.btnDisabled(getPrm.data) : false\"\r\n >\r\n </p-button>\r\n }\r\n </div>\r\n \r\n <div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first\">\r\n <custom-steps\r\n [steps]=\"statusSteps()\"\r\n [current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n [authLevel]=\"authLevel()\"\r\n (change)=\"statusChange($event)\">\r\n </custom-steps>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main flex flex-wrap overflow-y-hidden\">\r\n <div class=\"md:basis-2/3 basis-full h-full overflow-y-auto\">\r\n <div class=\"bg-white mx-2 form-panel\">\r\n <div class=\"p-2 flex-1\">\r\n <form\r\n [formGroup]=\"form().form!\">\r\n <custom-form\r\n #cForm\r\n [options]=\"formOptions\"\r\n [upsert]=\"upsertPrm\"\r\n [model]=\"getPrm.data??{}\"></custom-form>\r\n </form>\r\n </div>\r\n @if(gridList() && gridList().length > 1){\r\n <div class=\"relative mb-2\">\r\n <p-tabs [(value)]=\"indexValue\">\r\n <p-tablist>\r\n @for (fchild of gridList();let i = $index; track fchild) {\r\n <p-tab [value]=\"i\">\r\n {{fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title}}\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n </div>\r\n }\r\n @for (grid of gridList(); let i = $index;track grid) {\r\n <custom-grid\r\n #customGrid\r\n [hidden]=\"indexValue !=i \"\r\n [rowData]=\"getPrm.data?.[grid.subDataKey!]|| []\"\r\n [upsert]=\"upsertPrm\"\r\n (deleteEmit)=\"delRows($event)\"\r\n [addType]=\"grid.subTableSource\"\r\n (addEmit)=\"dataSourceShow()\"\r\n [gridOptions]=\"grid.gridOptions\"\r\n [authLevel]=\"authLevel()\"\r\n [selectData]=\"grid.selectData\">\r\n </custom-grid>\r\n } \r\n </div>\r\n </div>\r\n <div class=\"md:basis-1/3 basis-full h-full overflow-y-auto\">\r\n <custom-log [logs]=\"getPrm.data?.log??[]\"></custom-log>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast />\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t(onOk)=\"onOk($event)\">\r\n</row-selector>", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 140px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}.form-panel{border:solid 1px #dbdbdb}\n"] }]
6344
6344
  }], ctorParameters: () => [], propDecorators: { customGrid: [{
6345
6345
  type: ViewChild,
6346
6346
  args: ['customGrid']
@@ -6389,11 +6389,11 @@ class PageGridListComponent extends AmComponent {
6389
6389
  });
6390
6390
  }
6391
6391
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageGridListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6392
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: PageGridListComponent, isStandalone: true, selector: "app-page-grid-list", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName??''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"], dependencies: [{ kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: PagerComponent, selector: "custom-pager" }, { kind: "component", type: HeadComponent, selector: "custom-head", inputs: ["gridOptions", "grid", "actions"] }, { kind: "component", type: ImportComponent, selector: "app-import", inputs: ["visible", "fileName", "funcName", "orgField", "modelName"], outputs: ["visibleChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
6392
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: PageGridListComponent, isStandalone: true, selector: "app-page-grid-list", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"params().addVisible\"\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"], dependencies: [{ kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel"], outputs: ["searchPrmChange", "deleteEmit", "addEmit"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "onExport", "outlined", "isList", "authLevel"], outputs: ["saveEvent", "cancelEvent"] }, { kind: "component", type: PagerComponent, selector: "custom-pager" }, { kind: "component", type: HeadComponent, selector: "custom-head", inputs: ["gridOptions", "grid", "actions"] }, { kind: "component", type: ImportComponent, selector: "app-import", inputs: ["visible", "fileName", "funcName", "orgField", "modelName"], outputs: ["visibleChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
6393
6393
  }
6394
6394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageGridListComponent, decorators: [{
6395
6395
  type: Component,
6396
- args: [{ selector: 'app-page-grid-list', standalone: true, imports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName??''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"] }]
6396
+ args: [{ selector: 'app-page-grid-list', standalone: true, imports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"params().addVisible\"\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"grid\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#grid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[(searchPrm)]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\r\n</app-import>\r\n", styles: [".ms-grid{background-color:#efefef}.ms-content{border-top:solid 1px #dbdbdb;background-color:#f9fafb}.mode-hide{display:none}\n"] }]
6397
6397
  }], ctorParameters: () => [] });
6398
6398
 
6399
6399
  const presets = {