@wavemaker/app-ng-runtime 11.5.0-next.141084 → 11.5.0-next.141086

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +1 -1
  2. app-ng-runtime/build-task/esm2020/input/default/composite/composite.build.mjs +2 -2
  3. app-ng-runtime/build-task/fesm2015/index.mjs +1 -1
  4. app-ng-runtime/build-task/fesm2015/index.mjs.map +1 -1
  5. app-ng-runtime/build-task/fesm2020/index.mjs +1 -1
  6. app-ng-runtime/build-task/fesm2020/index.mjs.map +1 -1
  7. app-ng-runtime/components/base/bundles/index.umd.js +4 -4
  8. app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +2 -2
  9. app-ng-runtime/components/base/esm2020/directives/show-in-device.directive.mjs +5 -5
  10. app-ng-runtime/components/base/fesm2015/index.mjs +4 -4
  11. app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
  12. app-ng-runtime/components/base/fesm2020/index.mjs +4 -4
  13. app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
  14. app-ng-runtime/components/input/default/bundles/index.umd.js +4 -4
  15. app-ng-runtime/components/input/default/caption-position.directive.d.ts +1 -1
  16. app-ng-runtime/components/input/default/esm2020/caption-position.directive.mjs +5 -5
  17. app-ng-runtime/components/input/default/fesm2015/index.mjs +4 -4
  18. app-ng-runtime/components/input/default/fesm2015/index.mjs.map +1 -1
  19. app-ng-runtime/components/input/default/fesm2020/index.mjs +4 -4
  20. app-ng-runtime/components/input/default/fesm2020/index.mjs.map +1 -1
  21. app-ng-runtime/package.json +1 -1
  22. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +10 -4
  23. app-ng-runtime/runtime/dynamic/esm2020/app/app.module.mjs +11 -5
  24. app-ng-runtime/runtime/dynamic/fesm2015/index.mjs +10 -4
  25. app-ng-runtime/runtime/dynamic/fesm2015/index.mjs.map +1 -1
  26. app-ng-runtime/runtime/dynamic/fesm2020/index.mjs +10 -4
  27. app-ng-runtime/runtime/dynamic/fesm2020/index.mjs.map +1 -1
  28. app-ng-runtime/transpiler/bundles/index.umd.js +1 -1
  29. app-ng-runtime/transpiler/esm2020/build.mjs +2 -2
  30. app-ng-runtime/transpiler/fesm2015/index.mjs +1 -1
  31. app-ng-runtime/transpiler/fesm2015/index.mjs.map +1 -1
  32. app-ng-runtime/transpiler/fesm2020/index.mjs +1 -1
  33. app-ng-runtime/transpiler/fesm2020/index.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../projects/runtime-dynamic/src/app/components/page-wrapper.component.ts","../../../../projects/runtime-dynamic/src/app/app.routes.ts","../../../../projects/runtime-dynamic/src/app/services/app-js-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-resource-manager.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-variables-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-extension.service.ts","../../../../projects/runtime-dynamic/src/app/services/component-ref-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/prefab-config-provider.service.ts","../../../../projects/runtime-dynamic/src/app/app.module.ts","../../../../projects/runtime-dynamic/src/main.ts","../../../../projects/runtime-dynamic/src/index.ts"],"sourcesContent":["import {\n ApplicationRef,\n Component,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n HostListener\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport { AbstractSpinnerService, App, noop} from '@wm/core';\nimport { MetadataService } from '@wm/variables';\nimport { SecurityService } from '@wm/security';\nimport { AppManagerService, BasePageComponent, ComponentRefProvider, ComponentType } from '@wm/runtime/base';\n\n@Component({\n selector: 'app-page-outlet',\n template: '<div></div>'\n})\nexport class PageWrapperComponent implements OnInit, OnDestroy {\n\n subscription: Subscription;\n instance: any;\n\n constructor(\n private injector: Injector,\n private route: ActivatedRoute,\n private vcRef: ViewContainerRef,\n private appRef: ApplicationRef,\n private metadataService: MetadataService,\n private securityService: SecurityService,\n private appManager: AppManagerService,\n private app: App,\n private ngZone: NgZone,\n private elRef: ElementRef,\n private spinnerService: AbstractSpinnerService,\n private componentRefProvider: ComponentRefProvider,\n private router: Router\n ) {}\n\n getTargetNode() {\n return this.elRef.nativeElement;\n }\n\n resetViewContainer() {\n this.vcRef.clear();\n const $target = this.getTargetNode();\n $target.innerHTML = '';\n }\n\n renderPage(pageName) {\n const $target = this.getTargetNode();\n\n this.appManager.loadAppVariables()\n .then(async () => {\n const pageComponentFactoryRef = await this.componentRefProvider.getComponentFactoryRef(pageName, ComponentType.PAGE);\n if (pageComponentFactoryRef) {\n const componentRef = this.vcRef.createComponent(pageComponentFactoryRef, 0, this.injector);\n this.instance = componentRef.instance;\n $target.appendChild(componentRef.location.nativeElement);\n } else {\n BasePageComponent.clear();\n }\n if (this.vcRef.length > 1) {\n this.vcRef.remove(1);\n }\n });\n }\n\n renderPrefabPreviewPage() {\n this.router.navigate(['prefab-preview']);\n }\n\n loadPage(pageName) {\n this.ngZone.run(() => {\n if (pageName) {\n this.renderPage(pageName);\n }\n });\n }\n\n ngOnInit() {\n if (this.app.isPrefabType) {\n // there is only one route\n this.renderPrefabPreviewPage();\n } else {\n $(this.getTargetNode()).find('>div').first().remove();\n this.subscription = this.route.params.subscribe(({pageName}: any) => {\n this.loadPage(pageName);\n });\n }\n }\n\n ngOnDestroy() {\n this.vcRef.clear();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n ngOnAttach() {\n this.getTargetNode().appendChild(this.instance.$page[0]);\n this.instance.ngOnAttach();\n }\n\n ngOnDetach() {\n this.instance.ngOnDetach();\n }\n}\n","import { MetadataResolve, AppExtensionJSResolve } from '@wm/runtime/base';\nimport { SecurityConfigResolve, PrefabPreviewComponent, CanDeactivatePageGuard, EmptyPageComponent } from '@wm/runtime/base';\n\nimport { PageWrapperComponent } from './components/page-wrapper.component';\nimport {Routes} from '@angular/router';\n\nconst appDependenciesResolve = {\n securityConfig: SecurityConfigResolve,\n metadata: MetadataResolve,\n appMetaConfig: AppExtensionJSResolve\n};\n\nexport const routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: EmptyPageComponent\n },\n {\n path: 'prefab-preview',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: PrefabPreviewComponent\n },\n {\n path: ':pageName',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: PageWrapperComponent,\n canDeactivate: [CanDeactivatePageGuard]\n }\n];\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { AppJSProvider } from '@wm/runtime/base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppJSProviderService extends AppJSProvider {\n constructor(private $http: HttpClient) {\n super();\n }\n\n public getAppScriptFn(): Promise<Function> {\n return this.$http.get('./app.js', {responseType: 'text'})\n .toPromise()\n .then(script => new Function('App', 'Utils', 'Injector', script));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AbstractHttpService, App } from '@wm/core';\n\nconst cache = new Map<string, string>();\n\n@Injectable()\nexport class AppResourceManagerService {\n\n get(url: string, useCache?: boolean): string | any {\n const cachedResponse = cache.get(url);\n\n if (cachedResponse) {\n return Promise.resolve(cachedResponse);\n }\n\n return this.$http.get(url).then(response => {\n if (useCache) {\n cache.set(url, response);\n }\n return response;\n });\n }\n\n public clearCache() {\n cache.clear();\n }\n\n constructor(private $http: AbstractHttpService) {}\n}\n","import { Injectable } from '@angular/core';\nimport { AppVariablesProvider } from '@wm/runtime/base';\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppVariablesProviderService extends AppVariablesProvider {\n constructor(private resourceManager: AppResourceManagerService) {\n super();\n }\n\n public async getAppVariables(): Promise<any> {\n return this.resourceManager.get('./app.variables.json');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppExtensionProvider } from '@wm/runtime/base';\nimport { appendScriptToHead } from '@wm/core';\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionProviderService extends AppExtensionProvider {\n\n // With renderer create element, added onloaded callback the append to the body\n public loadFormatterConfigScript(callback:Function):void {\n try{\n appendScriptToHead(callback);\n }catch(e){\n console.warn('Error while loading the formatters.js file');\n }\n }\n}\n","import {\n Compiler,\n Component,\n CUSTOM_ELEMENTS_SCHEMA, forwardRef, Inject,\n Injectable,\n Injector,\n NgModule,\n NO_ERRORS_SCHEMA,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { App, getValidJSON, UserDefinedExecutionContext } from '@wm/core';\nimport { transpile, scopeComponentStyles } from '@wm/transpiler';\nimport {\n AppManagerService,\n BasePageComponent,\n BasePartialComponent,\n BasePrefabComponent,\n ComponentRefProvider,\n ComponentType,\n RuntimeBaseModule,\n getPrefabMinJsonUrl,\n getPrefabPartialJsonUrl\n} from '@wm/runtime/base';\n\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\ninterface IPageMinJSON {\n markup: string;\n script: string;\n styles: string;\n variables: string;\n config?: string;\n}\n\ndeclare const window: any, _;\n\nconst fragmentCache = new Map<string, any>();\n\nwindow.resourceCache = fragmentCache;\n\nconst componentFactoryRefCache = new Map<ComponentType, Map<string, any>>();\n\ncomponentFactoryRefCache.set(ComponentType.PAGE, new Map<string, any>());\ncomponentFactoryRefCache.set(ComponentType.PARTIAL, new Map<string, any>());\ncomponentFactoryRefCache.set(ComponentType.PREFAB, new Map<string, any>());\n\nconst _decodeURIComponent = (str: string) => decodeURIComponent(str.replace(/\\+/g, ' '));\n\nconst getFragmentUrl = (fragmentName: string, type: ComponentType, options?) => {\n if (type === ComponentType.PAGE || type === ComponentType.PARTIAL) {\n return options && options.prefab ? getPrefabPartialJsonUrl(options.prefab, fragmentName) : `./pages/${fragmentName}/page.min.json`;\n } else if (type === ComponentType.PREFAB) {\n return getPrefabMinJsonUrl(fragmentName);\n }\n};\n\nconst scriptCache = new Map<string, Function>();\nconst execScript = (\n script: string,\n identifier: string,\n ctx: string,\n instance: any,\n app: any,\n utils: any\n) => {\n let fn = scriptCache.get(identifier);\n // Fix for [WMS-21196]: Incorrect script is being assigned, when 2 prefabs have same partial name (i.e. same identifier).\n if ((ctx === 'Partial' && !_.isUndefined(instance.Prefab)) || !fn) {\n fn = new Function(ctx, 'App', 'Utils', script);\n scriptCache.set(identifier, fn);\n }\n fn(instance, app, utils);\n};\n\nclass BaseDynamicComponent {\n init() {}\n}\n\nconst getDynamicModule = (componentRef: any) => {\n return NgModule({\n declarations: [componentRef],\n imports: [\n RuntimeBaseModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]\n })(class DynamicModule {});\n};\n\nconst getDynamicComponent = (\n componentName,\n type: ComponentType,\n template: string,\n css: string,\n script: any,\n variables: string,\n) => {\n\n const componentDef = {\n template,\n styles: [css],\n encapsulation: ViewEncapsulation.None\n };\n\n let BaseClass: any = BaseDynamicComponent;\n let selector = '';\n let context = '';\n\n switch (type) {\n case ComponentType.PAGE:\n BaseClass = BasePageComponent;\n selector = `app-page-${componentName}`;\n context = 'Page';\n break;\n case ComponentType.PARTIAL:\n BaseClass = BasePartialComponent;\n selector = `app-partial-${componentName}`;\n context = 'Partial';\n break;\n case ComponentType.PREFAB:\n BaseClass = BasePrefabComponent;\n selector = `app-prefab-${componentName}`;\n context = 'Prefab';\n break;\n }\n\n class DynamicComponent extends BaseClass {\n pageName;\n partialName;\n prefabName;\n constructor(@Inject(Injector) public injector: Injector) {\n super();\n this.injector = injector;\n switch (type) {\n case ComponentType.PAGE:\n this.pageName = componentName;\n break;\n case ComponentType.PARTIAL:\n this.partialName = componentName;\n break;\n case ComponentType.PREFAB:\n this.prefabName = componentName;\n break;\n }\n\n super.init();\n }\n\n evalUserScript(instance: any, appContext: any, utils: any) {\n execScript(script, selector, context, instance, appContext, utils);\n }\n\n getVariables() {\n return JSON.parse(variables);\n }\n\n // in preview mode, there will be no function registered. functions will be generated dynamically through $parseEvent and $parseExpr\n getExpressions() {\n return {};\n }\n }\n\n const component = Component({\n ...componentDef,\n selector,\n providers: [\n {\n provide: UserDefinedExecutionContext,\n useExisting: DynamicComponent\n }\n ]\n })(DynamicComponent)\n return component;\n};\n\n@Injectable()\nexport class ComponentRefProviderService extends ComponentRefProvider {\n\n private loadResourcesOfFragment(componentName, componentType, options?): Promise<IPageMinJSON> {\n const url = getFragmentUrl(componentName, componentType, options);\n\n const resource = fragmentCache.get(url);\n\n if (resource) {\n return Promise.resolve(resource);\n }\n\n return this.resouceMngr.get(url, true)\n .then(({markup, script, styles, variables}: IPageMinJSON) => {\n const response = {\n markup: transpile(_decodeURIComponent(markup)).markup,\n script: _decodeURIComponent(script),\n styles: scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),\n variables: getValidJSON(_decodeURIComponent(variables))\n };\n fragmentCache.set(url, response);\n\n return response;\n }, e => {\n const status = e.details.status;\n const errorMsgMap = {\n 404 : this.app.appLocale.MESSAGE_PAGE_NOT_FOUND || 'The page you are trying to reach is not available',\n 403 : this.app.appLocale.LABEL_ACCESS_DENIED || 'Access Denied'\n };\n return Promise.reject(errorMsgMap[status]);\n });\n }\n\n constructor(\n private resouceMngr: AppResourceManagerService,\n private app: App,\n private appManager: AppManagerService,\n private compiler: Compiler\n ) {\n super();\n }\n\n public async getComponentFactoryRef(componentName: string, componentType: ComponentType, options?: {}): Promise<any> {\n // check in the cache.\n const componentFactoryMap = componentFactoryRefCache.get(componentType);\n let componentFactoryRef;\n if (componentFactoryMap) {\n const updatedComponentName = (options && options['prefab']) ? options['prefab'] + componentName : componentName;\n componentFactoryRef = componentFactoryMap.get(updatedComponentName);\n\n if (componentFactoryRef) {\n return componentFactoryRef;\n }\n }\n\n return this.loadResourcesOfFragment(componentName, componentType, options)\n .then(({markup, script, styles, variables}) => {\n\n const componentDef = getDynamicComponent(componentName, componentType, markup, styles, script, JSON.stringify(variables));\n const moduleDef = getDynamicModule(componentDef);\n\n componentFactoryRef = this.compiler\n .compileModuleAndAllComponentsSync(moduleDef)\n .componentFactories\n .filter(factory => // @ts-ignore\n factory.componentType === componentDef)[0];\n const updatedComponentName = (options && options['prefab']) ? options['prefab'] + componentName : componentName;\n componentFactoryRefCache.get(componentType).set(updatedComponentName, componentFactoryRef);\n\n return componentFactoryRef;\n }, (err) => {\n if (err) {\n const msg = \"Error while loading page\";\n // console the error for easy debugging\n console.log(msg, err);\n this.appManager.notifyApp(\n _.isString(err) ? err : msg + ', check browser console for error details',\n 'error'\n );\n }\n });\n }\n\n // clears the cache map\n public clearComponentFactoryRefCache() {\n this.resouceMngr.clearCache();\n fragmentCache.clear();\n componentFactoryRefCache.forEach(map => {\n map.clear();\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { getPrefabConfigUrl, PrefabConfigProvider } from '@wm/runtime/base';\n\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\nconst cache = new Map<string, any>();\n@Injectable()\nexport class PrefabConfigProviderService extends PrefabConfigProvider {\n\n constructor(private resourceMngr: AppResourceManagerService) {\n super();\n }\n\n public getConfig(prefabName: string): Promise<any> {\n const config = cache.get(prefabName);\n if (config) {\n return Promise.resolve(config);\n }\n\n return this.resourceMngr.get(getPrefabConfigUrl(prefabName))\n .then(_config => {\n cache.set(prefabName, _config);\n return _config;\n });\n }\n}\n","import { Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\nimport { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { TimepickerModule as ngxTimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\nimport { PaginationModule as ngxPaginationModule } from 'ngx-bootstrap/pagination';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule as ngxPopoverModule } from 'ngx-bootstrap/popover';\n\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { ToastNoAnimationModule } from 'ngx-toastr';\nimport { CarouselModule as ngxCarouselModule, } from 'ngx-bootstrap/carousel';\n\nimport {App, getWmProjectProperties, PartialRefProvider} from '@wm/core';\n// Basic widgets\n\nimport { BasicModule } from '@wm/components/basic';\nimport { ProgressModule } from '@wm/components/basic/progress';\nimport { RichTextEditorModule } from '@wm/components/basic/rich-text-editor';\nimport { SearchModule } from '@wm/components/basic/search';\nimport { TreeModule } from '@wm/components/basic/tree';\n\n// input\nimport { InputModule } from '@wm/components/input';\nimport { CalendarModule } from '@wm/components/input/calendar';\nimport { ChipsModule } from '@wm/components/input/chips';\nimport { ColorPickerModule } from '@wm/components/input/color-picker';\nimport { CurrencyModule } from '@wm/components/input/currency';\nimport { EpochModule } from '@wm/components/input/epoch';\nimport { FileUploadModule } from '@wm/components/input/file-upload';\nimport { RatingModule } from '@wm/components/input/rating';\nimport { SliderModule } from '@wm/components/input/slider';\n\nimport { MobileRuntimeDynamicModule, MOBILE_COMPONENT_MODULES_FOR_ROOT } from '@wm/mobile/runtime/dynamic';\n\n// Data\nimport { CardModule } from '@wm/components/data/card';\nimport { FormModule } from '@wm/components/data/form';\nimport { ListModule } from '@wm/components/data/list';\nimport { LiveTableModule } from '@wm/components/data/live-table';\nimport { PaginationModule } from '@wm/components/data/pagination';\nimport { TableModule } from '@wm/components/data/table';\n\n// Chart\nimport { ChartModule } from '@wm/components/chart';\n\n// Containers\nimport { AccordionModule } from '@wm/components/containers/accordion';\nimport { LinearLayoutModule } from '@wm/components/containers/linear-layout';\nimport { LayoutGridModule } from '@wm/components/containers/layout-grid';\nimport { PanelModule } from '@wm/components/containers/panel';\nimport { TabsModule } from '@wm/components/containers/tabs';\nimport { TileModule } from '@wm/components/containers/tile';\nimport { WizardModule } from '@wm/components/containers/wizard';\n\n// Dialogs\nimport { AlertDialogModule } from '@wm/components/dialogs/alert-dialog';\nimport { IframeDialogModule } from '@wm/components/dialogs/iframe-dialog';\nimport { LoginDialogModule } from '@wm/components/dialogs/login-dialog';\nimport { PartialDialogModule } from '@wm/components/dialogs/partial-dialog';\n\n// Navigation\nimport { BreadcrumbModule } from '@wm/components/navigation/breadcrumb';\nimport { MenuModule } from '@wm/components/navigation/menu';\nimport { NavbarModule } from '@wm/components/navigation/navbar';\nimport { PopoverModule } from '@wm/components/navigation/popover';\n\n// Advanced\nimport { CarouselModule } from '@wm/components/advanced/carousel';\nimport { LoginModule } from '@wm/components/advanced/login';\nimport { MarqueeModule } from '@wm/components/advanced/marquee';\n\nimport { PageModule } from '@wm/components/page';\nimport { FooterModule } from '@wm/components/page/footer';\nimport { HeaderModule } from '@wm/components/page/header';\nimport { LeftPanelModule } from '@wm/components/page/left-panel';\nimport { RightPanelModule } from '@wm/components/page/right-panel';\nimport { TopNavModule } from '@wm/components/page/top-nav';\n\nimport { PrefabModule } from '@wm/components/prefab';\n\nimport {\n AppComponent,\n AppJSProvider,\n AppVariablesProvider,\n ComponentRefProvider,\n PrefabConfigProvider,\n WmRouteReuseStrategy,\n WM_MODULES_FOR_ROOT,\n REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS,\n AppExtensionProvider\n} from '@wm/runtime/base';\n\nimport { routes } from './app.routes';\nimport { PageWrapperComponent } from './components/page-wrapper.component';\nimport { AppJSProviderService } from './services/app-js-provider.service';\nimport { AppVariablesProviderService } from './services/app-variables-provider.service';\nimport { AppExtensionProviderService } from './services/app-extension.service';\nimport { ComponentRefProviderService } from './services/component-ref-provider.service';\nimport { PrefabConfigProviderService } from './services/prefab-config-provider.service';\nimport { AppResourceManagerService } from './services/app-resource-manager.service';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nexport const routerModule = RouterModule.forRoot(routes, { useHash: true, scrollPositionRestoration: 'top' });\nexport const toastrModule = ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true });\nexport const httpClientXsrfModule = HttpClientXsrfModule.withOptions({\n cookieName: 'wm_xsrf_token',\n headerName: getWmProjectProperties().xsrf_header_name\n});\n\nexport const modalModule: ModuleWithProviders<ModalModule> = ModalModule.forRoot();\nexport const bsDatePickerModule: ModuleWithProviders<BsDatepickerModule> = BsDatepickerModule.forRoot();\nexport const timepickerModule: ModuleWithProviders<ngxTimepickerModule> = ngxTimepickerModule.forRoot();\nexport const bsDropdownModule: ModuleWithProviders<BsDropdownModule> = BsDropdownModule.forRoot();\nexport const paginationModule: ModuleWithProviders<ngxPaginationModule> = ngxPaginationModule.forRoot();\nexport const typeaheadModule: ModuleWithProviders<TypeaheadModule> = TypeaheadModule.forRoot();\nexport const progressbarModule: ModuleWithProviders<ProgressbarModule> = ProgressbarModule.forRoot();\nexport const carouselModule: ModuleWithProviders<ngxCarouselModule> = ngxCarouselModule.forRoot();\nexport const popoverModule: ModuleWithProviders<ngxPopoverModule> = ngxPopoverModule.forRoot();\nexport const ngCircleProgressModule: ModuleWithProviders<NgCircleProgressModule> = NgCircleProgressModule.forRoot({});\nexport const tooltipModule: ModuleWithProviders<TooltipModule> = TooltipModule.forRoot();\n\nconst componentsModule = [\n // NGX Bootstrap\n BsDatepickerModule,\n ngxTimepickerModule,\n BsDropdownModule,\n ngxPaginationModule,\n TypeaheadModule,\n ProgressbarModule,\n ngxCarouselModule,\n ngxPopoverModule,\n NgCircleProgressModule,\n TooltipModule,\n\n // Basic widgets\n BasicModule,\n ProgressModule,\n RichTextEditorModule,\n SearchModule,\n TreeModule,\n\n // Input\n CalendarModule,\n ChipsModule,\n ColorPickerModule,\n CurrencyModule,\n EpochModule,\n FileUploadModule,\n InputModule,\n RatingModule,\n SliderModule,\n\n // Data\n CardModule,\n FormModule,\n ListModule,\n LiveTableModule,\n PaginationModule,\n TableModule,\n\n // chart\n ChartModule,\n\n // container modules\n AccordionModule,\n LinearLayoutModule,\n LayoutGridModule,\n PanelModule,\n TabsModule,\n TileModule,\n WizardModule,\n\n // dialogs\n AlertDialogModule,\n IframeDialogModule,\n LoginDialogModule,\n PartialDialogModule,\n\n // navigation\n BreadcrumbModule,\n MenuModule,\n NavbarModule,\n PopoverModule,\n\n // Advanced\n CarouselModule,\n LoginModule,\n MarqueeModule,\n\n PageModule,\n FooterModule,\n HeaderModule,\n LeftPanelModule,\n RightPanelModule,\n TopNavModule,\n\n PrefabModule\n];\n\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(...componentsModule);\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(...MOBILE_COMPONENT_MODULES_FOR_ROOT);\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(FormsModule, ReactiveFormsModule);\n\n@NgModule({\n declarations: [\n PageWrapperComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n CommonModule,\n RouterModule,\n HttpClientModule,\n\n modalModule,\n bsDatePickerModule,\n timepickerModule,\n bsDropdownModule,\n paginationModule,\n typeaheadModule,\n tooltipModule,\n progressbarModule,\n carouselModule,\n popoverModule,\n ngCircleProgressModule,\n\n routerModule,\n toastrModule,\n httpClientXsrfModule,\n\n MobileRuntimeDynamicModule,\n WM_MODULES_FOR_ROOT\n ],\n providers: [\n AppResourceManagerService,\n { provide: AppJSProvider, useClass: AppJSProviderService },\n { provide: AppVariablesProvider, useClass: AppVariablesProviderService },\n { provide: AppExtensionProvider,useClass:AppExtensionProviderService},\n { provide: ComponentRefProvider, useClass: ComponentRefProviderService },\n { provide: PartialRefProvider, useClass: ComponentRefProviderService },\n { provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },\n { provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor(private app: App, private inj: Injector, private componentRefProvider: ComponentRefProvider) {\n if (window['cordova']) {\n // clear the cached urls on logout, to load the Login Page and not the Main Page as app reload(window.location.reload) is not invoked in mobile\n this.app.subscribe('userLoggedOut', this.componentRefProvider.clearComponentFactoryRefCache.bind(this.componentRefProvider));\n }\n }\n}\n","import { ApplicationRef, enableProdMode, NgModuleRef } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\n\ndeclare const _;\nconst DEBUG_MODE = 'debugMode';\n\nif (sessionStorage.getItem(DEBUG_MODE) !== 'true') {\n enableProdMode();\n}\n\nconsole.time('bootstrap');\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new Promise<void|Event>( resolve => {\n if (window['cordova']) {\n document.addEventListener('deviceready', resolve);\n } else {\n resolve();\n }\n }).then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n .then((appModuleRef: NgModuleRef<AppModule>) => {\n const applicationRef = appModuleRef.injector.get(ApplicationRef);\n window.addEventListener('unload', () => {\n applicationRef.components.map(c => c && c.destroy());\n });\n console.timeEnd('bootstrap');\n }, err => console.log(err));\n});\n\n(window as any).debugMode = function(on) {\n if (_.isEmpty(on)) {\n on = true;\n }\n const value = on ? 'true' : 'false';\n if (sessionStorage.getItem(DEBUG_MODE) !== value) {\n sessionStorage.setItem(DEBUG_MODE, value);\n window.location.reload();\n }\n};\n\nexport default () => {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","cache","i1.AppResourceManagerService","i2","i3","ngxTimepickerModule","ngxPaginationModule","ngxCarouselModule","ngxPopoverModule","PaginationModule","PopoverModule","CarouselModule"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../projects/runtime-dynamic/src/app/components/page-wrapper.component.ts","../../../../projects/runtime-dynamic/src/app/app.routes.ts","../../../../projects/runtime-dynamic/src/app/services/app-js-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-resource-manager.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-variables-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/app-extension.service.ts","../../../../projects/runtime-dynamic/src/app/services/component-ref-provider.service.ts","../../../../projects/runtime-dynamic/src/app/services/prefab-config-provider.service.ts","../../../../projects/runtime-dynamic/src/app/app.module.ts","../../../../projects/runtime-dynamic/src/main.ts","../../../../projects/runtime-dynamic/src/index.ts"],"sourcesContent":["import {\n ApplicationRef,\n Component,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n HostListener\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport { AbstractSpinnerService, App, noop} from '@wm/core';\nimport { MetadataService } from '@wm/variables';\nimport { SecurityService } from '@wm/security';\nimport { AppManagerService, BasePageComponent, ComponentRefProvider, ComponentType } from '@wm/runtime/base';\n\n@Component({\n selector: 'app-page-outlet',\n template: '<div></div>'\n})\nexport class PageWrapperComponent implements OnInit, OnDestroy {\n\n subscription: Subscription;\n instance: any;\n\n constructor(\n private injector: Injector,\n private route: ActivatedRoute,\n private vcRef: ViewContainerRef,\n private appRef: ApplicationRef,\n private metadataService: MetadataService,\n private securityService: SecurityService,\n private appManager: AppManagerService,\n private app: App,\n private ngZone: NgZone,\n private elRef: ElementRef,\n private spinnerService: AbstractSpinnerService,\n private componentRefProvider: ComponentRefProvider,\n private router: Router\n ) {}\n\n getTargetNode() {\n return this.elRef.nativeElement;\n }\n\n resetViewContainer() {\n this.vcRef.clear();\n const $target = this.getTargetNode();\n $target.innerHTML = '';\n }\n\n renderPage(pageName) {\n const $target = this.getTargetNode();\n\n this.appManager.loadAppVariables()\n .then(async () => {\n const pageComponentFactoryRef = await this.componentRefProvider.getComponentFactoryRef(pageName, ComponentType.PAGE);\n if (pageComponentFactoryRef) {\n const componentRef = this.vcRef.createComponent(pageComponentFactoryRef, 0, this.injector);\n this.instance = componentRef.instance;\n $target.appendChild(componentRef.location.nativeElement);\n } else {\n BasePageComponent.clear();\n }\n if (this.vcRef.length > 1) {\n this.vcRef.remove(1);\n }\n });\n }\n\n renderPrefabPreviewPage() {\n this.router.navigate(['prefab-preview']);\n }\n\n loadPage(pageName) {\n this.ngZone.run(() => {\n if (pageName) {\n this.renderPage(pageName);\n }\n });\n }\n\n ngOnInit() {\n if (this.app.isPrefabType) {\n // there is only one route\n this.renderPrefabPreviewPage();\n } else {\n $(this.getTargetNode()).find('>div').first().remove();\n this.subscription = this.route.params.subscribe(({pageName}: any) => {\n this.loadPage(pageName);\n });\n }\n }\n\n ngOnDestroy() {\n this.vcRef.clear();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n ngOnAttach() {\n this.getTargetNode().appendChild(this.instance.$page[0]);\n this.instance.ngOnAttach();\n }\n\n ngOnDetach() {\n this.instance.ngOnDetach();\n }\n}\n","import { MetadataResolve, AppExtensionJSResolve } from '@wm/runtime/base';\nimport { SecurityConfigResolve, PrefabPreviewComponent, CanDeactivatePageGuard, EmptyPageComponent } from '@wm/runtime/base';\n\nimport { PageWrapperComponent } from './components/page-wrapper.component';\nimport {Routes} from '@angular/router';\n\nconst appDependenciesResolve = {\n securityConfig: SecurityConfigResolve,\n metadata: MetadataResolve,\n appMetaConfig: AppExtensionJSResolve\n};\n\nexport const routes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: EmptyPageComponent\n },\n {\n path: 'prefab-preview',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: PrefabPreviewComponent\n },\n {\n path: ':pageName',\n pathMatch: 'full',\n resolve: appDependenciesResolve,\n component: PageWrapperComponent,\n canDeactivate: [CanDeactivatePageGuard]\n }\n];\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { AppJSProvider } from '@wm/runtime/base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppJSProviderService extends AppJSProvider {\n constructor(private $http: HttpClient) {\n super();\n }\n\n public getAppScriptFn(): Promise<Function> {\n return this.$http.get('./app.js', {responseType: 'text'})\n .toPromise()\n .then(script => new Function('App', 'Utils', 'Injector', script));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { AbstractHttpService, App } from '@wm/core';\n\nconst cache = new Map<string, string>();\n\n@Injectable()\nexport class AppResourceManagerService {\n\n get(url: string, useCache?: boolean): string | any {\n const cachedResponse = cache.get(url);\n\n if (cachedResponse) {\n return Promise.resolve(cachedResponse);\n }\n\n return this.$http.get(url).then(response => {\n if (useCache) {\n cache.set(url, response);\n }\n return response;\n });\n }\n\n public clearCache() {\n cache.clear();\n }\n\n constructor(private $http: AbstractHttpService) {}\n}\n","import { Injectable } from '@angular/core';\nimport { AppVariablesProvider } from '@wm/runtime/base';\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppVariablesProviderService extends AppVariablesProvider {\n constructor(private resourceManager: AppResourceManagerService) {\n super();\n }\n\n public async getAppVariables(): Promise<any> {\n return this.resourceManager.get('./app.variables.json');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppExtensionProvider } from '@wm/runtime/base';\nimport { appendScriptToHead } from '@wm/core';\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionProviderService extends AppExtensionProvider {\n\n // With renderer create element, added onloaded callback the append to the body\n public loadFormatterConfigScript(callback:Function):void {\n try{\n appendScriptToHead(callback);\n }catch(e){\n console.warn('Error while loading the formatters.js file');\n }\n }\n}\n","import {\n Compiler,\n Component,\n CUSTOM_ELEMENTS_SCHEMA, forwardRef, Inject,\n Injectable,\n Injector,\n NgModule,\n NO_ERRORS_SCHEMA,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { App, getValidJSON, UserDefinedExecutionContext } from '@wm/core';\nimport { transpile, scopeComponentStyles } from '@wm/transpiler';\nimport {\n AppManagerService,\n BasePageComponent,\n BasePartialComponent,\n BasePrefabComponent,\n ComponentRefProvider,\n ComponentType,\n RuntimeBaseModule,\n getPrefabMinJsonUrl,\n getPrefabPartialJsonUrl\n} from '@wm/runtime/base';\n\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\ninterface IPageMinJSON {\n markup: string;\n script: string;\n styles: string;\n variables: string;\n config?: string;\n}\n\ndeclare const window: any, _;\n\nconst fragmentCache = new Map<string, any>();\n\nwindow.resourceCache = fragmentCache;\n\nconst componentFactoryRefCache = new Map<ComponentType, Map<string, any>>();\n\ncomponentFactoryRefCache.set(ComponentType.PAGE, new Map<string, any>());\ncomponentFactoryRefCache.set(ComponentType.PARTIAL, new Map<string, any>());\ncomponentFactoryRefCache.set(ComponentType.PREFAB, new Map<string, any>());\n\nconst _decodeURIComponent = (str: string) => decodeURIComponent(str.replace(/\\+/g, ' '));\n\nconst getFragmentUrl = (fragmentName: string, type: ComponentType, options?) => {\n if (type === ComponentType.PAGE || type === ComponentType.PARTIAL) {\n return options && options.prefab ? getPrefabPartialJsonUrl(options.prefab, fragmentName) : `./pages/${fragmentName}/page.min.json`;\n } else if (type === ComponentType.PREFAB) {\n return getPrefabMinJsonUrl(fragmentName);\n }\n};\n\nconst scriptCache = new Map<string, Function>();\nconst execScript = (\n script: string,\n identifier: string,\n ctx: string,\n instance: any,\n app: any,\n utils: any\n) => {\n let fn = scriptCache.get(identifier);\n // Fix for [WMS-21196]: Incorrect script is being assigned, when 2 prefabs have same partial name (i.e. same identifier).\n if ((ctx === 'Partial' && !_.isUndefined(instance.Prefab)) || !fn) {\n fn = new Function(ctx, 'App', 'Utils', script);\n scriptCache.set(identifier, fn);\n }\n fn(instance, app, utils);\n};\n\nclass BaseDynamicComponent {\n init() {}\n}\n\nconst getDynamicModule = (componentRef: any) => {\n return NgModule({\n declarations: [componentRef],\n imports: [\n RuntimeBaseModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]\n })(class DynamicModule {});\n};\n\nconst getDynamicComponent = (\n componentName,\n type: ComponentType,\n template: string,\n css: string,\n script: any,\n variables: string,\n) => {\n\n const componentDef = {\n template,\n styles: [css],\n encapsulation: ViewEncapsulation.None\n };\n\n let BaseClass: any = BaseDynamicComponent;\n let selector = '';\n let context = '';\n\n switch (type) {\n case ComponentType.PAGE:\n BaseClass = BasePageComponent;\n selector = `app-page-${componentName}`;\n context = 'Page';\n break;\n case ComponentType.PARTIAL:\n BaseClass = BasePartialComponent;\n selector = `app-partial-${componentName}`;\n context = 'Partial';\n break;\n case ComponentType.PREFAB:\n BaseClass = BasePrefabComponent;\n selector = `app-prefab-${componentName}`;\n context = 'Prefab';\n break;\n }\n\n class DynamicComponent extends BaseClass {\n pageName;\n partialName;\n prefabName;\n constructor(@Inject(Injector) public injector: Injector) {\n super();\n this.injector = injector;\n switch (type) {\n case ComponentType.PAGE:\n this.pageName = componentName;\n break;\n case ComponentType.PARTIAL:\n this.partialName = componentName;\n break;\n case ComponentType.PREFAB:\n this.prefabName = componentName;\n break;\n }\n\n super.init();\n }\n\n evalUserScript(instance: any, appContext: any, utils: any) {\n execScript(script, selector, context, instance, appContext, utils);\n }\n\n getVariables() {\n return JSON.parse(variables);\n }\n\n // in preview mode, there will be no function registered. functions will be generated dynamically through $parseEvent and $parseExpr\n getExpressions() {\n return {};\n }\n }\n\n const component = Component({\n ...componentDef,\n selector,\n providers: [\n {\n provide: UserDefinedExecutionContext,\n useExisting: DynamicComponent\n }\n ]\n })(DynamicComponent)\n return component;\n};\n\n@Injectable()\nexport class ComponentRefProviderService extends ComponentRefProvider {\n\n private loadResourcesOfFragment(componentName, componentType, options?): Promise<IPageMinJSON> {\n const url = getFragmentUrl(componentName, componentType, options);\n\n const resource = fragmentCache.get(url);\n\n if (resource) {\n return Promise.resolve(resource);\n }\n\n return this.resouceMngr.get(url, true)\n .then(({markup, script, styles, variables}: IPageMinJSON) => {\n const response = {\n markup: transpile(_decodeURIComponent(markup)).markup,\n script: _decodeURIComponent(script),\n styles: scopeComponentStyles(componentName, componentType, _decodeURIComponent(styles)),\n variables: getValidJSON(_decodeURIComponent(variables))\n };\n fragmentCache.set(url, response);\n\n return response;\n }, e => {\n const status = e.details.status;\n const errorMsgMap = {\n 404 : this.app.appLocale.MESSAGE_PAGE_NOT_FOUND || 'The page you are trying to reach is not available',\n 403 : this.app.appLocale.LABEL_ACCESS_DENIED || 'Access Denied'\n };\n return Promise.reject(errorMsgMap[status]);\n });\n }\n\n constructor(\n private resouceMngr: AppResourceManagerService,\n private app: App,\n private appManager: AppManagerService,\n private compiler: Compiler\n ) {\n super();\n }\n\n public async getComponentFactoryRef(componentName: string, componentType: ComponentType, options?: {}): Promise<any> {\n // check in the cache.\n const componentFactoryMap = componentFactoryRefCache.get(componentType);\n let componentFactoryRef;\n if (componentFactoryMap) {\n const updatedComponentName = (options && options['prefab']) ? options['prefab'] + componentName : componentName;\n componentFactoryRef = componentFactoryMap.get(updatedComponentName);\n\n if (componentFactoryRef) {\n return componentFactoryRef;\n }\n }\n\n return this.loadResourcesOfFragment(componentName, componentType, options)\n .then(({markup, script, styles, variables}) => {\n\n const componentDef = getDynamicComponent(componentName, componentType, markup, styles, script, JSON.stringify(variables));\n const moduleDef = getDynamicModule(componentDef);\n\n componentFactoryRef = this.compiler\n .compileModuleAndAllComponentsSync(moduleDef)\n .componentFactories\n .filter(factory => // @ts-ignore\n factory.componentType === componentDef)[0];\n const updatedComponentName = (options && options['prefab']) ? options['prefab'] + componentName : componentName;\n componentFactoryRefCache.get(componentType).set(updatedComponentName, componentFactoryRef);\n\n return componentFactoryRef;\n }, (err) => {\n if (err) {\n const msg = \"Error while loading page\";\n // console the error for easy debugging\n console.log(msg, err);\n this.appManager.notifyApp(\n _.isString(err) ? err : msg + ', check browser console for error details',\n 'error'\n );\n }\n });\n }\n\n // clears the cache map\n public clearComponentFactoryRefCache() {\n this.resouceMngr.clearCache();\n fragmentCache.clear();\n componentFactoryRefCache.forEach(map => {\n map.clear();\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { getPrefabConfigUrl, PrefabConfigProvider } from '@wm/runtime/base';\n\nimport { AppResourceManagerService } from './app-resource-manager.service';\n\nconst cache = new Map<string, any>();\n@Injectable()\nexport class PrefabConfigProviderService extends PrefabConfigProvider {\n\n constructor(private resourceMngr: AppResourceManagerService) {\n super();\n }\n\n public getConfig(prefabName: string): Promise<any> {\n const config = cache.get(prefabName);\n if (config) {\n return Promise.resolve(config);\n }\n\n return this.resourceMngr.get(getPrefabConfigUrl(prefabName))\n .then(_config => {\n cache.set(prefabName, _config);\n return _config;\n });\n }\n}\n","import { Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\nimport { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { TimepickerModule as ngxTimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\nimport { PaginationModule as ngxPaginationModule } from 'ngx-bootstrap/pagination';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule as ngxPopoverModule } from 'ngx-bootstrap/popover';\n\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { ToastNoAnimationModule } from 'ngx-toastr';\nimport { CarouselModule as ngxCarouselModule, } from 'ngx-bootstrap/carousel';\n\nimport {App, getWmProjectProperties, PartialRefProvider} from '@wm/core';\n// Basic widgets\n\nimport { BasicModule } from '@wm/components/basic';\nimport { ProgressModule } from '@wm/components/basic/progress';\nimport { RichTextEditorModule } from '@wm/components/basic/rich-text-editor';\nimport { SearchModule } from '@wm/components/basic/search';\nimport { TreeModule } from '@wm/components/basic/tree';\n\n// input\nimport { InputModule } from '@wm/components/input';\nimport { CalendarModule } from '@wm/components/input/calendar';\nimport { ChipsModule } from '@wm/components/input/chips';\nimport { ColorPickerModule } from '@wm/components/input/color-picker';\nimport { CurrencyModule } from '@wm/components/input/currency';\nimport { EpochModule } from '@wm/components/input/epoch';\nimport { FileUploadModule } from '@wm/components/input/file-upload';\nimport { RatingModule } from '@wm/components/input/rating';\nimport { SliderModule } from '@wm/components/input/slider';\n\nimport { MobileRuntimeDynamicModule, MOBILE_COMPONENT_MODULES_FOR_ROOT } from '@wm/mobile/runtime/dynamic';\n\n// Data\nimport { CardModule } from '@wm/components/data/card';\nimport { FormModule } from '@wm/components/data/form';\nimport { ListModule } from '@wm/components/data/list';\nimport { LiveTableModule } from '@wm/components/data/live-table';\nimport { PaginationModule } from '@wm/components/data/pagination';\nimport { TableModule } from '@wm/components/data/table';\n\n// Chart\nimport { ChartModule } from '@wm/components/chart';\n\n// Containers\nimport { AccordionModule } from '@wm/components/containers/accordion';\nimport { LinearLayoutModule } from '@wm/components/containers/linear-layout';\nimport { LayoutGridModule } from '@wm/components/containers/layout-grid';\nimport { PanelModule } from '@wm/components/containers/panel';\nimport { TabsModule } from '@wm/components/containers/tabs';\nimport { TileModule } from '@wm/components/containers/tile';\nimport { WizardModule } from '@wm/components/containers/wizard';\n\n// Dialogs\nimport { AlertDialogModule } from '@wm/components/dialogs/alert-dialog';\nimport { IframeDialogModule } from '@wm/components/dialogs/iframe-dialog';\nimport { LoginDialogModule } from '@wm/components/dialogs/login-dialog';\nimport { PartialDialogModule } from '@wm/components/dialogs/partial-dialog';\n\n// Navigation\nimport { BreadcrumbModule } from '@wm/components/navigation/breadcrumb';\nimport { MenuModule } from '@wm/components/navigation/menu';\nimport { NavbarModule } from '@wm/components/navigation/navbar';\nimport { PopoverModule } from '@wm/components/navigation/popover';\n\n// Advanced\nimport { CarouselModule } from '@wm/components/advanced/carousel';\nimport { LoginModule } from '@wm/components/advanced/login';\nimport { MarqueeModule } from '@wm/components/advanced/marquee';\n\nimport { PageModule } from '@wm/components/page';\nimport { FooterModule } from '@wm/components/page/footer';\nimport { HeaderModule } from '@wm/components/page/header';\nimport { LeftPanelModule } from '@wm/components/page/left-panel';\nimport { RightPanelModule } from '@wm/components/page/right-panel';\nimport { TopNavModule } from '@wm/components/page/top-nav';\n\nimport { PrefabModule } from '@wm/components/prefab';\n\nimport {\n AppComponent,\n AppJSProvider,\n AppVariablesProvider,\n ComponentRefProvider,\n PrefabConfigProvider,\n WmRouteReuseStrategy,\n WM_MODULES_FOR_ROOT,\n REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS,\n AppExtensionProvider\n} from '@wm/runtime/base';\n\nimport { routes } from './app.routes';\nimport { PageWrapperComponent } from './components/page-wrapper.component';\nimport { AppJSProviderService } from './services/app-js-provider.service';\nimport { AppVariablesProviderService } from './services/app-variables-provider.service';\nimport { AppExtensionProviderService } from './services/app-extension.service';\nimport { ComponentRefProviderService } from './services/component-ref-provider.service';\nimport { PrefabConfigProviderService } from './services/prefab-config-provider.service';\nimport { AppResourceManagerService } from './services/app-resource-manager.service';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nexport const routerModule = RouterModule.forRoot(routes, { useHash: true, scrollPositionRestoration: 'top' });\nexport const toastrModule = ToastNoAnimationModule.forRoot({ maxOpened: 1, autoDismiss: true });\n\n// In angular 15, xsrf headerName should not be null. Angular 15 is not using default header value like it used to send in calls\n// for angular 12 if the headerName is null . The user has to take care of not sending null values. Then ng 15 uses default value for headerName\nlet xsrfHeaderName = getWmProjectProperties().xsrf_header_name;\nlet xsrfOptions = {\n cookieName: 'wm_xsrf_token'\n}\nif(xsrfHeaderName) {\n xsrfOptions['headerName'] = xsrfHeaderName;\n}\nexport const httpClientXsrfModule = HttpClientXsrfModule.withOptions(xsrfOptions);\n\nexport const modalModule: ModuleWithProviders<ModalModule> = ModalModule.forRoot();\nexport const bsDatePickerModule: ModuleWithProviders<BsDatepickerModule> = BsDatepickerModule.forRoot();\nexport const timepickerModule: ModuleWithProviders<ngxTimepickerModule> = ngxTimepickerModule.forRoot();\nexport const bsDropdownModule: ModuleWithProviders<BsDropdownModule> = BsDropdownModule.forRoot();\nexport const paginationModule: ModuleWithProviders<ngxPaginationModule> = ngxPaginationModule.forRoot();\nexport const typeaheadModule: ModuleWithProviders<TypeaheadModule> = TypeaheadModule.forRoot();\nexport const progressbarModule: ModuleWithProviders<ProgressbarModule> = ProgressbarModule.forRoot();\nexport const carouselModule: ModuleWithProviders<ngxCarouselModule> = ngxCarouselModule.forRoot();\nexport const popoverModule: ModuleWithProviders<ngxPopoverModule> = ngxPopoverModule.forRoot();\nexport const ngCircleProgressModule: ModuleWithProviders<NgCircleProgressModule> = NgCircleProgressModule.forRoot({});\nexport const tooltipModule: ModuleWithProviders<TooltipModule> = TooltipModule.forRoot();\n\nconst componentsModule = [\n // NGX Bootstrap\n BsDatepickerModule,\n ngxTimepickerModule,\n BsDropdownModule,\n ngxPaginationModule,\n TypeaheadModule,\n ProgressbarModule,\n ngxCarouselModule,\n ngxPopoverModule,\n NgCircleProgressModule,\n TooltipModule,\n\n // Basic widgets\n BasicModule,\n ProgressModule,\n RichTextEditorModule,\n SearchModule,\n TreeModule,\n\n // Input\n CalendarModule,\n ChipsModule,\n ColorPickerModule,\n CurrencyModule,\n EpochModule,\n FileUploadModule,\n InputModule,\n RatingModule,\n SliderModule,\n\n // Data\n CardModule,\n FormModule,\n ListModule,\n LiveTableModule,\n PaginationModule,\n TableModule,\n\n // chart\n ChartModule,\n\n // container modules\n AccordionModule,\n LinearLayoutModule,\n LayoutGridModule,\n PanelModule,\n TabsModule,\n TileModule,\n WizardModule,\n\n // dialogs\n AlertDialogModule,\n IframeDialogModule,\n LoginDialogModule,\n PartialDialogModule,\n\n // navigation\n BreadcrumbModule,\n MenuModule,\n NavbarModule,\n PopoverModule,\n\n // Advanced\n CarouselModule,\n LoginModule,\n MarqueeModule,\n\n PageModule,\n FooterModule,\n HeaderModule,\n LeftPanelModule,\n RightPanelModule,\n TopNavModule,\n\n PrefabModule\n];\n\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(...componentsModule);\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(...MOBILE_COMPONENT_MODULES_FOR_ROOT);\nREQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS.push(FormsModule, ReactiveFormsModule);\n\n@NgModule({\n declarations: [\n PageWrapperComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n CommonModule,\n RouterModule,\n HttpClientModule,\n\n modalModule,\n bsDatePickerModule,\n timepickerModule,\n bsDropdownModule,\n paginationModule,\n typeaheadModule,\n tooltipModule,\n progressbarModule,\n carouselModule,\n popoverModule,\n ngCircleProgressModule,\n\n routerModule,\n toastrModule,\n httpClientXsrfModule,\n\n MobileRuntimeDynamicModule,\n WM_MODULES_FOR_ROOT\n ],\n providers: [\n AppResourceManagerService,\n { provide: AppJSProvider, useClass: AppJSProviderService },\n { provide: AppVariablesProvider, useClass: AppVariablesProviderService },\n { provide: AppExtensionProvider,useClass:AppExtensionProviderService},\n { provide: ComponentRefProvider, useClass: ComponentRefProviderService },\n { provide: PartialRefProvider, useClass: ComponentRefProviderService },\n { provide: PrefabConfigProvider, useClass: PrefabConfigProviderService },\n { provide: RouteReuseStrategy, useClass: WmRouteReuseStrategy }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor(private app: App, private inj: Injector, private componentRefProvider: ComponentRefProvider) {\n if (window['cordova']) {\n // clear the cached urls on logout, to load the Login Page and not the Main Page as app reload(window.location.reload) is not invoked in mobile\n this.app.subscribe('userLoggedOut', this.componentRefProvider.clearComponentFactoryRefCache.bind(this.componentRefProvider));\n }\n }\n}\n","import { ApplicationRef, enableProdMode, NgModuleRef } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\n\ndeclare const _;\nconst DEBUG_MODE = 'debugMode';\n\nif (sessionStorage.getItem(DEBUG_MODE) !== 'true') {\n enableProdMode();\n}\n\nconsole.time('bootstrap');\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new Promise<void|Event>( resolve => {\n if (window['cordova']) {\n document.addEventListener('deviceready', resolve);\n } else {\n resolve();\n }\n }).then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n .then((appModuleRef: NgModuleRef<AppModule>) => {\n const applicationRef = appModuleRef.injector.get(ApplicationRef);\n window.addEventListener('unload', () => {\n applicationRef.components.map(c => c && c.destroy());\n });\n console.timeEnd('bootstrap');\n }, err => console.log(err));\n});\n\n(window as any).debugMode = function(on) {\n if (_.isEmpty(on)) {\n on = true;\n }\n const value = on ? 'true' : 'false';\n if (sessionStorage.getItem(DEBUG_MODE) !== value) {\n sessionStorage.setItem(DEBUG_MODE, value);\n window.location.reload();\n }\n};\n\nexport default () => {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","cache","i1.AppResourceManagerService","i2","i3","ngxTimepickerModule","ngxPaginationModule","ngxCarouselModule","ngxPopoverModule","PaginationModule","PopoverModule","CarouselModule"],"mappings":"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"}
@@ -185,7 +185,7 @@
185
185
  const OVERRIDES = {
186
186
  'accessroles': '*accessroles',
187
187
  'ng-if': '*ngIf',
188
- 'showindevice': '*showInDevice',
188
+ 'showindevice': '*wmShowInDevice',
189
189
  'ng-class': '[ngClass]',
190
190
  'data-ng-class': '[ngClass]',
191
191
  'data-ng-src': 'src',
@@ -10,7 +10,7 @@ const isString = v => typeof v === 'string';
10
10
  const OVERRIDES = {
11
11
  'accessroles': '*accessroles',
12
12
  'ng-if': '*ngIf',
13
- 'showindevice': '*showInDevice',
13
+ 'showindevice': '*wmShowInDevice',
14
14
  'ng-class': '[ngClass]',
15
15
  'data-ng-class': '[ngClass]',
16
16
  'data-ng-src': 'src',
@@ -482,4 +482,4 @@ export const scopeComponentStyles = (componentName, componentType, styles = '')
482
482
  }
483
483
  return styles;
484
484
  };
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90cmFuc3BpbGVyL3NyYy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLG9CQUFvQixFQUN2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl2QyxNQUFNLFNBQVMsR0FBRztJQUNkLGVBQWUsRUFBRywwQkFBMEI7SUFDNUMsZUFBZSxFQUFHLGNBQWM7SUFDaEMsdUJBQXVCLEVBQUcsa0VBQWtFO0NBQy9GLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQU81QyxNQUFNLFNBQVMsR0FBRztJQUNkLGFBQWEsRUFBRSxjQUFjO0lBQzdCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLGNBQWMsRUFBRSxlQUFlO0lBQy9CLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLGVBQWUsRUFBRSxXQUFXO0lBQzVCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsY0FBYyxFQUFFLE1BQU07SUFDdEIsU0FBUyxFQUFFLE1BQU07SUFDakIsYUFBYSxFQUFFLFVBQVU7SUFDekIsa0JBQWtCLEVBQUUsVUFBVTtJQUM5QixVQUFVLEVBQUUsbURBQW1EO0NBQ2xFLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFD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ZXh0LFxuICAgIENvbW1lbnQsXG4gICAgZ2V0SHRtbFRhZ0RlZmluaXRpb24sIFBhcnNlU291cmNlU3BhblxufSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgeyBXSURHRVRfSU1QT1JUUyB9IGZyb20gJy4vaW1wb3J0cyc7XG5pbXBvcnQgeyBpc01vYmlsZUFwcCB9IGZyb20gJ0B3bS9jb3JlJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBDU1NfUkVHRVggPSB7XG4gICAgQ09NTUVOVFNfRk9STUFUIDogL1xcL1xcKigoPyFcXCpcXC8pLnxcXG4pK1xcKlxcLy9nLFxuICAgIFNFTEVDVE9SX0ZPUk1BVCA6IC9bXlxce1xcfV0qXFx7L2dpLFxuICAgIFNFTEVDVE9SX0VYQ0xVREVfRk9STUFUIDogLyhAa2V5ZnJhbWVzfEBtZWRpYXxAZm9udC1mYWNlfEBjb21tZW50WzAtOV0rfGZyb218dG98WzAtOV0rJSlcXGIvaVxufTtcblxuY29uc3QgaXNTdHJpbmcgPSB2ID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJztcblxuaW50ZXJmYWNlIElQcm92aWRlckluZm8ge1xuICAgIG5vZGVOYW1lOiBzdHJpbmc7XG4gICAgcHJvdmlkZTogTWFwPHN0cmluZywgYW55Pjtcbn1cblxuY29uc3QgT1ZFUlJJREVTID0ge1xuICAgICdhY2Nlc3Nyb2xlcyc6ICcqYWNjZXNzcm9sZXMnLFxuICAgICduZy1pZic6ICcqbmdJZicsXG4gICAgJ3Nob3dpbmRldmljZSc6ICcqc2hvd0luRGV2aWNlJyxcbiAgICAnbmctY2xhc3MnOiAnW25nQ2xhc3NdJyxcbiAgICAnZGF0YS1uZy1jbGFzcyc6ICdbbmdDbGFzc10nLFxuICAgICdkYXRhLW5nLXNyYyc6ICdzcmMnLFxuICAgICduZy1zcmMnOiAnc3JjJyxcbiAgICAnZGF0YS1uZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1kaXNhYmxlZCc6ICdkaXNhYmxlZCcsXG4gICAgJ2RhdGEtbmctZGlzYWJsZWQnOiAnZGlzYWJsZWQnLFxuICAgICduZy1tb2RlbCc6ICdbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgWyhuZ01vZGVsKV0nXG59O1xuXG5jb25zdCBzZWxmQ2xvc2luZ1RhZ3MgPSBuZXcgU2V0KFsnaW1nJ10pO1xuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRUb0V4cHIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ2JpbmQ6JykpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cig1KTtcbiAgICB9XG59O1xuXG5jb25zdCBxdW90ZUF0dHIgPSB2ID0+IHtcbiAgICByZXR1cm4gKCcnICsgdikgLyogRm9yY2VzIHRoZSBjb252ZXJzaW9uIHRvIHN0cmluZy4gKi9cbiAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykgLyogVGhpcyBNVVNUIGJlIHRoZSAxc3QgcmVwbGFjZW1lbnQuICovXG4gICAgICAgIC5yZXBsYWNlKC8nL2csICcmYXBvczsnKSAvKiBUaGUgNCBvdGhlciBwcmVkZWZpbmVkIGVudGl0aWVzLCByZXF1aXJlZC4gKi9cbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59O1xuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5jb25zdCBodG1sUGFyc2VyID0gbmV3IEh0bWxQYXJzZXIoKTtcbmNvbnN0IGlnbm9yZUNvbW1lbnRzID0gdHJ1ZTtcblxuY29uc3QgZW1wdHkgPSAoKSA9PiAnJztcblxuY29uc3QgaXNFdmVudCA9IG5hbWUgPT4gbmFtZVswXSA9PT0gJ28nICYmIG5hbWVbMV0gPT09ICduJyAmJiBuYW1lWzJdID09PSAnLSc7XG5cbmNvbnN0IGdldEV2ZW50TmFtZSA9IGtleSA9PiBrZXkuc3Vic3RyKDMpO1xuXG5jb25zdCBwcm9jZXNzQmluZGluZyA9IChhdHRyLCBleHByKSA9PiBbYCR7YXR0ci5uYW1lfS5iaW5kYCwgcXVvdGVBdHRyKGV4cHIpXTtcblxuY29uc3QgcHJvY2Vzc0V2ZW50ID0gYXR0ciA9PiB7XG4gICAgY29uc3QgZXZ0TmFtZSA9IGdldEV2ZW50TmFtZShhdHRyLm5hbWUpO1xuICAgIHJldHVybiBbYCR7ZXZ0TmFtZX0uZXZlbnRgLCBhdHRyLnZhbHVlXTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIHN0cmluZyB3aXRoIHNpbmdsZSBxdW90ZXMuXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmNvbnN0IHdyYXBXaXRoQXBvcyA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJmFwb3M7JHt2YWwucmVwbGFjZSgvJmFwb3MvZywgJyZxdW90JykucmVwbGFjZSgvJnF1b3QvZywgJ1xcXFwmcXVvdCcpfSZhcG9zO2A7XG59O1xuY29uc3QgRUxFX1BSRUZJWCA9ICcud20tYXBwJztcblxuY29uc3QgcHJvY2Vzc0F0dHIgPSBhdHRyID0+IHtcbiAgICBsZXQgb3ZlcnJpZGRlbiA9IE9WRVJSSURFU1thdHRyLm5hbWVdO1xuICAgIGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZVNwYW4gPyBhdHRyLnZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gZG8gbm90IGFwcGVuZCBzaG93SW5EZXZpY2UgYXR0cmlidXRlIGZvciBtb2JpbGUgYXBwbGljYXRpb24uXG4gICAgaWYgKGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScgJiYgaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICBvdmVycmlkZGVuID0gJyc7XG4gICAgfVxuICAgIGlmIChvdmVycmlkZGVuKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3cmFwIHZhbHVlIGZvciBhY2Nlc3Nyb2xlcyB3aXRoICcnLlxuICAgICAgICAgKiBzaW5jZSBhY2Nlc3Nyb2xlcyBpcyBhIHN0cnVjdHVyYWwgZGlyZWN0aXZlLCBpdCB3aWxsIGJlIHRyYW5zcGlsZWQgdG8gW2FjY2Vzc3JvbGVzXVxuICAgICAgICAgKiBoZW5jZSwgdGhlIHZhbHVlIGFnYWluc3QgaXQgc2hvdWxkIGJlIGEgY29tcHV0ZWQgc3RyaW5nXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoYXR0ci5uYW1lID09PSAnYWNjZXNzcm9sZXMnIHx8IGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScpIHtcbiAgICAgICAgICAgIHJldHVybiBbb3ZlcnJpZGRlbiwgYCcke3ZhbHVlfSdgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW292ZXJyaWRkZW4sIHF1b3RlQXR0cih2YWx1ZSldO1xuICAgIH1cblxuICAgIGlmIChpc0V2ZW50KGF0dHIubmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NFdmVudChhdHRyKTtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZEV4cHIgPSBnZXRCb3VuZFRvRXhwcihhdHRyLnZhbHVlKTtcbiAgICBpZiAoYm91bmRFeHByKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzQmluZGluZyhhdHRyLCBib3VuZEV4cHIpO1xuICAgIH1cblxuICAgIHJldHVybiBbYXR0ci5uYW1lLCBxdW90ZUF0dHIodmFsdWUpXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhU291cmNlID0gKGRhdGFTZXRFeHByOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0gZGF0YVNldEV4cHIuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydHNbMF0gPT09ICdWYXJpYWJsZXMnIHx8IHBhcnRzWzBdID09PSAnV2lkZ2V0cycpIHtcbiAgICAgICAgcmV0dXJuIGAke3BhcnRzWzBdfS4ke3BhcnRzWzFdfWA7XG4gICAgfVxufTtcblxuY29uc3Qgd2lkZ2V0Q2hpbGRBdHRycyA9ICgoKSA9PiB7XG4gICAgY29uc3QgY2hpbGRBdHRycyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCB2YWxpZENoaWxkQXR0cnMgPSBbXG4gICAgICAgIGByZXF1aXJlZGBcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNldDogYXR0cnMgPT4ge1xuICAgICAgICAgICAgYXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZENoaWxkQXR0cnMuaW5jbHVkZXMoa2V5KSAmJiAoY2hpbGRBdHRycy5zZXQoa2V5LCB2YWwpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXQ6IGF0dHJzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZsdHJBdHRycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGNoaWxkQXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAhYXR0cnMuZ2V0KGtleSkgJiYgZmx0ckF0dHJzLnNldChrZXksIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmbHRyQXR0cnM7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICBjaGlsZEF0dHJzLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9O1xufSkoKTtcbmV4cG9ydCBjb25zdCBzZXRDaGlsZEF0dHJzID0gYXR0cnMgPT4ge1xuICAgIHdpZGdldENoaWxkQXR0cnMuc2V0KGF0dHJzKTtcbiAgICByZXR1cm4gJyc7XG59O1xuZXhwb3J0IGNvbnN0IGdldENoaWxkQXR0cnMgPSBhdHRycyA9PiB7XG4gICAgcmV0dXJuIGdldEF0dHJNYXJrdXAod2lkZ2V0Q2hpbGRBdHRycy5nZXQoYXR0cnMpKTtcbn07XG5leHBvcnQgY29uc3QgY2xlYXJDaGlsZEF0dHJzID0gKCkgPT4ge1xuICAgIHdpZGdldENoaWxkQXR0cnMuY2xlYXIoKTtcbiAgICByZXR1cm4gJyc7XG59O1xuZXhwb3J0IGNvbnN0IGdldEZvcm1NYXJrdXBBdHRyID0gYXR0cnMgPT4ge1xuICAgIGlmIChhdHRycy5nZXQoJ2RhdGF2YWx1ZS5iaW5kJykpIHtcbiAgICAgICAgY29uc3Qgb25EYXRhVmFsdWVCaW5kaW5nID0gZ2V0RGF0YVNvdXJjZShhdHRycy5nZXQoJ2RhdGF2YWx1ZS5iaW5kJykpO1xuICAgICAgICBhdHRycy5zZXQoJ2RhdGF2YWx1ZXNvdXJjZS5iaW5kJywgb25EYXRhVmFsdWVCaW5kaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldEF0dHJNYXJrdXAoYXR0cnMpO1xufTtcblxuY29uc3QgZ2V0QXR0ck1hcCA9IGF0dHJzID0+IHtcbiAgICBjb25zdCBhdHRyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBhdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICBsZXQgW2F0dHJOYW1lLCBhdHRyVmFsdWVdID0gcHJvY2Vzc0F0dHIoYXR0cik7XG4gICAgICAgIGF0dHJNYXAuc2V0KGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGF0dHJNYXAuZ2V0KCdkYXRhc2V0LmJpbmQnKSkge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gZ2V0RGF0YVNvdXJjZShhdHRyTWFwLmdldCgnZGF0YXNldC5iaW5kJykpO1xuICAgICAgICBpZiAoZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgYXR0ck1hcC5zZXQoJ2RhdGFzb3VyY2UuYmluZCcsIGRhdGFTb3VyY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dHJNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0ck1hcmt1cCA9IChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICAgIGxldCBhdHRyTWFya3VwID0gJyc7XG4gICAgYXR0cnMuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICBhdHRyTWFya3VwICs9IGAgJHtrfWA7XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB2ID0gdi50cmltKCk7XG4gICAgICAgICAgICBpZiAoayA9PT0gJ1tuZ0NsYXNzXScgJiYgdi5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKC9cIi9nLCBgJ2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGsgPT09ICdzaG93LmJpbmQnICYmIGF0dHJzLmdldCgnZGVmZXJsb2FkJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgICAgIHYgPSB2ICsgYFwiICpsYXp5TG9hZD1cIiR7d3JhcFdpdGhBcG9zKHYpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdHRyTWFya3VwICs9IGA9XCIke3Z9XCJgO1xuXG4gICAgICAgICAgICBpZiAoayA9PT0gJ3Nob3dpbmRldmljZScgJiYgdiAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAodi5pbmNsdWRlcygneHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ucHVzaCgnVmlld3BvcnQuaXNNb2JpbGVUeXBlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2LmluY2x1ZGVzKCdzbScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5wdXNoKCcoVmlld3BvcnQuaXNUYWJsZXRUeXBlICYmIFZpZXdwb3J0Lm9yaWVudGF0aW9uLmlzUG9ydHJhaXQpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2LmluY2x1ZGVzKCdtZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5wdXNoKCcoVmlld3BvcnQuaXNUYWJsZXRUeXBlICYmIFZpZXdwb3J0Lm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdHRyTWFya3VwICs9IGAgKm5nSWY9XCIke2NvbmRpdGlvbi5qb2luKCcgfHwgJyl9XCJgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0ck1hcmt1cDtcbn07XG5cbmNvbnN0IGdldFJlcXVpcmVkUHJvdmlkZXJzID0gKG5vZGVEZWY6IElCdWlsZFRhc2tEZWYsIHByb3ZpZGVyczogQXJyYXk8SVByb3ZpZGVySW5mbz4sIG5vZGVBdHRycykgPT4ge1xuICAgIGlmICghbm9kZURlZi5yZXF1aXJlcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IHJlcXVpcmVzID0gbm9kZURlZi5yZXF1aXJlcyBhcyBhbnk7XG5cbiAgICBpZiAoaXNTdHJpbmcocmVxdWlyZXMpKSB7XG4gICAgICAgIHJlcXVpcmVzID0gW3JlcXVpcmVzXTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVxdWlyZXMpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWlyZXMubWFwKHJlcXVpcmUgPT4ge1xuICAgICAgICAvLyBmb3IgZHluYW1pYyB0YWJsZSBhc3NpZ25pbmcgcGFyZW50IHByb3ZpZGUgbWFwIHRvIHRoZSBjaGlsZCxcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVBdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIGlmIChub2RlQXR0cnNbaV0ubmFtZSA9PT0gJ3RhYmxlTmFtZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlZltub2RlQXR0cnNbaV0udmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHByb3ZpZGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlcnNbaV0ubm9kZU5hbWUgPT09IHJlcXVpcmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzW2ldLnByb3ZpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IERJTUVOU0lPTl9QUk9QUyA9IFsncGFkZGluZycsICdib3JkZXJ3aWR0aCcsICdtYXJnaW4nXTtcblxuY29uc3QgU0VQQVJBVE9SID0gJyAnLCBVTlNFVCA9ICd1bnNldCc7XG5cbmNvbnN0IHNldERpbWVuc2lvblByb3AgPSAoY3NzT2JqLCBrZXksIG52KSA9PiB7XG4gICAgbGV0IGNzc0tleSA9IGtleSwgdmFsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN1ZmZpeCA9ICcnO1xuXG4gICAgZnVuY3Rpb24gc2V0VmFsKHByb3AsIHZhbHVlKSB7XG4gICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBVTlNFVCwgcmVzZXQgdGhlIGV4aXN0aW5nIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gVU5TRVQpIHtcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY3NzT2JqW2Nzc0tleSArIHByb3AgKyBzdWZmaXhdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ2JvcmRlcndpZHRoJykge1xuICAgICAgICBzdWZmaXggPSAgJ3dpZHRoJztcbiAgICAgICAgY3NzS2V5ID0gJ2JvcmRlcic7XG4gICAgfVxuXG4gICAgdmFsID0gbnY7XG5cbiAgICBpZiAodmFsLmluZGV4T2YoVU5TRVQpICE9PSAtMSkge1xuICAgICAgICB2YWwgPSB2YWwuc3BsaXQoU0VQQVJBVE9SKTtcblxuICAgICAgICB0b3AgICAgPSB2YWxbMF07XG4gICAgICAgIHJpZ2h0ICA9IHZhbFsxXSB8fCB2YWxbMF07XG4gICAgICAgIGJvdHRvbSA9IHZhbFsyXSB8fCB2YWxbMF07XG4gICAgICAgIGxlZnQgICA9IHZhbFszXSB8fCB2YWxbMV0gfHwgdmFsWzBdO1xuXG4gICAgICAgIHNldFZhbCgndG9wJywgICAgdG9wKTtcbiAgICAgICAgc2V0VmFsKCdyaWdodCcsICByaWdodCk7XG4gICAgICAgIHNldFZhbCgnYm90dG9tJywgYm90dG9tKTtcbiAgICAgICAgc2V0VmFsKCdsZWZ0JywgICBsZWZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSAnYm9yZGVyd2lkdGgnKSB7XG4gICAgICAgICAgICBjc3NLZXkgPSAnYm9yZGVyd2lkdGgnO1xuICAgICAgICB9XG4gICAgICAgIGNzc09ialtjc3NLZXldID0gbnY7XG4gICAgfVxufTtcblxuY29uc3QgcHJvY2Vzc0RpbWVuc2lvbkF0dHJpYnV0ZXMgPSBhdHRyTWFwID0+IHtcbiAgICBjb25zdCBhdHRyS2V5cyA9IEFycmF5LmZyb20oYXR0ck1hcC5rZXlzKCkpO1xuICAgIGF0dHJLZXlzLmZvckVhY2goKGF0dHJLZXk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoRElNRU5TSU9OX1BST1BTLmluY2x1ZGVzKGF0dHJLZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBjc3NPYmogPSB7fSxcbiAgICAgICAgICAgICAgICBhdHRyVmFsdWUgPSBhdHRyTWFwLmdldChhdHRyS2V5KTtcbiAgICAgICAgICAgIGF0dHJNYXAuZGVsZXRlKGF0dHJLZXkpO1xuICAgICAgICAgICAgc2V0RGltZW5zaW9uUHJvcChjc3NPYmosIGF0dHJLZXksIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjc3NPYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3NzT2JqW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0ck1hcC5zZXQoa2V5LCBjc3NPYmpba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vIHJlcGxhY2UgPDpzdmc6c3ZnPiAtPiA8c3ZnPiwgPDpzdmc6Kj4gLT4gPHN2ZzoqPlxuY29uc3QgZ2V0Tm9kZU5hbWUgPSBuYW1lID0+IG5hbWUucmVwbGFjZSgnOnN2ZzpzdmcnLCAnc3ZnJykucmVwbGFjZSgnOnN2ZzonLCAnc3ZnOicpO1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc05vZGUgPSAobm9kZSwgaW1wb3J0Q29sbGVjdG9yOiAoaTogSW1wb3J0RGVmW10pID0+IHZvaWQsIHByb3ZpZGVycz86IEFycmF5PElQcm92aWRlckluZm8+KSA9PiB7XG4gICAgY29uc3Qgbm9kZURlZiA9IHJlZ2lzdHJ5LmdldChub2RlLm5hbWUpO1xuXG4gICAgbGV0IHByZSwgcG9zdCwgdGVtcGxhdGU7XG5cbiAgICBpZiAobm9kZURlZikge1xuICAgICAgICBwcmUgPSBub2RlRGVmLnByZSB8fCBlbXB0eTtcbiAgICAgICAgcG9zdCA9IG5vZGVEZWYucG9zdCB8fCBlbXB0eTtcbiAgICAgICAgdGVtcGxhdGUgPSBub2RlRGVmLnRlbXBsYXRlIHx8IGVtcHR5O1xuICAgIH1cblxuICAgIGxldCBtYXJrdXAgPSAnJztcbiAgICBsZXQgYXR0ck1hcDtcbiAgICBsZXQgcmVxdWlyZWRQcm92aWRlcnM7XG4gICAgbGV0IHNoYXJlZDtcblxuICAgIGlmICghcHJvdmlkZXJzKSB7XG4gICAgICAgIHByb3ZpZGVycyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRWxlbWVudFR5cGUgPSBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcblxuICAgIGlmIChpc0VsZW1lbnRUeXBlKSB7XG4gICAgICAgIGxldCBwcm92aWRlSW5mbzogSVByb3ZpZGVySW5mbztcblxuICAgICAgICBpZiAobm9kZURlZikge1xuICAgICAgICAgICAgcmVxdWlyZWRQcm92aWRlcnMgPSBnZXRSZXF1aXJlZFByb3ZpZGVycyhub2RlRGVmLCBwcm92aWRlcnMsIG5vZGUuYXR0cnMpO1xuICAgICAgICAgICAgc2hhcmVkID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgdGVtcGxhdGUobm9kZSwgc2hhcmVkLCAuLi5yZXF1aXJlZFByb3ZpZGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyTWFwID0gZ2V0QXR0ck1hcChub2RlLmF0dHJzKTtcbiAgICAgICAgcHJvY2Vzc0RpbWVuc2lvbkF0dHJpYnV0ZXMoYXR0ck1hcCk7XG5cbiAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShub2RlLm5hbWUpO1xuXG4gICAgICAgIGlmIChub2RlRGVmKSB7XG4gICAgICAgICAgICBtYXJrdXAgPSAoPGFueT5wcmUpKGF0dHJNYXAsIHNoYXJlZCwgLi4ucmVxdWlyZWRQcm92aWRlcnMpO1xuICAgICAgICAgICAgaWYgKG5vZGVEZWYucHJvdmlkZSkge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBub2RlTmFtZTogbm9kZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBfLmlzRnVuY3Rpb24obm9kZURlZi5wcm92aWRlKSA/IG5vZGVEZWYucHJvdmlkZShhdHRyTWFwLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKSA6IG5vZGVEZWYucHJvdmlkZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gRm9yIHRhYmxlIG5vZGUsIGFzc2lnbmluZyBwYXJlbnQgcHJvdmlkZSBtYXAgdG8gdGhlIGNoaWxkLCBhcyBjaGlsZCByZXF1aXJlcyBzb21lIHBhcmVudCBwcm92aWRlIGF0dHJzLlxuICAgICAgICAgICAgICAgIGlmIChub2RlLm5hbWUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGVDb2xOb2RlRGVmbiA9IHJlZ2lzdHJ5LmdldCgnd20tdGFibGUtY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sTm9kZURlZm5bXy5maW5kKG5vZGUuYXR0cnMsIChlbCkgPT4gZWwubmFtZSA9PT0gJ25hbWUnKS52YWx1ZSArIHByb3ZpZGVJbmZvLnByb3ZpZGUuZ2V0KCd0YWJsZV9yZWZlcmVuY2UnKV0gPSBwcm92aWRlSW5mby5wcm92aWRlO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RyeS5zZXQoJ3dtLXRhYmxlLWNvbHVtbicsIHRhYmxlQ29sTm9kZURlZm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm92aWRlcnMucHVzaChwcm92aWRlSW5mbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXJrdXAgPSBgPCR7bm9kZU5hbWV9ICR7Z2V0QXR0ck1hcmt1cChhdHRyTWFwKX0+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IE5vZGUgfCBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmKGNoaWxkLmF0dHJzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNob3dJbkRldmljZUF0dHIsIGFjY2Vzc1JvbGVzQXR0ciwgZGVmZXJMb2FkQXR0ciwgc2hvd0F0dHI7XG4gICAgICAgICAgICAgICAgY2hpbGQuYXR0cnMuZm9yRWFjaChmdW5jdGlvbihhdHRyKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJbkRldmljZUF0dHIgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHIubmFtZSA9PT0gJ2FjY2Vzc3JvbGVzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzUm9sZXNBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyLm5hbWUgPT09ICdkZWZlcmxvYWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlckxvYWRBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyLm5hbWUgPT09ICdzaG93Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0F0dHIgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYoKHNob3dJbkRldmljZUF0dHIgJiYgYWNjZXNzUm9sZXNBdHRyKSB8fCAoc2hvd0luRGV2aWNlQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB8fCAoYWNjZXNzUm9sZXNBdHRyICYmIGRlZmVyTG9hZEF0dHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qIElmIG1vcmUgdGhhbiBvbmUgb3V0IG9mIHNob3dpbmRldmljZSwgYWNjZXNzcm9sZXMgYW5kIGRlZmVybG9hZCBleGlzdCBmb3IgYSB3aWRnZXQsIGFkZCBuZy1jb250YWluZXIgd3JhcHBlcnMgdG8gZml4IGFuZ3VsYXIgbGltaXRhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICBvZiBhcHBseWluZyBvbmx5IG9uZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSB0byBhbiBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAgICAqICAqL1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub1NwYW4gPSAoe30gYXMgUGFyc2VTb3VyY2VTcGFuKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd0luRGV2aWNlQ29udGFpbmVyOmFueSA9IHNob3dJbkRldmljZUF0dHIgPyBuZXcgRWxlbWVudCgnbmctY29udGFpbmVyJywgW10sIFtdLCBub1NwYW4sIG5vU3Bhbiwgbm9TcGFuKSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY2Nlc3NSb2xlc0NvbnRhaW5lcjphbnkgPSBhY2Nlc3NSb2xlc0F0dHIgPyBuZXcgRWxlbWVudCgnbmctY29udGFpbmVyJywgW10sIFtdLCBub1NwYW4sIG5vU3Bhbiwgbm9TcGFuKSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZlckxvYWRDb250YWluZXI6YW55ID0gZGVmZXJMb2FkQXR0ciA/IG5ldyBFbGVtZW50KCduZy1jb250YWluZXInLCBbXSwgW10sIG5vU3Bhbiwgbm9TcGFuLCBub1NwYW4pIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93SW5EZXZpY2VDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJbkRldmljZUNvbnRhaW5lci5hdHRycy5wdXNoKHNob3dJbkRldmljZUF0dHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NSb2xlc0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzUm9sZXNDb250YWluZXIuYXR0cnMucHVzaChhY2Nlc3NSb2xlc0F0dHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZlckxvYWRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTG9hZENvbnRhaW5lci5hdHRycy5wdXNoKGRlZmVyTG9hZEF0dHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJMb2FkQ29udGFpbmVyLmF0dHJzLnB1c2goc2hvd0F0dHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF8ucmVtb3ZlKGNoaWxkLmF0dHJzLCBmdW5jdGlvbihhdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5uYW1lID09PSAnc2hvd2luZGV2aWNlJyB8fCBhdHRyLm5hbWUgPT09ICdhY2Nlc3Nyb2xlcycgfHwgYXR0ci5uYW1lID09PSAnZGVmZXJsb2FkJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkQ29udGFpbmVyLCBwYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250YWluZXIgPSBzaG93SW5EZXZpY2VDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSBhY2Nlc3NSb2xlc0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGRlZmVyTG9hZEF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyID0gc2hvd0luRGV2aWNlQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gZGVmZXJMb2FkQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGFjY2Vzc1JvbGVzQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdyYXAgY3VycmVudCBub2RlIGVsZW1lbnRzIGluc2lkZSBmaXJzdCBuZy1jb250YWluZXIoY2hpbGRDb250YWluZXIpIGFuZCB0aGF0IGNvbnRhaW5lcidzIGVsZW1lbnRzIGluc2lkZSBhbm90aGVyIG5nLWNvbnRhaW5lcihwYXJlbnRDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLmNoaWxkcmVuID0gW2NoaWxkXTtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyLmNoaWxkcmVuID0gW2NoaWxkQ29udGFpbmVyXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYWxsIHRocmVlIGRpcmVjdGl2ZXMgZXhpc3QsIGNyZWF0ZSBhbm90aGVyIHdyYXBwZXIgZm9yIHRoaXJkIG5nLWNvbnRhaW5lcihncmFuZFBhcmVudENvbnRhaW5lcilcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dJbkRldmljZUF0dHIgJiYgYWNjZXNzUm9sZXNBdHRyICYmIGRlZmVyTG9hZEF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyYW5kUGFyZW50Q29udGFpbmVyID0gZGVmZXJMb2FkQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbmRQYXJlbnRDb250YWluZXIuY2hpbGRyZW4gPSBbcGFyZW50Q29udGFpbmVyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gZ3JhbmRQYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IHBhcmVudENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hcmt1cCArPSBwcm9jZXNzTm9kZShjaGlsZCwgaW1wb3J0Q29sbGVjdG9yLCBwcm92aWRlcnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobm9kZURlZikge1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLnNwbGljZShwcm92aWRlcnMuaW5kZXhPZihwcm92aWRlSW5mbyksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFya3VwICs9ICg8YW55PnBvc3QpKGF0dHJNYXAsIHNoYXJlZCwgLi4ucmVxdWlyZWRQcm92aWRlcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5vZGUuZW5kU291cmNlU3BhbiAmJiAhZ2V0SHRtbFRhZ0RlZmluaXRpb24obm9kZS5uYW1lKS5pc1ZvaWQpIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gYDwvJHtub2RlTmFtZX0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIFRleHQpIHtcbiAgICAgICAgbWFya3VwICs9IG5vZGUudmFsdWU7XG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQ29tbWVudCkge1xuICAgICAgICBpZiAoIWlnbm9yZUNvbW1lbnRzKSB7XG4gICAgICAgICAgICBtYXJrdXAgKz0gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbXBvcnRDb2xsZWN0b3IoV0lER0VUX0lNUE9SVFMuZ2V0KG5vZGUubmFtZSkpO1xuICAgIGlmIChub2RlRGVmICYmIG5vZGVEZWYuaW1wb3J0cykge1xuICAgICAgICBsZXQgaW1wb3J0cyA9IFtdO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGVEZWYuaW1wb3J0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaW1wb3J0cyA9IG5vZGVEZWYuaW1wb3J0cyhhdHRyTWFwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGltcG9ydHMgPSBub2RlRGVmLmltcG9ydHM7XG4gICAgICAgIH1cbiAgICAgICAgaW1wb3J0cy5mb3JFYWNoKCBpID0+IHtcbiAgICAgICAgICAgIGltcG9ydENvbGxlY3RvcihXSURHRVRfSU1QT1JUUy5nZXQoaSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc3BpbGUgPSAobWFya3VwOiBzdHJpbmcgPSAnJykgPT4ge1xuICAgIGlmICghbWFya3VwLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCByZXF1aXJlZFdNQ29tcG9uZW50cyA9IFtdO1xuICAgIGNvbnN0IG5vZGVzID0gaHRtbFBhcnNlci5wYXJzZShtYXJrdXAsICcnKTtcblxuICAgIGlmIChub2Rlcy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzLnJvb3ROb2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gcHJvY2Vzc05vZGUobm9kZSwgKGltcG9ydHM6IEltcG9ydERlZltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW1wb3J0cykge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gcmVxdWlyZWRXTUNvbXBvbmVudHMuY29uY2F0KGltcG9ydHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVxdWlyZWRXTUNvbXBvbmVudHMgPSBfLnVuaXFXaXRoKHJlcXVpcmVkV01Db21wb25lbnRzLCBfLmlzRXF1YWwpO1xuICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gXy5zb3J0QnkocmVxdWlyZWRXTUNvbXBvbmVudHMsIFsnZnJvbScsICduYW1lJ10pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1hcmt1cDogb3V0cHV0LFxuICAgICAgICByZXF1aXJlZFdNQ29tcG9uZW50czogcmVxdWlyZWRXTUNvbXBvbmVudHNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gKG5vZGVOYW1lOiBzdHJpbmcsIG5vZGVEZWZGbjogKCkgPT4gSUJ1aWxkVGFza0RlZikgPT4gcmVnaXN0cnkuc2V0KG5vZGVOYW1lLCBub2RlRGVmRm4oKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0RGVmIHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFzPzogc3RyaW5nO1xuICAgIGZvclJvb3Q/OiBib29sZWFuO1xuICAgIHBsYXRmb3JtVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQnVpbGRUYXNrRGVmIHtcbiAgICByZXF1aXJlcz86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgdGVtcGxhdGU/OiAobm9kZTogRWxlbWVudCB8IFRleHQgfCBDb21tZW50LCBzaGFyZWQ/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHZvaWQ7XG4gICAgcHJlOiAoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4sIHNoYXJlZCA/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHN0cmluZztcbiAgICBwcm92aWRlPzogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBNYXA8YW55LCBhbnk+O1xuICAgIHBvc3Q/OiAoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4sIHNoYXJlZCA/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHN0cmluZztcbiAgICBpbXBvcnRzPzogIHN0cmluZ1tdIHwgKChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPikgPT4gc3RyaW5nW10pO1xufVxuXG5leHBvcnQgY29uc3Qgc2NvcGVDb21wb25lbnRTdHlsZXMgPSAoY29tcG9uZW50TmFtZSwgY29tcG9uZW50VHlwZSwgc3R5bGVzID0gJycpID0+IHtcbiAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGNvbW1lbnRzID0ge307XG4gICAgbGV0IGNvbW1lbnRDb3VudCA9IDA7XG4gICAgaWYgKHN0eWxlcy5zdGFydHNXaXRoKCcvKkRJU0FCTEVfU0NPUElORyovJykpIHtcbiAgICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9XG4gICAgc3R5bGVzID0gc3R5bGVzLnJlcGxhY2UoQ1NTX1JFR0VYLkNPTU1FTlRTX0ZPUk1BVCwgY29tbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGBAY29tbWVudCR7Y29tbWVudENvdW50Kyt9e2A7XG4gICAgICAgIGNvbW1lbnRzW2tleV0gPSBjb21tZW50O1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKENTU19SRUdFWC5TRUxFQ1RPUl9GT1JNQVQsIChzZWxlY3RvcikgPT4ge1xuICAgICAgICBpZiAoIUNTU19SRUdFWC5TRUxFQ1RPUl9FWENMVURFX0ZPUk1BVC50ZXN0KHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3ROb25TcGFjZUNoYXJJbmRleCA9IHNlbGVjdG9yLm1hdGNoKC9cXFMvKS5pbmRleDtcbiAgICAgICAgICAgIGxldCBwcmVmaXhTcGFjZUNoYXJTZXEgPSAnJztcbiAgICAgICAgICAgIGlmIChmaXJzdE5vblNwYWNlQ2hhckluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHByZWZpeFNwYWNlQ2hhclNlcSA9IHNlbGVjdG9yLnN1YnN0cmluZygwLCBmaXJzdE5vblNwYWNlQ2hhckluZGV4KTtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnN1YnN0cmluZyhmaXJzdE5vblNwYWNlQ2hhckluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZWN0b3Iuc3RhcnRzV2l0aCgnLyonKSAmJiBzZWxlY3Rvci50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIHNwbGl0cyB0aGUgc2VsZWN0b3IgYnkgY29tbWFzIGFuZCB3ZSBpdGVyYXRlIG92ZXIgdGhlIGFycmF5IGFuZCBhZGQgcGFnZSBsZXZlbCBzY29waW5nIGFuZCBqb2luIGl0LlxuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3Iuc3BsaXQoJywnKS5tYXAocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVmaXggPSBFTEVfUFJFRklYO1xuICAgICAgICAgICAgICAgICAgICBzID0gcy50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlSW5kZXggPSBzLmluZGV4T2YoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMuc3RhcnRzV2l0aChFTEVfUFJFRklYKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcy5zdWJzdHJpbmcoMCwgc3BhY2VJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHNwYWNlSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50VHlwZSA9PT0gMCB8fCBjb21wb25lbnRUeXBlID09PSAnUEFHRScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBgJHtwcmVmaXh9IGFwcC1wYWdlLSR7Y29tcG9uZW50TmFtZX0gJHtzfWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50VHlwZSA9PT0gMSB8fCBjb21wb25lbnRUeXBlID09PSAnUFJFRkFCJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGAke3ByZWZpeH0gYXBwLXByZWZhYi0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudFR5cGUgPT09IDIgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BBUlRJQUwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gYCR7cHJlZml4fSBhcHAtcGFydGlhbC0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdG9yID0gcHJlZml4U3BhY2VDaGFyU2VxICsgc2VsZWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yO1xuICAgIH0pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNvbW1lbnRzKSB7XG4gICAgICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKGtleSwgY29tbWVudHNba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG59O1xuXG4iXX0=
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90cmFuc3BpbGVyL3NyYy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLG9CQUFvQixFQUN2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl2QyxNQUFNLFNBQVMsR0FBRztJQUNkLGVBQWUsRUFBRywwQkFBMEI7SUFDNUMsZUFBZSxFQUFHLGNBQWM7SUFDaEMsdUJBQXVCLEVBQUcsa0VBQWtFO0NBQy9GLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQU81QyxNQUFNLFNBQVMsR0FBRztJQUNkLGFBQWEsRUFBRSxjQUFjO0lBQzdCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsVUFBVSxFQUFFLFdBQVc7SUFDdkIsZUFBZSxFQUFFLFdBQVc7SUFDNUIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsUUFBUSxFQUFFLEtBQUs7SUFDZixjQUFjLEVBQUUsTUFBTTtJQUN0QixTQUFTLEVBQUUsTUFBTTtJQUNqQixhQUFhLEVBQUUsVUFBVTtJQUN6QixrQkFBa0IsRUFBRSxVQUFVO0lBQzlCLFVBQVUsRUFBRSxtREFBbUQ7Q0FDbEUsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUM1QyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1IsT0FBTyxJQUFJLENB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IFRleHQsXG4gICAgQ29tbWVudCxcbiAgICBnZXRIdG1sVGFnRGVmaW5pdGlvbiwgUGFyc2VTb3VyY2VTcGFuXG59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7IFdJREdFVF9JTVBPUlRTIH0gZnJvbSAnLi9pbXBvcnRzJztcbmltcG9ydCB7IGlzTW9iaWxlQXBwIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbmNvbnN0IENTU19SRUdFWCA9IHtcbiAgICBDT01NRU5UU19GT1JNQVQgOiAvXFwvXFwqKCg/IVxcKlxcLykufFxcbikrXFwqXFwvL2csXG4gICAgU0VMRUNUT1JfRk9STUFUIDogL1teXFx7XFx9XSpcXHsvZ2ksXG4gICAgU0VMRUNUT1JfRVhDTFVERV9GT1JNQVQgOiAvKEBrZXlmcmFtZXN8QG1lZGlhfEBmb250LWZhY2V8QGNvbW1lbnRbMC05XSt8ZnJvbXx0b3xbMC05XSslKVxcYi9pXG59O1xuXG5jb25zdCBpc1N0cmluZyA9IHYgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnO1xuXG5pbnRlcmZhY2UgSVByb3ZpZGVySW5mbyB7XG4gICAgbm9kZU5hbWU6IHN0cmluZztcbiAgICBwcm92aWRlOiBNYXA8c3RyaW5nLCBhbnk+O1xufVxuXG5jb25zdCBPVkVSUklERVMgPSB7XG4gICAgJ2FjY2Vzc3JvbGVzJzogJyphY2Nlc3Nyb2xlcycsXG4gICAgJ25nLWlmJzogJypuZ0lmJyxcbiAgICAnc2hvd2luZGV2aWNlJzogJyp3bVNob3dJbkRldmljZScsXG4gICAgJ25nLWNsYXNzJzogJ1tuZ0NsYXNzXScsXG4gICAgJ2RhdGEtbmctY2xhc3MnOiAnW25nQ2xhc3NdJyxcbiAgICAnZGF0YS1uZy1zcmMnOiAnc3JjJyxcbiAgICAnbmctc3JjJzogJ3NyYycsXG4gICAgJ2RhdGEtbmctaHJlZic6ICdocmVmJyxcbiAgICAnbmctaHJlZic6ICdocmVmJyxcbiAgICAnbmctZGlzYWJsZWQnOiAnZGlzYWJsZWQnLFxuICAgICdkYXRhLW5nLWRpc2FibGVkJzogJ2Rpc2FibGVkJyxcbiAgICAnbmctbW9kZWwnOiAnW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIFsobmdNb2RlbCldJ1xufTtcblxuY29uc3Qgc2VsZkNsb3NpbmdUYWdzID0gbmV3IFNldChbJ2ltZyddKTtcblxuZXhwb3J0IGNvbnN0IGdldEJvdW5kVG9FeHByID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdiaW5kOicpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHIoNSk7XG4gICAgfVxufTtcblxuY29uc3QgcXVvdGVBdHRyID0gdiA9PiB7XG4gICAgcmV0dXJuICgnJyArIHYpIC8qIEZvcmNlcyB0aGUgY29udmVyc2lvbiB0byBzdHJpbmcuICovXG4gICAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpIC8qIFRoaXMgTVVTVCBiZSB0aGUgMXN0IHJlcGxhY2VtZW50LiAqL1xuICAgICAgICAucmVwbGFjZSgvJy9nLCAnJmFwb3M7JykgLyogVGhlIDQgb3RoZXIgcHJlZGVmaW5lZCBlbnRpdGllcywgcmVxdWlyZWQuICovXG4gICAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xufTtcblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuY29uc3QgaHRtbFBhcnNlciA9IG5ldyBIdG1sUGFyc2VyKCk7XG5jb25zdCBpZ25vcmVDb21tZW50cyA9IHRydWU7XG5cbmNvbnN0IGVtcHR5ID0gKCkgPT4gJyc7XG5cbmNvbnN0IGlzRXZlbnQgPSBuYW1lID0+IG5hbWVbMF0gPT09ICdvJyAmJiBuYW1lWzFdID09PSAnbicgJiYgbmFtZVsyXSA9PT0gJy0nO1xuXG5jb25zdCBnZXRFdmVudE5hbWUgPSBrZXkgPT4ga2V5LnN1YnN0cigzKTtcblxuY29uc3QgcHJvY2Vzc0JpbmRpbmcgPSAoYXR0ciwgZXhwcikgPT4gW2Ake2F0dHIubmFtZX0uYmluZGAsIHF1b3RlQXR0cihleHByKV07XG5cbmNvbnN0IHByb2Nlc3NFdmVudCA9IGF0dHIgPT4ge1xuICAgIGNvbnN0IGV2dE5hbWUgPSBnZXRFdmVudE5hbWUoYXR0ci5uYW1lKTtcbiAgICByZXR1cm4gW2Ake2V2dE5hbWV9LmV2ZW50YCwgYXR0ci52YWx1ZV07XG59O1xuXG4vKipcbiAqIFdyYXBzIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgcXVvdGVzLlxuICogQHBhcmFtIHZhbFxuICovXG5jb25zdCB3cmFwV2l0aEFwb3MgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYCZhcG9zOyR7dmFsLnJlcGxhY2UoLyZhcG9zL2csICcmcXVvdCcpLnJlcGxhY2UoLyZxdW90L2csICdcXFxcJnF1b3QnKX0mYXBvcztgO1xufTtcbmNvbnN0IEVMRV9QUkVGSVggPSAnLndtLWFwcCc7XG5cbmNvbnN0IHByb2Nlc3NBdHRyID0gYXR0ciA9PiB7XG4gICAgbGV0IG92ZXJyaWRkZW4gPSBPVkVSUklERVNbYXR0ci5uYW1lXTtcbiAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWVTcGFuID8gYXR0ci52YWx1ZSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIGRvIG5vdCBhcHBlbmQgc2hvd0luRGV2aWNlIGF0dHJpYnV0ZSBmb3IgbW9iaWxlIGFwcGxpY2F0aW9uLlxuICAgIGlmIChhdHRyLm5hbWUgPT09ICdzaG93aW5kZXZpY2UnICYmIGlzTW9iaWxlQXBwKCkpIHtcbiAgICAgICAgb3ZlcnJpZGRlbiA9ICcnO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGRlbikge1xuICAgICAgICAvKipcbiAgICAgICAgICogd3JhcCB2YWx1ZSBmb3IgYWNjZXNzcm9sZXMgd2l0aCAnJy5cbiAgICAgICAgICogc2luY2UgYWNjZXNzcm9sZXMgaXMgYSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSwgaXQgd2lsbCBiZSB0cmFuc3BpbGVkIHRvIFthY2Nlc3Nyb2xlc11cbiAgICAgICAgICogaGVuY2UsIHRoZSB2YWx1ZSBhZ2FpbnN0IGl0IHNob3VsZCBiZSBhIGNvbXB1dGVkIHN0cmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGF0dHIubmFtZSA9PT0gJ2FjY2Vzc3JvbGVzJyB8fCBhdHRyLm5hbWUgPT09ICdzaG93aW5kZXZpY2UnKSB7XG4gICAgICAgICAgICByZXR1cm4gW292ZXJyaWRkZW4sIGAnJHt2YWx1ZX0nYF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtvdmVycmlkZGVuLCBxdW90ZUF0dHIodmFsdWUpXTtcbiAgICB9XG5cbiAgICBpZiAoaXNFdmVudChhdHRyLm5hbWUpKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzRXZlbnQoYXR0cik7XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRFeHByID0gZ2V0Qm91bmRUb0V4cHIoYXR0ci52YWx1ZSk7XG4gICAgaWYgKGJvdW5kRXhwcikge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc0JpbmRpbmcoYXR0ciwgYm91bmRFeHByKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2F0dHIubmFtZSwgcXVvdGVBdHRyKHZhbHVlKV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YVNvdXJjZSA9IChkYXRhU2V0RXhwcjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IGRhdGFTZXRFeHByLnNwbGl0KCcuJyk7XG4gICAgaWYgKHBhcnRzWzBdID09PSAnVmFyaWFibGVzJyB8fCBwYXJ0c1swXSA9PT0gJ1dpZGdldHMnKSB7XG4gICAgICAgIHJldHVybiBgJHtwYXJ0c1swXX0uJHtwYXJ0c1sxXX1gO1xuICAgIH1cbn07XG5cbmNvbnN0IHdpZGdldENoaWxkQXR0cnMgPSAoKCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkQXR0cnMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgdmFsaWRDaGlsZEF0dHJzID0gW1xuICAgICAgICBgcmVxdWlyZWRgXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZXQ6IGF0dHJzID0+IHtcbiAgICAgICAgICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFsaWRDaGlsZEF0dHJzLmluY2x1ZGVzKGtleSkgJiYgKGNoaWxkQXR0cnMuc2V0KGtleSwgdmFsKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0OiBhdHRycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmbHRyQXR0cnMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBjaGlsZEF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgIWF0dHJzLmdldChrZXkpICYmIGZsdHJBdHRycy5zZXQoa2V5LCB2YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmx0ckF0dHJzO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgY2hpbGRBdHRycy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfTtcbn0pKCk7XG5leHBvcnQgY29uc3Qgc2V0Q2hpbGRBdHRycyA9IGF0dHJzID0+IHtcbiAgICB3aWRnZXRDaGlsZEF0dHJzLnNldChhdHRycyk7XG4gICAgcmV0dXJuICcnO1xufTtcbmV4cG9ydCBjb25zdCBnZXRDaGlsZEF0dHJzID0gYXR0cnMgPT4ge1xuICAgIHJldHVybiBnZXRBdHRyTWFya3VwKHdpZGdldENoaWxkQXR0cnMuZ2V0KGF0dHJzKSk7XG59O1xuZXhwb3J0IGNvbnN0IGNsZWFyQ2hpbGRBdHRycyA9ICgpID0+IHtcbiAgICB3aWRnZXRDaGlsZEF0dHJzLmNsZWFyKCk7XG4gICAgcmV0dXJuICcnO1xufTtcbmV4cG9ydCBjb25zdCBnZXRGb3JtTWFya3VwQXR0ciA9IGF0dHJzID0+IHtcbiAgICBpZiAoYXR0cnMuZ2V0KCdkYXRhdmFsdWUuYmluZCcpKSB7XG4gICAgICAgIGNvbnN0IG9uRGF0YVZhbHVlQmluZGluZyA9IGdldERhdGFTb3VyY2UoYXR0cnMuZ2V0KCdkYXRhdmFsdWUuYmluZCcpKTtcbiAgICAgICAgYXR0cnMuc2V0KCdkYXRhdmFsdWVzb3VyY2UuYmluZCcsIG9uRGF0YVZhbHVlQmluZGluZyk7XG4gICAgfVxuICAgIHJldHVybiBnZXRBdHRyTWFya3VwKGF0dHJzKTtcbn07XG5cbmNvbnN0IGdldEF0dHJNYXAgPSBhdHRycyA9PiB7XG4gICAgY29uc3QgYXR0ck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgbGV0IFthdHRyTmFtZSwgYXR0clZhbHVlXSA9IHByb2Nlc3NBdHRyKGF0dHIpO1xuICAgICAgICBhdHRyTWFwLnNldChhdHRyTmFtZSwgYXR0clZhbHVlKTtcbiAgICB9KTtcblxuICAgIGlmIChhdHRyTWFwLmdldCgnZGF0YXNldC5iaW5kJykpIHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IGdldERhdGFTb3VyY2UoYXR0ck1hcC5nZXQoJ2RhdGFzZXQuYmluZCcpKTtcbiAgICAgICAgaWYgKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGF0dHJNYXAuc2V0KCdkYXRhc291cmNlLmJpbmQnLCBkYXRhU291cmNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhdHRyTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEF0dHJNYXJrdXAgPSAoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgICBsZXQgYXR0ck1hcmt1cCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgYXR0ck1hcmt1cCArPSBgICR7a31gO1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdiA9IHYudHJpbSgpO1xuICAgICAgICAgICAgaWYgKGsgPT09ICdbbmdDbGFzc10nICYmIHYuc3RhcnRzV2l0aCgneycpKSB7XG4gICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgvXCIvZywgYCdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrID09PSAnc2hvdy5iaW5kJyAmJiBhdHRycy5nZXQoJ2RlZmVybG9hZCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgICAgICB2ID0gdiArIGBcIiAqbGF6eUxvYWQ9XCIke3dyYXBXaXRoQXBvcyh2KX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXR0ck1hcmt1cCArPSBgPVwiJHt2fVwiYDtcblxuICAgICAgICAgICAgaWYgKGsgPT09ICdzaG93aW5kZXZpY2UnICYmIHYgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHYuaW5jbHVkZXMoJ3hzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLnB1c2goJ1ZpZXdwb3J0LmlzTW9iaWxlVHlwZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodi5pbmNsdWRlcygnc20nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ucHVzaCgnKFZpZXdwb3J0LmlzVGFibGV0VHlwZSAmJiBWaWV3cG9ydC5vcmllbnRhdGlvbi5pc1BvcnRyYWl0KScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodi5pbmNsdWRlcygnbWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ucHVzaCgnKFZpZXdwb3J0LmlzVGFibGV0VHlwZSAmJiBWaWV3cG9ydC5vcmllbnRhdGlvbi5pc0xhbmRzY2FwZSknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXR0ck1hcmt1cCArPSBgICpuZ0lmPVwiJHtjb25kaXRpb24uam9pbignIHx8ICcpfVwiYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF0dHJNYXJrdXA7XG59O1xuXG5jb25zdCBnZXRSZXF1aXJlZFByb3ZpZGVycyA9IChub2RlRGVmOiBJQnVpbGRUYXNrRGVmLCBwcm92aWRlcnM6IEFycmF5PElQcm92aWRlckluZm8+LCBub2RlQXR0cnMpID0+IHtcbiAgICBpZiAoIW5vZGVEZWYucmVxdWlyZXMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCByZXF1aXJlcyA9IG5vZGVEZWYucmVxdWlyZXMgYXMgYW55O1xuXG4gICAgaWYgKGlzU3RyaW5nKHJlcXVpcmVzKSkge1xuICAgICAgICByZXF1aXJlcyA9IFtyZXF1aXJlc107XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlcXVpcmVzKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVpcmVzLm1hcChyZXF1aXJlID0+IHtcbiAgICAgICAgLy8gZm9yIGR5bmFtaWMgdGFibGUgYXNzaWduaW5nIHBhcmVudCBwcm92aWRlIG1hcCB0byB0aGUgY2hpbGQsXG4gICAgICAgIGZvciAobGV0IGkgPSBub2RlQXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBpZiAobm9kZUF0dHJzW2ldLm5hbWUgPT09ICd0YWJsZU5hbWUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZWZbbm9kZUF0dHJzW2ldLnZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSBwcm92aWRlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBpZiAocHJvdmlkZXJzW2ldLm5vZGVOYW1lID09PSByZXF1aXJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyc1tpXS5wcm92aWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5jb25zdCBESU1FTlNJT05fUFJPUFMgPSBbJ3BhZGRpbmcnLCAnYm9yZGVyd2lkdGgnLCAnbWFyZ2luJ107XG5cbmNvbnN0IFNFUEFSQVRPUiA9ICcgJywgVU5TRVQgPSAndW5zZXQnO1xuXG5jb25zdCBzZXREaW1lbnNpb25Qcm9wID0gKGNzc09iaiwga2V5LCBudikgPT4ge1xuICAgIGxldCBjc3NLZXkgPSBrZXksIHZhbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdWZmaXggPSAnJztcblxuICAgIGZ1bmN0aW9uIHNldFZhbChwcm9wLCB2YWx1ZSkge1xuICAgICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgVU5TRVQsIHJlc2V0IHRoZSBleGlzdGluZyB2YWx1ZVxuICAgICAgICBpZiAodmFsdWUgPT09IFVOU0VUKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNzc09ialtjc3NLZXkgKyBwcm9wICsgc3VmZml4XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdib3JkZXJ3aWR0aCcpIHtcbiAgICAgICAgc3VmZml4ID0gICd3aWR0aCc7XG4gICAgICAgIGNzc0tleSA9ICdib3JkZXInO1xuICAgIH1cblxuICAgIHZhbCA9IG52O1xuXG4gICAgaWYgKHZhbC5pbmRleE9mKFVOU0VUKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsID0gdmFsLnNwbGl0KFNFUEFSQVRPUik7XG5cbiAgICAgICAgdG9wICAgID0gdmFsWzBdO1xuICAgICAgICByaWdodCAgPSB2YWxbMV0gfHwgdmFsWzBdO1xuICAgICAgICBib3R0b20gPSB2YWxbMl0gfHwgdmFsWzBdO1xuICAgICAgICBsZWZ0ICAgPSB2YWxbM10gfHwgdmFsWzFdIHx8IHZhbFswXTtcblxuICAgICAgICBzZXRWYWwoJ3RvcCcsICAgIHRvcCk7XG4gICAgICAgIHNldFZhbCgncmlnaHQnLCAgcmlnaHQpO1xuICAgICAgICBzZXRWYWwoJ2JvdHRvbScsIGJvdHRvbSk7XG4gICAgICAgIHNldFZhbCgnbGVmdCcsICAgbGVmdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2JvcmRlcndpZHRoJykge1xuICAgICAgICAgICAgY3NzS2V5ID0gJ2JvcmRlcndpZHRoJztcbiAgICAgICAgfVxuICAgICAgICBjc3NPYmpbY3NzS2V5XSA9IG52O1xuICAgIH1cbn07XG5cbmNvbnN0IHByb2Nlc3NEaW1lbnNpb25BdHRyaWJ1dGVzID0gYXR0ck1hcCA9PiB7XG4gICAgY29uc3QgYXR0cktleXMgPSBBcnJheS5mcm9tKGF0dHJNYXAua2V5cygpKTtcbiAgICBhdHRyS2V5cy5mb3JFYWNoKChhdHRyS2V5OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKERJTUVOU0lPTl9QUk9QUy5pbmNsdWRlcyhhdHRyS2V5KSkge1xuICAgICAgICAgICAgY29uc3QgY3NzT2JqID0ge30sXG4gICAgICAgICAgICAgICAgYXR0clZhbHVlID0gYXR0ck1hcC5nZXQoYXR0cktleSk7XG4gICAgICAgICAgICBhdHRyTWFwLmRlbGV0ZShhdHRyS2V5KTtcbiAgICAgICAgICAgIHNldERpbWVuc2lvblByb3AoY3NzT2JqLCBhdHRyS2V5LCBhdHRyVmFsdWUpO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoY3NzT2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNzc09ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJNYXAuc2V0KGtleSwgY3NzT2JqW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyByZXBsYWNlIDw6c3ZnOnN2Zz4gLT4gPHN2Zz4sIDw6c3ZnOio+IC0+IDxzdmc6Kj5cbmNvbnN0IGdldE5vZGVOYW1lID0gbmFtZSA9PiBuYW1lLnJlcGxhY2UoJzpzdmc6c3ZnJywgJ3N2ZycpLnJlcGxhY2UoJzpzdmc6JywgJ3N2ZzonKTtcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NOb2RlID0gKG5vZGUsIGltcG9ydENvbGxlY3RvcjogKGk6IEltcG9ydERlZltdKSA9PiB2b2lkLCBwcm92aWRlcnM/OiBBcnJheTxJUHJvdmlkZXJJbmZvPikgPT4ge1xuICAgIGNvbnN0IG5vZGVEZWYgPSByZWdpc3RyeS5nZXQobm9kZS5uYW1lKTtcblxuICAgIGxldCBwcmUsIHBvc3QsIHRlbXBsYXRlO1xuXG4gICAgaWYgKG5vZGVEZWYpIHtcbiAgICAgICAgcHJlID0gbm9kZURlZi5wcmUgfHwgZW1wdHk7XG4gICAgICAgIHBvc3QgPSBub2RlRGVmLnBvc3QgfHwgZW1wdHk7XG4gICAgICAgIHRlbXBsYXRlID0gbm9kZURlZi50ZW1wbGF0ZSB8fCBlbXB0eTtcbiAgICB9XG5cbiAgICBsZXQgbWFya3VwID0gJyc7XG4gICAgbGV0IGF0dHJNYXA7XG4gICAgbGV0IHJlcXVpcmVkUHJvdmlkZXJzO1xuICAgIGxldCBzaGFyZWQ7XG5cbiAgICBpZiAoIXByb3ZpZGVycykge1xuICAgICAgICBwcm92aWRlcnMgPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0VsZW1lbnRUeXBlID0gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG5cbiAgICBpZiAoaXNFbGVtZW50VHlwZSkge1xuICAgICAgICBsZXQgcHJvdmlkZUluZm86IElQcm92aWRlckluZm87XG5cbiAgICAgICAgaWYgKG5vZGVEZWYpIHtcbiAgICAgICAgICAgIHJlcXVpcmVkUHJvdmlkZXJzID0gZ2V0UmVxdWlyZWRQcm92aWRlcnMobm9kZURlZiwgcHJvdmlkZXJzLCBub2RlLmF0dHJzKTtcbiAgICAgICAgICAgIHNoYXJlZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIHRlbXBsYXRlKG5vZGUsIHNoYXJlZCwgLi4ucmVxdWlyZWRQcm92aWRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0ck1hcCA9IGdldEF0dHJNYXAobm9kZS5hdHRycyk7XG4gICAgICAgIHByb2Nlc3NEaW1lbnNpb25BdHRyaWJ1dGVzKGF0dHJNYXApO1xuXG4gICAgICAgIGNvbnN0IG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobm9kZS5uYW1lKTtcblxuICAgICAgICBpZiAobm9kZURlZikge1xuICAgICAgICAgICAgbWFya3VwID0gKDxhbnk+cHJlKShhdHRyTWFwLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKTtcbiAgICAgICAgICAgIGlmIChub2RlRGVmLnByb3ZpZGUpIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWU6IG5vZGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogXy5pc0Z1bmN0aW9uKG5vZGVEZWYucHJvdmlkZSkgPyBub2RlRGVmLnByb3ZpZGUoYXR0ck1hcCwgc2hhcmVkLCAuLi5yZXF1aXJlZFByb3ZpZGVycykgOiBub2RlRGVmLnByb3ZpZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC8vIEZvciB0YWJsZSBub2RlLCBhc3NpZ25pbmcgcGFyZW50IHByb3ZpZGUgbWFwIHRvIHRoZSBjaGlsZCwgYXMgY2hpbGQgcmVxdWlyZXMgc29tZSBwYXJlbnQgcHJvdmlkZSBhdHRycy5cbiAgICAgICAgICAgICAgICBpZiAobm9kZS5uYW1lID09PSAnd20tdGFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlQ29sTm9kZURlZm4gPSByZWdpc3RyeS5nZXQoJ3dtLXRhYmxlLWNvbHVtbicpO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbE5vZGVEZWZuW18uZmluZChub2RlLmF0dHJzLCAoZWwpID0+IGVsLm5hbWUgPT09ICduYW1lJykudmFsdWUgKyBwcm92aWRlSW5mby5wcm92aWRlLmdldCgndGFibGVfcmVmZXJlbmNlJyldID0gcHJvdmlkZUluZm8ucHJvdmlkZTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnkuc2V0KCd3bS10YWJsZS1jb2x1bW4nLCB0YWJsZUNvbE5vZGVEZWZuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZUluZm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFya3VwID0gYDwke25vZGVOYW1lfSAke2dldEF0dHJNYXJrdXAoYXR0ck1hcCl9PmA7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOb2RlIHwgYW55KSA9PiB7XG4gICAgICAgICAgICBpZihjaGlsZC5hdHRycykge1xuICAgICAgICAgICAgICAgIGxldCBzaG93SW5EZXZpY2VBdHRyLCBhY2Nlc3NSb2xlc0F0dHIsIGRlZmVyTG9hZEF0dHIsIHNob3dBdHRyO1xuICAgICAgICAgICAgICAgIGNoaWxkLmF0dHJzLmZvckVhY2goZnVuY3Rpb24oYXR0cil7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLm5hbWUgPT09ICdzaG93aW5kZXZpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SW5EZXZpY2VBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyLm5hbWUgPT09ICdhY2Nlc3Nyb2xlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc1JvbGVzQXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09PSAnZGVmZXJsb2FkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJMb2FkQXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmKChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0cikgfHwgKHNob3dJbkRldmljZUF0dHIgJiYgZGVmZXJMb2FkQXR0cikgfHwgKGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICAvKiBJZiBtb3JlIHRoYW4gb25lIG91dCBvZiBzaG93aW5kZXZpY2UsIGFjY2Vzc3JvbGVzIGFuZCBkZWZlcmxvYWQgZXhpc3QgZm9yIGEgd2lkZ2V0LCBhZGQgbmctY29udGFpbmVyIHdyYXBwZXJzIHRvIGZpeCBhbmd1bGFyIGxpbWl0YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgb2YgYXBwbHlpbmcgb25seSBvbmUgc3RydWN0dXJhbCBkaXJlY3RpdmUgdG8gYW4gZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgKiAgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9TcGFuID0gKHt9IGFzIFBhcnNlU291cmNlU3Bhbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dJbkRldmljZUNvbnRhaW5lcjphbnkgPSBzaG93SW5EZXZpY2VBdHRyID8gbmV3IEVsZW1lbnQoJ25nLWNvbnRhaW5lcicsIFtdLCBbXSwgbm9TcGFuLCBub1NwYW4sIG5vU3BhbikgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWNjZXNzUm9sZXNDb250YWluZXI6YW55ID0gYWNjZXNzUm9sZXNBdHRyID8gbmV3IEVsZW1lbnQoJ25nLWNvbnRhaW5lcicsIFtdLCBbXSwgbm9TcGFuLCBub1NwYW4sIG5vU3BhbikgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmZXJMb2FkQ29udGFpbmVyOmFueSA9IGRlZmVyTG9hZEF0dHIgPyBuZXcgRWxlbWVudCgnbmctY29udGFpbmVyJywgW10sIFtdLCBub1NwYW4sIG5vU3Bhbiwgbm9TcGFuKSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0luRGV2aWNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SW5EZXZpY2VDb250YWluZXIuYXR0cnMucHVzaChzaG93SW5EZXZpY2VBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzUm9sZXNDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc1JvbGVzQ29udGFpbmVyLmF0dHJzLnB1c2goYWNjZXNzUm9sZXNBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmZXJMb2FkQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlckxvYWRDb250YWluZXIuYXR0cnMucHVzaChkZWZlckxvYWRBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG93QXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTG9hZENvbnRhaW5lci5hdHRycy5wdXNoKHNob3dBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfLnJlbW92ZShjaGlsZC5hdHRycywgZnVuY3Rpb24oYXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScgfHwgYXR0ci5uYW1lID09PSAnYWNjZXNzcm9sZXMnIHx8IGF0dHIubmFtZSA9PT0gJ2RlZmVybG9hZCdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZENvbnRhaW5lciwgcGFyZW50Q29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0luRGV2aWNlQXR0ciAmJiBhY2Nlc3NSb2xlc0F0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyID0gc2hvd0luRGV2aWNlQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gYWNjZXNzUm9sZXNDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvd0luRGV2aWNlQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lciA9IHNob3dJbkRldmljZUNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY2Nlc3NSb2xlc0F0dHIgJiYgZGVmZXJMb2FkQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250YWluZXIgPSBkZWZlckxvYWRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSBhY2Nlc3NSb2xlc0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB3cmFwIGN1cnJlbnQgbm9kZSBlbGVtZW50cyBpbnNpZGUgZmlyc3QgbmctY29udGFpbmVyKGNoaWxkQ29udGFpbmVyKSBhbmQgdGhhdCBjb250YWluZXIncyBlbGVtZW50cyBpbnNpZGUgYW5vdGhlciBuZy1jb250YWluZXIocGFyZW50Q29udGFpbmVyKVxuICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lci5jaGlsZHJlbiA9IFtjaGlsZF07XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5jaGlsZHJlbiA9IFtjaGlsZENvbnRhaW5lcl07XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFsbCB0aHJlZSBkaXJlY3RpdmVzIGV4aXN0LCBjcmVhdGUgYW5vdGhlciB3cmFwcGVyIGZvciB0aGlyZCBuZy1jb250YWluZXIoZ3JhbmRQYXJlbnRDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncmFuZFBhcmVudENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYW5kUGFyZW50Q29udGFpbmVyLmNoaWxkcmVuID0gW3BhcmVudENvbnRhaW5lcl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGdyYW5kUGFyZW50Q29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXAgKz0gcHJvY2Vzc05vZGUoY2hpbGQsIGltcG9ydENvbGxlY3RvciwgcHJvdmlkZXJzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG5vZGVEZWYpIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlSW5mbykge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVycy5zcGxpY2UocHJvdmlkZXJzLmluZGV4T2YocHJvdmlkZUluZm8pLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hcmt1cCArPSAoPGFueT5wb3N0KShhdHRyTWFwLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChub2RlLmVuZFNvdXJjZVNwYW4gJiYgIWdldEh0bWxUYWdEZWZpbml0aW9uKG5vZGUubmFtZSkuaXNWb2lkKSB7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IGA8LyR7bm9kZU5hbWV9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIG1hcmt1cCArPSBub2RlLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENvbW1lbnQpIHtcbiAgICAgICAgaWYgKCFpZ25vcmVDb21tZW50cykge1xuICAgICAgICAgICAgbWFya3VwICs9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW1wb3J0Q29sbGVjdG9yKFdJREdFVF9JTVBPUlRTLmdldChub2RlLm5hbWUpKTtcbiAgICBpZiAobm9kZURlZiAmJiBub2RlRGVmLmltcG9ydHMpIHtcbiAgICAgICAgbGV0IGltcG9ydHMgPSBbXTtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlRGVmLmltcG9ydHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGltcG9ydHMgPSBub2RlRGVmLmltcG9ydHMoYXR0ck1hcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbXBvcnRzID0gbm9kZURlZi5pbXBvcnRzO1xuICAgICAgICB9XG4gICAgICAgIGltcG9ydHMuZm9yRWFjaCggaSA9PiB7XG4gICAgICAgICAgICBpbXBvcnRDb2xsZWN0b3IoV0lER0VUX0lNUE9SVFMuZ2V0KGkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNwaWxlID0gKG1hcmt1cDogc3RyaW5nID0gJycpID0+IHtcbiAgICBpZiAoIW1hcmt1cC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcmVxdWlyZWRXTUNvbXBvbmVudHMgPSBbXTtcbiAgICBjb25zdCBub2RlcyA9IGh0bWxQYXJzZXIucGFyc2UobWFya3VwLCAnJyk7XG5cbiAgICBpZiAobm9kZXMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG91dHB1dCA9ICcnO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcy5yb290Tm9kZXMpIHtcbiAgICAgICAgb3V0cHV0ICs9IHByb2Nlc3NOb2RlKG5vZGUsIChpbXBvcnRzOiBJbXBvcnREZWZbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGltcG9ydHMpIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZFdNQ29tcG9uZW50cyA9IHJlcXVpcmVkV01Db21wb25lbnRzLmNvbmNhdChpbXBvcnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gXy51bmlxV2l0aChyZXF1aXJlZFdNQ29tcG9uZW50cywgXy5pc0VxdWFsKTtcbiAgICByZXF1aXJlZFdNQ29tcG9uZW50cyA9IF8uc29ydEJ5KHJlcXVpcmVkV01Db21wb25lbnRzLCBbJ2Zyb20nLCAnbmFtZSddKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtYXJrdXA6IG91dHB1dCxcbiAgICAgICAgcmVxdWlyZWRXTUNvbXBvbmVudHM6IHJlcXVpcmVkV01Db21wb25lbnRzXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlciA9IChub2RlTmFtZTogc3RyaW5nLCBub2RlRGVmRm46ICgpID0+IElCdWlsZFRhc2tEZWYpID0+IHJlZ2lzdHJ5LnNldChub2RlTmFtZSwgbm9kZURlZkZuKCkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydERlZiB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhcz86IHN0cmluZztcbiAgICBmb3JSb290PzogYm9vbGVhbjtcbiAgICBwbGF0Zm9ybVR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJ1aWxkVGFza0RlZiB7XG4gICAgcmVxdWlyZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIHRlbXBsYXRlPzogKG5vZGU6IEVsZW1lbnQgfCBUZXh0IHwgQ29tbWVudCwgc2hhcmVkPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiB2b2lkO1xuICAgIHByZTogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBzdHJpbmc7XG4gICAgcHJvdmlkZT86IChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPiwgc2hhcmVkID86IE1hcDxhbnksIGFueT4sIC4uLnJlcXVpcmVzOiBBcnJheTxNYXA8YW55LCBhbnk+PikgPT4gTWFwPGFueSwgYW55PjtcbiAgICBwb3N0PzogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBzdHJpbmc7XG4gICAgaW1wb3J0cz86ICBzdHJpbmdbXSB8ICgoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4pID0+IHN0cmluZ1tdKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNjb3BlQ29tcG9uZW50U3R5bGVzID0gKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIHN0eWxlcyA9ICcnKSA9PiB7XG4gICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb21tZW50cyA9IHt9O1xuICAgIGxldCBjb21tZW50Q291bnQgPSAwO1xuICAgIGlmIChzdHlsZXMuc3RhcnRzV2l0aCgnLypESVNBQkxFX1NDT1BJTkcqLycpKSB7XG4gICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKENTU19SRUdFWC5DT01NRU5UU19GT1JNQVQsIGNvbW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBgQGNvbW1lbnQke2NvbW1lbnRDb3VudCsrfXtgO1xuICAgICAgICBjb21tZW50c1trZXldID0gY29tbWVudDtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9KTtcbiAgICBzdHlsZXMgPSBzdHlsZXMucmVwbGFjZShDU1NfUkVHRVguU0VMRUNUT1JfRk9STUFULCAoc2VsZWN0b3IpID0+IHtcbiAgICAgICAgaWYgKCFDU1NfUkVHRVguU0VMRUNUT1JfRVhDTFVERV9GT1JNQVQudGVzdChzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Tm9uU3BhY2VDaGFySW5kZXggPSBzZWxlY3Rvci5tYXRjaCgvXFxTLykuaW5kZXg7XG4gICAgICAgICAgICBsZXQgcHJlZml4U3BhY2VDaGFyU2VxID0gJyc7XG4gICAgICAgICAgICBpZiAoZmlyc3ROb25TcGFjZUNoYXJJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBwcmVmaXhTcGFjZUNoYXJTZXEgPSBzZWxlY3Rvci5zdWJzdHJpbmcoMCwgZmlyc3ROb25TcGFjZUNoYXJJbmRleCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zdWJzdHJpbmcoZmlyc3ROb25TcGFjZUNoYXJJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGVjdG9yLnN0YXJ0c1dpdGgoJy8qJykgJiYgc2VsZWN0b3IudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBzcGxpdHMgdGhlIHNlbGVjdG9yIGJ5IGNvbW1hcyBhbmQgd2UgaXRlcmF0ZSBvdmVyIHRoZSBhcnJheSBhbmQgYWRkIHBhZ2UgbGV2ZWwgc2NvcGluZyBhbmQgam9pbiBpdC5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlZml4ID0gRUxFX1BSRUZJWDtcbiAgICAgICAgICAgICAgICAgICAgcyA9IHMudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUluZGV4ID0gcy5pbmRleE9mKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzLnN0YXJ0c1dpdGgoRUxFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHMuc3Vic3RyaW5nKDAsIHNwYWNlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudFR5cGUgPT09IDAgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BBR0UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gYCR7cHJlZml4fSBhcHAtcGFnZS0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudFR5cGUgPT09IDEgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BSRUZBQicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBgJHtwcmVmaXh9IGFwcC1wcmVmYWItJHtjb21wb25lbnROYW1lfSAke3N9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRUeXBlID09PSAyIHx8IGNvbXBvbmVudFR5cGUgPT09ICdQQVJUSUFMJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGAke3ByZWZpeH0gYXBwLXBhcnRpYWwtJHtjb21wb25lbnROYW1lfSAke3N9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgICAgICAgICB9KS5qb2luKCcsJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RvciA9IHByZWZpeFNwYWNlQ2hhclNlcSArIHNlbGVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21tZW50cykge1xuICAgICAgICBzdHlsZXMgPSBzdHlsZXMucmVwbGFjZShrZXksIGNvbW1lbnRzW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGVzO1xufTtcblxuIl19
@@ -182,7 +182,7 @@ const isString = v => typeof v === 'string';
182
182
  const OVERRIDES = {
183
183
  'accessroles': '*accessroles',
184
184
  'ng-if': '*ngIf',
185
- 'showindevice': '*showInDevice',
185
+ 'showindevice': '*wmShowInDevice',
186
186
  'ng-class': '[ngClass]',
187
187
  'data-ng-class': '[ngClass]',
188
188
  'data-ng-src': 'src',