@wavemaker/app-ng-runtime 12.0.0-next.45032 → 12.0.0-next.45503

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +405 -451
  2. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -3
  3. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -3
  4. app-ng-runtime/build-task/fesm2022/index.mjs +406 -454
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/build-task/public_api.d.ts +0 -2
  7. app-ng-runtime/components/base/bundles/index.umd.js +14 -62
  8. app-ng-runtime/components/base/components.module.d.ts +11 -12
  9. app-ng-runtime/components/base/esm2022/components.module.mjs +1 -5
  10. app-ng-runtime/components/base/esm2022/public_api.mjs +1 -2
  11. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -25
  12. app-ng-runtime/components/base/fesm2022/index.mjs +15 -62
  13. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  14. app-ng-runtime/components/base/public_api.d.ts +0 -1
  15. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +5 -10
  16. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
  17. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
  18. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
  19. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  20. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  21. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -3
  22. app-ng-runtime/components/data/form/fesm2022/index.mjs +0 -2
  23. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  24. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +11 -0
  25. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +12 -1
  26. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +11 -0
  27. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  28. app-ng-runtime/components/input/default/bundles/index.umd.js +63 -39
  29. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +0 -1
  30. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +5 -8
  31. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +5 -8
  32. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +57 -29
  33. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +1 -4
  34. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +2 -2
  35. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +4 -1
  36. app-ng-runtime/components/input/default/fesm2022/index.mjs +63 -39
  37. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  38. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +0 -1
  39. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -4
  40. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +3 -2
  41. app-ng-runtime/components/input/epoch/bundles/index.umd.js +3 -0
  42. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +4 -1
  43. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +3 -0
  44. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  45. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +31 -5
  46. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +34 -8
  47. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +32 -6
  48. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  49. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +6 -2
  50. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +2 -2
  51. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +2 -2
  52. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  53. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +2 -2
  54. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  55. app-ng-runtime/core/bundles/index.umd.js +6 -16
  56. app-ng-runtime/core/enums/enums.d.ts +1 -2
  57. app-ng-runtime/core/esm2022/enums/enums.mjs +1 -2
  58. app-ng-runtime/core/esm2022/types/types.mjs +1 -4
  59. app-ng-runtime/core/esm2022/utils/build-utils.mjs +1 -6
  60. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -3
  61. app-ng-runtime/core/fesm2022/index.mjs +4 -12
  62. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  63. app-ng-runtime/core/types/types.d.ts +1 -5
  64. app-ng-runtime/core/utils/utils.d.ts +1 -0
  65. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  66. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  67. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  68. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  69. app-ng-runtime/package.json +1 -1
  70. app-ng-runtime/runtime/base/bundles/index.umd.js +5 -288
  71. app-ng-runtime/runtime/base/esm2022/public_api.mjs +1 -2
  72. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +1 -6
  73. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  74. app-ng-runtime/runtime/base/esm2022/types/types.mjs +1 -2
  75. app-ng-runtime/runtime/base/fesm2022/index.mjs +4 -287
  76. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/runtime/base/public_api.d.ts +0 -1
  78. app-ng-runtime/runtime/base/runtime-base.module.d.ts +8 -9
  79. app-ng-runtime/runtime/base/types/types.d.ts +1 -2
  80. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +9 -27
  81. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +2 -5
  82. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +7 -23
  83. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +7 -26
  84. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  86. app-ng-runtime/scripts/datatable/datatable.js +6 -3
  87. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
  88. app-ng-runtime/transpiler/bundles/index.umd.js +0 -5
  89. app-ng-runtime/transpiler/esm2022/build.mjs +1 -4
  90. app-ng-runtime/transpiler/esm2022/imports.mjs +1 -3
  91. app-ng-runtime/transpiler/fesm2022/index.mjs +0 -5
  92. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +0 -2
  94. app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +0 -2
  95. app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +0 -15
  96. app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +0 -26
  97. app-ng-runtime/components/advanced/custom/.npmignore +0 -2
  98. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +0 -232
  99. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +0 -19
  100. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +0 -2
  101. app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +0 -1
  102. app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +0 -19
  103. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +0 -10
  104. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +0 -102
  105. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +0 -12
  106. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +0 -8
  107. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +0 -68
  108. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  109. app-ng-runtime/components/advanced/custom/esm2022/index.mjs +0 -5
  110. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +0 -4
  111. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +0 -215
  112. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +0 -1
  113. app-ng-runtime/components/advanced/custom/index.d.ts +0 -5
  114. app-ng-runtime/components/advanced/custom/package.json +0 -23
  115. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -3
  116. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +0 -39
  117. app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +0 -14
  118. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +0 -72
  119. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +0 -288
@@ -3,7 +3,6 @@ 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';
7
6
  export * from './components/base-prefab.component';
8
7
  export * from './components/base-layout.component';
9
8
  export * from './components/base-spa-page.component';
@@ -75,14 +75,13 @@ 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/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";
78
+ import * as i72 from "@wm/components/page";
79
+ import * as i73 from "@wm/components/page/footer";
80
+ import * as i74 from "@wm/components/page/header";
81
+ import * as i75 from "@wm/components/page/left-panel";
82
+ import * as i76 from "@wm/components/page/right-panel";
83
+ import * as i77 from "@wm/components/page/top-nav";
84
+ import * as i78 from "@wm/components/prefab";
86
85
  export declare function getSettingProvider(key: string, defaultValue: any): {
87
86
  provide: string;
88
87
  useValue: any;
@@ -96,7 +95,7 @@ export declare class RuntimeBaseModule {
96
95
  constructor(mobileRuntimeModule: MobileRuntimeModule, app: App, viewport: Viewport);
97
96
  private getDeviceDetails;
98
97
  static ɵfac: i0.ɵɵFactoryDeclaration<RuntimeBaseModule, never>;
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]>;
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.PageModule, typeof i73.FooterModule, typeof i74.HeaderModule, typeof i75.LeftPanelModule, typeof i76.RightPanelModule, typeof i77.TopNavModule, typeof i78.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.PageModule, typeof i73.FooterModule, typeof i74.HeaderModule, typeof i75.LeftPanelModule, typeof i76.RightPanelModule, typeof i77.TopNavModule, typeof i78.PrefabModule]>;
100
99
  static ɵinj: i0.ɵɵInjectorDeclaration<RuntimeBaseModule>;
101
100
  }
102
101
  export declare const WM_MODULES_FOR_ROOT: ModuleWithProviders<WmComponentsModule>[];
@@ -1,8 +1,7 @@
1
1
  export declare enum ComponentType {
2
2
  PAGE = 0,
3
3
  PREFAB = 1,
4
- PARTIAL = 2,
5
- WIDGET = 3
4
+ PARTIAL = 2
6
5
  }
