@wavemaker/app-ng-runtime 12.0.0-next.44004 → 12.0.0-next.45001
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.
- app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
- app-ng-runtime/build-task/bundles/index.umd.js +477 -404
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +10 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +3 -2
- app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +14 -2
- app-ng-runtime/build-task/esm2022/public_api.mjs +4 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +479 -405
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/public_api.d.ts +3 -0
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +275 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +20 -0
- app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +19 -0
- app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +11 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +73 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +9 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +70 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +68 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +39 -0
- app-ng-runtime/components/advanced/custom/esm2022/index.mjs +5 -0
- app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +5 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +256 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -0
- app-ng-runtime/components/advanced/custom/index.d.ts +5 -0
- app-ng-runtime/components/advanced/custom/package.json +23 -0
- app-ng-runtime/components/advanced/custom/public_api.d.ts +4 -0
- app-ng-runtime/components/base/bundles/index.umd.js +65 -9
- app-ng-runtime/components/base/components.module.d.ts +12 -11
- app-ng-runtime/components/base/esm2022/components.module.mjs +5 -1
- app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +28 -10
- app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +39 -0
- app-ng-runtime/components/base/fesm2022/index.mjs +65 -10
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/public_api.d.ts +1 -0
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +9 -3
- app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +5 -4
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +6 -5
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +5 -4
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +3 -2
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +4 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -3
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +5 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +46 -53
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -3
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +44 -53
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +47 -54
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/select/select.component.d.ts +1 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +19 -7
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +9 -3
- app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +8 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +19 -7
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +10 -0
- app-ng-runtime/core/enums/enums.d.ts +2 -1
- app-ng-runtime/core/esm2022/enums/enums.mjs +2 -1
- app-ng-runtime/core/esm2022/types/types.mjs +4 -1
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +6 -1
- app-ng-runtime/core/fesm2022/index.mjs +10 -1
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/types/types.d.ts +5 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +254 -4
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +71 -0
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +253 -0
- app-ng-runtime/runtime/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +6 -1
- app-ng-runtime/runtime/base/esm2022/types/types.mjs +2 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs +251 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/public_api.d.ts +1 -0
- app-ng-runtime/runtime/base/runtime-base.module.d.ts +9 -8
- app-ng-runtime/runtime/base/types/types.d.ts +2 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +26 -9
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +5 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +22 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +25 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +1 -0
- app-ng-runtime/transpiler/bundles/index.umd.js +5 -0
- app-ng-runtime/transpiler/esm2022/build.mjs +4 -1
- app-ng-runtime/transpiler/esm2022/imports.mjs +3 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs +5 -0
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
|
@@ -3,6 +3,7 @@ export * from './services/app.manager.service';
|
|
|
3
3
|
export * from './services/prefab-manager.service';
|
|
4
4
|
export * from './components/base-page.component';
|
|
5
5
|
export * from './components/base-partial.component';
|
|
6
|
+
export * from './components/base-custom-widget.component';
|
|
6
7
|
export * from './components/base-prefab.component';
|
|
7
8
|
export * from './components/base-layout.component';
|
|
8
9
|
export * from './components/base-spa-page.component';
|
|
@@ -75,13 +75,14 @@ import * as i68 from "@wm/components/navigation/popover";
|
|
|
75
75
|
import * as i69 from "@wm/components/advanced/carousel";
|
|
76
76
|
import * as i70 from "@wm/components/advanced/login";
|
|
77
77
|
import * as i71 from "@wm/components/advanced/marquee";
|
|
78
|
-
import * as i72 from "@wm/components/
|
|
79
|
-
import * as i73 from "@wm/components/page
|
|
80
|
-
import * as i74 from "@wm/components/page/
|
|
81
|
-
import * as i75 from "@wm/components/page/
|
|
82
|
-
import * as i76 from "@wm/components/page/
|
|
83
|
-
import * as i77 from "@wm/components/page/
|
|
84
|
-
import * as i78 from "@wm/components/
|
|
78
|
+
import * as i72 from "@wm/components/advanced/custom";
|
|
79
|
+
import * as i73 from "@wm/components/page";
|
|
80
|
+
import * as i74 from "@wm/components/page/footer";
|
|
81
|
+
import * as i75 from "@wm/components/page/header";
|
|
82
|
+
import * as i76 from "@wm/components/page/left-panel";
|
|
83
|
+
import * as i77 from "@wm/components/page/right-panel";
|
|
84
|
+
import * as i78 from "@wm/components/page/top-nav";
|
|
85
|
+
import * as i79 from "@wm/components/prefab";
|
|
85
86
|
export declare function getSettingProvider(key: string, defaultValue: any): {
|
|
86
87
|
provide: string;
|
|
87
88
|
useValue: any;
|
|
@@ -95,7 +96,7 @@ export declare class RuntimeBaseModule {
|
|
|
95
96
|
constructor(mobileRuntimeModule: MobileRuntimeModule, app: App, viewport: Viewport);
|
|
96
97
|
private getDeviceDetails;
|
|
97
98
|
static ɵfac: i0.ɵɵFactoryDeclaration<RuntimeBaseModule, never>;
|
|
98
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<RuntimeBaseModule, [typeof i1.AccessrolesDirective, typeof i2.AppSpinnerComponent, typeof i3.CustomToasterComponent, typeof i4.PrefabDirective, typeof i5.AppComponent, typeof i6.PrefabPreviewComponent, typeof i7.EmptyPageComponent], [typeof i8.CommonModule, typeof i9.RouterModule, typeof i10.HttpClientModule, typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.ToastrModule, typeof i13.WmComponentsModule, typeof i14.MobileRuntimeModule, typeof i15.CoreModule, typeof i16.SecurityModule, typeof i17.OAuthModule, typeof i18.VariablesModule, typeof i19.HttpServiceModule, typeof i20.ConfirmDialogModule, typeof i21.DesignDialogModule, typeof i22.DialogModule, typeof i23.BsDatepickerModule, typeof i24.TimepickerModule, typeof i25.BsDropdownModule, typeof i26.PaginationModule, typeof i27.TypeaheadModule, typeof i28.ProgressbarModule, typeof i29.CarouselModule, typeof i30.PopoverModule, typeof i31.NgCircleProgressModule, typeof i32.TooltipModule, typeof i33.BasicModule, typeof i34.ProgressModule, typeof i35.RichTextEditorModule, typeof i36.SearchModule, typeof i37.TreeModule, typeof i38.CalendarModule, typeof i39.ChipsModule, typeof i40.ColorPickerModule, typeof i41.CurrencyModule, typeof i42.EpochModule, typeof i43.FileUploadModule, typeof i44.InputModule, typeof i45.RatingModule, typeof i46.SliderModule, typeof i47.CardModule, typeof i48.FormModule, typeof i49.ListModule, typeof i50.LiveTableModule, typeof i51.PaginationModule, typeof i52.TableModule, typeof i53.ChartModule, typeof i54.AccordionModule, typeof i55.LinearLayoutModule, typeof i56.LayoutGridModule, typeof i57.PanelModule, typeof i58.TabsModule, typeof i59.TileModule, typeof i60.WizardModule, typeof i61.AlertDialogModule, typeof i62.IframeDialogModule, typeof i63.LoginDialogModule, typeof i64.PartialDialogModule, typeof i65.BreadcrumbModule, typeof i66.MenuModule, typeof i67.NavbarModule, typeof i68.PopoverModule, typeof i69.CarouselModule, typeof i70.LoginModule, typeof i71.MarqueeModule, typeof i72.
|
|
99
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RuntimeBaseModule, [typeof i1.AccessrolesDirective, typeof i2.AppSpinnerComponent, typeof i3.CustomToasterComponent, typeof i4.PrefabDirective, typeof i5.AppComponent, typeof i6.PrefabPreviewComponent, typeof i7.EmptyPageComponent], [typeof i8.CommonModule, typeof i9.RouterModule, typeof i10.HttpClientModule, typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.ToastrModule, typeof i13.WmComponentsModule, typeof i14.MobileRuntimeModule, typeof i15.CoreModule, typeof i16.SecurityModule, typeof i17.OAuthModule, typeof i18.VariablesModule, typeof i19.HttpServiceModule, typeof i20.ConfirmDialogModule, typeof i21.DesignDialogModule, typeof i22.DialogModule, typeof i23.BsDatepickerModule, typeof i24.TimepickerModule, typeof i25.BsDropdownModule, typeof i26.PaginationModule, typeof i27.TypeaheadModule, typeof i28.ProgressbarModule, typeof i29.CarouselModule, typeof i30.PopoverModule, typeof i31.NgCircleProgressModule, typeof i32.TooltipModule, typeof i33.BasicModule, typeof i34.ProgressModule, typeof i35.RichTextEditorModule, typeof i36.SearchModule, typeof i37.TreeModule, typeof i38.CalendarModule, typeof i39.ChipsModule, typeof i40.ColorPickerModule, typeof i41.CurrencyModule, typeof i42.EpochModule, typeof i43.FileUploadModule, typeof i44.InputModule, typeof i45.RatingModule, typeof i46.SliderModule, typeof i47.CardModule, typeof i48.FormModule, typeof i49.ListModule, typeof i50.LiveTableModule, typeof i51.PaginationModule, typeof i52.TableModule, typeof i53.ChartModule, typeof i54.AccordionModule, typeof i55.LinearLayoutModule, typeof i56.LayoutGridModule, typeof i57.PanelModule, typeof i58.TabsModule, typeof i59.TileModule, typeof i60.WizardModule, typeof i61.AlertDialogModule, typeof i62.IframeDialogModule, typeof i63.LoginDialogModule, typeof i64.PartialDialogModule, typeof i65.BreadcrumbModule, typeof i66.MenuModule, typeof i67.NavbarModule, typeof i68.PopoverModule, typeof i69.CarouselModule, typeof i70.LoginModule, typeof i71.MarqueeModule, typeof i72.CustomModule, typeof i73.PageModule, typeof i74.FooterModule, typeof i75.HeaderModule, typeof i76.LeftPanelModule, typeof i77.RightPanelModule, typeof i78.TopNavModule, typeof i79.PrefabModule], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i1.AccessrolesDirective, typeof i2.AppSpinnerComponent, typeof i3.CustomToasterComponent, typeof i4.PrefabDirective, typeof i5.AppComponent, typeof i6.PrefabPreviewComponent, typeof i7.EmptyPageComponent, typeof i8.CommonModule, typeof i9.RouterModule, typeof i10.HttpClientModule, typeof i12.ToastrModule, typeof i13.WmComponentsModule, typeof i14.MobileRuntimeModule, typeof i15.CoreModule, typeof i16.SecurityModule, typeof i17.OAuthModule, typeof i18.VariablesModule, typeof i19.HttpServiceModule, typeof i20.ConfirmDialogModule, typeof i21.DesignDialogModule, typeof i22.DialogModule, typeof i23.BsDatepickerModule, typeof i24.TimepickerModule, typeof i25.BsDropdownModule, typeof i26.PaginationModule, typeof i27.TypeaheadModule, typeof i28.ProgressbarModule, typeof i29.CarouselModule, typeof i30.PopoverModule, typeof i31.NgCircleProgressModule, typeof i32.TooltipModule, typeof i33.BasicModule, typeof i34.ProgressModule, typeof i35.RichTextEditorModule, typeof i36.SearchModule, typeof i37.TreeModule, typeof i38.CalendarModule, typeof i39.ChipsModule, typeof i40.ColorPickerModule, typeof i41.CurrencyModule, typeof i42.EpochModule, typeof i43.FileUploadModule, typeof i44.InputModule, typeof i45.RatingModule, typeof i46.SliderModule, typeof i47.CardModule, typeof i48.FormModule, typeof i49.ListModule, typeof i50.LiveTableModule, typeof i51.PaginationModule, typeof i52.TableModule, typeof i53.ChartModule, typeof i54.AccordionModule, typeof i55.LinearLayoutModule, typeof i56.LayoutGridModule, typeof i57.PanelModule, typeof i58.TabsModule, typeof i59.TileModule, typeof i60.WizardModule, typeof i61.AlertDialogModule, typeof i62.IframeDialogModule, typeof i63.LoginDialogModule, typeof i64.PartialDialogModule, typeof i65.BreadcrumbModule, typeof i66.MenuModule, typeof i67.NavbarModule, typeof i68.PopoverModule, typeof i69.CarouselModule, typeof i70.LoginModule, typeof i71.MarqueeModule, typeof i72.CustomModule, typeof i73.PageModule, typeof i74.FooterModule, typeof i75.HeaderModule, typeof i76.LeftPanelModule, typeof i77.RightPanelModule, typeof i78.TopNavModule, typeof i79.PrefabModule]>;
|
|
99
100
|
static ɵinj: i0.ɵɵInjectorDeclaration<RuntimeBaseModule>;
|
|
100
101
|
}
|
|
101
102
|
export declare const WM_MODULES_FOR_ROOT: ModuleWithProviders<WmComponentsModule>[];
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare enum ComponentType {
|
|
2
2
|
PAGE = 0,
|
|
3
3
|
PREFAB = 1,
|
|
4
|
-
PARTIAL = 2
|
|
4
|
+
PARTIAL = 2,
|
|
5
|
+
WIDGET = 3
|
|
5
6
|
}
|
|
6
7
|
export declare abstract class ComponentRefProvider {
|
|
7
8
|
abstract getComponentFactoryRef(componentName: string, componentType: ComponentType): Promise<any>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser-dynamic'), require('tslib'), require('@angular/platform-browser'), require('@angular/common'), require('@angular/router'), require('@angular/common/http'), require('@angular/forms'), require('ngx-bootstrap/typeahead'), require('ngx-bootstrap/timepicker'), require('ngx-bootstrap/progressbar'), require('ngx-bootstrap/pagination'), require('ngx-bootstrap/modal'), require('ngx-bootstrap/tooltip'), require('ngx-bootstrap/datepicker'), require('ngx-bootstrap/dropdown'), require('ngx-bootstrap/popover'), require('ng-circle-progress'), require('ngx-toastr'), require('ngx-bootstrap/carousel'), require('@wm/core'), require('@wm/components/basic'), require('@wm/components/basic/progress'), require('@wm/components/basic/rich-text-editor'), require('@wm/components/basic/search'), require('@wm/components/basic/tree'), require('@wm/components/input'), require('@wm/components/input/calendar'), require('@wm/components/input/chips'), require('@wm/components/input/color-picker'), require('@wm/components/input/currency'), require('@wm/components/input/epoch'), require('@wm/components/input/file-upload'), require('@wm/components/input/rating'), require('@wm/components/input/slider'), require('@wm/mobile/runtime/dynamic'), require('@wm/components/data/card'), require('@wm/components/data/form'), require('@wm/components/data/list'), require('@wm/components/data/live-table'), require('@wm/components/data/pagination'), require('@wm/components/data/table'), require('@wm/components/chart'), require('@wm/components/containers/accordion'), require('@wm/components/containers/linear-layout'), require('@wm/components/containers/layout-grid'), require('@wm/components/containers/panel'), require('@wm/components/containers/tabs'), require('@wm/components/containers/tile'), require('@wm/components/containers/wizard'), require('@wm/components/dialogs/alert-dialog'), require('@wm/components/dialogs/iframe-dialog'), require('@wm/components/dialogs/login-dialog'), require('@wm/components/dialogs/partial-dialog'), require('@wm/components/navigation/breadcrumb'), require('@wm/components/navigation/menu'), require('@wm/components/navigation/navbar'), require('@wm/components/navigation/popover'), require('@wm/components/advanced/carousel'), require('@wm/components/advanced/login'), require('@wm/components/advanced/marquee'), require('@wm/components/page'), require('@wm/components/page/footer'), require('@wm/components/page/header'), require('@wm/components/page/left-panel'), require('@wm/components/page/right-panel'), require('@wm/components/page/top-nav'), require('@wm/components/prefab'), require('@wm/runtime/base'), require('@wm/variables'), require('@wm/security'), require('@wm/transpiler'), require('@angular/platform-browser/animations')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/platform-browser-dynamic', 'tslib', '@angular/platform-browser', '@angular/common', '@angular/router', '@angular/common/http', '@angular/forms', 'ngx-bootstrap/typeahead', 'ngx-bootstrap/timepicker', 'ngx-bootstrap/progressbar', 'ngx-bootstrap/pagination', 'ngx-bootstrap/modal', 'ngx-bootstrap/tooltip', 'ngx-bootstrap/datepicker', 'ngx-bootstrap/dropdown', 'ngx-bootstrap/popover', 'ng-circle-progress', 'ngx-toastr', 'ngx-bootstrap/carousel', '@wm/core', '@wm/components/basic', '@wm/components/basic/progress', '@wm/components/basic/rich-text-editor', '@wm/components/basic/search', '@wm/components/basic/tree', '@wm/components/input', '@wm/components/input/calendar', '@wm/components/input/chips', '@wm/components/input/color-picker', '@wm/components/input/currency', '@wm/components/input/epoch', '@wm/components/input/file-upload', '@wm/components/input/rating', '@wm/components/input/slider', '@wm/mobile/runtime/dynamic', '@wm/components/data/card', '@wm/components/data/form', '@wm/components/data/list', '@wm/components/data/live-table', '@wm/components/data/pagination', '@wm/components/data/table', '@wm/components/chart', '@wm/components/containers/accordion', '@wm/components/containers/linear-layout', '@wm/components/containers/layout-grid', '@wm/components/containers/panel', '@wm/components/containers/tabs', '@wm/components/containers/tile', '@wm/components/containers/wizard', '@wm/components/dialogs/alert-dialog', '@wm/components/dialogs/iframe-dialog', '@wm/components/dialogs/login-dialog', '@wm/components/dialogs/partial-dialog', '@wm/components/navigation/breadcrumb', '@wm/components/navigation/menu', '@wm/components/navigation/navbar', '@wm/components/navigation/popover', '@wm/components/advanced/carousel', '@wm/components/advanced/login', '@wm/components/advanced/marquee', '@wm/components/page', '@wm/components/page/footer', '@wm/components/page/header', '@wm/components/page/left-panel', '@wm/components/page/right-panel', '@wm/components/page/top-nav', '@wm/components/prefab', '@wm/runtime/base', '@wm/variables', '@wm/security', '@wm/transpiler', '@angular/platform-browser/animations'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global.ng.platformBrowserDynamic, global.tslib, global.ng.platformBrowser, global.ng.common, global.ng.router, global.ng.common.http, global.ng.forms, global.typeahead, global.timepicker, global.progressbar, global.pagination, global.modal, global.tooltip, global.datepicker, global.dropdown, global.popover, global.ngCircleProgress, global.ngxToastr, global.carousel, global.wm.core, global.wm.components.basic, global.wm.components.basic.progress, global.wm.components.basic.richtexteditor, global.wm.components.basic.search, global.wm.components.basic.tree, global.wm.components.input, global.wm.components.input.calendar, global.wm.components.input.chips, global.wm.components.input.colorpicker, global.wm.components.input.currency, global.wm.components.input.epoch, global.wm.components.input.fileupload, global.wm.components.input.rating, global.wm.components.input.slider, global.wm.mobile.runtime.dynamic, global.wm.components.data.card, global.wm.components.data.form, global.wm.components.data.list, global.wm.components.data.livetable, global.wm.components.data.pagination, global.wm.components.data.table, global.wm.components.chart, global.wm.components.containers.accordion, global.wm.components.containers.linearlayout, global.wm.components.containers.layoutgrid, global.wm.components.containers.panel, global.wm.components.containers.tabs, global.wm.components.containers.tile, global.wm.components.containers.wizard, global.wm.components.dialogs.alertdialog, global.wm.components.dialogs.iframedialog, global.wm.components.dialogs.logindialog, global.wm.components.dialogs.partialdialog, global.wm.components.navigation.breadcrumb, global.wm.components.navigation.menu, global.wm.components.navigation.navbar, global.wm.components.navigation.popover, global.wm.components.advanced.carousel, global.wm.components.advanced.login, global.wm.components.advanced.marquee, global.wm.components.page, global.wm.components.page.footer, global.wm.components.page.header, global.wm.components.page.leftpanel, global.wm.components.page.rightpanel, global.wm.components.page.topnav, global.wm.components.prefab, global.wm.runtime.base, global.wm.variables, global.wm.security, global.wm.transpiler, global.ng.platformBrowser.animations));
|
|
5
|
-
})(this, (function (exports, i0, platformBrowserDynamic, tslib, platformBrowser, common, i1, i1$1, forms, typeahead, timepicker, progressbar, pagination, modal, tooltip, datepicker, dropdown, popover, ngCircleProgress, ngxToastr, carousel, i5, basic, progress, richTextEditor, search, tree, input, calendar, chips, colorPicker, currency, epoch, fileUpload, rating, slider, dynamic, card, form, list, liveTable, pagination$1, table, chart, accordion, linearLayout, layoutGrid, panel, tabs, tile, wizard, alertDialog, iframeDialog, loginDialog, partialDialog, breadcrumb, menu, navbar, popover$1, carousel$1, login, marquee, page, footer, header, leftPanel, rightPanel, topNav, prefab, i4, i2, i3, transpiler, animations) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser-dynamic'), require('tslib'), require('@angular/platform-browser'), require('@angular/common'), require('@angular/router'), require('@angular/common/http'), require('@angular/forms'), require('ngx-bootstrap/typeahead'), require('ngx-bootstrap/timepicker'), require('ngx-bootstrap/progressbar'), require('ngx-bootstrap/pagination'), require('ngx-bootstrap/modal'), require('ngx-bootstrap/tooltip'), require('ngx-bootstrap/datepicker'), require('ngx-bootstrap/dropdown'), require('ngx-bootstrap/popover'), require('ng-circle-progress'), require('ngx-toastr'), require('ngx-bootstrap/carousel'), require('@wm/core'), require('@wm/components/basic'), require('@wm/components/basic/progress'), require('@wm/components/basic/rich-text-editor'), require('@wm/components/basic/search'), require('@wm/components/basic/tree'), require('@wm/components/input'), require('@wm/components/input/calendar'), require('@wm/components/input/chips'), require('@wm/components/input/color-picker'), require('@wm/components/input/currency'), require('@wm/components/input/epoch'), require('@wm/components/input/file-upload'), require('@wm/components/input/rating'), require('@wm/components/input/slider'), require('@wm/mobile/runtime/dynamic'), require('@wm/components/data/card'), require('@wm/components/data/form'), require('@wm/components/data/list'), require('@wm/components/data/live-table'), require('@wm/components/data/pagination'), require('@wm/components/data/table'), require('@wm/components/chart'), require('@wm/components/containers/accordion'), require('@wm/components/containers/linear-layout'), require('@wm/components/containers/layout-grid'), require('@wm/components/containers/panel'), require('@wm/components/containers/tabs'), require('@wm/components/containers/tile'), require('@wm/components/containers/wizard'), require('@wm/components/dialogs/alert-dialog'), require('@wm/components/dialogs/iframe-dialog'), require('@wm/components/dialogs/login-dialog'), require('@wm/components/dialogs/partial-dialog'), require('@wm/components/navigation/breadcrumb'), require('@wm/components/navigation/menu'), require('@wm/components/navigation/navbar'), require('@wm/components/navigation/popover'), require('@wm/components/advanced/carousel'), require('@wm/components/advanced/login'), require('@wm/components/advanced/marquee'), require('@wm/components/advanced/custom'), require('@wm/components/page'), require('@wm/components/page/footer'), require('@wm/components/page/header'), require('@wm/components/page/left-panel'), require('@wm/components/page/right-panel'), require('@wm/components/page/top-nav'), require('@wm/components/prefab'), require('@wm/runtime/base'), require('@wm/variables'), require('@wm/security'), require('@wm/transpiler'), require('@angular/platform-browser/animations')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/platform-browser-dynamic', 'tslib', '@angular/platform-browser', '@angular/common', '@angular/router', '@angular/common/http', '@angular/forms', 'ngx-bootstrap/typeahead', 'ngx-bootstrap/timepicker', 'ngx-bootstrap/progressbar', 'ngx-bootstrap/pagination', 'ngx-bootstrap/modal', 'ngx-bootstrap/tooltip', 'ngx-bootstrap/datepicker', 'ngx-bootstrap/dropdown', 'ngx-bootstrap/popover', 'ng-circle-progress', 'ngx-toastr', 'ngx-bootstrap/carousel', '@wm/core', '@wm/components/basic', '@wm/components/basic/progress', '@wm/components/basic/rich-text-editor', '@wm/components/basic/search', '@wm/components/basic/tree', '@wm/components/input', '@wm/components/input/calendar', '@wm/components/input/chips', '@wm/components/input/color-picker', '@wm/components/input/currency', '@wm/components/input/epoch', '@wm/components/input/file-upload', '@wm/components/input/rating', '@wm/components/input/slider', '@wm/mobile/runtime/dynamic', '@wm/components/data/card', '@wm/components/data/form', '@wm/components/data/list', '@wm/components/data/live-table', '@wm/components/data/pagination', '@wm/components/data/table', '@wm/components/chart', '@wm/components/containers/accordion', '@wm/components/containers/linear-layout', '@wm/components/containers/layout-grid', '@wm/components/containers/panel', '@wm/components/containers/tabs', '@wm/components/containers/tile', '@wm/components/containers/wizard', '@wm/components/dialogs/alert-dialog', '@wm/components/dialogs/iframe-dialog', '@wm/components/dialogs/login-dialog', '@wm/components/dialogs/partial-dialog', '@wm/components/navigation/breadcrumb', '@wm/components/navigation/menu', '@wm/components/navigation/navbar', '@wm/components/navigation/popover', '@wm/components/advanced/carousel', '@wm/components/advanced/login', '@wm/components/advanced/marquee', '@wm/components/advanced/custom', '@wm/components/page', '@wm/components/page/footer', '@wm/components/page/header', '@wm/components/page/left-panel', '@wm/components/page/right-panel', '@wm/components/page/top-nav', '@wm/components/prefab', '@wm/runtime/base', '@wm/variables', '@wm/security', '@wm/transpiler', '@angular/platform-browser/animations'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.runtime = global.wm.runtime || {}, global.wm.runtime.dynamic = {}), global.ng.core, global.ng.platformBrowserDynamic, global.tslib, global.ng.platformBrowser, global.ng.common, global.ng.router, global.ng.common.http, global.ng.forms, global.typeahead, global.timepicker, global.progressbar, global.pagination, global.modal, global.tooltip, global.datepicker, global.dropdown, global.popover, global.ngCircleProgress, global.ngxToastr, global.carousel, global.wm.core, global.wm.components.basic, global.wm.components.basic.progress, global.wm.components.basic.richtexteditor, global.wm.components.basic.search, global.wm.components.basic.tree, global.wm.components.input, global.wm.components.input.calendar, global.wm.components.input.chips, global.wm.components.input.colorpicker, global.wm.components.input.currency, global.wm.components.input.epoch, global.wm.components.input.fileupload, global.wm.components.input.rating, global.wm.components.input.slider, global.wm.mobile.runtime.dynamic, global.wm.components.data.card, global.wm.components.data.form, global.wm.components.data.list, global.wm.components.data.livetable, global.wm.components.data.pagination, global.wm.components.data.table, global.wm.components.chart, global.wm.components.containers.accordion, global.wm.components.containers.linearlayout, global.wm.components.containers.layoutgrid, global.wm.components.containers.panel, global.wm.components.containers.tabs, global.wm.components.containers.tile, global.wm.components.containers.wizard, global.wm.components.dialogs.alertdialog, global.wm.components.dialogs.iframedialog, global.wm.components.dialogs.logindialog, global.wm.components.dialogs.partialdialog, global.wm.components.navigation.breadcrumb, global.wm.components.navigation.menu, global.wm.components.navigation.navbar, global.wm.components.navigation.popover, global.wm.components.advanced.carousel, global.wm.components.advanced.login, global.wm.components.advanced.marquee, global.wm.components.advanced.custom, global.wm.components.page, global.wm.components.page.footer, global.wm.components.page.header, global.wm.components.page.leftpanel, global.wm.components.page.rightpanel, global.wm.components.page.topnav, global.wm.components.prefab, global.wm.runtime.base, global.wm.variables, global.wm.security, global.wm.transpiler, global.ng.platformBrowser.animations));
|
|
5
|
+
})(this, (function (exports, i0, platformBrowserDynamic, tslib, platformBrowser, common, i1, i1$1, forms, typeahead, timepicker, progressbar, pagination, modal, tooltip, datepicker, dropdown, popover, ngCircleProgress, ngxToastr, carousel, i5, basic, progress, richTextEditor, search, tree, input, calendar, chips, colorPicker, currency, epoch, fileUpload, rating, slider, dynamic, card, form, list, liveTable, pagination$1, table, chart, accordion, linearLayout, layoutGrid, panel, tabs, tile, wizard, alertDialog, iframeDialog, loginDialog, partialDialog, breadcrumb, menu, navbar, popover$1, carousel$1, login, marquee, custom, page, footer, header, leftPanel, rightPanel, topNav, prefab, i4, i2, i3, transpiler, animations) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
var n = Object.create(null);
|
|
@@ -237,6 +237,7 @@
|
|
|
237
237
|
componentFactoryRefCache.set(i4.ComponentType.PAGE, new Map());
|
|
238
238
|
componentFactoryRefCache.set(i4.ComponentType.PARTIAL, new Map());
|
|
239
239
|
componentFactoryRefCache.set(i4.ComponentType.PREFAB, new Map());
|
|
240
|
+
componentFactoryRefCache.set(i4.ComponentType.WIDGET, new Map());
|
|
240
241
|
const _decodeURIComponent = (str) => decodeURIComponent(str.replace(/\+/g, ' '));
|
|
241
242
|
const getFragmentUrl = (fragmentName, type, options) => {
|
|
242
243
|
if (type === i4.ComponentType.PAGE || type === i4.ComponentType.PARTIAL) {
|
|
@@ -245,6 +246,9 @@
|
|
|
245
246
|
else if (type === i4.ComponentType.PREFAB) {
|
|
246
247
|
return i4.getPrefabMinJsonUrl(fragmentName);
|
|
247
248
|
}
|
|
249
|
+
else if (type === i4.ComponentType.WIDGET) {
|
|
250
|
+
return `./custom-widgets/${fragmentName}/page.min.json`;
|
|
251
|
+
}
|
|
248
252
|
};
|
|
249
253
|
const scriptCache = new Map();
|
|
250
254
|
const execScript = (script, identifier, ctx, instance, app, utils) => {
|
|
@@ -294,6 +298,11 @@
|
|
|
294
298
|
selector = `app-prefab-${componentName}`;
|
|
295
299
|
context = 'Prefab';
|
|
296
300
|
break;
|
|
301
|
+
case i4.ComponentType.WIDGET:
|
|
302
|
+
BaseClass = i4.BaseCustomWidgetComponent;
|
|
303
|
+
selector = `app-custom-${componentName}`;
|
|
304
|
+
context = 'Widget';
|
|
305
|
+
break;
|
|
297
306
|
}
|
|
298
307
|
let DynamicComponent = class DynamicComponent extends BaseClass {
|
|
299
308
|
constructor(injector) {
|
|
@@ -311,6 +320,9 @@
|
|
|
311
320
|
case i4.ComponentType.PREFAB:
|
|
312
321
|
this.prefabName = componentName;
|
|
313
322
|
break;
|
|
323
|
+
case i4.ComponentType.WIDGET:
|
|
324
|
+
this.customWidgetName = componentName;
|
|
325
|
+
break;
|
|
314
326
|
}
|
|
315
327
|
super.init();
|
|
316
328
|
}
|
|
@@ -346,17 +358,18 @@
|
|
|
346
358
|
const url = getFragmentUrl(componentName, componentType, options);
|
|
347
359
|
const resource = fragmentCache.get(url);
|
|
348
360
|
if (resource) {
|
|
349
|
-
return
|
|
361
|
+
return resource;
|
|
350
362
|
}
|
|
351
|
-
|
|
352
|
-
.then(({ markup, script, styles, variables }) => {
|
|
363
|
+
const promise = this.resouceMngr.get(url, true)
|
|
364
|
+
.then(({ markup, script, styles, variables, config }) => {
|
|
353
365
|
const response = {
|
|
354
366
|
markup: transpiler.transpile(_decodeURIComponent(markup)).markup,
|
|
355
367
|
script: _decodeURIComponent(script),
|
|
356
368
|
styles: transpiler.scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),
|
|
357
|
-
variables: i5.getValidJSON(_decodeURIComponent(variables))
|
|
369
|
+
variables: i5.getValidJSON(_decodeURIComponent(variables)),
|
|
370
|
+
...(config ? { config: i5.getValidJSON(_decodeURIComponent(config)) } : {})
|
|
358
371
|
};
|
|
359
|
-
fragmentCache.set(url, response);
|
|
372
|
+
fragmentCache.set(url, Promise.resolve(response));
|
|
360
373
|
return response;
|
|
361
374
|
}, e => {
|
|
362
375
|
const status = e.details.status;
|
|
@@ -366,6 +379,8 @@
|
|
|
366
379
|
};
|
|
367
380
|
return Promise.reject(errorMsgMap[status]);
|
|
368
381
|
});
|
|
382
|
+
fragmentCache.set(url, promise);
|
|
383
|
+
return promise;
|
|
369
384
|
}
|
|
370
385
|
constructor(resouceMngr, app, appManager, compiler) {
|
|
371
386
|
super();
|
|
@@ -527,6 +542,7 @@
|
|
|
527
542
|
carousel$1.CarouselModule,
|
|
528
543
|
login.LoginModule,
|
|
529
544
|
marquee.MarqueeModule,
|
|
545
|
+
custom.CustomModule,
|
|
530
546
|
page.PageModule,
|
|
531
547
|
footer.FooterModule,
|
|
532
548
|
header.HeaderModule,
|
|
@@ -584,6 +600,7 @@
|
|
|
584
600
|
{ provide: i4.AppExtensionProvider, useClass: AppExtensionProviderService },
|
|
585
601
|
{ provide: i4.ComponentRefProvider, useClass: ComponentRefProviderService },
|
|
586
602
|
{ provide: i5.PartialRefProvider, useClass: ComponentRefProviderService },
|
|
603
|
+
{ provide: i5.CustomWidgetRefProvider, useClass: ComponentRefProviderService },
|
|
587
604
|
{ provide: i4.PrefabConfigProvider, useClass: PrefabConfigProviderService },
|
|
588
605
|
{ provide: i1.RouteReuseStrategy, useClass: i4.WmRouteReuseStrategy }
|
|
589
606
|
],
|
|
@@ -17,7 +17,7 @@ import { PopoverModule as ngxPopoverModule } from 'ngx-bootstrap/popover';
|
|
|
17
17
|
import { NgCircleProgressModule } from 'ng-circle-progress';
|
|
18
18
|
import { ToastNoAnimationModule } from 'ngx-toastr';
|
|
19
19
|
import { CarouselModule as ngxCarouselModule, } from 'ngx-bootstrap/carousel';
|
|
20
|
-
import { App, getWmProjectProperties, PartialRefProvider } from '@wm/core';
|
|
20
|
+
import { App, getWmProjectProperties, PartialRefProvider, CustomWidgetRefProvider } from '@wm/core';
|
|
21
21
|
// Basic widgets
|
|
22
22
|
import { BasicModule } from '@wm/components/basic';
|
|
23
23
|
import { ProgressModule } from '@wm/components/basic/progress';
|
|
@@ -66,6 +66,7 @@ import { PopoverModule } from '@wm/components/navigation/popover';
|
|
|
66
66
|
import { CarouselModule } from '@wm/components/advanced/carousel';
|
|
67
67
|
import { LoginModule } from '@wm/components/advanced/login';
|
|
68
68
|
import { MarqueeModule } from '@wm/components/advanced/marquee';
|
|
69
|
+
import { CustomModule } from '@wm/components/advanced/custom';
|
|
69
70
|
import { PageModule } from '@wm/components/page';
|
|
70
71
|
import { FooterModule } from '@wm/components/page/footer';
|
|
71
72
|
import { HeaderModule } from '@wm/components/page/header';
|
|
@@ -165,6 +166,7 @@ const componentsModule = [
|
|
|
165
166
|
CarouselModule,
|
|
166
167
|
LoginModule,
|
|
167
168
|
MarqueeModule,
|
|
169
|
+
CustomModule,
|
|
168
170
|
PageModule,
|
|
169
171
|
FooterModule,
|
|
170
172
|
HeaderModule,
|
|
@@ -222,6 +224,7 @@ AppModule = __decorate([
|
|
|
222
224
|
{ provide: AppExtensionProvider, useClass: AppExtensionProviderService },
|
|
223
225
|
{ provide: ComponentRefProvider, useClass: ComponentRefProviderService },
|
|
224
226
|
{ provide: PartialRefProvider, useClass: ComponentRefProviderService },
|
|
227
|
+
{ provide: CustomWidgetRefProvider, useClass: ComponentRefProviderService },
|
|
225
228
|
{ provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },
|
|
226
229
|
{ provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy }
|
|
227
230
|
],
|
|
@@ -230,4 +233,4 @@ AppModule = __decorate([
|
|
|
230
233
|
__metadata("design:paramtypes", [App, Injector, ComponentRefProvider])
|
|
231
234
|
], AppModule);
|
|
232
235
|
export { AppModule };
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8s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QVk7WUFDWixZQUFZO1lBQ1osZ0JBQWdCO1lBRWhCLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGFBQWE7WUFDYixzQkFBc0I7WUFFdEIsWUFBWTtZQUNaLFlBQVk7WUFDWixvQkFBb0I7WUFFcEIsMEJBQTBCO1lBQzFCLG1CQUFtQjtTQUN0QjtRQUNELFNBQVMsRUFBRTtZQUNQLHlCQUF5QjtZQUN6QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO1lBQzFELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtZQUN4RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxRQUFRLEVBQUMsMkJBQTJCLEVBQUM7WUFDckUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1lBQ3hFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtZQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUU7WUFDeEUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO1NBQ2xFO1FBQ0QsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0tBQzVCLENBQUM7cUNBRTJCLEdBQUcsRUFBZSxRQUFRLEVBQWdDLG9CQUFvQjtHQUQ5RixTQUFTLENBT3JCO1NBUFksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlUmV1c2VTdHJhdGVneSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEh0dHBDbGllbnRYc3JmTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFR5cGVhaGVhZE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkJztcbmltcG9ydCB7IFRpbWVwaWNrZXJNb2R1bGUgYXMgbmd4VGltZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdGltZXBpY2tlcic7XG5pbXBvcnQgeyBQcm9ncmVzc2Jhck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uJztcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIGFzIG5neFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuXG5pbXBvcnQgeyBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlIH0gZnJvbSAnbmctY2lyY2xlLXByb2dyZXNzJztcbmltcG9ydCB7IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENhcm91c2VsTW9kdWxlIGFzIG5neENhcm91c2VsTW9kdWxlLCB9IGZyb20gJ25neC1ib290c3RyYXAvY2Fyb3VzZWwnO1xuXG5pbXBvcnQge0FwcCwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcywgUGFydGlhbFJlZlByb3ZpZGVyfSBmcm9tICdAd20vY29yZSc7XG4vLyBCYXNpYyB3aWRnZXRzXG5cbmltcG9ydCB7IEJhc2ljTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9wcm9ncmVzcyc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL3JpY2gtdGV4dC1lZGl0b3InO1xuaW1wb3J0IHsgU2VhcmNoTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvc2VhcmNoJztcbmltcG9ydCB7IFRyZWVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy90cmVlJztcblxuLy8gaW5wdXRcbmltcG9ydCB7IElucHV0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9jYWxlbmRhcic7XG5pbXBvcnQgeyBDaGlwc01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2NoaXBzJztcbmltcG9ydCB7IENvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY29sb3ItcGlja2VyJztcbmltcG9ydCB7IEN1cnJlbmN5TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY3VycmVuY3knO1xuaW1wb3J0IHsgRXBvY2hNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9lcG9jaCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvZmlsZS11cGxvYWQnO1xuaW1wb3J0IHsgUmF0aW5nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvcmF0aW5nJztcbmltcG9ydCB7IFNsaWRlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L3NsaWRlcic7XG5cbmltcG9ydCB7IE1vYmlsZVJ1bnRpbWVEeW5hbWljTW9kdWxlLCBNT0JJTEVfQ09NUE9ORU5UX01PRFVMRVNfRk9SX1JPT1QgfSBmcm9tICdAd20vbW9iaWxlL3J1bnRpbWUvZHluYW1pYyc7XG5cbi8vIERhdGFcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2NhcmQnO1xuaW1wb3J0IHsgRm9ybU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvZm9ybSc7XG5pbXBvcnQgeyBMaXN0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0JztcbmltcG9ydCB7IExpdmVUYWJsZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS90YWJsZSc7XG5cbi8vIENoYXJ0XG5pbXBvcnQgeyBDaGFydE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NoYXJ0JztcblxuLy8gQ29udGFpbmVyc1xuaW1wb3J0IHsgQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9hY2NvcmRpb24nO1xuaW1wb3J0IHsgTGluZWFyTGF5b3V0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9saW5lYXItbGF5b3V0JztcbmltcG9ydCB7IExheW91dEdyaWRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xheW91dC1ncmlkJztcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9wYW5lbCc7XG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90YWJzJztcbmltcG9ydCB7IFRpbGVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RpbGUnO1xuaW1wb3J0IHsgV2l6YXJkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy93aXphcmQnO1xuXG4vLyBEaWFsb2dzXG5pbXBvcnQgeyBBbGVydERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvYWxlcnQtZGlhbG9nJztcbmltcG9ydCB7IElmcmFtZURpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvaWZyYW1lLWRpYWxvZyc7XG5pbXBvcnQgeyBMb2dpbkRpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvbG9naW4tZGlhbG9nJztcbmltcG9ydCB7IFBhcnRpYWxEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL3BhcnRpYWwtZGlhbG9nJztcblxuLy8gTmF2aWdhdGlvblxuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBNZW51TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZW51JztcbmltcG9ydCB7IE5hdmJhck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BvcG92ZXInO1xuXG4vLyBBZHZhbmNlZFxuaW1wb3J0IHsgQ2Fyb3VzZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jYXJvdXNlbCc7XG5pbXBvcnQgeyBMb2dpbk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2FkdmFuY2VkL2xvZ2luJztcbmltcG9ydCB7IE1hcnF1ZWVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9tYXJxdWVlJztcblxuaW1wb3J0IHsgUGFnZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgRm9vdGVyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS9mb290ZXInO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS9oZWFkZXInO1xuaW1wb3J0IHsgTGVmdFBhbmVsTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS9sZWZ0LXBhbmVsJztcbmltcG9ydCB7IFJpZ2h0UGFuZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL3JpZ2h0LXBhbmVsJztcbmltcG9ydCB7IFRvcE5hdk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvdG9wLW5hdic7XG5cbmltcG9ydCB7IFByZWZhYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5cbmltcG9ydCB7XG4gICAgQXBwQ29tcG9uZW50LFxuICAgIEFwcEpTUHJvdmlkZXIsXG4gICAgQXBwVmFyaWFibGVzUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgUHJlZmFiQ29uZmlnUHJvdmlkZXIsXG4gICAgV21Sb3V0ZVJldXNlU3RyYXRlZ3ksXG4gICAgV01fTU9EVUxFU19GT1JfUk9PVCxcbiAgICBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMsXG4gICAgQXBwRXh0ZW5zaW9uUHJvdmlkZXJcbn0gZnJvbSAnQHdtL3J1bnRpbWUvYmFzZSc7XG5cbmltcG9ydCB7IHJvdXRlcyB9IGZyb20gJy4vYXBwLnJvdXRlcyc7XG5pbXBvcnQgeyBQYWdlV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYWdlLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcEpTUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAtanMtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBWYXJpYWJsZXNQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC12YXJpYWJsZXMtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25Qcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1leHRlbnNpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVmYWJDb25maWdQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByZWZhYi1jb25maWctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAtcmVzb3VyY2UtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IHJvdXRlck1vZHVsZSA9IFJvdXRlck1vZHVsZS5mb3JSb290KHJvdXRlcywgeyB1c2VIYXNoOiB0cnVlLCBzY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uOiAndG9wJyB9KTtcbmV4cG9ydCBjb25zdCB0b2FzdHJNb2R1bGUgPSBUb2FzdE5vQW5pbWF0aW9uTW9kdWxlLmZvclJvb3QoeyBtYXhPcGVuZWQ6IDEsIGF1dG9EaXNtaXNzOiB0cnVlIH0pO1xuXG4vLyBJbiBhbmd1bGFyIDE1LCB4c3JmIGhlYWRlck5hbWUgc2hvdWxkIG5vdCBiZSBudWxsLiBBbmd1bGFyIDE1IGlzIG5vdCB1c2luZyBkZWZhdWx0IGhlYWRlciB2YWx1ZSBsaWtlIGl0IHVzZWQgdG8gc2VuZCBpbiBjYWxsc1xuLy8gZm9yIGFuZ3VsYXIgMTIgaWYgdGhlIGhlYWRlck5hbWUgaXMgbnVsbCAuIFRoZSB1c2VyIGhhcyB0byB0YWtlIGNhcmUgb2Ygbm90IHNlbmRpbmcgbnVsbCB2YWx1ZXMuIFRoZW4gbmcgMTUgdXNlcyBkZWZhdWx0IHZhbHVlIGZvciBoZWFkZXJOYW1lXG5sZXQgeHNyZkhlYWRlck5hbWUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkueHNyZl9oZWFkZXJfbmFtZTtcbmxldCB4c3JmT3B0aW9ucyA9IHtcbiAgICBjb29raWVOYW1lOiAnd21feHNyZl90b2tlbidcbn1cbmlmKHhzcmZIZWFkZXJOYW1lKSB7XG4gICAgeHNyZk9wdGlvbnNbJ2hlYWRlck5hbWUnXSA9IHhzcmZIZWFkZXJOYW1lO1xufVxuZXhwb3J0IGNvbnN0IGh0dHBDbGllbnRYc3JmTW9kdWxlID0gSHR0cENsaWVudFhzcmZNb2R1bGUud2l0aE9wdGlvbnMoeHNyZk9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgbW9kYWxNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8TW9kYWxNb2R1bGU+ID0gTW9kYWxNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IGJzRGF0ZVBpY2tlck1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxCc0RhdGVwaWNrZXJNb2R1bGU+ID0gQnNEYXRlcGlja2VyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCB0aW1lcGlja2VyTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPG5neFRpbWVwaWNrZXJNb2R1bGU+ID0gbmd4VGltZXBpY2tlck1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgYnNEcm9wZG93bk1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxCc0Ryb3Bkb3duTW9kdWxlPiA9IEJzRHJvcGRvd25Nb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHBhZ2luYXRpb25Nb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4UGFnaW5hdGlvbk1vZHVsZT4gPSBuZ3hQYWdpbmF0aW9uTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCB0eXBlYWhlYWRNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8VHlwZWFoZWFkTW9kdWxlPiA9IFR5cGVhaGVhZE1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NiYXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8UHJvZ3Jlc3NiYXJNb2R1bGU+ID0gUHJvZ3Jlc3NiYXJNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IGNhcm91c2VsTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPG5neENhcm91c2VsTW9kdWxlPiA9IG5neENhcm91c2VsTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBwb3BvdmVyTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPG5neFBvcG92ZXJNb2R1bGU+ID0gbmd4UG9wb3Zlck1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgbmdDaXJjbGVQcm9ncmVzc01vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ0NpcmNsZVByb2dyZXNzTW9kdWxlPiA9IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUuZm9yUm9vdCh7fSk7XG5leHBvcnQgY29uc3QgdG9vbHRpcE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxUb29sdGlwTW9kdWxlPiA9IFRvb2x0aXBNb2R1bGUuZm9yUm9vdCgpO1xuXG5jb25zdCBjb21wb25lbnRzTW9kdWxlID0gW1xuICAgIC8vIE5HWCBCb290c3RyYXBcbiAgICBCc0RhdGVwaWNrZXJNb2R1bGUsXG4gICAgbmd4VGltZXBpY2tlck1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIG5neFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgVHlwZWFoZWFkTW9kdWxlLFxuICAgIFByb2dyZXNzYmFyTW9kdWxlLFxuICAgIG5neENhcm91c2VsTW9kdWxlLFxuICAgIG5neFBvcG92ZXJNb2R1bGUsXG4gICAgTmdDaXJjbGVQcm9ncmVzc01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuXG4gICAgLy8gQmFzaWMgd2lkZ2V0c1xuICAgIEJhc2ljTW9kdWxlLFxuICAgIFByb2dyZXNzTW9kdWxlLFxuICAgIFJpY2hUZXh0RWRpdG9yTW9kdWxlLFxuICAgIFNlYXJjaE1vZHVsZSxcbiAgICBUcmVlTW9kdWxlLFxuXG4gICAgLy8gSW5wdXRcbiAgICBDYWxlbmRhck1vZHVsZSxcbiAgICBDaGlwc01vZHVsZSxcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcbiAgICBDdXJyZW5jeU1vZHVsZSxcbiAgICBFcG9jaE1vZHVsZSxcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFJhdGluZ01vZHVsZSxcbiAgICBTbGlkZXJNb2R1bGUsXG5cbiAgICAvLyBEYXRhXG4gICAgQ2FyZE1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIExpc3RNb2R1bGUsXG4gICAgTGl2ZVRhYmxlTW9kdWxlLFxuICAgIFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG5cbiAgICAvLyBjaGFydFxuICAgIENoYXJ0TW9kdWxlLFxuXG4gICAgLy8gY29udGFpbmVyIG1vZHVsZXNcbiAgICBBY2NvcmRpb25Nb2R1bGUsXG4gICAgTGluZWFyTGF5b3V0TW9kdWxlLFxuICAgIExheW91dEdyaWRNb2R1bGUsXG4gICAgUGFuZWxNb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBUaWxlTW9kdWxlLFxuICAgIFdpemFyZE1vZHVsZSxcblxuICAgIC8vIGRpYWxvZ3NcbiAgICBBbGVydERpYWxvZ01vZHVsZSxcbiAgICBJZnJhbWVEaWFsb2dNb2R1bGUsXG4gICAgTG9naW5EaWFsb2dNb2R1bGUsXG4gICAgUGFydGlhbERpYWxvZ01vZHVsZSxcblxuICAgIC8vIG5hdmlnYXRpb25cbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIE1lbnVNb2R1bGUsXG4gICAgTmF2YmFyTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG5cbiAgICAvLyBBZHZhbmNlZFxuICAgIENhcm91c2VsTW9kdWxlLFxuICAgIExvZ2luTW9kdWxlLFxuICAgIE1hcnF1ZWVNb2R1bGUsXG5cbiAgICBQYWdlTW9kdWxlLFxuICAgIEZvb3Rlck1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTGVmdFBhbmVsTW9kdWxlLFxuICAgIFJpZ2h0UGFuZWxNb2R1bGUsXG4gICAgVG9wTmF2TW9kdWxlLFxuXG4gICAgUHJlZmFiTW9kdWxlXG5dO1xuXG5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMucHVzaCguLi5jb21wb25lbnRzTW9kdWxlKTtcblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKC4uLk1PQklMRV9DT01QT05FTlRfTU9EVUxFU19GT1JfUk9PVCk7XG5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMucHVzaChGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSk7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFBhZ2VXcmFwcGVyQ29tcG9uZW50XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcblxuICAgICAgICBtb2RhbE1vZHVsZSxcbiAgICAgICAgYnNEYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICB0aW1lcGlja2VyTW9kdWxlLFxuICAgICAgICBic0Ryb3Bkb3duTW9kdWxlLFxuICAgICAgICBwYWdpbmF0aW9uTW9kdWxlLFxuICAgICAgICB0eXBlYWhlYWRNb2R1bGUsXG4gICAgICAgIHRvb2x0aXBNb2R1bGUsXG4gICAgICAgIHByb2dyZXNzYmFyTW9kdWxlLFxuICAgICAgICBjYXJvdXNlbE1vZHVsZSxcbiAgICAgICAgcG9wb3Zlck1vZHVsZSxcbiAgICAgICAgbmdDaXJjbGVQcm9ncmVzc01vZHVsZSxcblxuICAgICAgICByb3V0ZXJNb2R1bGUsXG4gICAgICAgIHRvYXN0ck1vZHVsZSxcbiAgICAgICAgaHR0cENsaWVudFhzcmZNb2R1bGUsXG5cbiAgICAgICAgTW9iaWxlUnVudGltZUR5bmFtaWNNb2R1bGUsXG4gICAgICAgIFdNX01PRFVMRVNfRk9SX1JPT1RcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICB7IHByb3ZpZGU6IEFwcEpTUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBKU1Byb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFwcFZhcmlhYmxlc1Byb3ZpZGVyLCB1c2VDbGFzczogQXBwVmFyaWFibGVzUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwRXh0ZW5zaW9uUHJvdmlkZXIsdXNlQ2xhc3M6QXBwRXh0ZW5zaW9uUHJvdmlkZXJTZXJ2aWNlfSxcbiAgICAgICAgeyBwcm92aWRlOiBDb21wb25lbnRSZWZQcm92aWRlciwgdXNlQ2xhc3M6IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFBhcnRpYWxSZWZQcm92aWRlciwgdXNlQ2xhc3M6IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFByZWZhYkNvbmZpZ1Byb3ZpZGVyLCB1c2VDbGFzczogUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogV21Sb3V0ZVJldXNlU3RyYXRlZ3kgfVxuICAgIF0sXG4gICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBBcHBNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwOiBBcHAsIHByaXZhdGUgaW5qOiBJbmplY3RvciwgcHJpdmF0ZSBjb21wb25lbnRSZWZQcm92aWRlcjogQ29tcG9uZW50UmVmUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKHdpbmRvd1snY29yZG92YSddKSB7XG4gICAgICAgICAgICAvLyBjbGVhciB0aGUgY2FjaGVkIHVybHMgb24gbG9nb3V0LCB0byBsb2FkIHRoZSBMb2dpbiBQYWdlIGFuZCBub3QgdGhlIE1haW4gUGFnZSBhcyBhcHAgcmVsb2FkKHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQpIGlzIG5vdCBpbnZva2VkIGluIG1vYmlsZVxuICAgICAgICAgICAgdGhpcy5hcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgdGhpcy5jb21wb25lbnRSZWZQcm92aWRlci5jbGVhckNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5iaW5kKHRoaXMuY29tcG9uZW50UmVmUHJvdmlkZXIpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8s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bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlUmV1c2VTdHJhdGVneSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEh0dHBDbGllbnRYc3JmTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFR5cGVhaGVhZE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkJztcbmltcG9ydCB7IFRpbWVwaWNrZXJNb2R1bGUgYXMgbmd4VGltZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdGltZXBpY2tlcic7XG5pbXBvcnQgeyBQcm9ncmVzc2Jhck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uJztcbmltcG9ydCB7IE1vZGFsTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIGFzIG5neFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuXG5pbXBvcnQgeyBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlIH0gZnJvbSAnbmctY2lyY2xlLXByb2dyZXNzJztcbmltcG9ydCB7IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENhcm91c2VsTW9kdWxlIGFzIG5neENhcm91c2VsTW9kdWxlLCB9IGZyb20gJ25neC1ib290c3RyYXAvY2Fyb3VzZWwnO1xuXG5pbXBvcnQge0FwcCwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcywgUGFydGlhbFJlZlByb3ZpZGVyLCBDdXN0b21XaWRnZXRSZWZQcm92aWRlcn0gZnJvbSAnQHdtL2NvcmUnO1xuLy8gQmFzaWMgd2lkZ2V0c1xuXG5pbXBvcnQgeyBCYXNpY01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljJztcbmltcG9ydCB7IFByb2dyZXNzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9yaWNoLXRleHQtZWRpdG9yJztcbmltcG9ydCB7IFNlYXJjaE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL3NlYXJjaCc7XG5pbXBvcnQgeyBUcmVlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvdHJlZSc7XG5cbi8vIGlucHV0XG5pbXBvcnQgeyBJbnB1dE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0JztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY2FsZW5kYXInO1xuaW1wb3J0IHsgQ2hpcHNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9jaGlwcyc7XG5pbXBvcnQgeyBDb2xvclBpY2tlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2NvbG9yLXBpY2tlcic7XG5pbXBvcnQgeyBDdXJyZW5jeU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2N1cnJlbmN5JztcbmltcG9ydCB7IEVwb2NoTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvZXBvY2gnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2ZpbGUtdXBsb2FkJztcbmltcG9ydCB7IFJhdGluZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L3JhdGluZyc7XG5pbXBvcnQgeyBTbGlkZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9zbGlkZXInO1xuXG5pbXBvcnQgeyBNb2JpbGVSdW50aW1lRHluYW1pY01vZHVsZSwgTU9CSUxFX0NPTVBPTkVOVF9NT0RVTEVTX0ZPUl9ST09UIH0gZnJvbSAnQHdtL21vYmlsZS9ydW50aW1lL2R5bmFtaWMnO1xuXG4vLyBEYXRhXG5pbXBvcnQgeyBDYXJkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9jYXJkJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2Zvcm0nO1xuaW1wb3J0IHsgTGlzdE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvbGlzdCc7XG5pbXBvcnQgeyBMaXZlVGFibGVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2xpdmUtdGFibGUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvdGFibGUnO1xuXG4vLyBDaGFydFxuaW1wb3J0IHsgQ2hhcnRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jaGFydCc7XG5cbi8vIENvbnRhaW5lcnNcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uJztcbmltcG9ydCB7IExpbmVhckxheW91dE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGluZWFyLWxheW91dCc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9sYXlvdXQtZ3JpZCc7XG5pbXBvcnQgeyBQYW5lbE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvcGFuZWwnO1xuaW1wb3J0IHsgVGFic01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvdGFicyc7XG5pbXBvcnQgeyBUaWxlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90aWxlJztcbmltcG9ydCB7IFdpemFyZE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvd2l6YXJkJztcblxuLy8gRGlhbG9nc1xuaW1wb3J0IHsgQWxlcnREaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZyc7XG5pbXBvcnQgeyBJZnJhbWVEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2lmcmFtZS1kaWFsb2cnO1xuaW1wb3J0IHsgTG9naW5EaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2xvZ2luLWRpYWxvZyc7XG5pbXBvcnQgeyBQYXJ0aWFsRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9wYXJ0aWFsLWRpYWxvZyc7XG5cbi8vIE5hdmlnYXRpb25cbmltcG9ydCB7IEJyZWFkY3J1bWJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL2JyZWFkY3J1bWInO1xuaW1wb3J0IHsgTWVudU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbWVudSc7XG5pbXBvcnQgeyBOYXZiYXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmJhcic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9wb3BvdmVyJztcblxuLy8gQWR2YW5jZWRcbmltcG9ydCB7IENhcm91c2VsTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvY2Fyb3VzZWwnO1xuaW1wb3J0IHsgTG9naW5Nb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9sb2dpbic7XG5pbXBvcnQgeyBNYXJxdWVlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvbWFycXVlZSc7XG5pbXBvcnQgeyBDdXN0b21Nb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jdXN0b20nO1xuXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBGb290ZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2Zvb3Rlcic7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2hlYWRlcic7XG5pbXBvcnQgeyBMZWZ0UGFuZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2xlZnQtcGFuZWwnO1xuaW1wb3J0IHsgUmlnaHRQYW5lbE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvcmlnaHQtcGFuZWwnO1xuaW1wb3J0IHsgVG9wTmF2TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS90b3AtbmF2JztcblxuaW1wb3J0IHsgUHJlZmFiTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcblxuaW1wb3J0IHtcbiAgICBBcHBDb21wb25lbnQsXG4gICAgQXBwSlNQcm92aWRlcixcbiAgICBBcHBWYXJpYWJsZXNQcm92aWRlcixcbiAgICBDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBQcmVmYWJDb25maWdQcm92aWRlcixcbiAgICBXbVJvdXRlUmV1c2VTdHJhdGVneSxcbiAgICBXTV9NT0RVTEVTX0ZPUl9ST09ULFxuICAgIFJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUyxcbiAgICBBcHBFeHRlbnNpb25Qcm92aWRlclxufSBmcm9tICdAd20vcnVudGltZS9iYXNlJztcblxuaW1wb3J0IHsgcm91dGVzIH0gZnJvbSAnLi9hcHAucm91dGVzJztcbmltcG9ydCB7IFBhZ2VXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2Utd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwSlNQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1qcy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFZhcmlhYmxlc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLXZhcmlhYmxlcy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV4dGVuc2lvblByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWV4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZhYkNvbmZpZ1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcHJlZmFiLWNvbmZpZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1yZXNvdXJjZS1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgY29uc3Qgcm91dGVyTW9kdWxlID0gUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzLCB7IHVzZUhhc2g6IHRydWUsIHNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb246ICd0b3AnIH0pO1xuZXhwb3J0IGNvbnN0IHRvYXN0ck1vZHVsZSA9IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUuZm9yUm9vdCh7IG1heE9wZW5lZDogMSwgYXV0b0Rpc21pc3M6IHRydWUgfSk7XG5cbi8vIEluIGFuZ3VsYXIgMTUsIHhzcmYgaGVhZGVyTmFtZSBzaG91bGQgbm90IGJlIG51bGwuIEFuZ3VsYXIgMTUgaXMgbm90IHVzaW5nIGRlZmF1bHQgaGVhZGVyIHZhbHVlIGxpa2UgaXQgdXNlZCB0byBzZW5kIGluIGNhbGxzXG4vLyBmb3IgYW5ndWxhciAxMiBpZiB0aGUgaGVhZGVyTmFtZSBpcyBudWxsIC4gVGhlIHVzZXIgaGFzIHRvIHRha2UgY2FyZSBvZiBub3Qgc2VuZGluZyBudWxsIHZhbHVlcy4gVGhlbiBuZyAxNSB1c2VzIGRlZmF1bHQgdmFsdWUgZm9yIGhlYWRlck5hbWVcbmxldCB4c3JmSGVhZGVyTmFtZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS54c3JmX2hlYWRlcl9uYW1lO1xubGV0IHhzcmZPcHRpb25zID0ge1xuICAgIGNvb2tpZU5hbWU6ICd3bV94c3JmX3Rva2VuJ1xufVxuaWYoeHNyZkhlYWRlck5hbWUpIHtcbiAgICB4c3JmT3B0aW9uc1snaGVhZGVyTmFtZSddID0geHNyZkhlYWRlck5hbWU7XG59XG5leHBvcnQgY29uc3QgaHR0cENsaWVudFhzcmZNb2R1bGUgPSBIdHRwQ2xpZW50WHNyZk1vZHVsZS53aXRoT3B0aW9ucyh4c3JmT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBtb2RhbE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxNb2RhbE1vZHVsZT4gPSBNb2RhbE1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgYnNEYXRlUGlja2VyTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEJzRGF0ZXBpY2tlck1vZHVsZT4gPSBCc0RhdGVwaWNrZXJNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHRpbWVwaWNrZXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4VGltZXBpY2tlck1vZHVsZT4gPSBuZ3hUaW1lcGlja2VyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBic0Ryb3Bkb3duTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEJzRHJvcGRvd25Nb2R1bGU+ID0gQnNEcm9wZG93bk1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgcGFnaW5hdGlvbk1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxuZ3hQYWdpbmF0aW9uTW9kdWxlPiA9IG5neFBhZ2luYXRpb25Nb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHR5cGVhaGVhZE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxUeXBlYWhlYWRNb2R1bGU+ID0gVHlwZWFoZWFkTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBwcm9ncmVzc2Jhck1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxQcm9ncmVzc2Jhck1vZHVsZT4gPSBQcm9ncmVzc2Jhck1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgY2Fyb3VzZWxNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4Q2Fyb3VzZWxNb2R1bGU+ID0gbmd4Q2Fyb3VzZWxNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHBvcG92ZXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4UG9wb3Zlck1vZHVsZT4gPSBuZ3hQb3BvdmVyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBuZ0NpcmNsZVByb2dyZXNzTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGU+ID0gTmdDaXJjbGVQcm9ncmVzc01vZHVsZS5mb3JSb290KHt9KTtcbmV4cG9ydCBjb25zdCB0b29sdGlwTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRvb2x0aXBNb2R1bGU+ID0gVG9vbHRpcE1vZHVsZS5mb3JSb290KCk7XG5cbmNvbnN0IGNvbXBvbmVudHNNb2R1bGUgPSBbXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcbiAgICBDdXN0b21Nb2R1bGUsXG5cbiAgICBQYWdlTW9kdWxlLFxuICAgIEZvb3Rlck1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTGVmdFBhbmVsTW9kdWxlLFxuICAgIFJpZ2h0UGFuZWxNb2R1bGUsXG4gICAgVG9wTmF2TW9kdWxlLFxuXG4gICAgUHJlZmFiTW9kdWxlXG5dO1xuXG5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMucHVzaCguLi5jb21wb25lbnRzTW9kdWxlKTtcblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKC4uLk1PQklMRV9DT01QT05FTlRfTU9EVUxFU19GT1JfUk9PVCk7XG5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMucHVzaChGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSk7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFBhZ2VXcmFwcGVyQ29tcG9uZW50XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcblxuICAgICAgICBtb2RhbE1vZHVsZSxcbiAgICAgICAgYnNEYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICB0aW1lcGlja2VyTW9kdWxlLFxuICAgICAgICBic0Ryb3Bkb3duTW9kdWxlLFxuICAgICAgICBwYWdpbmF0aW9uTW9kdWxlLFxuICAgICAgICB0eXBlYWhlYWRNb2R1bGUsXG4gICAgICAgIHRvb2x0aXBNb2R1bGUsXG4gICAgICAgIHByb2dyZXNzYmFyTW9kdWxlLFxuICAgICAgICBjYXJvdXNlbE1vZHVsZSxcbiAgICAgICAgcG9wb3Zlck1vZHVsZSxcbiAgICAgICAgbmdDaXJjbGVQcm9ncmVzc01vZHVsZSxcblxuICAgICAgICByb3V0ZXJNb2R1bGUsXG4gICAgICAgIHRvYXN0ck1vZHVsZSxcbiAgICAgICAgaHR0cENsaWVudFhzcmZNb2R1bGUsXG5cbiAgICAgICAgTW9iaWxlUnVudGltZUR5bmFtaWNNb2R1bGUsXG4gICAgICAgIFdNX01PRFVMRVNfRk9SX1JPT1RcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICB7IHByb3ZpZGU6IEFwcEpTUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBKU1Byb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IEFwcFZhcmlhYmxlc1Byb3ZpZGVyLCB1c2VDbGFzczogQXBwVmFyaWFibGVzUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwRXh0ZW5zaW9uUHJvdmlkZXIsdXNlQ2xhc3M6QXBwRXh0ZW5zaW9uUHJvdmlkZXJTZXJ2aWNlfSxcbiAgICAgICAgeyBwcm92aWRlOiBDb21wb25lbnRSZWZQcm92aWRlciwgdXNlQ2xhc3M6IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFBhcnRpYWxSZWZQcm92aWRlciwgdXNlQ2xhc3M6IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IEN1c3RvbVdpZGdldFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUHJlZmFiQ29uZmlnUHJvdmlkZXIsIHVzZUNsYXNzOiBQcmVmYWJDb25maWdQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBSb3V0ZVJldXNlU3RyYXRlZ3ksIHVzZUNsYXNzOiBXbVJvdXRlUmV1c2VTdHJhdGVneSB9XG4gICAgXSxcbiAgICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSBpbmo6IEluamVjdG9yLCBwcml2YXRlIGNvbXBvbmVudFJlZlByb3ZpZGVyOiBDb21wb25lbnRSZWZQcm92aWRlcikge1xuICAgICAgICBpZiAod2luZG93Wydjb3Jkb3ZhJ10pIHtcbiAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBjYWNoZWQgdXJscyBvbiBsb2dvdXQsIHRvIGxvYWQgdGhlIExvZ2luIFBhZ2UgYW5kIG5vdCB0aGUgTWFpbiBQYWdlIGFzIGFwcCByZWxvYWQod2luZG93LmxvY2F0aW9uLnJlbG9hZCkgaXMgbm90IGludm9rZWQgaW4gbW9iaWxlXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3VzZXJMb2dnZWRPdXQnLCB0aGlzLmNvbXBvbmVudFJlZlByb3ZpZGVyLmNsZWFyQ29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmJpbmQodGhpcy5jb21wb25lbnRSZWZQcm92aWRlcikpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { __decorate, __metadata, __param } from "tslib";
|
|
|
2
2
|
import { Compiler, Component, CUSTOM_ELEMENTS_SCHEMA, Inject, Injectable, Injector, NgModule, NO_ERRORS_SCHEMA, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { App, getValidJSON, UserDefinedExecutionContext } from '@wm/core';
|
|
4
4
|
import { transpile, scopeComponentStyles } from '@wm/transpiler';
|
|
5
|
-
import { AppManagerService, BasePageComponent, BasePartialComponent, BasePrefabComponent, ComponentRefProvider, ComponentType, RuntimeBaseModule, getPrefabMinJsonUrl, getPrefabPartialJsonUrl } from '@wm/runtime/base';
|
|
5
|
+
import { AppManagerService, BasePageComponent, BasePartialComponent, BaseCustomWidgetComponent, BasePrefabComponent, ComponentRefProvider, ComponentType, RuntimeBaseModule, getPrefabMinJsonUrl, getPrefabPartialJsonUrl } from '@wm/runtime/base';
|
|
6
6
|
import { AppResourceManagerService } from './app-resource-manager.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "./app-resource-manager.service";
|
|
@@ -14,6 +14,7 @@ const componentFactoryRefCache = new Map();
|
|
|
14
14
|
componentFactoryRefCache.set(ComponentType.PAGE, new Map());
|
|
15
15
|
componentFactoryRefCache.set(ComponentType.PARTIAL, new Map());
|
|
16
16
|
componentFactoryRefCache.set(ComponentType.PREFAB, new Map());
|
|
17
|
+
componentFactoryRefCache.set(ComponentType.WIDGET, new Map());
|
|
17
18
|
const _decodeURIComponent = (str) => decodeURIComponent(str.replace(/\+/g, ' '));
|
|
18
19
|
const getFragmentUrl = (fragmentName, type, options) => {
|
|
19
20
|
if (type === ComponentType.PAGE || type === ComponentType.PARTIAL) {
|
|
@@ -22,6 +23,9 @@ const getFragmentUrl = (fragmentName, type, options) => {
|
|
|
22
23
|
else if (type === ComponentType.PREFAB) {
|
|
23
24
|
return getPrefabMinJsonUrl(fragmentName);
|
|
24
25
|
}
|
|
26
|
+
else if (type === ComponentType.WIDGET) {
|
|
27
|
+
return `./custom-widgets/${fragmentName}/page.min.json`;
|
|
28
|
+
}
|
|
25
29
|
};
|
|
26
30
|
const scriptCache = new Map();
|
|
27
31
|
const execScript = (script, identifier, ctx, instance, app, utils) => {
|
|
@@ -71,6 +75,11 @@ const getDynamicComponent = (componentName, type, template, css, script, variabl
|
|
|
71
75
|
selector = `app-prefab-${componentName}`;
|
|
72
76
|
context = 'Prefab';
|
|
73
77
|
break;
|
|
78
|
+
case ComponentType.WIDGET:
|
|
79
|
+
BaseClass = BaseCustomWidgetComponent;
|
|
80
|
+
selector = `app-custom-${componentName}`;
|
|
81
|
+
context = 'Widget';
|
|
82
|
+
break;
|
|
74
83
|
}
|
|
75
84
|
let DynamicComponent = class DynamicComponent extends BaseClass {
|
|
76
85
|
constructor(injector) {
|
|
@@ -88,6 +97,9 @@ const getDynamicComponent = (componentName, type, template, css, script, variabl
|
|
|
88
97
|
case ComponentType.PREFAB:
|
|
89
98
|
this.prefabName = componentName;
|
|
90
99
|
break;
|
|
100
|
+
case ComponentType.WIDGET:
|
|
101
|
+
this.customWidgetName = componentName;
|
|
102
|
+
break;
|
|
91
103
|
}
|
|
92
104
|
super.init();
|
|
93
105
|
}
|
|
@@ -123,17 +135,18 @@ export class ComponentRefProviderService extends ComponentRefProvider {
|
|
|
123
135
|
const url = getFragmentUrl(componentName, componentType, options);
|
|
124
136
|
const resource = fragmentCache.get(url);
|
|
125
137
|
if (resource) {
|
|
126
|
-
return
|
|
138
|
+
return resource;
|
|
127
139
|
}
|
|
128
|
-
|
|
129
|
-
.then(({ markup, script, styles, variables }) => {
|
|
140
|
+
const promise = this.resouceMngr.get(url, true)
|
|
141
|
+
.then(({ markup, script, styles, variables, config }) => {
|
|
130
142
|
const response = {
|
|
131
143
|
markup: transpile(_decodeURIComponent(markup)).markup,
|
|
132
144
|
script: _decodeURIComponent(script),
|
|
133
145
|
styles: scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),
|
|
134
|
-
variables: getValidJSON(_decodeURIComponent(variables))
|
|
146
|
+
variables: getValidJSON(_decodeURIComponent(variables)),
|
|
147
|
+
...(config ? { config: getValidJSON(_decodeURIComponent(config)) } : {})
|
|
135
148
|
};
|
|
136
|
-
fragmentCache.set(url, response);
|
|
149
|
+
fragmentCache.set(url, Promise.resolve(response));
|
|
137
150
|
return response;
|
|
138
151
|
}, e => {
|
|
139
152
|
const status = e.details.status;
|
|
@@ -143,6 +156,8 @@ export class ComponentRefProviderService extends ComponentRefProvider {
|
|
|
143
156
|
};
|
|
144
157
|
return Promise.reject(errorMsgMap[status]);
|
|
145
158
|
});
|
|
159
|
+
fragmentCache.set(url, promise);
|
|
160
|
+
return promise;
|
|
146
161
|
}
|
|
147
162
|
constructor(resouceMngr, app, appManager, compiler) {
|
|
148
163
|
super();
|
|
@@ -197,4 +212,4 @@ export class ComponentRefProviderService extends ComponentRefProvider {
|
|
|
197
212
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentRefProviderService, [{
|
|
198
213
|
type: Injectable
|
|
199
214
|
}], function () { return [{ type: i1.AppResourceManagerService }, { type: i2.App }, { type: i3.AppManagerService }, { type: i0.Compiler }]; }, null); })();
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1keW5hbWljL3NyYy9hcHAvc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUNSLFNBQVMsRUFDVCxzQkFBc0IsRUFBYyxNQUFNLEVBQzFDLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUMxQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQVkzRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0FBRXJDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7QUFFNUUsd0JBQXdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQWUsQ0FBQyxDQUFDO0FBQ3pFLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxF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QUFHLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUUzRixPQUFPLG1CQUFtQixDQUFDO1FBQy9CLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1AsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUM7Z0JBQ3ZDLHVDQUF1QztnQkFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUNyQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRywyQ0FBMkMsRUFDekUsT0FBTyxDQUNWLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELHVCQUF1QjtJQUNoQiw2QkFBNkI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7NEZBekZRLDJCQUEyQjt1RUFBM0IsMkJBQTJCLFdBQTNCLDJCQUEyQjs7dUZBQTNCLDJCQUEyQjtjQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21waWxlcixcbiAgICBDb21wb25lbnQsXG4gICAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgSW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0b3IsXG4gICAgTmdNb2R1bGUsXG4gICAgTk9fRVJST1JTX1NDSEVNQSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwLCBnZXRWYWxpZEpTT04sIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IHRyYW5zcGlsZSwgc2NvcGVDb21wb25lbnRTdHlsZXMgfSBmcm9tICdAd20vdHJhbnNwaWxlcic7XG5pbXBvcnQge1xuICAgIEFwcE1hbmFnZXJTZXJ2aWNlLFxuICAgIEJhc2VQYWdlQ29tcG9uZW50LFxuICAgIEJhc2VQYXJ0aWFsQ29tcG9uZW50LFxuICAgIEJhc2VQcmVmYWJDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50VHlwZSxcbiAgICBSdW50aW1lQmFzZU1vZHVsZSxcbiAgICBnZXRQcmVmYWJNaW5Kc29uVXJsLFxuICAgIGdldFByZWZhYlBhcnRpYWxKc29uVXJsXG59IGZyb20gJ0B3bS9ydW50aW1lL2Jhc2UnO1xuXG5pbXBvcnQgeyBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtcmVzb3VyY2UtbWFuYWdlci5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIElQYWdlTWluSlNPTiB7XG4gICAgbWFya3VwOiBzdHJpbmc7XG4gICAgc2NyaXB0OiBzdHJpbmc7XG4gICAgc3R5bGVzOiBzdHJpbmc7XG4gICAgdmFyaWFibGVzOiBzdHJpbmc7XG4gICAgY29uZmlnPzogc3RyaW5nO1xufVxuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55LCBfO1xuXG5jb25zdCBmcmFnbWVudENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxud2luZG93LnJlc291cmNlQ2FjaGUgPSBmcmFnbWVudENhY2hlO1xuXG5jb25zdCBjb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUgPSBuZXcgTWFwPENvbXBvbmVudFR5cGUsIE1hcDxzdHJpbmcsIGFueT4+KCk7XG5cbmNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5zZXQoQ29tcG9uZW50VHlwZS5QQUdFLCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcbmNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5zZXQoQ29tcG9uZW50VHlwZS5QQVJUSUFMLCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcbmNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5zZXQoQ29tcG9uZW50VHlwZS5QUkVGQUIsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuXG5jb25zdCBfZGVjb2RlVVJJQ29tcG9uZW50ID0gKHN0cjogc3RyaW5nKSA9PiBkZWNvZGVVUklDb21wb25lbnQoc3RyLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcblxuY29uc3QgZ2V0RnJhZ21lbnRVcmwgPSAoZnJhZ21lbnROYW1lOiBzdHJpbmcsIHR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/KSA9PiB7XG4gICAgaWYgKHR5cGUgPT09IENvbXBvbmVudFR5cGUuUEFHRSB8fCB0eXBlID09PSBDb21wb25lbnRUeXBlLlBBUlRJQUwpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5wcmVmYWIgPyBnZXRQcmVmYWJQYXJ0aWFsSnNvblVybChvcHRpb25zLnByZWZhYiwgZnJhZ21lbnROYW1lKSA6IGAuL3BhZ2VzLyR7ZnJhZ21lbnROYW1lfS9wYWdlLm1pbi5qc29uYDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENvbXBvbmVudFR5cGUuUFJFRkFCKSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVmYWJNaW5Kc29uVXJsKGZyYWdtZW50TmFtZSk7XG4gICAgfVxufTtcblxuY29uc3Qgc2NyaXB0Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KCk7XG5jb25zdCBleGVjU2NyaXB0ID0gKFxuICAgIHNjcmlwdDogc3RyaW5nLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBjdHg6IHN0cmluZyxcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGFwcDogYW55LFxuICAgIHV0aWxzOiBhbnlcbikgPT4ge1xuICAgIGxldCBmbiA9IHNjcmlwdENhY2hlLmdldChpZGVudGlmaWVyKTtcbiAgICAvLyBGaXggZm9yIFtXTVMtMjExOTZdOiBJbmNvcnJlY3Qgc2NyaXB0IGlzIGJlaW5nIGFzc2lnbmVkLCAgd2hlbiAyIHByZWZhYnMgaGF2ZSBzYW1lIHBhcnRpYWwgbmFtZSAoaS5lLiBzYW1lIGlkZW50aWZpZXIpLlxuICAgIGlmICgoY3R4ID09PSAnUGFydGlhbCcgJiYgIV8uaXNVbmRlZmluZWQoaW5zdGFuY2UuUHJlZmFiKSkgfHwgIWZuKSB7XG4gICAgICAgIGZuID0gbmV3IEZ1bmN0aW9uKGN0eCwgJ0FwcCcsICdVdGlscycsIHNjcmlwdCk7XG4gICAgICAgIHNjcmlwdENhY2hlLnNldChpZGVudGlmaWVyLCBmbik7XG4gICAgfVxuICAgIGZuKGluc3RhbmNlLCBhcHAsIHV0aWxzKTtcbn07XG5cbmNsYXNzIEJhc2VEeW5hbWljQ29tcG9uZW50IHtcbiAgICBpbml0KCkge31cbn1cblxuY29uc3QgZ2V0RHluYW1pY01vZHVsZSA9IChjb21wb25lbnRSZWY6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gTmdNb2R1bGUoe1xuICAgICAgICAgICAgZGVjbGFyYXRpb25zOiBbY29tcG9uZW50UmVmXSxcbiAgICAgICAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBSdW50aW1lQmFzZU1vZHVsZSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV1cbiAgICB9KShjbGFzcyBEeW5hbWljTW9kdWxlIHt9KTtcbn07XG5cbmNvbnN0IGdldER5bmFtaWNDb21wb25lbnQgPSAoXG4gICAgY29tcG9uZW50TmFtZSxcbiAgICB0eXBlOiBDb21wb25lbnRUeXBlLFxuICAgIHRlbXBsYXRlOiBzdHJpbmcsXG4gICAgY3NzOiBzdHJpbmcsXG4gICAgc2NyaXB0OiBhbnksXG4gICAgdmFyaWFibGVzOiBzdHJpbmcsXG4pID0+IHtcblxuICAgIGNvbnN0IGNvbXBvbmVudERlZiA9IHtcbiAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgIHN0eWxlczogW2Nzc10sXG4gICAgICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbiAgICB9O1xuXG4gICAgbGV0IEJhc2VDbGFzczogYW55ID0gQmFzZUR5bmFtaWNDb21wb25lbnQ7XG4gICAgbGV0IHNlbGVjdG9yID0gJyc7XG4gICAgbGV0IGNvbnRleHQgPSAnJztcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUEFHRTpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VQYWdlQ29tcG9uZW50O1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBgYXBwLXBhZ2UtJHtjb21wb25lbnROYW1lfWA7XG4gICAgICAgICAgICBjb250ZXh0ID0gJ1BhZ2UnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQVJUSUFMOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVBhcnRpYWxDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcGFydGlhbC0ke2NvbXBvbmVudE5hbWV9YDtcbiAgICAgICAgICAgIGNvbnRleHQgPSAnUGFydGlhbCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBSRUZBQjpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VQcmVmYWJDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcHJlZmFiLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdQcmVmYWInO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2xhc3MgRHluYW1pY0NvbXBvbmVudCBleHRlbmRzIEJhc2VDbGFzcyB7XG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIHBhZ2VOYW1lO1xuICAgICAgICBwYXJ0aWFsTmFtZTtcbiAgICAgICAgcHJlZmFiTmFtZTtcbiAgICAgICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VOYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydGlhbE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWZhYk5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZhbFVzZXJTY3JpcHQoaW5zdGFuY2U6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KSB7XG4gICAgICAgICAgICBleGVjU2NyaXB0KHNjcmlwdCwgc2VsZWN0b3IsIGNvbnRleHQsIGluc3RhbmNlLCBhcHBDb250ZXh0LCB1dGlscyk7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW4gcHJldmlldyBtb2RlLCB0aGVyZSB3aWxsIGJlIG5vIGZ1bmN0aW9uIHJlZ2lzdGVyZWQuIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSB0aHJvdWdoICRwYXJzZUV2ZW50IGFuZCAkcGFyc2VFeHByXG4gICAgICAgIGdldEV4cHJlc3Npb25zKCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gQ29tcG9uZW50KHtcbiAgICAgICAgLi4uY29tcG9uZW50RGVmLFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeW5hbWljQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9KShEeW5hbWljQ29tcG9uZW50KVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIGV4dGVuZHMgQ29tcG9uZW50UmVmUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zPyk6IFByb21pc2U8SVBhZ2VNaW5KU09OPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGdldEZyYWdtZW50VXJsKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gZnJhZ21lbnRDYWNoZS5nZXQodXJsKTtcblxuICAgICAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VjZU1uZ3IuZ2V0KHVybCwgdHJ1ZSlcbiAgICAgICAgICAgIC50aGVuKCh7bWFya3VwLCBzY3JpcHQsIHN0eWxlcywgdmFyaWFibGVzfTogSVBhZ2VNaW5KU09OKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cDogdHJhbnNwaWxlKF9kZWNvZGVVUklDb21wb25lbnQobWFya3VwKSkubWFya3VwLFxuICAgICAgICAgICAgICAgICAgICBzY3JpcHQ6IF9kZWNvZGVVUklDb21wb25lbnQoc2NyaXB0KSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzY29wZUNvbXBvbmVudFN0eWxlcyhjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBfZGVjb2RlVVJJQ29tcG9uZW50KHN0eWxlcykpLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IGdldFZhbGlkSlNPTihfZGVjb2RlVVJJQ29tcG9uZW50KHZhcmlhYmxlcykpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudENhY2hlLnNldCh1cmwsIHJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGUuZGV0YWlscy5zdGF0dXM7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2dNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIDQwNCA6IHRoaXMuYXBwLmFwcExvY2FsZS5NRVNTQUdFX1BBR0VfTk9UX0ZPVU5EIHx8ICdUaGUgcGFnZSB5b3UgYXJlIHRyeWluZyB0byByZWFjaCBpcyBub3QgYXZhaWxhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgNDAzIDogdGhpcy5hcHAuYXBwTG9jYWxlLkxBQkVMX0FDQ0VTU19ERU5JRUQgfHwgJ0FjY2VzcyBEZW5pZWQnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3JNc2dNYXBbc3RhdHVzXSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZXNvdWNlTW5ncjogQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/OiB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIGNoZWNrIGluIHRoZSBjYWNoZS5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeU1hcCA9IGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5nZXQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgIGxldCBjb21wb25lbnRGYWN0b3J5UmVmO1xuICAgICAgICBpZiAoY29tcG9uZW50RmFjdG9yeU1hcCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbXBvbmVudE5hbWUgPSAob3B0aW9ucyAmJiBvcHRpb25zWydwcmVmYWInXSkgPyBvcHRpb25zWydwcmVmYWInXSArICBjb21wb25lbnROYW1lIDogY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZWYgPSBjb21wb25lbnRGYWN0b3J5TWFwLmdldCh1cGRhdGVkQ29tcG9uZW50TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5UmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKHttYXJrdXAsIHNjcmlwdCwgc3R5bGVzLCB2YXJpYWJsZXN9KSAgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RGVmID0gZ2V0RHluYW1pY0NvbXBvbmVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBtYXJrdXAsIHN0eWxlcywgc2NyaXB0LCBKU09OLnN0cmluZ2lmeSh2YXJpYWJsZXMpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVEZWYgPSBnZXREeW5hbWljTW9kdWxlKGNvbXBvbmVudERlZik7XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVmID0gdGhpcy5jb21waWxlclxuICAgICAgICAgICAgICAgICAgICAuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKG1vZHVsZURlZilcbiAgICAgICAgICAgICAgICAgICAgLmNvbXBvbmVudEZhY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZhY3RvcnkgPT4gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS5jb21wb25lbnRUeXBlID09PSBjb21wb25lbnREZWYpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDb21wb25lbnROYW1lID0gKG9wdGlvbnMgJiYgb3B0aW9uc1sncHJlZmFiJ10pID8gb3B0aW9uc1sncHJlZmFiJ10gKyAgY29tcG9uZW50TmFtZSA6IGNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmdldChjb21wb25lbnRUeXBlKS5zZXQodXBkYXRlZENvbXBvbmVudE5hbWUsIGNvbXBvbmVudEZhY3RvcnlSZWYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkVycm9yIHdoaWxlIGxvYWRpbmcgcGFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlIHRoZSBlcnJvciBmb3IgZWFzeSBkZWJ1Z2dpbmdcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5QXBwKFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1N0cmluZyhlcnIpID8gZXJyIDogbXNnICsgJywgY2hlY2sgYnJvd3NlciBjb25zb2xlIGZvciBlcnJvciBkZXRhaWxzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcidcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBjbGVhcnMgdGhlIGNhY2hlIG1hcFxuICAgIHB1YmxpYyBjbGVhckNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZSgpIHtcbiAgICAgICAgdGhpcy5yZXNvdWNlTW5nci5jbGVhckNhY2hlKCk7XG4gICAgICAgIGZyYWdtZW50Q2FjaGUuY2xlYXIoKTtcbiAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmZvckVhY2gobWFwID0+IHtcbiAgICAgICAgICAgIG1hcC5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1keW5hbWljL3NyYy9hcHAvc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUNSLFNBQVMsRUFDVCxzQkFBc0IsRUFBYyxNQUFNLEVBQzFDLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDMUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFZM0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztBQUU3QyxNQUFNLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUVyQyxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO0FBRTVFLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFlLENBQUMsQ0FBQztBQUN6RSx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFB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R0FBRyxHQUFHLDJDQUEyQyxFQUN6RSxPQUFPLENBQ1YsQ0FBQzthQUNMO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsdUJBQXVCO0lBQ2hCLDZCQUE2QjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0Qix3QkFBd0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs0RkEzRlEsMkJBQTJCO3VFQUEzQiwyQkFBMkIsV0FBM0IsMkJBQTJCOzt1RkFBM0IsMkJBQTJCO2NBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBpbGVyLFxuICAgIENvbXBvbmVudCxcbiAgICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBmb3J3YXJkUmVmLCBJbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3RvcixcbiAgICBOZ01vZHVsZSxcbiAgICBOT19FUlJPUlNfU0NIRU1BLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHAsIGdldFZhbGlkSlNPTiwgVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgdHJhbnNwaWxlLCBzY29wZUNvbXBvbmVudFN0eWxlcyB9IGZyb20gJ0B3bS90cmFuc3BpbGVyJztcbmltcG9ydCB7XG4gICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgQmFzZVBhZ2VDb21wb25lbnQsXG4gICAgQmFzZVBhcnRpYWxDb21wb25lbnQsXG4gICAgQmFzZUN1c3RvbVdpZGdldENvbXBvbmVudCxcbiAgICBCYXNlUHJlZmFiQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIENvbXBvbmVudFR5cGUsXG4gICAgUnVudGltZUJhc2VNb2R1bGUsXG4gICAgZ2V0UHJlZmFiTWluSnNvblVybCxcbiAgICBnZXRQcmVmYWJQYXJ0aWFsSnNvblVybFxufSBmcm9tICdAd20vcnVudGltZS9iYXNlJztcblxuaW1wb3J0IHsgQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vYXBwLXJlc291cmNlLW1hbmFnZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBJUGFnZU1pbkpTT04ge1xuICAgIG1hcmt1cDogc3RyaW5nO1xuICAgIHNjcmlwdDogc3RyaW5nO1xuICAgIHN0eWxlczogc3RyaW5nO1xuICAgIHZhcmlhYmxlczogc3RyaW5nO1xuICAgIGNvbmZpZz86IHN0cmluZztcbn1cblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueSwgXztcblxuY29uc3QgZnJhZ21lbnRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbndpbmRvdy5yZXNvdXJjZUNhY2hlID0gZnJhZ21lbnRDYWNoZTtcblxuY29uc3QgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlID0gbmV3IE1hcDxDb21wb25lbnRUeXBlLCBNYXA8c3RyaW5nLCBhbnk+PigpO1xuXG5jb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuc2V0KENvbXBvbmVudFR5cGUuUEFHRSwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSk7XG5jb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuc2V0KENvbXBvbmVudFR5cGUuUEFSVElBTCwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSk7XG5jb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuc2V0KENvbXBvbmVudFR5cGUuUFJFRkFCLCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcbmNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5zZXQoQ29tcG9uZW50VHlwZS5XSURHRVQsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuXG5jb25zdCBfZGVjb2RlVVJJQ29tcG9uZW50ID0gKHN0cjogc3RyaW5nKSA9PiBkZWNvZGVVUklDb21wb25lbnQoc3RyLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcblxuY29uc3QgZ2V0RnJhZ21lbnRVcmwgPSAoZnJhZ21lbnROYW1lOiBzdHJpbmcsIHR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/KSA9PiB7XG4gICAgaWYgKHR5cGUgPT09IENvbXBvbmVudFR5cGUuUEFHRSB8fCB0eXBlID09PSBDb21wb25lbnRUeXBlLlBBUlRJQUwpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5wcmVmYWIgPyBnZXRQcmVmYWJQYXJ0aWFsSnNvblVybChvcHRpb25zLnByZWZhYiwgZnJhZ21lbnROYW1lKSA6IGAuL3BhZ2VzLyR7ZnJhZ21lbnROYW1lfS9wYWdlLm1pbi5qc29uYDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENvbXBvbmVudFR5cGUuUFJFRkFCKSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVmYWJNaW5Kc29uVXJsKGZyYWdtZW50TmFtZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDb21wb25lbnRUeXBlLldJREdFVCl7XG4gICAgICAgIHJldHVybiBgLi9jdXN0b20td2lkZ2V0cy8ke2ZyYWdtZW50TmFtZX0vcGFnZS5taW4uanNvbmBcbiAgICB9XG59O1xuXG5jb25zdCBzY3JpcHRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBGdW5jdGlvbj4oKTtcbmNvbnN0IGV4ZWNTY3JpcHQgPSAoXG4gICAgc2NyaXB0OiBzdHJpbmcsXG4gICAgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGN0eDogc3RyaW5nLFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAgYXBwOiBhbnksXG4gICAgdXRpbHM6IGFueVxuKSA9PiB7XG4gICAgbGV0IGZuID0gc2NyaXB0Q2FjaGUuZ2V0KGlkZW50aWZpZXIpO1xuICAgIC8vIEZpeCBmb3IgW1dNUy0yMTE5Nl06IEluY29ycmVjdCBzY3JpcHQgaXMgYmVpbmcgYXNzaWduZWQsICB3aGVuIDIgcHJlZmFicyBoYXZlIHNhbWUgcGFydGlhbCBuYW1lIChpLmUuIHNhbWUgaWRlbnRpZmllcikuXG4gICAgaWYgKChjdHggPT09ICdQYXJ0aWFsJyAmJiAhXy5pc1VuZGVmaW5lZChpbnN0YW5jZS5QcmVmYWIpKSB8fCAhZm4pIHtcbiAgICAgICAgZm4gPSBuZXcgRnVuY3Rpb24oY3R4LCAnQXBwJywgJ1V0aWxzJywgc2NyaXB0KTtcbiAgICAgICAgc2NyaXB0Q2FjaGUuc2V0KGlkZW50aWZpZXIsIGZuKTtcbiAgICB9XG4gICAgZm4oaW5zdGFuY2UsIGFwcCwgdXRpbHMpO1xufTtcblxuY2xhc3MgQmFzZUR5bmFtaWNDb21wb25lbnQge1xuICAgIGluaXQoKSB7fVxufVxuXG5jb25zdCBnZXREeW5hbWljTW9kdWxlID0gKGNvbXBvbmVudFJlZjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBOZ01vZHVsZSh7XG4gICAgICAgICAgICBkZWNsYXJhdGlvbnM6IFtjb21wb25lbnRSZWZdLFxuICAgICAgICAgICAgaW1wb3J0czogW1xuICAgICAgICAgICAgICAgIFJ1bnRpbWVCYXNlTW9kdWxlLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXVxuICAgIH0pKGNsYXNzIER5bmFtaWNNb2R1bGUge30pO1xufTtcblxuY29uc3QgZ2V0RHluYW1pY0NvbXBvbmVudCA9IChcbiAgICBjb21wb25lbnROYW1lLFxuICAgIHR5cGU6IENvbXBvbmVudFR5cGUsXG4gICAgdGVtcGxhdGU6IHN0cmluZyxcbiAgICBjc3M6IHN0cmluZyxcbiAgICBzY3JpcHQ6IGFueSxcbiAgICB2YXJpYWJsZXM6IHN0cmluZyxcbikgPT4ge1xuXG4gICAgY29uc3QgY29tcG9uZW50RGVmID0ge1xuICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgc3R5bGVzOiBbY3NzXSxcbiAgICAgICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxuICAgIH07XG5cbiAgICBsZXQgQmFzZUNsYXNzOiBhbnkgPSBCYXNlRHluYW1pY0NvbXBvbmVudDtcbiAgICBsZXQgc2VsZWN0b3IgPSAnJztcbiAgICBsZXQgY29udGV4dCA9ICcnO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVBhZ2VDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcGFnZS0ke2NvbXBvbmVudE5hbWV9YDtcbiAgICAgICAgICAgIGNvbnRleHQgPSAnUGFnZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICBCYXNlQ2xhc3MgPSBCYXNlUGFydGlhbENvbXBvbmVudDtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gYGFwcC1wYXJ0aWFsLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdQYXJ0aWFsJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVByZWZhYkNvbXBvbmVudDtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gYGFwcC1wcmVmYWItJHtjb21wb25lbnROYW1lfWA7XG4gICAgICAgICAgICBjb250ZXh0ID0gJ1ByZWZhYic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLldJREdFVDpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VDdXN0b21XaWRnZXRDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtY3VzdG9tLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdXaWRnZXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2xhc3MgRHluYW1pY0NvbXBvbmVudCBleHRlbmRzIEJhc2VDbGFzcyB7XG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIHBhZ2VOYW1lO1xuICAgICAgICBwYXJ0aWFsTmFtZTtcbiAgICAgICAgcHJlZmFiTmFtZTtcbiAgICAgICAgY3VzdG9tV2lkZ2V0TmFtZTtcbiAgICAgICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VOYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydGlhbE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWZhYk5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuV0lER0VUOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbVdpZGdldE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZhbFVzZXJTY3JpcHQoaW5zdGFuY2U6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KSB7XG4gICAgICAgICAgICBleGVjU2NyaXB0KHNjcmlwdCwgc2VsZWN0b3IsIGNvbnRleHQsIGluc3RhbmNlLCBhcHBDb250ZXh0LCB1dGlscyk7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW4gcHJldmlldyBtb2RlLCB0aGVyZSB3aWxsIGJlIG5vIGZ1bmN0aW9uIHJlZ2lzdGVyZWQuIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSB0aHJvdWdoICRwYXJzZUV2ZW50IGFuZCAkcGFyc2VFeHByXG4gICAgICAgIGdldEV4cHJlc3Npb25zKCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gQ29tcG9uZW50KHtcbiAgICAgICAgLi4uY29tcG9uZW50RGVmLFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeW5hbWljQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9KShEeW5hbWljQ29tcG9uZW50KVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIGV4dGVuZHMgQ29tcG9uZW50UmVmUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zPyk6IFByb21pc2U8SVBhZ2VNaW5KU09OPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGdldEZyYWdtZW50VXJsKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gZnJhZ21lbnRDYWNoZS5nZXQodXJsKTtcblxuICAgICAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnJlc291Y2VNbmdyLmdldCh1cmwsIHRydWUpXG4gICAgICAgICAgICAudGhlbigoe21hcmt1cCwgc2NyaXB0LCBzdHlsZXMsIHZhcmlhYmxlcywgY29uZmlnfTogSVBhZ2VNaW5KU09OKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cDogdHJhbnNwaWxlKF9kZWNvZGVVUklDb21wb25lbnQobWFya3VwKSkubWFya3VwLFxuICAgICAgICAgICAgICAgICAgICBzY3JpcHQ6IF9kZWNvZGVVUklDb21wb25lbnQoc2NyaXB0KSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzY29wZUNvbXBvbmVudFN0eWxlcyhjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBfZGVjb2RlVVJJQ29tcG9uZW50KHN0eWxlcykpLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IGdldFZhbGlkSlNPTihfZGVjb2RlVVJJQ29tcG9uZW50KHZhcmlhYmxlcykpLFxuICAgICAgICAgICAgICAgICAgICAuLi4oY29uZmlnPyB7Y29uZmlnIDogZ2V0VmFsaWRKU09OKF9kZWNvZGVVUklDb21wb25lbnQoY29uZmlnKSl9IDoge30pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudENhY2hlLnNldCh1cmwsIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gZS5kZXRhaWxzLnN0YXR1cztcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZ01hcCA9IHtcbiAgICAgICAgICAgICAgICAgICAgNDA0IDogdGhpcy5hcHAuYXBwTG9jYWxlLk1FU1NBR0VfUEFHRV9OT1RfRk9VTkQgfHwgJ1RoZSBwYWdlIHlvdSBhcmUgdHJ5aW5nIHRvIHJlYWNoIGlzIG5vdCBhdmFpbGFibGUnLFxuICAgICAgICAgICAgICAgICAgICA0MDMgOiB0aGlzLmFwcC5hcHBMb2NhbGUuTEFCRUxfQUNDRVNTX0RFTklFRCB8fCAnQWNjZXNzIERlbmllZCdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvck1zZ01hcFtzdGF0dXNdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZnJhZ21lbnRDYWNoZS5zZXQodXJsLCBwcm9taXNlKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlc291Y2VNbmdyOiBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcDogQXBwLFxuICAgICAgICBwcml2YXRlIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDb21wb25lbnRGYWN0b3J5UmVmKGNvbXBvbmVudE5hbWU6IHN0cmluZywgY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZSwgb3B0aW9ucz86IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgLy8gY2hlY2sgaW4gdGhlIGNhY2hlLlxuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5TWFwID0gY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmdldChjb21wb25lbnRUeXBlKTtcbiAgICAgICAgbGV0IGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5TWFwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29tcG9uZW50TmFtZSA9IChvcHRpb25zICYmIG9wdGlvbnNbJ3ByZWZhYiddKSA/IG9wdGlvbnNbJ3ByZWZhYiddICsgIGNvbXBvbmVudE5hbWUgOiBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZiA9IGNvbXBvbmVudEZhY3RvcnlNYXAuZ2V0KHVwZGF0ZWRDb21wb25lbnROYW1lKTtcblxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudEZhY3RvcnlSZWYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeVJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRSZXNvdXJjZXNPZkZyYWdtZW50KGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpXG4gICAgICAgICAgICAudGhlbigoe21hcmt1cCwgc2NyaXB0LCBzdHlsZXMsIHZhcmlhYmxlc30pICA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RGVmID0gZ2V0RHluYW1pY0NvbXBvbmVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBtYXJrdXAsIHN0eWxlcywgc2NyaXB0LCBKU09OLnN0cmluZ2lmeSh2YXJpYWJsZXMpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVEZWYgPSBnZXREeW5hbWljTW9kdWxlKGNvbXBvbmVudERlZik7XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVmID0gdGhpcy5jb21waWxlclxuICAgICAgICAgICAgICAgICAgICAuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKG1vZHVsZURlZilcbiAgICAgICAgICAgICAgICAgICAgLmNvbXBvbmVudEZhY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZhY3RvcnkgPT4gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS5jb21wb25lbnRUeXBlID09PSBjb21wb25lbnREZWYpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDb21wb25lbnROYW1lID0gKG9wdGlvbnMgJiYgb3B0aW9uc1sncHJlZmFiJ10pID8gb3B0aW9uc1sncHJlZmFiJ10gKyAgY29tcG9uZW50TmFtZSA6IGNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmdldChjb21wb25lbnRUeXBlKS5zZXQodXBkYXRlZENvbXBvbmVudE5hbWUsIGNvbXBvbmVudEZhY3RvcnlSZWYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkVycm9yIHdoaWxlIGxvYWRpbmcgcGFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlIHRoZSBlcnJvciBmb3IgZWFzeSBkZWJ1Z2dpbmdcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5QXBwKFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5pc1N0cmluZyhlcnIpID8gZXJyIDogbXNnICsgJywgY2hlY2sgYnJvd3NlciBjb25zb2xlIGZvciBlcnJvciBkZXRhaWxzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcidcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBjbGVhcnMgdGhlIGNhY2hlIG1hcFxuICAgIHB1YmxpYyBjbGVhckNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZSgpIHtcbiAgICAgICAgdGhpcy5yZXNvdWNlTW5nci5jbGVhckNhY2hlKCk7XG4gICAgICAgIGZyYWdtZW50Q2FjaGUuY2xlYXIoKTtcbiAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmZvckVhY2gobWFwID0+IHtcbiAgICAgICAgICAgIG1hcC5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|