7
6
  export declare abstract class ComponentRefProvider {
8
7
  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/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('lodash-es'), require('@wavemaker/custom-widgets-m3'), 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', 'lodash-es', '@wavemaker/custom-widgets-m3', '@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._, global.wm_custom_widgets, 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, lodashEs, customWidgets, 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/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('lodash-es'), 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', 'lodash-es', '@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._, 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, lodashEs, animations) { 'use strict';
6
6
 
7
7
  function _interopNamespaceDefault(e) {
8
8
  var n = Object.create(null);
@@ -28,7 +28,6 @@
28
28
  var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
29
29
  var i2__namespace = /*#__PURE__*/_interopNamespaceDefault(i2);
30
30
  var i3__namespace = /*#__PURE__*/_interopNamespaceDefault(i3);
31
- var customWidgets__namespace = /*#__PURE__*/_interopNamespaceDefault(customWidgets);
32
31
 
33
32
  class PageWrapperComponent {
34
33
  constructor(injector, route, vcRef, appRef, metadataService, securityService, appManager, app, ngZone, elRef, spinnerService, componentRefProvider, router) {
@@ -239,7 +238,6 @@
239
238
  componentFactoryRefCache.set(i4.ComponentType.PAGE, new Map());
240
239
  componentFactoryRefCache.set(i4.ComponentType.PARTIAL, new Map());
241
240
  componentFactoryRefCache.set(i4.ComponentType.PREFAB, new Map());
242
- componentFactoryRefCache.set(i4.ComponentType.WIDGET, new Map());
243
241
  const _decodeURIComponent = (str) => decodeURIComponent(str.replace(/\+/g, ' '));
244
242
  const getFragmentUrl = (fragmentName, type, options) => {
245
243
  if (type === i4.ComponentType.PAGE || type === i4.ComponentType.PARTIAL) {
@@ -248,9 +246,6 @@
248
246
  else if (type === i4.ComponentType.PREFAB) {
249
247
  return i4.getPrefabMinJsonUrl(fragmentName);
250
248
  }
251
- else if (type === i4.ComponentType.WIDGET) {
252
- return `./custom-widgets/${fragmentName}/page.min.json`;
253
- }
254
249
  };
255
250
  const scriptCache = new Map();
256
251
  const execScript = (script, identifier, ctx, instance, app, utils) => {
@@ -300,11 +295,6 @@
300
295
  selector = `app-prefab-${componentName}`;
301
296
  context = 'Prefab';
302
297
  break;
303
- case i4.ComponentType.WIDGET:
304
- BaseClass = i4.BaseCustomWidgetComponent;
305
- selector = `app-custom-${componentName}`;
306
- context = 'Widget';
307
- break;
308
298
  }
309
299
  let DynamicComponent = class DynamicComponent extends BaseClass {
310
300
  constructor(injector) {
@@ -322,9 +312,6 @@
322
312
  case i4.ComponentType.PREFAB:
323
313
  this.prefabName = componentName;
324
314
  break;
325
- case i4.ComponentType.WIDGET:
326
- this.customWidgetName = componentName;
327
- break;
328
315
  }
329
316
  super.init();
330
317
  }
@@ -360,18 +347,17 @@
360
347
  const url = getFragmentUrl(componentName, componentType, options);
361
348
  const resource = fragmentCache.get(url);
362
349
  if (resource) {
363
- return resource;
350
+ return Promise.resolve(resource);
364
351
  }
365
- const promise = (((componentType === i4.ComponentType.WIDGET && !customWidgets__namespace[componentName]) || componentType !== i4.ComponentType.WIDGET) ? this.resouceMngr.get(url, true) : Promise.resolve(customWidgets__namespace[componentName]))
366
- .then(({ markup, script, styles, variables, config }) => {
352
+ return this.resouceMngr.get(url, true)
353
+ .then(({ markup, script, styles, variables }) => {
367
354
  const response = {
368
355
  markup: transpiler.transpile(_decodeURIComponent(markup)).markup,
369
356
  script: _decodeURIComponent(script),
370
357
  styles: transpiler.scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),
371
- variables: i5.getValidJSON(_decodeURIComponent(variables)),
372
- ...(config ? { config: i5.getValidJSON(_decodeURIComponent(config)) } : {})
358
+ variables: i5.getValidJSON(_decodeURIComponent(variables))
373
359
  };
374
- fragmentCache.set(url, Promise.resolve(response));
360
+ fragmentCache.set(url, response);
375
361
  return response;
376
362
  }, e => {
377
363
  const status = e.details.status;
@@ -381,8 +367,6 @@
381
367
  };
382
368
  return Promise.reject(errorMsgMap[status]);
383
369
  });
384
- fragmentCache.set(url, promise);
385
- return promise;
386
370
  }
387
371
  constructor(resouceMngr, app, appManager, compiler) {
388
372
  super();
@@ -544,7 +528,6 @@
544
528
  carousel$1.CarouselModule,
545
529
  login.LoginModule,
546
530
  marquee.MarqueeModule,
547
- custom.CustomModule,
548
531
  page.PageModule,
549
532
  footer.FooterModule,
550
533
  header.HeaderModule,
@@ -602,7 +585,6 @@
602
585
  { provide: i4.AppExtensionProvider, useClass: AppExtensionProviderService },
603
586
  { provide: i4.ComponentRefProvider, useClass: ComponentRefProviderService },
604
587
  { provide: i5.PartialRefProvider, useClass: ComponentRefProviderService },
605
- { provide: i5.CustomWidgetRefProvider, useClass: ComponentRefProviderService },
606
588
  { provide: i4.PrefabConfigProvider, useClass: PrefabConfigProviderService },
607
589
  { provide: i1.RouteReuseStrategy, useClass: i4.WmRouteReuseStrategy }
608
590
  ],
@@ -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, CustomWidgetRefProvider } from '@wm/core';
20
+ import { App, getWmProjectProperties, PartialRefProvider } 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,7 +66,6 @@ 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';
70
69
  import { PageModule } from '@wm/components/page';
71
70
  import { FooterModule } from '@wm/components/page/footer';
72
71
  import { HeaderModule } from '@wm/components/page/header';
@@ -166,7 +165,6 @@ const componentsModule = [
166
165
  CarouselModule,
167
166
  LoginModule,
168
167
  MarqueeModule,
169
- CustomModule,
170
168
  PageModule,
171
169
  FooterModule,
172
170
  HeaderModule,
@@ -224,7 +222,6 @@ AppModule = __decorate([
224
222
  { provide: AppExtensionProvider, useClass: AppExtensionProviderService },
225
223
  { provide: ComponentRefProvider, useClass: ComponentRefProviderService },
226
224
  { provide: PartialRefProvider, useClass: ComponentRefProviderService },
227
- { provide: CustomWidgetRefProvider, useClass: ComponentRefProviderService },
228
225
  { provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },
229
226
  { provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy }
230
227
  ],
@@ -233,4 +230,4 @@ AppModule = __decorate([
233
230
  __metadata("design:paramtypes", [App, Injector, ComponentRefProvider])
234
231
  ], AppModule);
235
232
  export { AppModule };
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8s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ZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVSZXVzZVN0cmF0ZWd5LCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSwgSHR0cENsaWVudFhzcmZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHlwZWFoZWFkTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90eXBlYWhlYWQnO1xuaW1wb3J0IHsgVGltZXBpY2tlck1vZHVsZSBhcyBuZ3hUaW1lcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyJztcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wcm9ncmVzc2Jhcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIGFzIG5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgYXMgbmd4UG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5cbmltcG9ydCB7IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICduZy1jaXJjbGUtcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVG9hc3ROb0FuaW1hdGlvbk1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQ2Fyb3VzZWxNb2R1bGUgYXMgbmd4Q2Fyb3VzZWxNb2R1bGUsIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jYXJvdXNlbCc7XG5cbmltcG9ydCB7QXBwLCBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLCBQYXJ0aWFsUmVmUHJvdmlkZXIsIEN1c3RvbVdpZGdldFJlZlByb3ZpZGVyfSBmcm9tICdAd20vY29yZSc7XG4vLyBCYXNpYyB3aWRnZXRzXG5cbmltcG9ydCB7IEJhc2ljTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9wcm9ncmVzcyc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL3JpY2gtdGV4dC1lZGl0b3InO1xuaW1wb3J0IHsgU2VhcmNoTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvc2VhcmNoJztcbmltcG9ydCB7IFRyZWVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy90cmVlJztcblxuLy8gaW5wdXRcbmltcG9ydCB7IElucHV0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9jYWxlbmRhcic7XG5pbXBvcnQgeyBDaGlwc01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2NoaXBzJztcbmltcG9ydCB7IENvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY29sb3ItcGlja2VyJztcbmltcG9ydCB7IEN1cnJlbmN5TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY3VycmVuY3knO1xuaW1wb3J0IHsgRXBvY2hNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9lcG9jaCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvZmlsZS11cGxvYWQnO1xuaW1wb3J0IHsgUmF0aW5nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvcmF0aW5nJztcbmltcG9ydCB7IFNsaWRlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L3NsaWRlcic7XG5cbmltcG9ydCB7IE1vYmlsZVJ1bnRpbWVEeW5hbWljTW9kdWxlLCBNT0JJTEVfQ09NUE9ORU5UX01PRFVMRVNfRk9SX1JPT1QgfSBmcm9tICdAd20vbW9iaWxlL3J1bnRpbWUvZHluYW1pYyc7XG5cbi8vIERhdGFcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2NhcmQnO1xuaW1wb3J0IHsgRm9ybU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvZm9ybSc7XG5pbXBvcnQgeyBMaXN0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0JztcbmltcG9ydCB7IExpdmVUYWJsZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS90YWJsZSc7XG5cbi8vIENoYXJ0XG5pbXBvcnQgeyBDaGFydE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NoYXJ0JztcblxuLy8gQ29udGFpbmVyc1xuaW1wb3J0IHsgQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9hY2NvcmRpb24nO1xuaW1wb3J0IHsgTGluZWFyTGF5b3V0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9saW5lYXItbGF5b3V0JztcbmltcG9ydCB7IExheW91dEdyaWRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xheW91dC1ncmlkJztcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9wYW5lbCc7XG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90YWJzJztcbmltcG9ydCB7IFRpbGVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RpbGUnO1xuaW1wb3J0IHsgV2l6YXJkTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy93aXphcmQnO1xuXG4vLyBEaWFsb2dzXG5pbXBvcnQgeyBBbGVydERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvYWxlcnQtZGlhbG9nJztcbmltcG9ydCB7IElmcmFtZURpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvaWZyYW1lLWRpYWxvZyc7XG5pbXBvcnQgeyBMb2dpbkRpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvbG9naW4tZGlhbG9nJztcbmltcG9ydCB7IFBhcnRpYWxEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL3BhcnRpYWwtZGlhbG9nJztcblxuLy8gTmF2aWdhdGlvblxuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBNZW51TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZW51JztcbmltcG9ydCB7IE5hdmJhck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BvcG92ZXInO1xuXG4vLyBBZHZhbmNlZFxuaW1wb3J0IHsgQ2Fyb3VzZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jYXJvdXNlbCc7XG5pbXBvcnQgeyBMb2dpbk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2FkdmFuY2VkL2xvZ2luJztcbmltcG9ydCB7IE1hcnF1ZWVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9hZHZhbmNlZC9tYXJxdWVlJztcbmltcG9ydCB7IEN1c3RvbU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2FkdmFuY2VkL2N1c3RvbSc7XG5cbmltcG9ydCB7IFBhZ2VNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEZvb3Rlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvZm9vdGVyJztcbmltcG9ydCB7IEhlYWRlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvaGVhZGVyJztcbmltcG9ydCB7IExlZnRQYW5lbE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvbGVmdC1wYW5lbCc7XG5pbXBvcnQgeyBSaWdodFBhbmVsTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS9yaWdodC1wYW5lbCc7XG5pbXBvcnQgeyBUb3BOYXZNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL3RvcC1uYXYnO1xuXG5pbXBvcnQgeyBQcmVmYWJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuXG5pbXBvcnQge1xuICAgIEFwcENvbXBvbmVudCxcbiAgICBBcHBKU1Byb3ZpZGVyLFxuICAgIEFwcFZhcmlhYmxlc1Byb3ZpZGVyLFxuICAgIENvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIFByZWZhYkNvbmZpZ1Byb3ZpZGVyLFxuICAgIFdtUm91dGVSZXVzZVN0cmF0ZWd5LFxuICAgIFdNX01PRFVMRVNfRk9SX1JPT1QsXG4gICAgUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTLFxuICAgIEFwcEV4dGVuc2lvblByb3ZpZGVyXG59IGZyb20gJ0B3bS9ydW50aW1lL2Jhc2UnO1xuXG5pbXBvcnQgeyByb3V0ZXMgfSBmcm9tICcuL2FwcC5yb3V0ZXMnO1xuaW1wb3J0IHsgUGFnZVdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGFnZS13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBKU1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWpzLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFyaWFibGVzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAtdmFyaWFibGVzLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAtZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb21wb25lbnQtcmVmLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmFiQ29uZmlnUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmVmYWItY29uZmlnLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLXJlc291cmNlLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCByb3V0ZXJNb2R1bGUgPSBSb3V0ZXJNb2R1bGUuZm9yUm9vdChyb3V0ZXMsIHsgdXNlSGFzaDogdHJ1ZSwgc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbjogJ3RvcCcgfSk7XG5leHBvcnQgY29uc3QgdG9hc3RyTW9kdWxlID0gVG9hc3ROb0FuaW1hdGlvbk1vZHVsZS5mb3JSb290KHsgbWF4T3BlbmVkOiAxLCBhdXRvRGlzbWlzczogdHJ1ZSB9KTtcblxuLy8gSW4gYW5ndWxhciAxNSwgeHNyZiBoZWFkZXJOYW1lIHNob3VsZCBub3QgYmUgbnVsbC4gQW5ndWxhciAxNSBpcyBub3QgdXNpbmcgZGVmYXVsdCBoZWFkZXIgdmFsdWUgbGlrZSBpdCB1c2VkIHRvIHNlbmQgaW4gY2FsbHNcbi8vIGZvciBhbmd1bGFyIDEyIGlmIHRoZSBoZWFkZXJOYW1lIGlzIG51bGwgLiBUaGUgdXNlciBoYXMgdG8gdGFrZSBjYXJlIG9mIG5vdCBzZW5kaW5nIG51bGwgdmFsdWVzLiBUaGVuIG5nIDE1IHVzZXMgZGVmYXVsdCB2YWx1ZSBmb3IgaGVhZGVyTmFtZVxubGV0IHhzcmZIZWFkZXJOYW1lID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnhzcmZfaGVhZGVyX25hbWU7XG5sZXQgeHNyZk9wdGlvbnMgPSB7XG4gICAgY29va2llTmFtZTogJ3dtX3hzcmZfdG9rZW4nXG59XG5pZih4c3JmSGVhZGVyTmFtZSkge1xuICAgIHhzcmZPcHRpb25zWydoZWFkZXJOYW1lJ10gPSB4c3JmSGVhZGVyTmFtZTtcbn1cbmV4cG9ydCBjb25zdCBodHRwQ2xpZW50WHNyZk1vZHVsZSA9IEh0dHBDbGllbnRYc3JmTW9kdWxlLndpdGhPcHRpb25zKHhzcmZPcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IG1vZGFsTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE1vZGFsTW9kdWxlPiA9IE1vZGFsTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBic0RhdGVQaWNrZXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8QnNEYXRlcGlja2VyTW9kdWxlPiA9IEJzRGF0ZXBpY2tlck1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgdGltZXBpY2tlck1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxuZ3hUaW1lcGlja2VyTW9kdWxlPiA9IG5neFRpbWVwaWNrZXJNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IGJzRHJvcGRvd25Nb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8QnNEcm9wZG93bk1vZHVsZT4gPSBCc0Ryb3Bkb3duTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBwYWdpbmF0aW9uTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPG5neFBhZ2luYXRpb25Nb2R1bGU+ID0gbmd4UGFnaW5hdGlvbk1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgdHlwZWFoZWFkTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFR5cGVhaGVhZE1vZHVsZT4gPSBUeXBlYWhlYWRNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHByb2dyZXNzYmFyTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFByb2dyZXNzYmFyTW9kdWxlPiA9IFByb2dyZXNzYmFyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBjYXJvdXNlbE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxuZ3hDYXJvdXNlbE1vZHVsZT4gPSBuZ3hDYXJvdXNlbE1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgcG9wb3Zlck1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxuZ3hQb3BvdmVyTW9kdWxlPiA9IG5neFBvcG92ZXJNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IG5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmdDaXJjbGVQcm9ncmVzc01vZHVsZT4gPSBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLmZvclJvb3Qoe30pO1xuZXhwb3J0IGNvbnN0IHRvb2x0aXBNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8VG9vbHRpcE1vZHVsZT4gPSBUb29sdGlwTW9kdWxlLmZvclJvb3QoKTtcblxuY29uc3QgY29tcG9uZW50c01vZHVsZSA9IFtcbiAgICAvLyBOR1ggQm9vdHN0cmFwXG4gICAgQnNEYXRlcGlja2VyTW9kdWxlLFxuICAgIG5neFRpbWVwaWNrZXJNb2R1bGUsXG4gICAgQnNEcm9wZG93bk1vZHVsZSxcbiAgICBuZ3hQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFR5cGVhaGVhZE1vZHVsZSxcbiAgICBQcm9ncmVzc2Jhck1vZHVsZSxcbiAgICBuZ3hDYXJvdXNlbE1vZHVsZSxcbiAgICBuZ3hQb3BvdmVyTW9kdWxlLFxuICAgIE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcblxuICAgIC8vIEJhc2ljIHdpZGdldHNcbiAgICBCYXNpY01vZHVsZSxcbiAgICBQcm9ncmVzc01vZHVsZSxcbiAgICBSaWNoVGV4dEVkaXRvck1vZHVsZSxcbiAgICBTZWFyY2hNb2R1bGUsXG4gICAgVHJlZU1vZHVsZSxcblxuICAgIC8vIElucHV0XG4gICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgQ2hpcHNNb2R1bGUsXG4gICAgQ29sb3JQaWNrZXJNb2R1bGUsXG4gICAgQ3VycmVuY3lNb2R1bGUsXG4gICAgRXBvY2hNb2R1bGUsXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBSYXRpbmdNb2R1bGUsXG4gICAgU2xpZGVyTW9kdWxlLFxuXG4gICAgLy8gRGF0YVxuICAgIENhcmRNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBMaXN0TW9kdWxlLFxuICAgIExpdmVUYWJsZU1vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFRhYmxlTW9kdWxlLFxuXG4gICAgLy8gY2hhcnRcbiAgICBDaGFydE1vZHVsZSxcblxuICAgIC8vIGNvbnRhaW5lciBtb2R1bGVzXG4gICAgQWNjb3JkaW9uTW9kdWxlLFxuICAgIExpbmVhckxheW91dE1vZHVsZSxcbiAgICBMYXlvdXRHcmlkTW9kdWxlLFxuICAgIFBhbmVsTW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgVGlsZU1vZHVsZSxcbiAgICBXaXphcmRNb2R1bGUsXG5cbiAgICAvLyBkaWFsb2dzXG4gICAgQWxlcnREaWFsb2dNb2R1bGUsXG4gICAgSWZyYW1lRGlhbG9nTW9kdWxlLFxuICAgIExvZ2luRGlhbG9nTW9kdWxlLFxuICAgIFBhcnRpYWxEaWFsb2dNb2R1bGUsXG5cbiAgICAvLyBuYXZpZ2F0aW9uXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBNZW51TW9kdWxlLFxuICAgIE5hdmJhck1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuXG4gICAgLy8gQWR2YW5jZWRcbiAgICBDYXJvdXNlbE1vZHVsZSxcbiAgICBMb2dpbk1vZHVsZSxcbiAgICBNYXJxdWVlTW9kdWxlLFxuICAgIEN1c3RvbU1vZHVsZSxcblxuICAgIFBhZ2VNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBMZWZ0UGFuZWxNb2R1bGUsXG4gICAgUmlnaHRQYW5lbE1vZHVsZSxcbiAgICBUb3BOYXZNb2R1bGUsXG5cbiAgICBQcmVmYWJNb2R1bGVcbl07XG5cblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKC4uLmNvbXBvbmVudHNNb2R1bGUpO1xuUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTLnB1c2goLi4uTU9CSUxFX0NPTVBPTkVOVF9NT0RVTEVTX0ZPUl9ST09UKTtcblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlKTtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgUGFnZVdyYXBwZXJDb21wb25lbnRcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQnJvd3Nlck1vZHVsZSxcbiAgICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIG1vZGFsTW9kdWxlLFxuICAgICAgICBic0RhdGVQaWNrZXJNb2R1bGUsXG4gICAgICAgIHRpbWVwaWNrZXJNb2R1bGUsXG4gICAgICAgIGJzRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIHBhZ2luYXRpb25Nb2R1bGUsXG4gICAgICAgIHR5cGVhaGVhZE1vZHVsZSxcbiAgICAgICAgdG9vbHRpcE1vZHVsZSxcbiAgICAgICAgcHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgICAgIGNhcm91c2VsTW9kdWxlLFxuICAgICAgICBwb3BvdmVyTW9kdWxlLFxuICAgICAgICBuZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuXG4gICAgICAgIHJvdXRlck1vZHVsZSxcbiAgICAgICAgdG9hc3RyTW9kdWxlLFxuICAgICAgICBodHRwQ2xpZW50WHNyZk1vZHVsZSxcblxuICAgICAgICBNb2JpbGVSdW50aW1lRHluYW1pY01vZHVsZSxcbiAgICAgICAgV01fTU9EVUxFU19GT1JfUk9PVFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogQXBwSlNQcm92aWRlciwgdXNlQ2xhc3M6IEFwcEpTUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwVmFyaWFibGVzUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBWYXJpYWJsZXNQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBcHBFeHRlbnNpb25Qcm92aWRlcix1c2VDbGFzczpBcHBFeHRlbnNpb25Qcm92aWRlclNlcnZpY2V9LFxuICAgICAgICB7IHByb3ZpZGU6IENvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUGFydGlhbFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ3VzdG9tV2lkZ2V0UmVmUHJvdmlkZXIsIHVzZUNsYXNzOiBDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBQcmVmYWJDb25maWdQcm92aWRlciwgdXNlQ2xhc3M6IFByZWZhYkNvbmZpZ1Byb3ZpZGVyU2VydmljZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFJvdXRlUmV1c2VTdHJhdGVneSwgdXNlQ2xhc3M6IFdtUm91dGVSZXVzZVN0cmF0ZWd5IH1cbiAgICBdLFxuICAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwLCBwcml2YXRlIGluajogSW5qZWN0b3IsIHByaXZhdGUgY29tcG9uZW50UmVmUHJvdmlkZXI6IENvbXBvbmVudFJlZlByb3ZpZGVyKSB7XG4gICAgICAgIGlmICh3aW5kb3dbJ2NvcmRvdmEnXSkge1xuICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGNhY2hlZCB1cmxzIG9uIGxvZ291dCwgdG8gbG9hZCB0aGUgTG9naW4gUGFnZSBhbmQgbm90IHRoZSBNYWluIFBhZ2UgYXMgYXBwIHJlbG9hZCh3aW5kb3cubG9jYXRpb24ucmVsb2FkKSBpcyBub3QgaW52b2tlZCBpbiBtb2JpbGVcbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgndXNlckxvZ2dlZE91dCcsIHRoaXMuY29tcG9uZW50UmVmUHJvdmlkZXIuY2xlYXJDb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuYmluZCh0aGlzLmNvbXBvbmVudFJlZlByb3ZpZGVyKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtZHluYW1pYy9zcmMvYXBwL2FwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8s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O1lBQ2IsdUJBQXVCO1lBQ3ZCLFlBQVk7WUFDWixZQUFZO1lBQ1osZ0JBQWdCO1lBRWhCLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGFBQWE7WUFDYixzQkFBc0I7WUFFdEIsWUFBWTtZQUNaLFlBQVk7WUFDWixvQkFBb0I7WUFFcEIsMEJBQTBCO1lBQzFCLG1CQUFtQjtTQUN0QjtRQUNELFNBQVMsRUFBRTtZQUNQLHlCQUF5QjtZQUN6QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO1lBQzFELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtZQUN4RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxRQUFRLEVBQUMsMkJBQTJCLEVBQUM7WUFDckUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO1lBQ3hFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRTtZQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUU7WUFDeEUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO1NBQ2xFO1FBQ0QsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0tBQzVCLENBQUM7cUNBRTJCLEdBQUcsRUFBZSxRQUFRLEVBQWdDLG9CQUFvQjtHQUQ5RixTQUFTLENBT3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVSZXVzZVN0cmF0ZWd5LCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSwgSHR0cENsaWVudFhzcmZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHlwZWFoZWFkTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90eXBlYWhlYWQnO1xuaW1wb3J0IHsgVGltZXBpY2tlck1vZHVsZSBhcyBuZ3hUaW1lcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyJztcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wcm9ncmVzc2Jhcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIGFzIG5neFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgYXMgbmd4UG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5cbmltcG9ydCB7IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICduZy1jaXJjbGUtcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVG9hc3ROb0FuaW1hdGlvbk1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQ2Fyb3VzZWxNb2R1bGUgYXMgbmd4Q2Fyb3VzZWxNb2R1bGUsIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jYXJvdXNlbCc7XG5cbmltcG9ydCB7QXBwLCBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLCBQYXJ0aWFsUmVmUHJvdmlkZXJ9IGZyb20gJ0B3bS9jb3JlJztcbi8vIEJhc2ljIHdpZGdldHNcblxuaW1wb3J0IHsgQmFzaWNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYyc7XG5pbXBvcnQgeyBQcm9ncmVzc01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL3Byb2dyZXNzJztcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvcmljaC10ZXh0LWVkaXRvcic7XG5pbXBvcnQgeyBTZWFyY2hNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNpYy9zZWFyY2gnO1xuaW1wb3J0IHsgVHJlZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2ljL3RyZWUnO1xuXG4vLyBpbnB1dFxuaW1wb3J0IHsgSW5wdXRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dCc7XG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2NhbGVuZGFyJztcbmltcG9ydCB7IENoaXBzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvY2hpcHMnO1xuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9jb2xvci1waWNrZXInO1xuaW1wb3J0IHsgQ3VycmVuY3lNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeSc7XG5pbXBvcnQgeyBFcG9jaE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2Vwb2NoJztcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9maWxlLXVwbG9hZCc7XG5pbXBvcnQgeyBSYXRpbmdNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9yYXRpbmcnO1xuaW1wb3J0IHsgU2xpZGVyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvc2xpZGVyJztcblxuaW1wb3J0IHsgTW9iaWxlUnVudGltZUR5bmFtaWNNb2R1bGUsIE1PQklMRV9DT01QT05FTlRfTU9EVUxFU19GT1JfUk9PVCB9IGZyb20gJ0B3bS9tb2JpbGUvcnVudGltZS9keW5hbWljJztcblxuLy8gRGF0YVxuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvY2FyZCc7XG5pbXBvcnQgeyBGb3JtTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9mb3JtJztcbmltcG9ydCB7IExpc3RNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2xpc3QnO1xuaW1wb3J0IHsgTGl2ZVRhYmxlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlJztcbmltcG9ydCB7IFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL3RhYmxlJztcblxuLy8gQ2hhcnRcbmltcG9ydCB7IENoYXJ0TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvY2hhcnQnO1xuXG4vLyBDb250YWluZXJzXG5pbXBvcnQgeyBBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL2FjY29yZGlvbic7XG5pbXBvcnQgeyBMaW5lYXJMYXlvdXRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xpbmVhci1sYXlvdXQnO1xuaW1wb3J0IHsgTGF5b3V0R3JpZE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGF5b3V0LWdyaWQnO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL3BhbmVsJztcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RhYnMnO1xuaW1wb3J0IHsgVGlsZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvdGlsZSc7XG5pbXBvcnQgeyBXaXphcmRNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9jb250YWluZXJzL3dpemFyZCc7XG5cbi8vIERpYWxvZ3NcbmltcG9ydCB7IEFsZXJ0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2cnO1xuaW1wb3J0IHsgSWZyYW1lRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9pZnJhbWUtZGlhbG9nJztcbmltcG9ydCB7IExvZ2luRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9sb2dpbi1kaWFsb2cnO1xuaW1wb3J0IHsgUGFydGlhbERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2cnO1xuXG4vLyBOYXZpZ2F0aW9uXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1iJztcbmltcG9ydCB7IE1lbnVNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL21lbnUnO1xuaW1wb3J0IHsgTmF2YmFyTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZiYXInO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL25hdmlnYXRpb24vcG9wb3Zlcic7XG5cbi8vIEFkdmFuY2VkXG5pbXBvcnQgeyBDYXJvdXNlbE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2FkdmFuY2VkL2Nhcm91c2VsJztcbmltcG9ydCB7IExvZ2luTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvbG9naW4nO1xuaW1wb3J0IHsgTWFycXVlZU1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2FkdmFuY2VkL21hcnF1ZWUnO1xuXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBGb290ZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2Zvb3Rlcic7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2hlYWRlcic7XG5pbXBvcnQgeyBMZWZ0UGFuZWxNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wYWdlL2xlZnQtcGFuZWwnO1xuaW1wb3J0IHsgUmlnaHRQYW5lbE1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3BhZ2UvcmlnaHQtcGFuZWwnO1xuaW1wb3J0IHsgVG9wTmF2TW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcGFnZS90b3AtbmF2JztcblxuaW1wb3J0IHsgUHJlZmFiTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvcHJlZmFiJztcblxuaW1wb3J0IHtcbiAgICBBcHBDb21wb25lbnQsXG4gICAgQXBwSlNQcm92aWRlcixcbiAgICBBcHBWYXJpYWJsZXNQcm92aWRlcixcbiAgICBDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBQcmVmYWJDb25maWdQcm92aWRlcixcbiAgICBXbVJvdXRlUmV1c2VTdHJhdGVneSxcbiAgICBXTV9NT0RVTEVTX0ZPUl9ST09ULFxuICAgIFJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUyxcbiAgICBBcHBFeHRlbnNpb25Qcm92aWRlclxufSBmcm9tICdAd20vcnVudGltZS9iYXNlJztcblxuaW1wb3J0IHsgcm91dGVzIH0gZnJvbSAnLi9hcHAucm91dGVzJztcbmltcG9ydCB7IFBhZ2VXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2Utd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwSlNQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1qcy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFZhcmlhYmxlc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLXZhcmlhYmxlcy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV4dGVuc2lvblByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWV4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZhYkNvbmZpZ1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcHJlZmFiLWNvbmZpZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1yZXNvdXJjZS1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgY29uc3Qgcm91dGVyTW9kdWxlID0gUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzLCB7IHVzZUhhc2g6IHRydWUsIHNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb246ICd0b3AnIH0pO1xuZXhwb3J0IGNvbnN0IHRvYXN0ck1vZHVsZSA9IFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUuZm9yUm9vdCh7IG1heE9wZW5lZDogMSwgYXV0b0Rpc21pc3M6IHRydWUgfSk7XG5cbi8vIEluIGFuZ3VsYXIgMTUsIHhzcmYgaGVhZGVyTmFtZSBzaG91bGQgbm90IGJlIG51bGwuIEFuZ3VsYXIgMTUgaXMgbm90IHVzaW5nIGRlZmF1bHQgaGVhZGVyIHZhbHVlIGxpa2UgaXQgdXNlZCB0byBzZW5kIGluIGNhbGxzXG4vLyBmb3IgYW5ndWxhciAxMiBpZiB0aGUgaGVhZGVyTmFtZSBpcyBudWxsIC4gVGhlIHVzZXIgaGFzIHRvIHRha2UgY2FyZSBvZiBub3Qgc2VuZGluZyBudWxsIHZhbHVlcy4gVGhlbiBuZyAxNSB1c2VzIGRlZmF1bHQgdmFsdWUgZm9yIGhlYWRlck5hbWVcbmxldCB4c3JmSGVhZGVyTmFtZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS54c3JmX2hlYWRlcl9uYW1lO1xubGV0IHhzcmZPcHRpb25zID0ge1xuICAgIGNvb2tpZU5hbWU6ICd3bV94c3JmX3Rva2VuJ1xufVxuaWYoeHNyZkhlYWRlck5hbWUpIHtcbiAgICB4c3JmT3B0aW9uc1snaGVhZGVyTmFtZSddID0geHNyZkhlYWRlck5hbWU7XG59XG5leHBvcnQgY29uc3QgaHR0cENsaWVudFhzcmZNb2R1bGUgPSBIdHRwQ2xpZW50WHNyZk1vZHVsZS53aXRoT3B0aW9ucyh4c3JmT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBtb2RhbE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxNb2RhbE1vZHVsZT4gPSBNb2RhbE1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgYnNEYXRlUGlja2VyTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEJzRGF0ZXBpY2tlck1vZHVsZT4gPSBCc0RhdGVwaWNrZXJNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHRpbWVwaWNrZXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4VGltZXBpY2tlck1vZHVsZT4gPSBuZ3hUaW1lcGlja2VyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBic0Ryb3Bkb3duTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEJzRHJvcGRvd25Nb2R1bGU+ID0gQnNEcm9wZG93bk1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgcGFnaW5hdGlvbk1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxuZ3hQYWdpbmF0aW9uTW9kdWxlPiA9IG5neFBhZ2luYXRpb25Nb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHR5cGVhaGVhZE1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxUeXBlYWhlYWRNb2R1bGU+ID0gVHlwZWFoZWFkTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBwcm9ncmVzc2Jhck1vZHVsZTogTW9kdWxlV2l0aFByb3ZpZGVyczxQcm9ncmVzc2Jhck1vZHVsZT4gPSBQcm9ncmVzc2Jhck1vZHVsZS5mb3JSb290KCk7XG5leHBvcnQgY29uc3QgY2Fyb3VzZWxNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4Q2Fyb3VzZWxNb2R1bGU+ID0gbmd4Q2Fyb3VzZWxNb2R1bGUuZm9yUm9vdCgpO1xuZXhwb3J0IGNvbnN0IHBvcG92ZXJNb2R1bGU6IE1vZHVsZVdpdGhQcm92aWRlcnM8bmd4UG9wb3Zlck1vZHVsZT4gPSBuZ3hQb3BvdmVyTW9kdWxlLmZvclJvb3QoKTtcbmV4cG9ydCBjb25zdCBuZ0NpcmNsZVByb2dyZXNzTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGU+ID0gTmdDaXJjbGVQcm9ncmVzc01vZHVsZS5mb3JSb290KHt9KTtcbmV4cG9ydCBjb25zdCB0b29sdGlwTW9kdWxlOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRvb2x0aXBNb2R1bGU+ID0gVG9vbHRpcE1vZHVsZS5mb3JSb290KCk7XG5cbmNvbnN0IGNvbXBvbmVudHNNb2R1bGUgPSBbXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcblxuICAgIFBhZ2VNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBMZWZ0UGFuZWxNb2R1bGUsXG4gICAgUmlnaHRQYW5lbE1vZHVsZSxcbiAgICBUb3BOYXZNb2R1bGUsXG5cbiAgICBQcmVmYWJNb2R1bGVcbl07XG5cblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKC4uLmNvbXBvbmVudHNNb2R1bGUpO1xuUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTLnB1c2goLi4uTU9CSUxFX0NPTVBPTkVOVF9NT0RVTEVTX0ZPUl9ST09UKTtcblJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UUy5wdXNoKEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlKTtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgUGFnZVdyYXBwZXJDb21wb25lbnRcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQnJvd3Nlck1vZHVsZSxcbiAgICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIG1vZGFsTW9kdWxlLFxuICAgICAgICBic0RhdGVQaWNrZXJNb2R1bGUsXG4gICAgICAgIHRpbWVwaWNrZXJNb2R1bGUsXG4gICAgICAgIGJzRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIHBhZ2luYXRpb25Nb2R1bGUsXG4gICAgICAgIHR5cGVhaGVhZE1vZHVsZSxcbiAgICAgICAgdG9vbHRpcE1vZHVsZSxcbiAgICAgICAgcHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgICAgIGNhcm91c2VsTW9kdWxlLFxuICAgICAgICBwb3BvdmVyTW9kdWxlLFxuICAgICAgICBuZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuXG4gICAgICAgIHJvdXRlck1vZHVsZSxcbiAgICAgICAgdG9hc3RyTW9kdWxlLFxuICAgICAgICBodHRwQ2xpZW50WHNyZk1vZHVsZSxcblxuICAgICAgICBNb2JpbGVSdW50aW1lRHluYW1pY01vZHVsZSxcbiAgICAgICAgV01fTU9EVUxFU19GT1JfUk9PVFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFwcFJlc291cmNlTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogQXBwSlNQcm92aWRlciwgdXNlQ2xhc3M6IEFwcEpTUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQXBwVmFyaWFibGVzUHJvdmlkZXIsIHVzZUNsYXNzOiBBcHBWYXJpYWJsZXNQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBBcHBFeHRlbnNpb25Qcm92aWRlcix1c2VDbGFzczpBcHBFeHRlbnNpb25Qcm92aWRlclNlcnZpY2V9LFxuICAgICAgICB7IHByb3ZpZGU6IENvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUGFydGlhbFJlZlByb3ZpZGVyLCB1c2VDbGFzczogQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUHJlZmFiQ29uZmlnUHJvdmlkZXIsIHVzZUNsYXNzOiBQcmVmYWJDb25maWdQcm92aWRlclNlcnZpY2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBSb3V0ZVJldXNlU3RyYXRlZ3ksIHVzZUNsYXNzOiBXbVJvdXRlUmV1c2VTdHJhdGVneSB9XG4gICAgXSxcbiAgICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSBpbmo6IEluamVjdG9yLCBwcml2YXRlIGNvbXBvbmVudFJlZlByb3ZpZGVyOiBDb21wb25lbnRSZWZQcm92aWRlcikge1xuICAgICAgICBpZiAod2luZG93Wydjb3Jkb3ZhJ10pIHtcbiAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBjYWNoZWQgdXJscyBvbiBsb2dvdXQsIHRvIGxvYWQgdGhlIExvZ2luIFBhZ2UgYW5kIG5vdCB0aGUgTWFpbiBQYWdlIGFzIGFwcCByZWxvYWQod2luZG93LmxvY2F0aW9uLnJlbG9hZCkgaXMgbm90IGludm9rZWQgaW4gbW9iaWxlXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3VzZXJMb2dnZWRPdXQnLCB0aGlzLmNvbXBvbmVudFJlZlByb3ZpZGVyLmNsZWFyQ29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmJpbmQodGhpcy5jb21wb25lbnRSZWZQcm92aWRlcikpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -2,10 +2,9 @@ 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, BaseCustomWidgetComponent, BasePrefabComponent, ComponentRefProvider, ComponentType, RuntimeBaseModule, getPrefabMinJsonUrl, getPrefabPartialJsonUrl } from '@wm/runtime/base';
5
+ import { AppManagerService, BasePageComponent, BasePartialComponent, BasePrefabComponent, ComponentRefProvider, ComponentType, RuntimeBaseModule, getPrefabMinJsonUrl, getPrefabPartialJsonUrl } from '@wm/runtime/base';
6
6
  import { AppResourceManagerService } from './app-resource-manager.service';
7
7
  import { isString, isUndefined } from "lodash-es";
8
- import * as customWidgets from '@wavemaker/custom-widgets-m3';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "./app-resource-manager.service";
11
10
  import * as i2 from "@wm/core";
@@ -16,7 +15,6 @@ const componentFactoryRefCache = new Map();
16
15
  componentFactoryRefCache.set(ComponentType.PAGE, new Map());
17
16
  componentFactoryRefCache.set(ComponentType.PARTIAL, new Map());
18
17
  componentFactoryRefCache.set(ComponentType.PREFAB, new Map());
19
- componentFactoryRefCache.set(ComponentType.WIDGET, new Map());
20
18
  const _decodeURIComponent = (str) => decodeURIComponent(str.replace(/\+/g, ' '));
21
19
  const getFragmentUrl = (fragmentName, type, options) => {
22
20
  if (type === ComponentType.PAGE || type === ComponentType.PARTIAL) {
@@ -25,9 +23,6 @@ const getFragmentUrl = (fragmentName, type, options) => {
25
23
  else if (type === ComponentType.PREFAB) {
26
24
  return getPrefabMinJsonUrl(fragmentName);
27
25
  }
28
- else if (type === ComponentType.WIDGET) {
29
- return `./custom-widgets/${fragmentName}/page.min.json`;
30
- }
31
26
  };
32
27
  const scriptCache = new Map();
33
28
  const execScript = (script, identifier, ctx, instance, app, utils) => {
@@ -77,11 +72,6 @@ const getDynamicComponent = (componentName, type, template, css, script, variabl
77
72
  selector = `app-prefab-${componentName}`;
78
73
  context = 'Prefab';
79
74
  break;
80
- case ComponentType.WIDGET:
81
- BaseClass = BaseCustomWidgetComponent;
82
- selector = `app-custom-${componentName}`;
83
- context = 'Widget';
84
- break;
85
75
  }
86
76
  let DynamicComponent = class DynamicComponent extends BaseClass {
87
77
  constructor(injector) {
@@ -99,9 +89,6 @@ const getDynamicComponent = (componentName, type, template, css, script, variabl
99
89
  case ComponentType.PREFAB:
100
90
  this.prefabName = componentName;
101
91
  break;
102
- case ComponentType.WIDGET:
103
- this.customWidgetName = componentName;
104
- break;
105
92
  }
106
93
  super.init();
107
94
  }
@@ -137,18 +124,17 @@ export class ComponentRefProviderService extends ComponentRefProvider {
137
124
  const url = getFragmentUrl(componentName, componentType, options);
138
125
  const resource = fragmentCache.get(url);
139
126
  if (resource) {
140
- return resource;
127
+ return Promise.resolve(resource);
141
128
  }
142
- const promise = (((componentType === ComponentType.WIDGET && !customWidgets[componentName]) || componentType !== ComponentType.WIDGET) ? this.resouceMngr.get(url, true) : Promise.resolve(customWidgets[componentName]))
143
- .then(({ markup, script, styles, variables, config }) => {
129
+ return this.resouceMngr.get(url, true)
130
+ .then(({ markup, script, styles, variables }) => {
144
131
  const response = {
145
132
  markup: transpile(_decodeURIComponent(markup)).markup,
146
133
  script: _decodeURIComponent(script),
147
134
  styles: scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),
148
- variables: getValidJSON(_decodeURIComponent(variables)),
149
- ...(config ? { config: getValidJSON(_decodeURIComponent(config)) } : {})
135
+ variables: getValidJSON(_decodeURIComponent(variables))
150
136
  };
151
- fragmentCache.set(url, Promise.resolve(response));
137
+ fragmentCache.set(url, response);
152
138
  return response;
153
139
  }, e => {
154
140
  const status = e.details.status;
@@ -158,8 +144,6 @@ export class ComponentRefProviderService extends ComponentRefProvider {
158
144
  };
159
145
  return Promise.reject(errorMsgMap[status]);
160
146
  });
161
- fragmentCache.set(url, promise);
162
- return promise;
163
147
  }
164
148
  constructor(resouceMngr, app, appManager, compiler) {
165
149
  super();
@@ -214,4 +198,4 @@ export class ComponentRefProviderService extends ComponentRefProvider {
214
198
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentRefProviderService, [{
215
199
  type: Injectable
216
200
  }], () => [{ type: i1.AppResourceManagerService }, { type: i2.App }, { type: i3.AppManagerService }, { type: i0.Compiler }], null); })();
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1keW5hbWljL3NyYy9hcHAvc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUNSLFNBQVMsRUFDVCxzQkFBc0IsRUFBYyxNQUFNLEVBQzFDLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDMUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEtBQUssYUFBYSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQVk5RCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0FBRXJDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7QUFFNUUsd0JBQXdCLENBQUMsR0FBRyxDQUFDLGFB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SCx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFFM0YsT0FBTyxtQkFBbUIsQ0FBQztRQUMvQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNQLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUM7Z0JBQ3ZDLHVDQUF1QztnQkFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUNyQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLDJDQUEyQyxFQUN2RSxPQUFPLENBQ1YsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCx1QkFBdUI7SUFDaEIsNkJBQTZCO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzRGQTFGUSwyQkFBMkI7dUVBQTNCLDJCQUEyQixXQUEzQiwyQkFBMkI7O2lGQUEzQiwyQkFBMkI7Y0FEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcGlsZXIsXG4gICAgQ29tcG9uZW50LFxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGZvcndhcmRSZWYsIEluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdG9yLFxuICAgIE5nTW9kdWxlLFxuICAgIE5PX0VSUk9SU19TQ0hFTUEsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcCwgZ2V0VmFsaWRKU09OLCBVc2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyB0cmFuc3BpbGUsIHNjb3BlQ29tcG9uZW50U3R5bGVzIH0gZnJvbSAnQHdtL3RyYW5zcGlsZXInO1xuaW1wb3J0IHtcbiAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICBCYXNlUGFnZUNvbXBvbmVudCxcbiAgICBCYXNlUGFydGlhbENvbXBvbmVudCxcbiAgICBCYXNlQ3VzdG9tV2lkZ2V0Q29tcG9uZW50LFxuICAgIEJhc2VQcmVmYWJDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50VHlwZSxcbiAgICBSdW50aW1lQmFzZU1vZHVsZSxcbiAgICBnZXRQcmVmYWJNaW5Kc29uVXJsLFxuICAgIGdldFByZWZhYlBhcnRpYWxKc29uVXJsXG59IGZyb20gJ0B3bS9ydW50aW1lL2Jhc2UnO1xuXG5pbXBvcnQgeyBBcHBSZXNvdXJjZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtcmVzb3VyY2UtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7aXNTdHJpbmcsIGlzVW5kZWZpbmVkfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21XaWRnZXRzIGZyb20gJ0B3YXZlbWFrZXIvY3VzdG9tLXdpZGdldHMtbTMnO1xuXG5pbnRlcmZhY2UgSVBhZ2VNaW5KU09OIHtcbiAgICBtYXJrdXA6IHN0cmluZztcbiAgICBzY3JpcHQ6IHN0cmluZztcbiAgICBzdHlsZXM6IHN0cmluZztcbiAgICB2YXJpYWJsZXM6IHN0cmluZztcbiAgICBjb25maWc/OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBhbnk7XG5cbmNvbnN0IGZyYWdtZW50Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG53aW5kb3cucmVzb3VyY2VDYWNoZSA9IGZyYWdtZW50Q2FjaGU7XG5cbmNvbnN0IGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZSA9IG5ldyBNYXA8Q29tcG9uZW50VHlwZSwgTWFwPHN0cmluZywgYW55Pj4oKTtcblxuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBBR0UsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBBUlRJQUwsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBSRUZBQiwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSk7XG5jb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuc2V0KENvbXBvbmVudFR5cGUuV0lER0VULCBuZXcgTWFwPHN0cmluZywgYW55PigpKTtcblxuY29uc3QgX2RlY29kZVVSSUNvbXBvbmVudCA9IChzdHI6IHN0cmluZykgPT4gZGVjb2RlVVJJQ29tcG9uZW50KHN0ci5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG5cbmNvbnN0IGdldEZyYWdtZW50VXJsID0gKGZyYWdtZW50TmFtZTogc3RyaW5nLCB0eXBlOiBDb21wb25lbnRUeXBlLCBvcHRpb25zPykgPT4ge1xuICAgIGlmICh0eXBlID09PSBDb21wb25lbnRUeXBlLlBBR0UgfHwgdHlwZSA9PT0gQ29tcG9uZW50VHlwZS5QQVJUSUFMKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMucHJlZmFiID8gZ2V0UHJlZmFiUGFydGlhbEpzb25Vcmwob3B0aW9ucy5wcmVmYWIsIGZyYWdtZW50TmFtZSkgOiBgLi9wYWdlcy8ke2ZyYWdtZW50TmFtZX0vcGFnZS5taW4uanNvbmA7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBDb21wb25lbnRUeXBlLlBSRUZBQikge1xuICAgICAgICByZXR1cm4gZ2V0UHJlZmFiTWluSnNvblVybChmcmFnbWVudE5hbWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ29tcG9uZW50VHlwZS5XSURHRVQpe1xuICAgICAgICByZXR1cm4gYC4vY3VzdG9tLXdpZGdldHMvJHtmcmFnbWVudE5hbWV9L3BhZ2UubWluLmpzb25gICAgIFxuICAgIH1cbn07XG5cbmNvbnN0IHNjcmlwdENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPigpO1xuY29uc3QgZXhlY1NjcmlwdCA9IChcbiAgICBzY3JpcHQ6IHN0cmluZyxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgY3R4OiBzdHJpbmcsXG4gICAgaW5zdGFuY2U6IGFueSxcbiAgICBhcHA6IGFueSxcbiAgICB1dGlsczogYW55XG4pID0+IHtcbiAgICBsZXQgZm4gPSBzY3JpcHRDYWNoZS5nZXQoaWRlbnRpZmllcik7XG4gICAgLy8gRml4IGZvciBbV01TLTIxMTk2XTogSW5jb3JyZWN0IHNjcmlwdCBpcyBiZWluZyBhc3NpZ25lZCwgIHdoZW4gMiBwcmVmYWJzIGhhdmUgc2FtZSBwYXJ0aWFsIG5hbWUgKGkuZS4gc2FtZSBpZGVudGlmaWVyKS5cbiAgICBpZiAoKGN0eCA9PT0gJ1BhcnRpYWwnICYmICFpc1VuZGVmaW5lZChpbnN0YW5jZS5QcmVmYWIpKSB8fCAhZm4pIHtcbiAgICAgICAgZm4gPSBuZXcgRnVuY3Rpb24oY3R4LCAnQXBwJywgJ1V0aWxzJywgc2NyaXB0KTtcbiAgICAgICAgc2NyaXB0Q2FjaGUuc2V0KGlkZW50aWZpZXIsIGZuKTtcbiAgICB9XG4gICAgZm4oaW5zdGFuY2UsIGFwcCwgdXRpbHMpO1xufTtcblxuY2xhc3MgQmFzZUR5bmFtaWNDb21wb25lbnQge1xuICAgIGluaXQoKSB7fVxufVxuXG5jb25zdCBnZXREeW5hbWljTW9kdWxlID0gKGNvbXBvbmVudFJlZjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBOZ01vZHVsZSh7XG4gICAgICAgICAgICBkZWNsYXJhdGlvbnM6IFtjb21wb25lbnRSZWZdLFxuICAgICAgICAgICAgaW1wb3J0czogW1xuICAgICAgICAgICAgICAgIFJ1bnRpbWVCYXNlTW9kdWxlLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXVxuICAgIH0pKGNsYXNzIER5bmFtaWNNb2R1bGUge30pO1xufTtcblxuY29uc3QgZ2V0RHluYW1pY0NvbXBvbmVudCA9IChcbiAgICBjb21wb25lbnROYW1lLFxuICAgIHR5cGU6IENvbXBvbmVudFR5cGUsXG4gICAgdGVtcGxhdGU6IHN0cmluZyxcbiAgICBjc3M6IHN0cmluZyxcbiAgICBzY3JpcHQ6IGFueSxcbiAgICB2YXJpYWJsZXM6IHN0cmluZyxcbikgPT4ge1xuXG4gICAgY29uc3QgY29tcG9uZW50RGVmID0ge1xuICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgc3R5bGVzOiBbY3NzXSxcbiAgICAgICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxuICAgIH07XG5cbiAgICBsZXQgQmFzZUNsYXNzOiBhbnkgPSBCYXNlRHluYW1pY0NvbXBvbmVudDtcbiAgICBsZXQgc2VsZWN0b3IgPSAnJztcbiAgICBsZXQgY29udGV4dCA9ICcnO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVBhZ2VDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcGFnZS0ke2NvbXBvbmVudE5hbWV9YDtcbiAgICAgICAgICAgIGNvbnRleHQgPSAnUGFnZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICBCYXNlQ2xhc3MgPSBCYXNlUGFydGlhbENvbXBvbmVudDtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gYGFwcC1wYXJ0aWFsLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdQYXJ0aWFsJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVByZWZhYkNvbXBvbmVudDtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gYGFwcC1wcmVmYWItJHtjb21wb25lbnROYW1lfWA7XG4gICAgICAgICAgICBjb250ZXh0ID0gJ1ByZWZhYic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLldJREdFVDpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VDdXN0b21XaWRnZXRDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtY3VzdG9tLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdXaWRnZXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2xhc3MgRHluYW1pY0NvbXBvbmVudCBleHRlbmRzIEJhc2VDbGFzcyB7XG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIHBhZ2VOYW1lO1xuICAgICAgICBwYXJ0aWFsTmFtZTtcbiAgICAgICAgcHJlZmFiTmFtZTtcbiAgICAgICAgY3VzdG9tV2lkZ2V0TmFtZTtcbiAgICAgICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VOYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydGlhbE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWZhYk5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuV0lER0VUOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbVdpZGdldE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZhbFVzZXJTY3JpcHQoaW5zdGFuY2U6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KSB7XG4gICAgICAgICAgICBleGVjU2NyaXB0KHNjcmlwdCwgc2VsZWN0b3IsIGNvbnRleHQsIGluc3RhbmNlLCBhcHBDb250ZXh0LCB1dGlscyk7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW4gcHJldmlldyBtb2RlLCB0aGVyZSB3aWxsIGJlIG5vIGZ1bmN0aW9uIHJlZ2lzdGVyZWQuIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSB0aHJvdWdoICRwYXJzZUV2ZW50IGFuZCAkcGFyc2VFeHByXG4gICAgICAgIGdldEV4cHJlc3Npb25zKCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gQ29tcG9uZW50KHtcbiAgICAgICAgLi4uY29tcG9uZW50RGVmLFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeW5hbWljQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9KShEeW5hbWljQ29tcG9uZW50KVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIGV4dGVuZHMgQ29tcG9uZW50UmVmUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zPyk6IFByb21pc2U8SVBhZ2VNaW5KU09OPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGdldEZyYWdtZW50VXJsKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gZnJhZ21lbnRDYWNoZS5nZXQodXJsKTtcblxuICAgICAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9taXNlID0gKCgoY29tcG9uZW50VHlwZSA9PT0gQ29tcG9uZW50VHlwZS5XSURHRVQgJiYgIWN1c3RvbVdpZGdldHNbY29tcG9uZW50TmFtZV0pIHx8IGNvbXBvbmVudFR5cGUgIT09IENvbXBvbmVudFR5cGUuV0lER0VUKSAgPyB0aGlzLnJlc291Y2VNbmdyLmdldCh1cmwsIHRydWUpIDogUHJvbWlzZS5yZXNvbHZlKGN1c3RvbVdpZGdldHNbY29tcG9uZW50TmFtZV0pKVxuICAgICAgICAgICAgLnRoZW4oKHttYXJrdXAsIHNjcmlwdCwgc3R5bGVzLCB2YXJpYWJsZXMsIGNvbmZpZ306IElQYWdlTWluSlNPTikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHRyYW5zcGlsZShfZGVjb2RlVVJJQ29tcG9uZW50KG1hcmt1cCkpLm1hcmt1cCxcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0OiBfZGVjb2RlVVJJQ29tcG9uZW50KHNjcmlwdCksXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlczogc2NvcGVDb21wb25lbnRTdHlsZXMoY29tcG9uZW50TmFtZSwgY29tcG9uZW50VHlwZSwgX2RlY29kZVVSSUNvbXBvbmVudChzdHlsZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBnZXRWYWxpZEpTT04oX2RlY29kZVVSSUNvbXBvbmVudCh2YXJpYWJsZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uKGNvbmZpZz8ge2NvbmZpZyA6IGdldFZhbGlkSlNPTihfZGVjb2RlVVJJQ29tcG9uZW50KGNvbmZpZykpfSA6IHt9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZnJhZ21lbnRDYWNoZS5zZXQodXJsLCBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGUuZGV0YWlscy5zdGF0dXM7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2dNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIDQwNCA6IHRoaXMuYXBwLmFwcExvY2FsZS5NRVNTQUdFX1BBR0VfTk9UX0ZPVU5EIHx8ICdUaGUgcGFnZSB5b3UgYXJlIHRyeWluZyB0byByZWFjaCBpcyBub3QgYXZhaWxhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgNDAzIDogdGhpcy5hcHAuYXBwTG9jYWxlLkxBQkVMX0FDQ0VTU19ERU5JRUQgfHwgJ0FjY2VzcyBEZW5pZWQnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3JNc2dNYXBbc3RhdHVzXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZyYWdtZW50Q2FjaGUuc2V0KHVybCwgcHJvbWlzZSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZXNvdWNlTW5ncjogQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/OiB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIGNoZWNrIGluIHRoZSBjYWNoZS5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeU1hcCA9IGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5nZXQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgIGxldCBjb21wb25lbnRGYWN0b3J5UmVmO1xuICAgICAgICBpZiAoY29tcG9uZW50RmFjdG9yeU1hcCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbXBvbmVudE5hbWUgPSAob3B0aW9ucyAmJiBvcHRpb25zWydwcmVmYWInXSkgPyBvcHRpb25zWydwcmVmYWInXSArICBjb21wb25lbnROYW1lIDogY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZWYgPSBjb21wb25lbnRGYWN0b3J5TWFwLmdldCh1cGRhdGVkQ29tcG9uZW50TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5UmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKHttYXJrdXAsIHNjcmlwdCwgc3R5bGVzLCB2YXJpYWJsZXN9KSAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudERlZiA9IGdldER5bmFtaWNDb21wb25lbnQoY29tcG9uZW50TmFtZSwgY29tcG9uZW50VHlwZSwgbWFya3VwLCBzdHlsZXMsIHNjcmlwdCwgSlNPTi5zdHJpbmdpZnkodmFyaWFibGVzKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlRGVmID0gZ2V0RHluYW1pY01vZHVsZShjb21wb25lbnREZWYpO1xuXG4gICAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZiA9IHRoaXMuY29tcGlsZXJcbiAgICAgICAgICAgICAgICAgICAgLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyhtb2R1bGVEZWYpXG4gICAgICAgICAgICAgICAgICAgIC5jb21wb25lbnRGYWN0b3JpZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmYWN0b3J5ID0+IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcnkuY29tcG9uZW50VHlwZSA9PT0gY29tcG9uZW50RGVmKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29tcG9uZW50TmFtZSA9IChvcHRpb25zICYmIG9wdGlvbnNbJ3ByZWZhYiddKSA/IG9wdGlvbnNbJ3ByZWZhYiddICsgIGNvbXBvbmVudE5hbWUgOiBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5nZXQoY29tcG9uZW50VHlwZSkuc2V0KHVwZGF0ZWRDb21wb25lbnROYW1lLCBjb21wb25lbnRGYWN0b3J5UmVmKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5UmVmO1xuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gXCJFcnJvciB3aGlsZSBsb2FkaW5nIHBhZ2VcIjtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZSB0aGUgZXJyb3IgZm9yIGVhc3kgZGVidWdnaW5nXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLm5vdGlmeUFwcChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3RyaW5nKGVycikgPyBlcnIgOiBtc2cgKyAnLCBjaGVjayBicm93c2VyIGNvbnNvbGUgZm9yIGVycm9yIGRldGFpbHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGNsZWFycyB0aGUgY2FjaGUgbWFwXG4gICAgcHVibGljIGNsZWFyQ29tcG9uZW50RmFjdG9yeVJlZkNhY2hlKCkge1xuICAgICAgICB0aGlzLnJlc291Y2VNbmdyLmNsZWFyQ2FjaGUoKTtcbiAgICAgICAgZnJhZ21lbnRDYWNoZS5jbGVhcigpO1xuICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUuZm9yRWFjaChtYXAgPT4ge1xuICAgICAgICAgICAgbWFwLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1keW5hbWljL3NyYy9hcHAvc2VydmljZXMvY29tcG9uZW50LXJlZi1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsUUFBUSxFQUNSLFNBQVMsRUFDVCxzQkFBc0IsRUFBYyxNQUFNLEVBQzFDLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUMxQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7OztBQVloRCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0FBRXJDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7QUFFNUUsd0JBQXdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQWUsQ0FBQyxDQUFDO0FBQ3pFLHdC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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUNqSCx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFFM0YsT0FBTyxtQkFBbUIsQ0FBQztRQUMvQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNQLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUM7Z0JBQ3ZDLHVDQUF1QztnQkFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUNyQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLDJDQUEyQyxFQUN2RSxPQUFPLENBQ1YsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCx1QkFBdUI7SUFDaEIsNkJBQTZCO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzRGQXpGUSwyQkFBMkI7dUVBQTNCLDJCQUEyQixXQUEzQiwyQkFBMkI7O2lGQUEzQiwyQkFBMkI7Y0FEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcGlsZXIsXG4gICAgQ29tcG9uZW50LFxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIGZvcndhcmRSZWYsIEluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdG9yLFxuICAgIE5nTW9kdWxlLFxuICAgIE5PX0VSUk9SU19TQ0hFTUEsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcCwgZ2V0VmFsaWRKU09OLCBVc2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyB0cmFuc3BpbGUsIHNjb3BlQ29tcG9uZW50U3R5bGVzIH0gZnJvbSAnQHdtL3RyYW5zcGlsZXInO1xuaW1wb3J0IHtcbiAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICBCYXNlUGFnZUNvbXBvbmVudCxcbiAgICBCYXNlUGFydGlhbENvbXBvbmVudCxcbiAgICBCYXNlUHJlZmFiQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIENvbXBvbmVudFR5cGUsXG4gICAgUnVudGltZUJhc2VNb2R1bGUsXG4gICAgZ2V0UHJlZmFiTWluSnNvblVybCxcbiAgICBnZXRQcmVmYWJQYXJ0aWFsSnNvblVybFxufSBmcm9tICdAd20vcnVudGltZS9iYXNlJztcblxuaW1wb3J0IHsgQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vYXBwLXJlc291cmNlLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQge2lzU3RyaW5nLCBpc1VuZGVmaW5lZH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5pbnRlcmZhY2UgSVBhZ2VNaW5KU09OIHtcbiAgICBtYXJrdXA6IHN0cmluZztcbiAgICBzY3JpcHQ6IHN0cmluZztcbiAgICBzdHlsZXM6IHN0cmluZztcbiAgICB2YXJpYWJsZXM6IHN0cmluZztcbiAgICBjb25maWc/OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBhbnk7XG5cbmNvbnN0IGZyYWdtZW50Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG53aW5kb3cucmVzb3VyY2VDYWNoZSA9IGZyYWdtZW50Q2FjaGU7XG5cbmNvbnN0IGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZSA9IG5ldyBNYXA8Q29tcG9uZW50VHlwZSwgTWFwPHN0cmluZywgYW55Pj4oKTtcblxuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBBR0UsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBBUlRJQUwsIG5ldyBNYXA8c3RyaW5nLCBhbnk+KCkpO1xuY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLnNldChDb21wb25lbnRUeXBlLlBSRUZBQiwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSk7XG5cbmNvbnN0IF9kZWNvZGVVUklDb21wb25lbnQgPSAoc3RyOiBzdHJpbmcpID0+IGRlY29kZVVSSUNvbXBvbmVudChzdHIucmVwbGFjZSgvXFwrL2csICcgJykpO1xuXG5jb25zdCBnZXRGcmFnbWVudFVybCA9IChmcmFnbWVudE5hbWU6IHN0cmluZywgdHlwZTogQ29tcG9uZW50VHlwZSwgb3B0aW9ucz8pID0+IHtcbiAgICBpZiAodHlwZSA9PT0gQ29tcG9uZW50VHlwZS5QQUdFIHx8IHR5cGUgPT09IENvbXBvbmVudFR5cGUuUEFSVElBTCkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLnByZWZhYiA/IGdldFByZWZhYlBhcnRpYWxKc29uVXJsKG9wdGlvbnMucHJlZmFiLCBmcmFnbWVudE5hbWUpIDogYC4vcGFnZXMvJHtmcmFnbWVudE5hbWV9L3BhZ2UubWluLmpzb25gO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ29tcG9uZW50VHlwZS5QUkVGQUIpIHtcbiAgICAgICAgcmV0dXJuIGdldFByZWZhYk1pbkpzb25VcmwoZnJhZ21lbnROYW1lKTtcbiAgICB9XG59O1xuXG5jb25zdCBzY3JpcHRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBGdW5jdGlvbj4oKTtcbmNvbnN0IGV4ZWNTY3JpcHQgPSAoXG4gICAgc2NyaXB0OiBzdHJpbmcsXG4gICAgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGN0eDogc3RyaW5nLFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAgYXBwOiBhbnksXG4gICAgdXRpbHM6IGFueVxuKSA9PiB7XG4gICAgbGV0IGZuID0gc2NyaXB0Q2FjaGUuZ2V0KGlkZW50aWZpZXIpO1xuICAgIC8vIEZpeCBmb3IgW1dNUy0yMTE5Nl06IEluY29ycmVjdCBzY3JpcHQgaXMgYmVpbmcgYXNzaWduZWQsICB3aGVuIDIgcHJlZmFicyBoYXZlIHNhbWUgcGFydGlhbCBuYW1lIChpLmUuIHNhbWUgaWRlbnRpZmllcikuXG4gICAgaWYgKChjdHggPT09ICdQYXJ0aWFsJyAmJiAhaXNVbmRlZmluZWQoaW5zdGFuY2UuUHJlZmFiKSkgfHwgIWZuKSB7XG4gICAgICAgIGZuID0gbmV3IEZ1bmN0aW9uKGN0eCwgJ0FwcCcsICdVdGlscycsIHNjcmlwdCk7XG4gICAgICAgIHNjcmlwdENhY2hlLnNldChpZGVudGlmaWVyLCBmbik7XG4gICAgfVxuICAgIGZuKGluc3RhbmNlLCBhcHAsIHV0aWxzKTtcbn07XG5cbmNsYXNzIEJhc2VEeW5hbWljQ29tcG9uZW50IHtcbiAgICBpbml0KCkge31cbn1cblxuY29uc3QgZ2V0RHluYW1pY01vZHVsZSA9IChjb21wb25lbnRSZWY6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gTmdNb2R1bGUoe1xuICAgICAgICAgICAgZGVjbGFyYXRpb25zOiBbY29tcG9uZW50UmVmXSxcbiAgICAgICAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBSdW50aW1lQmFzZU1vZHVsZSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV1cbiAgICB9KShjbGFzcyBEeW5hbWljTW9kdWxlIHt9KTtcbn07XG5cbmNvbnN0IGdldER5bmFtaWNDb21wb25lbnQgPSAoXG4gICAgY29tcG9uZW50TmFtZSxcbiAgICB0eXBlOiBDb21wb25lbnRUeXBlLFxuICAgIHRlbXBsYXRlOiBzdHJpbmcsXG4gICAgY3NzOiBzdHJpbmcsXG4gICAgc2NyaXB0OiBhbnksXG4gICAgdmFyaWFibGVzOiBzdHJpbmcsXG4pID0+IHtcblxuICAgIGNvbnN0IGNvbXBvbmVudERlZiA9IHtcbiAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgIHN0eWxlczogW2Nzc10sXG4gICAgICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbiAgICB9O1xuXG4gICAgbGV0IEJhc2VDbGFzczogYW55ID0gQmFzZUR5bmFtaWNDb21wb25lbnQ7XG4gICAgbGV0IHNlbGVjdG9yID0gJyc7XG4gICAgbGV0IGNvbnRleHQgPSAnJztcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUEFHRTpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VQYWdlQ29tcG9uZW50O1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBgYXBwLXBhZ2UtJHtjb21wb25lbnROYW1lfWA7XG4gICAgICAgICAgICBjb250ZXh0ID0gJ1BhZ2UnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQVJUSUFMOlxuICAgICAgICAgICAgQmFzZUNsYXNzID0gQmFzZVBhcnRpYWxDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcGFydGlhbC0ke2NvbXBvbmVudE5hbWV9YDtcbiAgICAgICAgICAgIGNvbnRleHQgPSAnUGFydGlhbCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBSRUZBQjpcbiAgICAgICAgICAgIEJhc2VDbGFzcyA9IEJhc2VQcmVmYWJDb21wb25lbnQ7XG4gICAgICAgICAgICBzZWxlY3RvciA9IGBhcHAtcHJlZmFiLSR7Y29tcG9uZW50TmFtZX1gO1xuICAgICAgICAgICAgY29udGV4dCA9ICdQcmVmYWInO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2xhc3MgRHluYW1pY0NvbXBvbmVudCBleHRlbmRzIEJhc2VDbGFzcyB7XG4gICAgICAgIGlzRHluYW1pY0NvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgIHBhZ2VOYW1lO1xuICAgICAgICBwYXJ0aWFsTmFtZTtcbiAgICAgICAgcHJlZmFiTmFtZTtcbiAgICAgICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5QQUdFOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VOYW1lID0gY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlBBUlRJQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFydGlhbE5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUFJFRkFCOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWZhYk5hbWUgPSBjb21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIuaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZhbFVzZXJTY3JpcHQoaW5zdGFuY2U6IGFueSwgYXBwQ29udGV4dDogYW55LCB1dGlsczogYW55KSB7XG4gICAgICAgICAgICBleGVjU2NyaXB0KHNjcmlwdCwgc2VsZWN0b3IsIGNvbnRleHQsIGluc3RhbmNlLCBhcHBDb250ZXh0LCB1dGlscyk7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW4gcHJldmlldyBtb2RlLCB0aGVyZSB3aWxsIGJlIG5vIGZ1bmN0aW9uIHJlZ2lzdGVyZWQuIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSB0aHJvdWdoICRwYXJzZUV2ZW50IGFuZCAkcGFyc2VFeHByXG4gICAgICAgIGdldEV4cHJlc3Npb25zKCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gQ29tcG9uZW50KHtcbiAgICAgICAgLi4uY29tcG9uZW50RGVmLFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVXNlckRlZmluZWRFeGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeW5hbWljQ29tcG9uZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9KShEeW5hbWljQ29tcG9uZW50KVxuICAgIHJldHVybiBjb21wb25lbnQ7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIGV4dGVuZHMgQ29tcG9uZW50UmVmUHJvdmlkZXIge1xuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zPyk6IFByb21pc2U8SVBhZ2VNaW5KU09OPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGdldEZyYWdtZW50VXJsKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gZnJhZ21lbnRDYWNoZS5nZXQodXJsKTtcblxuICAgICAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VjZU1uZ3IuZ2V0KHVybCwgdHJ1ZSlcbiAgICAgICAgICAgIC50aGVuKCh7bWFya3VwLCBzY3JpcHQsIHN0eWxlcywgdmFyaWFibGVzfTogSVBhZ2VNaW5KU09OKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cDogdHJhbnNwaWxlKF9kZWNvZGVVUklDb21wb25lbnQobWFya3VwKSkubWFya3VwLFxuICAgICAgICAgICAgICAgICAgICBzY3JpcHQ6IF9kZWNvZGVVUklDb21wb25lbnQoc2NyaXB0KSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzY29wZUNvbXBvbmVudFN0eWxlcyhjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBfZGVjb2RlVVJJQ29tcG9uZW50KHN0eWxlcykpLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IGdldFZhbGlkSlNPTihfZGVjb2RlVVJJQ29tcG9uZW50KHZhcmlhYmxlcykpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudENhY2hlLnNldCh1cmwsIHJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGUuZGV0YWlscy5zdGF0dXM7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2dNYXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIDQwNCA6IHRoaXMuYXBwLmFwcExvY2FsZS5NRVNTQUdFX1BBR0VfTk9UX0ZPVU5EIHx8ICdUaGUgcGFnZSB5b3UgYXJlIHRyeWluZyB0byByZWFjaCBpcyBub3QgYXZhaWxhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgNDAzIDogdGhpcy5hcHAuYXBwTG9jYWxlLkxBQkVMX0FDQ0VTU19ERU5JRUQgfHwgJ0FjY2VzcyBEZW5pZWQnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3JNc2dNYXBbc3RhdHVzXSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZXNvdWNlTW5ncjogQXBwUmVzb3VyY2VNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUsIG9wdGlvbnM/OiB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIGNoZWNrIGluIHRoZSBjYWNoZS5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeU1hcCA9IGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5nZXQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgIGxldCBjb21wb25lbnRGYWN0b3J5UmVmO1xuICAgICAgICBpZiAoY29tcG9uZW50RmFjdG9yeU1hcCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbXBvbmVudE5hbWUgPSAob3B0aW9ucyAmJiBvcHRpb25zWydwcmVmYWInXSkgPyBvcHRpb25zWydwcmVmYWInXSArICBjb21wb25lbnROYW1lIDogY29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZWYgPSBjb21wb25lbnRGYWN0b3J5TWFwLmdldCh1cGRhdGVkQ29tcG9uZW50TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnRGYWN0b3J5UmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUmVzb3VyY2VzT2ZGcmFnbWVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBvcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKHttYXJrdXAsIHNjcmlwdCwgc3R5bGVzLCB2YXJpYWJsZXN9KSAgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RGVmID0gZ2V0RHluYW1pY0NvbXBvbmVudChjb21wb25lbnROYW1lLCBjb21wb25lbnRUeXBlLCBtYXJrdXAsIHN0eWxlcywgc2NyaXB0LCBKU09OLnN0cmluZ2lmeSh2YXJpYWJsZXMpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGVEZWYgPSBnZXREeW5hbWljTW9kdWxlKGNvbXBvbmVudERlZik7XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRGYWN0b3J5UmVmID0gdGhpcy5jb21waWxlclxuICAgICAgICAgICAgICAgICAgICAuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKG1vZHVsZURlZilcbiAgICAgICAgICAgICAgICAgICAgLmNvbXBvbmVudEZhY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZhY3RvcnkgPT4gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS5jb21wb25lbnRUeXBlID09PSBjb21wb25lbnREZWYpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDb21wb25lbnROYW1lID0gKG9wdGlvbnMgJiYgb3B0aW9uc1sncHJlZmFiJ10pID8gb3B0aW9uc1sncHJlZmFiJ10gKyAgY29tcG9uZW50TmFtZSA6IGNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yeVJlZkNhY2hlLmdldChjb21wb25lbnRUeXBlKS5zZXQodXBkYXRlZENvbXBvbmVudE5hbWUsIGNvbXBvbmVudEZhY3RvcnlSZWYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnlSZWY7XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBcIkVycm9yIHdoaWxlIGxvYWRpbmcgcGFnZVwiO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlIHRoZSBlcnJvciBmb3IgZWFzeSBkZWJ1Z2dpbmdcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcE1hbmFnZXIubm90aWZ5QXBwKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTdHJpbmcoZXJyKSA/IGVyciA6IG1zZyArICcsIGNoZWNrIGJyb3dzZXIgY29uc29sZSBmb3IgZXJyb3IgZGV0YWlscycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gY2xlYXJzIHRoZSBjYWNoZSBtYXBcbiAgICBwdWJsaWMgY2xlYXJDb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUoKSB7XG4gICAgICAgIHRoaXMucmVzb3VjZU1uZ3IuY2xlYXJDYWNoZSgpO1xuICAgICAgICBmcmFnbWVudENhY2hlLmNsZWFyKCk7XG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZS5mb3JFYWNoKG1hcCA9PiB7XG4gICAgICAgICAgICBtYXAuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19