aril 1.1.96 → 1.1.97

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 (74) hide show
  1. package/boot/bridge/index.d.ts +2 -0
  2. package/boot/bridge/src/mfe-bridge.d.ts +33 -0
  3. package/boot/bridge/src/provide-mfe-bridge.d.ts +1 -0
  4. package/boot/config/apps/src/apps.service.d.ts +7 -4
  5. package/boot/config/plugins/src/getNgZone.d.ts +1 -1
  6. package/boot/host/src/app.component.d.ts +5 -3
  7. package/boot/mfe/src/app.component.d.ts +4 -2
  8. package/esm2022/boot/bridge/aril-boot-bridge.mjs +5 -0
  9. package/esm2022/boot/bridge/index.mjs +3 -0
  10. package/esm2022/boot/bridge/src/mfe-bridge.mjs +59 -0
  11. package/esm2022/boot/bridge/src/provide-mfe-bridge.mjs +6 -0
  12. package/esm2022/boot/config/api/src/api.service.mjs +10 -6
  13. package/esm2022/boot/config/apps/src/apps.service.mjs +12 -15
  14. package/esm2022/boot/config/plugins/src/getNgZone.mjs +4 -3
  15. package/esm2022/boot/config/plugins/src/plugins.service.mjs +4 -2
  16. package/esm2022/boot/host/src/app.component.mjs +11 -10
  17. package/esm2022/boot/host/src/bootstrap.mjs +4 -2
  18. package/esm2022/boot/mfe/src/app.component.mjs +15 -12
  19. package/esm2022/boot/mfe/src/bootstrap.mjs +4 -2
  20. package/esm2022/boot/mfe/src/loadStyles.mjs +3 -2
  21. package/esm2022/keycloak/src/auth.interceptor.mjs +3 -2
  22. package/esm2022/provider/src/prodiveHost.mjs +3 -2
  23. package/esm2022/provider/src/prodiveHostRouter.mjs +4 -3
  24. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -3
  25. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +3 -4
  26. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +3 -2
  27. package/esm2022/theme/layout/app/history/history.service.mjs +3 -2
  28. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +1 -2
  29. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +3 -2
  30. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +3 -4
  31. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +7 -4
  32. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -3
  33. package/fesm2022/{aril-app.component-hxaLgwmC.mjs → aril-app.component-FxPod9bE.mjs} +15 -12
  34. package/fesm2022/aril-app.component-FxPod9bE.mjs.map +1 -0
  35. package/fesm2022/aril-boot-bridge.mjs +70 -0
  36. package/fesm2022/aril-boot-bridge.mjs.map +1 -0
  37. package/fesm2022/aril-boot-config-api.mjs +10 -6
  38. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  39. package/fesm2022/aril-boot-config-apps.mjs +11 -14
  40. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  41. package/fesm2022/aril-boot-config-plugins.mjs +5 -3
  42. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  43. package/fesm2022/aril-boot-host.mjs +13 -10
  44. package/fesm2022/aril-boot-host.mjs.map +1 -1
  45. package/fesm2022/{aril-boot-mfe-app.component-s1a-tkOD.mjs → aril-boot-mfe-app.component-dZp2aSTk.mjs} +16 -13
  46. package/fesm2022/aril-boot-mfe-app.component-dZp2aSTk.mjs.map +1 -0
  47. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs → aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs} +6 -4
  48. package/fesm2022/aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs.map +1 -0
  49. package/fesm2022/aril-boot-mfe.mjs +2 -1
  50. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  51. package/fesm2022/aril-keycloak.mjs +2 -1
  52. package/fesm2022/aril-keycloak.mjs.map +1 -1
  53. package/fesm2022/aril-provider.mjs +4 -3
  54. package/fesm2022/aril-provider.mjs.map +1 -1
  55. package/fesm2022/aril-theme-layout.mjs +13 -15
  56. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  57. package/fesm2022/aril-util-directives.mjs +3 -2
  58. package/fesm2022/aril-util-directives.mjs.map +1 -1
  59. package/fesm2022/aril.mjs +17 -13
  60. package/fesm2022/aril.mjs.map +1 -1
  61. package/package.json +145 -139
  62. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +3 -2
  63. package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +0 -2
  64. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +2 -3
  65. package/theme/layout/app/general-search/general-search.component.ts +2 -1
  66. package/theme/layout/app/history/history.service.ts +2 -1
  67. package/theme/layout/app/layout/app.layout.component.d.ts +0 -1
  68. package/theme/layout/app/layout/app.layout.component.ts +0 -1
  69. package/theme/layout/app/site-map/site-map-sidebar.component.ts +2 -1
  70. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +2 -3
  71. package/theme/layout/app/topbar/app.topbar.component.ts +6 -3
  72. package/fesm2022/aril-app.component-hxaLgwmC.mjs.map +0 -1
  73. package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs.map +0 -1
  74. package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs.map +0 -1
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
1
  import { Component, NgZone, inject } from '@angular/core';
3
2
  import { ModuleFederationToolsModule, connectRouter } from '@angular-architects/module-federation-tools';
4
3
  import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
@@ -9,25 +8,29 @@ import * as i1 from "@angular/router";
9
8
  import * as i2 from "@ngneat/transloco";
10
9
  import * as i3 from "aril/theme/layout";
11
10
  import * as i4 from "primeng/api";
11
+ import * as i5 from "aril/boot/bridge";
12
12
  export class AppComponent {
13
- constructor(router, translocoService, appMenuService, primeNgConfig) {
13
+ constructor(router, translocoService, appMenuService, primeNgConfig, bridgeSvc) {
14
14
  this.router = router;
15
15
  this.translocoService = translocoService;
16
16
  this.appMenuService = appMenuService;
17
17
  this.primeNgConfig = primeNgConfig;
18
- this.isHostMode = globalThis.isHostMode;
19
- if (!this.isHostMode && !globalThis.ngZone) {
20
- globalThis.ngZone = inject(NgZone);
18
+ this.bridgeSvc = bridgeSvc;
19
+ if (!this.bridgeSvc.isHostMode() && !this.bridgeSvc.hostNgZone) {
20
+ this.bridgeSvc.hostNgZone = inject(NgZone);
21
21
  }
22
22
  connectRouter(this.router, true);
23
- globalThis.activeMF = appName;
23
+ this.bridgeSvc.activeMF.set(appName);
24
24
  const lang = localStorage.getItem('lang') ?? LanguageCode.TR;
25
25
  this.translocoService.setActiveLang(lang);
26
26
  this.setLocale(lang);
27
- if (!this.isHostMode) {
27
+ if (!this.bridgeSvc.isHostMode()) {
28
28
  this.appMenuService.menuConfig.set({ items: structuredClone(menuItems), prefix: appName });
29
29
  }
30
30
  }
31
+ get isHostMode() {
32
+ return this.bridgeSvc.isHostMode;
33
+ }
31
34
  setLocale(lang) {
32
35
  if (!lang?.length) {
33
36
  console.warn('No language selected');
@@ -37,9 +40,9 @@ export class AppComponent {
37
40
  this.primeNgConfig.setTranslation(TR_TRANSLATIONS);
38
41
  }
39
42
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.Router }, { token: i2.TranslocoService }, { token: i3.AppMenuService }, { token: i4.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.Router }, { token: i2.TranslocoService }, { token: i3.AppMenuService }, { token: i4.PrimeNGConfig }, { token: i5.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
41
44
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
42
- @if (isHostMode) {
45
+ @if (isHostMode()) {
43
46
  <mfe-layout></mfe-layout>
44
47
  } @else {
45
48
  <app-layout></app-layout>
@@ -51,7 +54,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
51
54
  args: [{
52
55
  standalone: true,
53
56
  template: `
54
- @if (isHostMode) {
57
+ @if (isHostMode()) {
55
58
  <mfe-layout></mfe-layout>
56
59
  } @else {
57
60
  <app-layout></app-layout>
@@ -59,5 +62,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
59
62
  `,
60
63
  imports: [ModuleFederationToolsModule, AppLayoutComponent, MFELayoutComponent]
61
64
  }]
62
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i3.AppMenuService }, { type: i4.PrimeNGConfig }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9tZmUvc3JjL2FwcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFHekcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQWFqRCxNQUFNLE9BQU8sWUFBWTtJQUN4QixZQUNrQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGFBQTRCO1FBSDVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQW9COUMsZUFBVSxHQUFTLFVBQVcsQ0FBQyxVQUFVLENBQUM7UUFsQnpDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQU8sVUFBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLFVBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzQixVQUFXLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBa0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQWtCLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUU3RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDRixDQUFDO0lBSUQsU0FBUyxDQUFDLElBQWtCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDUixDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDRixDQUFDOzhHQXBDVyxZQUFZO2tHQUFaLFlBQVksd0VBVGQ7Ozs7OztFQU1ULDJEQUNTLDJCQUEyQiwrQkFBRSxrQkFBa0IsdURBQUUsa0JBQWtCOzsyRkFFakUsWUFBWTtrQkFYeEIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7RUFNVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztpQkFDOUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uVG9vbHNNb2R1bGUsIGNvbm5lY3RSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSwgVFJfVFJBTlNMQVRJT05TIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBBcHBMYXlvdXRDb21wb25lbnQsIEFwcE1lbnVTZXJ2aWNlLCBNRkVMYXlvdXRDb21wb25lbnQgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcblxyXG5pbXBvcnQgeyBhcHBOYW1lLCBtZW51SXRlbXMgfSBmcm9tICcuL2Jvb3RzdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHRAaWYgKGlzSG9zdE1vZGUpIHtcclxuXHRcdFx0PG1mZS1sYXlvdXQ+PC9tZmUtbGF5b3V0PlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxhcHAtbGF5b3V0PjwvYXBwLWxheW91dD5cclxuXHRcdH1cclxuXHRgLFxyXG5cdGltcG9ydHM6IFtNb2R1bGVGZWRlcmF0aW9uVG9vbHNNb2R1bGUsIEFwcExheW91dENvbXBvbmVudCwgTUZFTGF5b3V0Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IHtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGFwcE1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHJpbWVOZ0NvbmZpZzogUHJpbWVOR0NvbmZpZ1xyXG5cdCkge1xyXG5cdFx0aWYgKCF0aGlzLmlzSG9zdE1vZGUgJiYgISg8YW55Pmdsb2JhbFRoaXMpLm5nWm9uZSkge1xyXG5cdFx0XHQoPGFueT5nbG9iYWxUaGlzKS5uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25uZWN0Um91dGVyKHRoaXMucm91dGVyLCB0cnVlKTtcclxuXHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5hY3RpdmVNRiA9IGFwcE5hbWU7XHJcblx0XHRjb25zdCBsYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpID8/IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0XHR0aGlzLnRyYW5zbG9jb1NlcnZpY2Uuc2V0QWN0aXZlTGFuZyhsYW5nKTtcclxuXHJcblx0XHR0aGlzLnNldExvY2FsZShsYW5nKTtcclxuXHJcblx0XHRpZiAoIXRoaXMuaXNIb3N0TW9kZSkge1xyXG5cdFx0XHR0aGlzLmFwcE1lbnVTZXJ2aWNlLm1lbnVDb25maWcuc2V0KHsgaXRlbXM6IHN0cnVjdHVyZWRDbG9uZShtZW51SXRlbXMpLCBwcmVmaXg6IGFwcE5hbWUgfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpc0hvc3RNb2RlID0gKDxhbnk+Z2xvYmFsVGhpcykuaXNIb3N0TW9kZTtcclxuXHJcblx0c2V0TG9jYWxlKGxhbmc6IExhbmd1YWdlQ29kZSkge1xyXG5cdFx0aWYgKCFsYW5nPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdObyBsYW5ndWFnZSBzZWxlY3RlZCcpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGxhbmcgPT09IExhbmd1YWdlQ29kZS5UUikge1xyXG5cdFx0XHR0aGlzLnByaW1lTmdDb25maWcuc2V0VHJhbnNsYXRpb24oVFJfVFJBTlNMQVRJT05TKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
65
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i3.AppMenuService }, { type: i4.PrimeNGConfig }, { type: i5.MfeBridge }] });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9tZmUvc3JjL2FwcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUl6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7OztBQWFqRCxNQUFNLE9BQU8sWUFBWTtJQUN4QixZQUNrQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLFNBQW9CO1FBSnBCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBa0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQWtCLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUU3RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDRixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWtCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDUixDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDRixDQUFDOzhHQXZDVyxZQUFZO2tHQUFaLFlBQVksd0VBVGQ7Ozs7OztFQU1ULDJEQUNTLDJCQUEyQiwrQkFBRSxrQkFBa0IsdURBQUUsa0JBQWtCOzsyRkFFakUsWUFBWTtrQkFYeEIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7RUFNVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztpQkFDOUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE5nWm9uZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBQcmltZU5HQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvblRvb2xzTW9kdWxlLCBjb25uZWN0Um91dGVyIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbi10b29scyc7XHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBNZmVCcmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VDb2RlLCBUUl9UUkFOU0xBVElPTlMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCB7IEFwcExheW91dENvbXBvbmVudCwgQXBwTWVudVNlcnZpY2UsIE1GRUxheW91dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdGhlbWUvbGF5b3V0JztcclxuXHJcbmltcG9ydCB7IGFwcE5hbWUsIG1lbnVJdGVtcyB9IGZyb20gJy4vYm9vdHN0cmFwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdEBpZiAoaXNIb3N0TW9kZSgpKSB7XHJcblx0XHRcdDxtZmUtbGF5b3V0PjwvbWZlLWxheW91dD5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8YXBwLWxheW91dD48L2FwcC1sYXlvdXQ+XHJcblx0XHR9XHJcblx0YCxcclxuXHRpbXBvcnRzOiBbTW9kdWxlRmVkZXJhdGlvblRvb2xzTW9kdWxlLCBBcHBMYXlvdXRDb21wb25lbnQsIE1GRUxheW91dENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCB7XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHByaW1lTmdDb25maWc6IFByaW1lTkdDb25maWcsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGJyaWRnZVN2YzogTWZlQnJpZGdlXHJcblx0KSB7XHJcblx0XHRpZiAoIXRoaXMuYnJpZGdlU3ZjLmlzSG9zdE1vZGUoKSAmJiAhdGhpcy5icmlkZ2VTdmMuaG9zdE5nWm9uZSkge1xyXG5cdFx0XHR0aGlzLmJyaWRnZVN2Yy5ob3N0Tmdab25lID0gaW5qZWN0KE5nWm9uZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29ubmVjdFJvdXRlcih0aGlzLnJvdXRlciwgdHJ1ZSk7XHJcblxyXG5cdFx0dGhpcy5icmlkZ2VTdmMuYWN0aXZlTUYuc2V0KGFwcE5hbWUpO1xyXG5cdFx0Y29uc3QgbGFuZzogTGFuZ3VhZ2VDb2RlID0gKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJykgYXMgTGFuZ3VhZ2VDb2RlKSA/PyBMYW5ndWFnZUNvZGUuVFI7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcobGFuZyk7XHJcblxyXG5cdFx0dGhpcy5zZXRMb2NhbGUobGFuZyk7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmJyaWRnZVN2Yy5pc0hvc3RNb2RlKCkpIHtcclxuXHRcdFx0dGhpcy5hcHBNZW51U2VydmljZS5tZW51Q29uZmlnLnNldCh7IGl0ZW1zOiBzdHJ1Y3R1cmVkQ2xvbmUobWVudUl0ZW1zKSwgcHJlZml4OiBhcHBOYW1lIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0IGlzSG9zdE1vZGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5icmlkZ2VTdmMuaXNIb3N0TW9kZTtcclxuXHR9XHJcblxyXG5cdHNldExvY2FsZShsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdGlmICghbGFuZz8ubGVuZ3RoKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignTm8gbGFuZ3VhZ2Ugc2VsZWN0ZWQnKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChsYW5nID09PSBMYW5ndWFnZUNvZGUuVFIpIHtcclxuXHRcdFx0dGhpcy5wcmltZU5nQ29uZmlnLnNldFRyYW5zbGF0aW9uKFRSX1RSQU5TTEFUSU9OUyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -7,6 +7,7 @@ import { RouteReuseStrategy, provideRouter, withComponentInputBinding, withHashL
7
7
  import { ConfirmationService, MessageService } from 'primeng/api';
8
8
  import { KeycloakAngularModule, KeycloakBearerInterceptor, KeycloakService } from 'keycloak-angular';
9
9
  import { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';
10
+ import { bridge, provideMfeBridge } from 'aril/boot/bridge';
10
11
  import { loadApiConfigs, setApiConfigOnMFEMode } from 'aril/boot/config/api';
11
12
  import { ArilReuseStrategy } from 'aril/boot/config/apps';
12
13
  import { getNgZone, loadPlugins } from 'aril/boot/config/plugins';
@@ -28,6 +29,7 @@ export const boot = (_appName, _routes, _menuItems) => {
28
29
  const appBootConfig = {
29
30
  providers: [
30
31
  provideAnimations(),
32
+ provideMfeBridge(),
31
33
  provideHost(appName),
32
34
  provideLocaleId(),
33
35
  KeycloakBearerInterceptor,
@@ -41,7 +43,7 @@ export const boot = (_appName, _routes, _menuItems) => {
41
43
  {
42
44
  provide: APP_INITIALIZER,
43
45
  useFactory: (httpClient, keycloak, folderName) => {
44
- const apiFactory = globalThis.isHostMode ? setApiConfigOnMFEMode : loadApiConfigs;
46
+ const apiFactory = bridge.isHostMode() ? setApiConfigOnMFEMode : loadApiConfigs;
45
47
  const runApiInit = apiFactory(httpClient, keycloak, folderName);
46
48
  const runLoadPlugins = loadPlugins();
47
49
  return async () => {
@@ -73,4 +75,4 @@ export const boot = (_appName, _routes, _menuItems) => {
73
75
  });
74
76
  });
75
77
  };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L21mZS9zcmMvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQ04sa0JBQWtCLEVBRWxCLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0UsT0FBTyxFQUFRLGlCQUFpQixFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFj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QUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDaEQsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0UsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBBcHBsaWNhdGlvbkNvbmZpZywgaW1wb3J0UHJvdmlkZXJzRnJvbSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjcmVhdGVDdXN0b21FbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvZWxlbWVudHMnO1xyXG5pbXBvcnQgeyBjcmVhdGVBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBwcm92aWRlQW5pbWF0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7XHJcblx0Um91dGVSZXVzZVN0cmF0ZWd5LFxyXG5cdFJvdXRlcyxcclxuXHRwcm92aWRlUm91dGVyLFxyXG5cdHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcsXHJcblx0d2l0aEhhc2hMb2NhdGlvbixcclxuXHR3aXRoUm91dGVyQ29uZmlnLFxyXG5cdHdpdGhWaWV3VHJhbnNpdGlvbnNcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0FuZ3VsYXJNb2R1bGUsIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBNb25hY29FZGl0b3JNb2R1bGUsIE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRyB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yLXYyJztcclxuXHJcbmltcG9ydCB7IGxvYWRBcGlDb25maWdzLCBzZXRBcGlDb25maWdPbk1GRU1vZGUgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMsIEFyaWxSZXVzZVN0cmF0ZWd5LCBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IGdldE5nWm9uZSwgbG9hZFBsdWdpbnMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL3BsdWdpbnMnO1xyXG5pbXBvcnQgeyBhY2NlcHRMYW5ndWFnZUludGVyY2VwdG9yIH0gZnJvbSAnYXJpbC9odHRwJztcclxuaW1wb3J0IHsgaTE4bkZvbGRlck5hbWUsIGkxOG5Nb2R1bGUgfSBmcm9tICdhcmlsL2kxOG4nO1xyXG5pbXBvcnQgeyBhdXRoSW50ZXJjZXB0b3IsIGtleWNsb2FrQXV0aEludGVyY2VwdG9yIH0gZnJvbSAnYXJpbC9rZXljbG9hayc7XHJcbmltcG9ydCB7IHByb3ZpZGVIb3N0LCBwcm92aWRlTG9jYWxlSWQgfSBmcm9tICdhcmlsL3Byb3ZpZGVyJztcclxuaW1wb3J0IHsgU3R5bGVMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL2xvYWRlcnMnO1xyXG5cclxuaW1wb3J0IHsgYXBwQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnLi9hcHBDb21wb25lbnRMb2FkZXInO1xyXG5pbXBvcnQgeyBsb2FkU3R5bGVzIH0gZnJvbSAnLi9sb2FkU3R5bGVzJztcclxuaW1wb3J0IHsgbW9uYWNvQ29uZmlnIH0gZnJvbSAnLi9tb25hY28uY29uZmlnJztcclxuXHJcbmV4cG9ydCB2YXIgYXBwTmFtZTogQXBwcztcclxuZXhwb3J0IHZhciBtZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10gPSBbXTtcclxuXHJcbmV4cG9ydCBjb25zdCBib290ID0gKF9hcHBOYW1lOiBBcHBzLCBfcm91dGVzOiBSb3V0ZXMsIF9tZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10pID0+IHtcclxuXHRpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KGBhcHAtJHtfYXBwTmFtZX1gKSkgcmV0dXJuO1xyXG5cclxuXHRhcHBOYW1lID0gX2FwcE5hbWU7XHJcblx0bWVudUl0ZW1zID0gX21lbnVJdGVtcztcclxuXHJcblx0Y29uc3QgYXBwQm9vdENvbmZpZzogQXBwbGljYXRpb25Db25maWcgPSB7XHJcblx0XHRwcm92aWRlcnM6IFtcclxuXHRcdFx0cHJvdmlkZUFuaW1hdGlvbnMoKSxcclxuXHRcdFx0cHJvdmlkZUhvc3QoYXBwTmFtZSksXHJcblx0XHRcdHByb3ZpZGVMb2NhbGVJZCgpLFxyXG5cdFx0XHRLZXljbG9ha0JlYXJlckludGVyY2VwdG9yLFxyXG5cdFx0XHRwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzKFthY2NlcHRMYW5ndWFnZUludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IsIGtleWNsb2FrQXV0aEludGVyY2VwdG9yXSkpLFxyXG5cdFx0XHRwcm92aWRlUm91dGVyKFxyXG5cdFx0XHRcdF9yb3V0ZXMsXHJcblx0XHRcdFx0d2l0aENvbXBvbmVudElucHV0QmluZGluZygpLFxyXG5cdFx0XHRcdHdpdGhIYXNoTG9jYXRpb24oKSxcclxuXHRcdFx0XHR3aXRoVmlld1RyYW5zaXRpb25zKCksXHJcblx0XHRcdFx0d2l0aFJvdXRlckNvbmZpZyh7IG9uU2FtZVVybE5hdmlnYXRpb246ICdyZWxvYWQnIH0pXHJcblx0XHRcdCksXHJcblx0XHRcdHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogQXJpbFJldXNlU3RyYXRlZ3kgfSxcclxuXHRcdFx0aW1wb3J0UHJvdmlkZXJzRnJvbShpMThuTW9kdWxlLCBLZXljbG9ha0FuZ3VsYXJNb2R1bGUpLFxyXG5cdFx0XHRnZXROZ1pvbmUoKSxcclxuXHRcdFx0TWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdENvbmZpcm1hdGlvblNlcnZpY2UsXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcblx0XHRcdFx0dXNlRmFjdG9yeTogKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2UsIGZvbGRlck5hbWU6IHR5cGVvZiBpMThuRm9sZGVyTmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgYXBpRmFjdG9yeSA9ICg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGUgPyBzZXRBcGlDb25maWdPbk1GRU1vZGUgOiBsb2FkQXBpQ29uZmlncztcclxuXHRcdFx0XHRcdGNvbnN0IHJ1bkFwaUluaXQgPSBhcGlGYWN0b3J5KGh0dHBDbGllbnQsIGtleWNsb2FrLCBmb2xkZXJOYW1lIGFzIHVua25vd24gYXMgQXBwcyk7XHJcblx0XHRcdFx0XHRjb25zdCBydW5Mb2FkUGx1Z2lucyA9IGxvYWRQbHVnaW5zKCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRhd2FpdCBydW5BcGlJbml0KCk7XHJcblx0XHRcdFx0XHRcdHJ1bkxvYWRQbHVnaW5zKCk7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHRcdFx0ZGVwczogW0h0dHBDbGllbnQsIEtleWNsb2FrU2VydmljZSwgaTE4bkZvbGRlck5hbWVdXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcblx0XHRcdFx0dXNlRmFjdG9yeTogbG9hZFN0eWxlcyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbU3R5bGVMb2FkZXJTZXJ2aWNlLCBpMThuRm9sZGVyTmFtZV1cclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHByb3ZpZGU6IGkxOG5Gb2xkZXJOYW1lLFxyXG5cdFx0XHRcdHVzZVZhbHVlOiBfYXBwTmFtZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbXBvcnRQcm92aWRlcnNGcm9tKE1vbmFjb0VkaXRvck1vZHVsZS5mb3JSb290KCkpLFxyXG5cdFx0XHR7IHByb3ZpZGU6IE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IG1vbmFjb0NvbmZpZyB9XHJcblx0XHRdXHJcblx0fTtcclxuXHJcblx0Y3JlYXRlQXBwbGljYXRpb24oYXBwQm9vdENvbmZpZykudGhlbigoYXBwUmVmKSA9PiB7XHJcblx0XHRhcHBDb21wb25lbnRMb2FkZXIoKS50aGVuKChBcHBDb21wb25lbnQpID0+IHtcclxuXHRcdFx0Y29uc3QgYXBwID0gY3JlYXRlQ3VzdG9tRWxlbWVudChBcHBDb21wb25lbnQsIHsgaW5qZWN0b3I6IGFwcFJlZi5pbmplY3RvciB9KTtcclxuXHRcdFx0Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGBhcHAtJHthcHBOYW1lfWAsIGFwcCk7XHJcblx0XHR9KTtcclxuXHR9KTtcclxufTtcclxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L21mZS9zcmMvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQ04sa0JBQWtCLEVBRWxCLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBUSxpQkFBaUIsRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxJQUFJLE9BQWEsQ0FBQztBQUN6QixNQUFNLENBQUMsSUFBSSxTQUFTLEdBQXFCLEVBQUUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFjLEVBQUUsT0FBZSxFQUFFLFVBQTRCLEVBQUUsRUFBRTtJQUNyRixJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztRQUFFLE9BQU87SUFFbEQsT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUNuQixTQUFTLEdBQUcsVUFBVSxDQUFDO0lBRXZCLE1BQU0sYUFBYSxHQUFzQjtRQUN4QyxTQUFTLEVBQUU7WUFDVixpQkFBaUIsRUFBRTtZQUNuQixnQkFBZ0IsRUFBRTtZQUNsQixXQUFXLENBQUMsT0FBTyxDQUFDO1lBQ3BCLGVBQWUsRUFBRTtZQUNqQix5QkFBeUI7WUFDekIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1lBQzFHLGFBQWEsQ0FDWixPQUFPLEVBQ1AseUJBQXlCLEVBQUUsRUFDM0IsZ0JBQWdCLEVBQUUsRUFDbEIsbUJBQW1CLEVBQUUsRUFDckIsZ0JBQWdCLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUNuRDtZQUNELEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtZQUM1RCxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLENBQUM7WUFDdEQsU0FBUyxFQUFFO1lBQ1gsY0FBYztZQUNkLG1CQUFtQjtZQUNuQjtnQkFDQyxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsVUFBVSxFQUFFLENBQUMsVUFBc0IsRUFBRSxRQUF5QixFQUFFLFVBQWlDLEVBQUUsRUFBRTtvQkFDcEcsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO29CQUNoRixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUE2QixDQUFDLENBQUM7b0JBQ25GLE1BQU0sY0FBYyxHQUFHLFdBQVcsRUFBRSxDQUFDO29CQUNyQyxPQUFPLEtBQUssSUFBSSxFQUFFO3dCQUNqQixNQUFNLFVBQVUsRUFBRSxDQUFDO3dCQUNuQixjQUFjLEVBQUUsQ0FBQztvQkFDbEIsQ0FBQyxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUM7YUFDbkQ7WUFDRDtnQkFDQyxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQzthQUMxQztZQUNEO2dCQUNDLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixRQUFRLEVBQUUsUUFBUTthQUNsQjtZQUNELG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pELEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7U0FDN0Q7S0FDRCxDQUFDO0lBRUYsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDaEQsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0UsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBBcHBsaWNhdGlvbkNvbmZpZywgaW1wb3J0UHJvdmlkZXJzRnJvbSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjcmVhdGVDdXN0b21FbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvZWxlbWVudHMnO1xyXG5pbXBvcnQgeyBjcmVhdGVBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBwcm92aWRlQW5pbWF0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7XHJcblx0Um91dGVSZXVzZVN0cmF0ZWd5LFxyXG5cdFJvdXRlcyxcclxuXHRwcm92aWRlUm91dGVyLFxyXG5cdHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcsXHJcblx0d2l0aEhhc2hMb2NhdGlvbixcclxuXHR3aXRoUm91dGVyQ29uZmlnLFxyXG5cdHdpdGhWaWV3VHJhbnNpdGlvbnNcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0FuZ3VsYXJNb2R1bGUsIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBNb25hY29FZGl0b3JNb2R1bGUsIE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRyB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yLXYyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSwgcHJvdmlkZU1mZUJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBsb2FkQXBpQ29uZmlncywgc2V0QXBpQ29uZmlnT25NRkVNb2RlIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBBcHBzLCBBcmlsUmV1c2VTdHJhdGVneSwgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBnZXROZ1pvbmUsIGxvYWRQbHVnaW5zIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9wbHVnaW5zJztcclxuaW1wb3J0IHsgYWNjZXB0TGFuZ3VhZ2VJbnRlcmNlcHRvciB9IGZyb20gJ2FyaWwvaHR0cCc7XHJcbmltcG9ydCB7IGkxOG5Gb2xkZXJOYW1lLCBpMThuTW9kdWxlIH0gZnJvbSAnYXJpbC9pMThuJztcclxuaW1wb3J0IHsgYXV0aEludGVyY2VwdG9yLCBrZXljbG9ha0F1dGhJbnRlcmNlcHRvciB9IGZyb20gJ2FyaWwva2V5Y2xvYWsnO1xyXG5pbXBvcnQgeyBwcm92aWRlSG9zdCwgcHJvdmlkZUxvY2FsZUlkIH0gZnJvbSAnYXJpbC9wcm92aWRlcic7XHJcbmltcG9ydCB7IFN0eWxlTG9hZGVyU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9sb2FkZXJzJztcclxuXHJcbmltcG9ydCB7IGFwcENvbXBvbmVudExvYWRlciB9IGZyb20gJy4vYXBwQ29tcG9uZW50TG9hZGVyJztcclxuaW1wb3J0IHsgbG9hZFN0eWxlcyB9IGZyb20gJy4vbG9hZFN0eWxlcyc7XHJcbmltcG9ydCB7IG1vbmFjb0NvbmZpZyB9IGZyb20gJy4vbW9uYWNvLmNvbmZpZyc7XHJcblxyXG5leHBvcnQgdmFyIGFwcE5hbWU6IEFwcHM7XHJcbmV4cG9ydCB2YXIgbWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdID0gW107XHJcblxyXG5leHBvcnQgY29uc3QgYm9vdCA9IChfYXBwTmFtZTogQXBwcywgX3JvdXRlczogUm91dGVzLCBfbWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKSA9PiB7XHJcblx0aWYgKGN1c3RvbUVsZW1lbnRzLmdldChgYXBwLSR7X2FwcE5hbWV9YCkpIHJldHVybjtcclxuXHJcblx0YXBwTmFtZSA9IF9hcHBOYW1lO1xyXG5cdG1lbnVJdGVtcyA9IF9tZW51SXRlbXM7XHJcblxyXG5cdGNvbnN0IGFwcEJvb3RDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xyXG5cdFx0cHJvdmlkZXJzOiBbXHJcblx0XHRcdHByb3ZpZGVBbmltYXRpb25zKCksXHJcblx0XHRcdHByb3ZpZGVNZmVCcmlkZ2UoKSxcclxuXHRcdFx0cHJvdmlkZUhvc3QoYXBwTmFtZSksXHJcblx0XHRcdHByb3ZpZGVMb2NhbGVJZCgpLFxyXG5cdFx0XHRLZXljbG9ha0JlYXJlckludGVyY2VwdG9yLFxyXG5cdFx0XHRwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzKFthY2NlcHRMYW5ndWFnZUludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IsIGtleWNsb2FrQXV0aEludGVyY2VwdG9yXSkpLFxyXG5cdFx0XHRwcm92aWRlUm91dGVyKFxyXG5cdFx0XHRcdF9yb3V0ZXMsXHJcblx0XHRcdFx0d2l0aENvbXBvbmVudElucHV0QmluZGluZygpLFxyXG5cdFx0XHRcdHdpdGhIYXNoTG9jYXRpb24oKSxcclxuXHRcdFx0XHR3aXRoVmlld1RyYW5zaXRpb25zKCksXHJcblx0XHRcdFx0d2l0aFJvdXRlckNvbmZpZyh7IG9uU2FtZVVybE5hdmlnYXRpb246ICdyZWxvYWQnIH0pXHJcblx0XHRcdCksXHJcblx0XHRcdHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogQXJpbFJldXNlU3RyYXRlZ3kgfSxcclxuXHRcdFx0aW1wb3J0UHJvdmlkZXJzRnJvbShpMThuTW9kdWxlLCBLZXljbG9ha0FuZ3VsYXJNb2R1bGUpLFxyXG5cdFx0XHRnZXROZ1pvbmUoKSxcclxuXHRcdFx0TWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdENvbmZpcm1hdGlvblNlcnZpY2UsXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcblx0XHRcdFx0dXNlRmFjdG9yeTogKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2UsIGZvbGRlck5hbWU6IHR5cGVvZiBpMThuRm9sZGVyTmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgYXBpRmFjdG9yeSA9IGJyaWRnZS5pc0hvc3RNb2RlKCkgPyBzZXRBcGlDb25maWdPbk1GRU1vZGUgOiBsb2FkQXBpQ29uZmlncztcclxuXHRcdFx0XHRcdGNvbnN0IHJ1bkFwaUluaXQgPSBhcGlGYWN0b3J5KGh0dHBDbGllbnQsIGtleWNsb2FrLCBmb2xkZXJOYW1lIGFzIHVua25vd24gYXMgQXBwcyk7XHJcblx0XHRcdFx0XHRjb25zdCBydW5Mb2FkUGx1Z2lucyA9IGxvYWRQbHVnaW5zKCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRhd2FpdCBydW5BcGlJbml0KCk7XHJcblx0XHRcdFx0XHRcdHJ1bkxvYWRQbHVnaW5zKCk7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHRcdFx0ZGVwczogW0h0dHBDbGllbnQsIEtleWNsb2FrU2VydmljZSwgaTE4bkZvbGRlck5hbWVdXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcblx0XHRcdFx0dXNlRmFjdG9yeTogbG9hZFN0eWxlcyxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbU3R5bGVMb2FkZXJTZXJ2aWNlLCBpMThuRm9sZGVyTmFtZV1cclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHByb3ZpZGU6IGkxOG5Gb2xkZXJOYW1lLFxyXG5cdFx0XHRcdHVzZVZhbHVlOiBfYXBwTmFtZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbXBvcnRQcm92aWRlcnNGcm9tKE1vbmFjb0VkaXRvck1vZHVsZS5mb3JSb290KCkpLFxyXG5cdFx0XHR7IHByb3ZpZGU6IE5HWF9NT05BQ09fRURJVE9SX0NPTkZJRywgdXNlVmFsdWU6IG1vbmFjb0NvbmZpZyB9XHJcblx0XHRdXHJcblx0fTtcclxuXHJcblx0Y3JlYXRlQXBwbGljYXRpb24oYXBwQm9vdENvbmZpZykudGhlbigoYXBwUmVmKSA9PiB7XHJcblx0XHRhcHBDb21wb25lbnRMb2FkZXIoKS50aGVuKChBcHBDb21wb25lbnQpID0+IHtcclxuXHRcdFx0Y29uc3QgYXBwID0gY3JlYXRlQ3VzdG9tRWxlbWVudChBcHBDb21wb25lbnQsIHsgaW5qZWN0b3I6IGFwcFJlZi5pbmplY3RvciB9KTtcclxuXHRcdFx0Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGBhcHAtJHthcHBOYW1lfWAsIGFwcCk7XHJcblx0XHR9KTtcclxuXHR9KTtcclxufTtcclxuIl19
@@ -1,3 +1,4 @@
1
+ import { bridge } from 'aril/boot/bridge';
1
2
  export function loadStyles(styleLoaderService, appName) {
2
3
  const styles = [
3
4
  'layout.css',
@@ -30,8 +31,8 @@ export function loadStyles(styleLoaderService, appName) {
30
31
  }
31
32
  */
32
33
  styles.push('theme.light.custom.css');
33
- if (globalThis.isHostMode)
34
+ if (bridge.isHostMode())
34
35
  return () => Promise.resolve();
35
36
  return () => styleLoaderService.load(styles);
36
37
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZFN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9tZmUvc3JjL2xvYWRTdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLFVBQVUsQ0FBQyxrQkFBc0MsRUFBRSxPQUFhO0lBQy9FLE1BQU0sTUFBTSxHQUFHO1FBQ2QsWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLDBCQUEwQjtRQUMxQixVQUFVLE9BQU8scUNBQXFDO1FBQ3RELFVBQVUsT0FBTyxtQ0FBbUM7S0FDcEQsQ0FBQztJQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW9CRTtJQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUV0QyxJQUFVLFVBQVcsQ0FBQyxVQUFVO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFakUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBTdHlsZUxvYWRlclNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvbG9hZGVycyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN0eWxlcyhzdHlsZUxvYWRlclNlcnZpY2U6IFN0eWxlTG9hZGVyU2VydmljZSwgYXBwTmFtZTogQXBwcyk6ICgpID0+IFByb21pc2U8YW55PiB7XHJcblx0Y29uc3Qgc3R5bGVzID0gW1xyXG5cdFx0J2xheW91dC5jc3MnLFxyXG5cdFx0J3VpLmNvbW1vbi5jc3MnLFxyXG5cdFx0J3ByZWxvYWRpbmcuY3NzJyxcclxuXHRcdCdwcmltZW5nLm1pbi5jc3MnLFxyXG5cdFx0J2R4LmZsdWVudC5zYWFzLmxpZ2h0LmNzcycsXHJcblx0XHRgYXNzZXRzLyR7YXBwTmFtZX0vc3R5bGVzL3ByaW1lZmxleC9wcmltZWZsZXgubWluLmNzc2AsXHJcblx0XHRgYXNzZXRzLyR7YXBwTmFtZX0vc3R5bGVzL3ByaW1laWNvbnMvcHJpbWVpY29ucy5jc3NgXHJcblx0XTtcclxuXHJcblx0Lypzd2l0Y2ggKGFwcE5hbWUpIHtcclxuXHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRjYXNlIEFwcHMuQ1RTOlxyXG5cdFx0Y2FzZSBBcHBzLlNJUzpcclxuXHRcdFx0c3R5bGVzLnB1c2goJ3RoZW1lLmxpZ2h0LmxlbmEuY3NzJyk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdGNhc2UgQXBwcy5CSUxMSU5HOlxyXG5cdFx0Y2FzZSBBcHBzLlBBWU1FTlQ6XHJcblx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0Y2FzZSBBcHBzLk1ORzpcclxuXHRcdFx0c3R5bGVzLnB1c2goJ3RoZW1lLmxpZ2h0LnRob3IuY3NzJyk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSBBcHBzLk1XOlxyXG5cdFx0XHRzdHlsZXMucHVzaCgndGhlbWUubGlnaHQueWVhcC5jc3MnKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRkZWZhdWx0OlxyXG5cdFx0XHRzdHlsZXMucHVzaCgndGhlbWUubGlnaHQuaW5kaWdvLmNzcycpO1xyXG5cclxuXHR9XHJcblx0Ki9cclxuXHJcblx0c3R5bGVzLnB1c2goJ3RoZW1lLmxpZ2h0LmN1c3RvbS5jc3MnKTtcclxuXHJcblx0aWYgKCg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGUpIHJldHVybiAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcclxuXHJcblx0cmV0dXJuICgpID0+IHN0eWxlTG9hZGVyU2VydmljZS5sb2FkKHN0eWxlcyk7XHJcbn1cclxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZFN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9tZmUvc3JjL2xvYWRTdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTFDLE1BQU0sVUFBVSxVQUFVLENBQUMsa0JBQXNDLEVBQUUsT0FBYTtJQUMvRSxNQUFNLE1BQU0sR0FBRztRQUNkLFlBQVk7UUFDWixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQiwwQkFBMEI7UUFDMUIsVUFBVSxPQUFPLHFDQUFxQztRQUN0RCxVQUFVLE9BQU8sbUNBQW1DO0tBQ3BELENBQUM7SUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFvQkU7SUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFdEMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFeEQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgU3R5bGVMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL2xvYWRlcnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdHlsZXMoc3R5bGVMb2FkZXJTZXJ2aWNlOiBTdHlsZUxvYWRlclNlcnZpY2UsIGFwcE5hbWU6IEFwcHMpOiAoKSA9PiBQcm9taXNlPGFueT4ge1xyXG5cdGNvbnN0IHN0eWxlcyA9IFtcclxuXHRcdCdsYXlvdXQuY3NzJyxcclxuXHRcdCd1aS5jb21tb24uY3NzJyxcclxuXHRcdCdwcmVsb2FkaW5nLmNzcycsXHJcblx0XHQncHJpbWVuZy5taW4uY3NzJyxcclxuXHRcdCdkeC5mbHVlbnQuc2Fhcy5saWdodC5jc3MnLFxyXG5cdFx0YGFzc2V0cy8ke2FwcE5hbWV9L3N0eWxlcy9wcmltZWZsZXgvcHJpbWVmbGV4Lm1pbi5jc3NgLFxyXG5cdFx0YGFzc2V0cy8ke2FwcE5hbWV9L3N0eWxlcy9wcmltZWljb25zL3ByaW1laWNvbnMuY3NzYFxyXG5cdF07XHJcblxyXG5cdC8qc3dpdGNoIChhcHBOYW1lKSB7XHJcblx0XHRjYXNlIEFwcHMuSEVTOlxyXG5cdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdGNhc2UgQXBwcy5TSVM6XHJcblx0XHRcdHN0eWxlcy5wdXNoKCd0aGVtZS5saWdodC5sZW5hLmNzcycpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgQXBwcy5DUk06XHJcblx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdGNhc2UgQXBwcy5QQVlNRU5UOlxyXG5cdFx0Y2FzZSBBcHBzLldETTpcclxuXHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdHN0eWxlcy5wdXNoKCd0aGVtZS5saWdodC50aG9yLmNzcycpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0c3R5bGVzLnB1c2goJ3RoZW1lLmxpZ2h0LnllYXAuY3NzJyk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0c3R5bGVzLnB1c2goJ3RoZW1lLmxpZ2h0LmluZGlnby5jc3MnKTtcclxuXHJcblx0fVxyXG5cdCovXHJcblxyXG5cdHN0eWxlcy5wdXNoKCd0aGVtZS5saWdodC5jdXN0b20uY3NzJyk7XHJcblxyXG5cdGlmIChicmlkZ2UuaXNIb3N0TW9kZSgpKSByZXR1cm4gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcblxyXG5cdHJldHVybiAoKSA9PiBzdHlsZUxvYWRlclNlcnZpY2UubG9hZChzdHlsZXMpO1xyXG59XHJcbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { KeycloakBearerInterceptor } from 'keycloak-angular';
3
+ import { bridge } from 'aril/boot/bridge';
3
4
  import { Apps } from 'aril/boot/config/apps';
4
5
  const getCurrentAppName = (host, mf) => {
5
6
  let appName = '';
@@ -75,7 +76,7 @@ const getCsrfToken = () => {
75
76
  ?.split('=')[1];
76
77
  };
77
78
  export const authInterceptor = (req, next) => {
78
- const currentApp = getCurrentAppName(globalThis.activeHost, globalThis.activeMF);
79
+ const currentApp = getCurrentAppName(bridge.activeHost(), bridge.activeMF());
79
80
  const appNameHeader = getAppHeader(currentApp);
80
81
  const csrfToken = getCsrfToken();
81
82
  // if (isDevMode()) return next(req);
@@ -88,4 +89,4 @@ export const authInterceptor = (req, next) => {
88
89
  return next(authReq);
89
90
  };
90
91
  export const keycloakAuthInterceptor = (req, next) => inject(KeycloakBearerInterceptor).intercept(req, { handle: next });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsRUFBRTtJQUN0RCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNWLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDZCxLQUFLLElBQUksQ0FBQyxJQUFJO2dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1lBQ1AsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07UUFDUixDQUFDO0lBQ0YsQ0FBQztTQUFNLENBQUM7UUFDUCxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQixLQUFLLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUDtnQkFDQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsSUFBSTtZQUNiLFNBQVMsR0FBRztnQkFDWCxvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUUsTUFBTTtnQkFDdkIsVUFBVSxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUNGLE1BQU07UUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQ2IsU0FBUyxHQUFHO2dCQUNYLG9CQUFvQixFQUFFLE1BQU07Z0JBQzVCLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixVQUFVLEVBQUUsU0FBUzthQUNyQixDQUFDO1lBQ0YsTUFBTTtRQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7WUFDYixTQUFTLEdBQUc7Z0JBQ1gsb0JBQW9CLEVBQUUsTUFBTTtnQkFDNUIsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLFVBQVUsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFDRixNQUFNO0lBQ1IsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLEdBQXVCLEVBQUU7SUFDN0MsT0FBTyxRQUFRLENBQUMsTUFBTTtTQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUNwRyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBTyxVQUFXLENBQUMsVUFBVSxFQUFRLFVBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFakMscUNBQXFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDekIsVUFBVSxFQUFFO1lBQ1gsVUFBVSxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzNCLEdBQUcsYUFBYTtTQUNoQjtLQUNELENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFLENBQzVHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuY29uc3QgZ2V0Q3VycmVudEFwcE5hbWUgPSAoaG9zdDogc3RyaW5nLCBtZjogc3RyaW5nKSA9PiB7XHJcblx0bGV0IGFwcE5hbWUgPSAnJztcclxuXHRpZiAoaG9zdCkge1xyXG5cdFx0c3dpdGNoIChob3N0KSB7XHJcblx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5MRU5BOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLkxFTkE7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5USE9SOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLlRIT1I7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fSBlbHNlIHtcclxuXHRcdHN3aXRjaCAobWYpIHtcclxuXHRcdFx0Y2FzZSBBcHBzLkhFUzpcclxuXHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0Y2FzZSBBcHBzLlNJUzpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5MRU5BO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuQ1JNOlxyXG5cdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0Y2FzZSBBcHBzLlBBWU1FTlQ6XHJcblx0XHRcdGNhc2UgQXBwcy5XRE06XHJcblx0XHRcdGNhc2UgQXBwcy5NRE06XHJcblx0XHRcdGNhc2UgQXBwcy5ETVM6XHJcblx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuVEhPUjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBBcHBzLk1XOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuWUVBUDtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGFwcE5hbWU7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBcHBIZWFkZXIgPSAoYXBwTmFtZTogc3RyaW5nKSA9PiB7XHJcblx0bGV0IGFwcEhlYWRlciA9IHt9O1xyXG5cdHN3aXRjaCAoYXBwTmFtZSkge1xyXG5cdFx0Y2FzZSBBcHBzLllFQVA6XHJcblx0XHRcdGFwcEhlYWRlciA9IHtcclxuXHRcdFx0XHQneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3llYXAnLFxyXG5cdFx0XHRcdCd4LWFwcGxpY2F0aW9uJzogJ3llYXAnLFxyXG5cdFx0XHRcdCd4LW1vZHVsZSc6ICd5ZWFwLWZlJ1xyXG5cdFx0XHR9O1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgQXBwcy5MRU5BOlxyXG5cdFx0XHRhcHBIZWFkZXIgPSB7XHJcblx0XHRcdFx0J3gteWVhcC1hcHBsaWNhdGlvbic6ICdsZW5hJyxcclxuXHRcdFx0XHQneC1hcHBsaWNhdGlvbic6ICdsZW5hJyxcclxuXHRcdFx0XHQneC1tb2R1bGUnOiAnbGVuYS1mZSdcclxuXHRcdFx0fTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0YXBwSGVhZGVyID0ge1xyXG5cdFx0XHRcdCd4LXllYXAtYXBwbGljYXRpb24nOiAndGhvcicsXHJcblx0XHRcdFx0J3gtYXBwbGljYXRpb24nOiAndGhvcicsXHJcblx0XHRcdFx0J3gtbW9kdWxlJzogJ3Rob3ItZmUnXHJcblx0XHRcdH07XHJcblx0XHRcdGJyZWFrO1xyXG5cdH1cclxuXHRyZXR1cm4gYXBwSGVhZGVyO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0cmV0dXJuIGRvY3VtZW50LmNvb2tpZVxyXG5cdFx0LnNwbGl0KCc7ICcpXHJcblx0XHQuZmluZCgocm93KSA9PiByb3cuc3RhcnRzV2l0aCgnY3NyZl90b2tlbj0nKSlcclxuXHRcdD8uc3BsaXQoJz0nKVsxXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCBjdXJyZW50QXBwID0gZ2V0Q3VycmVudEFwcE5hbWUoKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlSG9zdCwgKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlTUYpO1xyXG5cdGNvbnN0IGFwcE5hbWVIZWFkZXIgPSBnZXRBcHBIZWFkZXIoY3VycmVudEFwcCk7XHJcblx0Y29uc3QgY3NyZlRva2VuID0gZ2V0Q3NyZlRva2VuKCk7XHJcblxyXG5cdC8vIGlmIChpc0Rldk1vZGUoKSkgcmV0dXJuIG5leHQocmVxKTtcclxuXHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdGNzcmZfdG9rZW46IGNzcmZUb2tlbiB8fCAnJyxcclxuXHRcdFx0Li4uYXBwTmFtZUhlYWRlclxyXG5cdFx0fVxyXG5cdH0pO1xyXG5cclxuXHRyZXR1cm4gbmV4dChhdXRoUmVxKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBrZXljbG9ha0F1dGhJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbikgPT5cclxuXHRpbmplY3QoS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvcikuaW50ZXJjZXB0KHJlcSwgeyBoYW5kbGU6IG5leHQgfSk7XHJcbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUErQixFQUFFLEVBQTZCLEVBQUUsRUFBRTtJQUM1RixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNWLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDZCxLQUFLLElBQUksQ0FBQyxJQUFJO2dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1lBQ1AsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07UUFDUixDQUFDO0lBQ0YsQ0FBQztTQUFNLENBQUM7UUFDUCxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQixLQUFLLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRztnQkFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUDtnQkFDQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsSUFBSTtZQUNiLFNBQVMsR0FBRztnQkFDWCxvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUUsTUFBTTtnQkFDdkIsVUFBVSxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUNGLE1BQU07UUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQ2IsU0FBUyxHQUFHO2dCQUNYLG9CQUFvQixFQUFFLE1BQU07Z0JBQzVCLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixVQUFVLEVBQUUsU0FBUzthQUNyQixDQUFDO1lBQ0YsTUFBTTtRQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7WUFDYixTQUFTLEdBQUc7Z0JBQ1gsb0JBQW9CLEVBQUUsTUFBTTtnQkFDNUIsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLFVBQVUsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFDRixNQUFNO0lBQ1IsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLEdBQXVCLEVBQUU7SUFDN0MsT0FBTyxRQUFRLENBQUMsTUFBTTtTQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUNwRyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDN0UsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDO0lBRWpDLHFDQUFxQztJQUVyQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsRUFBRTtZQUNYLFVBQVUsRUFBRSxTQUFTLElBQUksRUFBRTtZQUMzQixHQUFHLGFBQWE7U0FDaEI7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRSxDQUM1RyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5jb25zdCBnZXRDdXJyZW50QXBwTmFtZSA9IChob3N0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBtZjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG5cdGxldCBhcHBOYW1lID0gJyc7XHJcblx0aWYgKGhvc3QpIHtcclxuXHRcdHN3aXRjaCAoaG9zdCkge1xyXG5cdFx0XHRjYXNlIEFwcHMuWUVBUDpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5ZRUFQO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuTEVOQTpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5MRU5BO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5USE9SO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH0gZWxzZSB7XHJcblx0XHRzd2l0Y2ggKG1mKSB7XHJcblx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdGNhc2UgQXBwcy5DVFM6XHJcblx0XHRcdGNhc2UgQXBwcy5TSVM6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuTEVOQTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0Y2FzZSBBcHBzLkJJTExJTkc6XHJcblx0XHRcdGNhc2UgQXBwcy5QQVlNRU5UOlxyXG5cdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRjYXNlIEFwcHMuTURNOlxyXG5cdFx0XHRjYXNlIEFwcHMuRE1TOlxyXG5cdFx0XHRjYXNlIEFwcHMuTU5HOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLlRIT1I7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5ZRUFQO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiBhcHBOYW1lO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXBwSGVhZGVyID0gKGFwcE5hbWU6IHN0cmluZykgPT4ge1xyXG5cdGxldCBhcHBIZWFkZXIgPSB7fTtcclxuXHRzd2l0Y2ggKGFwcE5hbWUpIHtcclxuXHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRhcHBIZWFkZXIgPSB7XHJcblx0XHRcdFx0J3gteWVhcC1hcHBsaWNhdGlvbic6ICd5ZWFwJyxcclxuXHRcdFx0XHQneC1hcHBsaWNhdGlvbic6ICd5ZWFwJyxcclxuXHRcdFx0XHQneC1tb2R1bGUnOiAneWVhcC1mZSdcclxuXHRcdFx0fTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIEFwcHMuTEVOQTpcclxuXHRcdFx0YXBwSGVhZGVyID0ge1xyXG5cdFx0XHRcdCd4LXllYXAtYXBwbGljYXRpb24nOiAnbGVuYScsXHJcblx0XHRcdFx0J3gtYXBwbGljYXRpb24nOiAnbGVuYScsXHJcblx0XHRcdFx0J3gtbW9kdWxlJzogJ2xlbmEtZmUnXHJcblx0XHRcdH07XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSBBcHBzLlRIT1I6XHJcblx0XHRcdGFwcEhlYWRlciA9IHtcclxuXHRcdFx0XHQneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3Rob3InLFxyXG5cdFx0XHRcdCd4LWFwcGxpY2F0aW9uJzogJ3Rob3InLFxyXG5cdFx0XHRcdCd4LW1vZHVsZSc6ICd0aG9yLWZlJ1xyXG5cdFx0XHR9O1xyXG5cdFx0XHRicmVhaztcclxuXHR9XHJcblx0cmV0dXJuIGFwcEhlYWRlcjtcclxufTtcclxuXHJcbmNvbnN0IGdldENzcmZUb2tlbiA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xyXG5cdHJldHVybiBkb2N1bWVudC5jb29raWVcclxuXHRcdC5zcGxpdCgnOyAnKVxyXG5cdFx0LmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgoJ2NzcmZfdG9rZW49JykpXHJcblx0XHQ/LnNwbGl0KCc9JylbMV07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgY3VycmVudEFwcCA9IGdldEN1cnJlbnRBcHBOYW1lKGJyaWRnZS5hY3RpdmVIb3N0KCksIGJyaWRnZS5hY3RpdmVNRigpKTtcclxuXHRjb25zdCBhcHBOYW1lSGVhZGVyID0gZ2V0QXBwSGVhZGVyKGN1cnJlbnRBcHApO1xyXG5cdGNvbnN0IGNzcmZUb2tlbiA9IGdldENzcmZUb2tlbigpO1xyXG5cclxuXHQvLyBpZiAoaXNEZXZNb2RlKCkpIHJldHVybiBuZXh0KHJlcSk7XHJcblxyXG5cdGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xyXG5cdFx0c2V0SGVhZGVyczoge1xyXG5cdFx0XHRjc3JmX3Rva2VuOiBjc3JmVG9rZW4gfHwgJycsXHJcblx0XHRcdC4uLmFwcE5hbWVIZWFkZXJcclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmV0dXJuIG5leHQoYXV0aFJlcSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qga2V5Y2xvYWtBdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+XHJcblx0aW5qZWN0KEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IpLmludGVyY2VwdChyZXEsIHsgaGFuZGxlOiBuZXh0IH0pO1xyXG4iXX0=
@@ -1,9 +1,10 @@
1
+ import { bridge } from 'aril/boot/bridge';
1
2
  import { provideHostKeycloak } from './provideHostKeycloak';
2
3
  export const provideHost = (app) => {
3
4
  const providers = [];
4
- if (globalThis.ngZone) {
5
+ if (bridge.hostNgZone) {
5
6
  providers.push(provideHostKeycloak(app));
6
7
  }
7
8
  return providers;
8
9
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFTLEVBQVksRUFBRTtJQUNsRCxNQUFNLFNBQVMsR0FBMkMsRUFBRSxDQUFDO0lBRTdELElBQUssVUFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5pbXBvcnQgeyBwcm92aWRlSG9zdEtleWNsb2FrIH0gZnJvbSAnLi9wcm92aWRlSG9zdEtleWNsb2FrJztcclxuXHJcbmV4cG9ydCBjb25zdCBwcm92aWRlSG9zdCA9IChhcHA6IEFwcHMpOiBQcm92aWRlciA9PiB7XHJcblx0Y29uc3QgcHJvdmlkZXJzOiBBcnJheTxQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzPiA9IFtdO1xyXG5cclxuXHRpZiAoKGdsb2JhbFRoaXMgYXMgYW55KS5uZ1pvbmUpIHtcclxuXHRcdHByb3ZpZGVycy5wdXNoKHByb3ZpZGVIb3N0S2V5Y2xvYWsoYXBwKSk7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gcHJvdmlkZXJzO1xyXG59O1xyXG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUyxFQUFZLEVBQUU7SUFDbEQsTUFBTSxTQUFTLEdBQTJDLEVBQUUsQ0FBQztJQUU3RCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuaW1wb3J0IHsgcHJvdmlkZUhvc3RLZXljbG9hayB9IGZyb20gJy4vcHJvdmlkZUhvc3RLZXljbG9hayc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZUhvc3QgPSAoYXBwOiBBcHBzKTogUHJvdmlkZXIgPT4ge1xyXG5cdGNvbnN0IHByb3ZpZGVyczogQXJyYXk8UHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycz4gPSBbXTtcclxuXHJcblx0aWYgKGJyaWRnZS5ob3N0Tmdab25lKSB7XHJcblx0XHRwcm92aWRlcnMucHVzaChwcm92aWRlSG9zdEtleWNsb2FrKGFwcCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHByb3ZpZGVycztcclxufTtcclxuIl19
@@ -1,12 +1,13 @@
1
1
  import { Router, provideRouter, withComponentInputBinding, withHashLocation, withViewTransitions } from '@angular/router';
2
+ import { bridge } from 'aril/boot/bridge';
2
3
  export const provideHostRouter = () => {
3
4
  const providers = [];
4
- if (globalThis.hostRouter) {
5
+ if (bridge.hostRouter) {
5
6
  return [
6
7
  provideRouter([], withComponentInputBinding(), withHashLocation(), withViewTransitions()),
7
- { provide: Router, useValue: globalThis.hostRouter }
8
+ { provide: Router, useValue: bridge.hostRouter }
8
9
  ];
9
10
  }
10
11
  return providers;
11
12
  };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3RSb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdFJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQWEsRUFBRTtJQUMvQyxNQUFNLFNBQVMsR0FBMkMsRUFBRSxDQUFDO0lBRTdELElBQUssVUFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQyxPQUFPO1lBQ04sYUFBYSxDQUFDLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUN6RixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFRLFVBQVcsQ0FBQyxVQUFVLEVBQUU7U0FDM0QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuXHRSb3V0ZXIsXHJcblx0cHJvdmlkZVJvdXRlcixcclxuXHR3aXRoQ29tcG9uZW50SW5wdXRCaW5kaW5nLFxyXG5cdHdpdGhIYXNoTG9jYXRpb24sXHJcblx0d2l0aFZpZXdUcmFuc2l0aW9uc1xyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZUhvc3RSb3V0ZXIgPSAoKTogUHJvdmlkZXIgPT4ge1xyXG5cdGNvbnN0IHByb3ZpZGVyczogQXJyYXk8UHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycz4gPSBbXTtcclxuXHJcblx0aWYgKChnbG9iYWxUaGlzIGFzIGFueSkuaG9zdFJvdXRlcikge1xyXG5cdFx0cmV0dXJuIFtcclxuXHRcdFx0cHJvdmlkZVJvdXRlcihbXSwgd2l0aENvbXBvbmVudElucHV0QmluZGluZygpLCB3aXRoSGFzaExvY2F0aW9uKCksIHdpdGhWaWV3VHJhbnNpdGlvbnMoKSksXHJcblx0XHRcdHsgcHJvdmlkZTogUm91dGVyLCB1c2VWYWx1ZTogKDxhbnk+Z2xvYmFsVGhpcykuaG9zdFJvdXRlciB9XHJcblx0XHRdO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHByb3ZpZGVycztcclxufTtcclxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3RSb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdFJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFhLEVBQUU7SUFDL0MsTUFBTSxTQUFTLEdBQTJDLEVBQUUsQ0FBQztJQUU3RCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixPQUFPO1lBQ04sYUFBYSxDQUFDLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUN6RixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUU7U0FDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuXHRSb3V0ZXIsXHJcblx0cHJvdmlkZVJvdXRlcixcclxuXHR3aXRoQ29tcG9uZW50SW5wdXRCaW5kaW5nLFxyXG5cdHdpdGhIYXNoTG9jYXRpb24sXHJcblx0d2l0aFZpZXdUcmFuc2l0aW9uc1xyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuXHJcbmV4cG9ydCBjb25zdCBwcm92aWRlSG9zdFJvdXRlciA9ICgpOiBQcm92aWRlciA9PiB7XHJcblx0Y29uc3QgcHJvdmlkZXJzOiBBcnJheTxQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzPiA9IFtdO1xyXG5cclxuXHRpZiAoYnJpZGdlLmhvc3RSb3V0ZXIpIHtcclxuXHRcdHJldHVybiBbXHJcblx0XHRcdHByb3ZpZGVSb3V0ZXIoW10sIHdpdGhDb21wb25lbnRJbnB1dEJpbmRpbmcoKSwgd2l0aEhhc2hMb2NhdGlvbigpLCB3aXRoVmlld1RyYW5zaXRpb25zKCkpLFxyXG5cdFx0XHR7IHByb3ZpZGU6IFJvdXRlciwgdXNlVmFsdWU6IGJyaWRnZS5ob3N0Um91dGVyIH1cclxuXHRcdF07XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gcHJvdmlkZXJzO1xyXG59O1xyXG4iXX0=
@@ -4,6 +4,7 @@ import { NavigationEnd, RouterLink } from '@angular/router';
4
4
  import { BreadcrumbModule } from 'primeng/breadcrumb';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import { filter } from 'rxjs/operators';
7
+ import { bridge } from 'aril/boot/bridge';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/router";
9
10
  import * as i2 from "../../service/breadcrumb.service";
@@ -41,10 +42,10 @@ export class AppBreadcrumbComponent {
41
42
  }));
42
43
  this.breadcrumbs.unshift({ icon: 'pi pi-home', url: '/' });
43
44
  // Update global page title signal with the last breadcrumb label
44
- const pageTitle = globalThis.__ARIL_PAGE_TITLE__?.();
45
+ const pageTitle = bridge.pageTitle();
45
46
  if (pageTitle) {
46
47
  const lastBreadcrumb = breadcrumbs[breadcrumbs.length - 1];
47
- pageTitle.set(lastBreadcrumb?.label || '');
48
+ bridge.pageTitle.set(lastBreadcrumb?.label || '');
48
49
  }
49
50
  const currentUrl = this.router.url;
50
51
  this.pubSubService.publish({
@@ -103,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
103
104
  type: Component,
104
105
  args: [{ standalone: true, selector: 'app-breadcrumb', imports: [RouterLink, BreadcrumbModule, NgClass], template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n" }]
105
106
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.BreadcrumbService }, { type: i3.PubSubService }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBMEIsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWdCeEMsTUFBTSxPQUFPLHNCQUFzQjtJQU9sQyxZQUNTLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUcEIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUc5RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFPNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFD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LEtBQUs7b0JBQ1osR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDRixDQUFDOzhHQXBHVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwRUN4Qm5DLDhVQVFBLDRDRGFXLFVBQVUsbU9BQUUsZ0JBQWdCLHlTQUFFLE9BQU87OzJGQUduQyxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9icmVhZGNydW1iJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9icmVhZGNydW1iLnNlcnZpY2UnO1xyXG5cclxuaW50ZXJmYWNlIEJyZWFkY3J1bWIge1xyXG5cdGxhYmVsOiBzdHJpbmc7XHJcblx0dXJsPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLWJyZWFkY3J1bWInLFxyXG5cdGltcG9ydHM6IFtSb3V0ZXJMaW5rLCBCcmVhZGNydW1iTW9kdWxlLCBOZ0NsYXNzXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBCcmVhZGNydW1iQ29tcG9uZW50IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9icmVhZGNydW1icyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyZWFkY3J1bWJbXT4oW10pO1xyXG5cdHByaXZhdGUgYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdHJlYWRvbmx5IGJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkY3J1bWJzJC5hc09ic2VydmFibGUoKTtcclxuXHRicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcclxuXHRcdHByaXZhdGUgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0Y29uc3QgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdO1xyXG5cclxuXHRcdFx0dGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XHJcblxyXG5cdFx0XHR0aGlzLl9icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5icmVhZGNydW1iU2VydmljZS5rZXlWYWx1ZXMoKSkge1xyXG5cdFx0XHRcdGNvbnN0IHJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xyXG5cdFx0XHRcdGNvbnN0IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcclxuXHJcblx0XHRcdFx0dGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX2JyZWFkY3J1bWJzJC5uZXh0KGJyZWFkY3J1bWJzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24gPSB0aGlzLmJyZWFkY3J1bWJzJC5zdWJzY3JpYmUoKGJyZWFkY3J1bWJzKSA9PiB7XHJcblx0XHRcdHRoaXMuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icy5tYXAoKGJyZWFkY3J1bWIpID0+ICh7XHJcblx0XHRcdFx0bGFiZWw6IGJyZWFkY3J1bWIubGFiZWwsXHJcblx0XHRcdFx0dXJsOiBicmVhZGNydW1iLnVybFxyXG5cdFx0XHR9KSk7XHJcblx0XHRcdHRoaXMuYnJlYWRjcnVtYnMudW5zaGlmdCh7IGljb246ICdwaSBwaS1ob21lJywgdXJsOiAnLycgfSk7XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBVcGRhdGUgZ2xvYmFsIHBhZ2UgdGl0bGUgc2lnbmFsIHdpdGggdGhlIGxhc3QgYnJlYWRjcnVtYiBsYWJlbFxyXG5cdFx0XHRjb25zdCBwYWdlVGl0bGUgPSAoPGFueT5nbG9iYWxUaGlzKS5fX0FSSUxfUEFHRV9USVRMRV9fPy4oKTtcclxuXHRcdFx0aWYgKHBhZ2VUaXRsZSkge1xyXG5cdFx0XHRcdFx0Y29uc3QgbGFzdEJyZWFkY3J1bWIgPSBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdHBhZ2VUaXRsZS5zZXQobGFzdEJyZWFkY3J1bWI/LmxhYmVsIHx8ICcnKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdFx0dGhpcy5wdWJTdWJTZXJ2aWNlLnB1Ymxpc2goe1xyXG5cdFx0XHRcdG5hbWU6ICdicmVhZGNydW1iVXBkYXRlZCcsXHJcblx0XHRcdFx0ZGF0YTogeyBcclxuXHRcdFx0XHRcdHBhdGg6IGN1cnJlbnRVcmwsXHJcblx0XHRcdFx0XHRjdXN0b206IHtcclxuXHRcdFx0XHRcdFx0YnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzLFxyXG5cdFx0XHRcdFx0XHRwYWdlVGl0bGU6IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDAgPyBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXS5sYWJlbCA6ICcnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5icmVhZGNydW1ic1N1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcclxuXHRcdGNvbnN0IHJvdXRlVXJsID0gcGFyZW50VXJsLmNvbmNhdChyb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKSk7XHJcblx0XHRjb25zdCBicmVhZGNydW1iID0gcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG5cdFx0Y29uc3QgcGFyZW50QnJlYWRjcnVtYiA9IHJvdXRlLnBhcmVudCAmJiByb3V0ZS5wYXJlbnQuZGF0YSA/IHJvdXRlLnBhcmVudC5kYXRhWydicmVhZGNydW1iJ10gOiBudWxsO1xyXG5cclxuXHRcdGlmIChicmVhZGNydW1iICYmIGJyZWFkY3J1bWIgIT09IHBhcmVudEJyZWFkY3J1bWIpIHtcclxuXHRcdFx0Y29uc3Qga2V5UmVnZXggPSBuZXcgUmVnRXhwKCcoPzw9XFxcXHspKFtefV0rKSg/PVxcXFx9KScpO1xyXG5cdFx0XHRjb25zdCBrZXkgPSAoa2V5UmVnZXguZXhlYyhyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10pIHx8IFtdKVswXSE7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRWYWx1ZShrZXkpO1xyXG5cclxuXHRcdFx0aWYgKGtleSAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IChyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10gYXMgc3RyaW5nKS5yZXBsYWNlKGB7JHtrZXl9fWAsIHZhbHVlKSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSBpZiAoa2V5ICYmICF2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIEtleSBleGlzdHMgYnV0IHZhbHVlIG5vdCBsb2FkZWQgeWV0IC0gc2hvdyBsb2FkaW5nIHBsYWNlaG9sZGVyXHJcblx0XHRcdFx0YnJlYWRjcnVtYnMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogJy4uLicsXHJcblx0XHRcdFx0XHR1cmw6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPHAtYnJlYWRjcnVtYiBjbGFzcz1cIm1heC13LWZ1bGxcIiBbbW9kZWxdPVwiYnJlYWRjcnVtYnNcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIj5cclxuXHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwiW2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6ICcnLCAndGV4dC01MDAnXVwiPjwvc3Bhbj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9J3RleHQtNTAwJz57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG5cdFx0PC9hPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC1icmVhZGNydW1iPlxyXG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBMEIsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9sQyxZQUNTLE1BQWMsRUFDZCxpQkFBb0MsRUFDcEMsYUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUcEIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUc5RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFPNUIsSUFBSSxDQUFDLE1B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RTtnQkFDakUsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDaEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDRixDQUFDOzhHQXBHVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwRUN6Qm5DLDhVQVFBLDRDRGNXLFVBQVUsbU9BQUUsZ0JBQWdCLHlTQUFFLE9BQU87OzJGQUduQyxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9icmVhZGNydW1iJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQdWJTdWJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL3B1Yi1zdWInO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBCcmVhZGNydW1iIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1icmVhZGNydW1iJyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgQnJlYWRjcnVtYk1vZHVsZSwgTmdDbGFzc10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC5icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iW10+KFtdKTtcclxuXHRwcml2YXRlIGJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRyZWFkb25seSBicmVhZGNydW1icyQgPSB0aGlzLl9icmVhZGNydW1icyQuYXNPYnNlcnZhYmxlKCk7XHJcblx0YnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHB1YlN1YlNlcnZpY2U6IFB1YlN1YlNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0Y29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XHJcblx0XHRcdGNvbnN0IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcclxuXHJcblx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0dGhpcy5fYnJlYWRjcnVtYnMkLm5leHQoYnJlYWRjcnVtYnMpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uua2V5VmFsdWVzKCkpIHtcclxuXHRcdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0XHRjb25zdCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XHJcblxyXG5cdFx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb290LCBbXSwgYnJlYWRjcnVtYnMpO1xyXG5cclxuXHRcdFx0XHR0aGlzLl9icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uID0gdGhpcy5icmVhZGNydW1icyQuc3Vic2NyaWJlKChicmVhZGNydW1icykgPT4ge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubWFwKChicmVhZGNydW1iKSA9PiAoe1xyXG5cdFx0XHRcdGxhYmVsOiBicmVhZGNydW1iLmxhYmVsLFxyXG5cdFx0XHRcdHVybDogYnJlYWRjcnVtYi51cmxcclxuXHRcdFx0fSkpO1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzLnVuc2hpZnQoeyBpY29uOiAncGkgcGktaG9tZScsIHVybDogJy8nIH0pO1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8gVXBkYXRlIGdsb2JhbCBwYWdlIHRpdGxlIHNpZ25hbCB3aXRoIHRoZSBsYXN0IGJyZWFkY3J1bWIgbGFiZWxcclxuXHRcdFx0Y29uc3QgcGFnZVRpdGxlID0gYnJpZGdlLnBhZ2VUaXRsZSgpO1xyXG5cdFx0XHRpZiAocGFnZVRpdGxlKSB7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0QnJlYWRjcnVtYiA9IGJyZWFkY3J1bWJzW2JyZWFkY3J1bWJzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0YnJpZGdlLnBhZ2VUaXRsZS5zZXQobGFzdEJyZWFkY3J1bWI/LmxhYmVsIHx8ICcnKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdFx0dGhpcy5wdWJTdWJTZXJ2aWNlLnB1Ymxpc2goe1xyXG5cdFx0XHRcdG5hbWU6ICdicmVhZGNydW1iVXBkYXRlZCcsXHJcblx0XHRcdFx0ZGF0YTogeyBcclxuXHRcdFx0XHRcdHBhdGg6IGN1cnJlbnRVcmwsXHJcblx0XHRcdFx0XHRjdXN0b206IHtcclxuXHRcdFx0XHRcdFx0YnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzLFxyXG5cdFx0XHRcdFx0XHRwYWdlVGl0bGU6IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDAgPyBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXS5sYWJlbCA6ICcnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5icmVhZGNydW1ic1N1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcclxuXHRcdGNvbnN0IHJvdXRlVXJsID0gcGFyZW50VXJsLmNvbmNhdChyb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKSk7XHJcblx0XHRjb25zdCBicmVhZGNydW1iID0gcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG5cdFx0Y29uc3QgcGFyZW50QnJlYWRjcnVtYiA9IHJvdXRlLnBhcmVudCAmJiByb3V0ZS5wYXJlbnQuZGF0YSA/IHJvdXRlLnBhcmVudC5kYXRhWydicmVhZGNydW1iJ10gOiBudWxsO1xyXG5cclxuXHRcdGlmIChicmVhZGNydW1iICYmIGJyZWFkY3J1bWIgIT09IHBhcmVudEJyZWFkY3J1bWIpIHtcclxuXHRcdFx0Y29uc3Qga2V5UmVnZXggPSBuZXcgUmVnRXhwKCcoPzw9XFxcXHspKFtefV0rKSg/PVxcXFx9KScpO1xyXG5cdFx0XHRjb25zdCBrZXkgPSAoa2V5UmVnZXguZXhlYyhyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10pIHx8IFtdKVswXSE7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRWYWx1ZShrZXkpO1xyXG5cclxuXHRcdFx0aWYgKGtleSAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IChyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10gYXMgc3RyaW5nKS5yZXBsYWNlKGB7JHtrZXl9fWAsIHZhbHVlKSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSBpZiAoa2V5ICYmICF2YWx1ZSkge1xyXG5cdFx0XHRcdC8vIEtleSBleGlzdHMgYnV0IHZhbHVlIG5vdCBsb2FkZWQgeWV0IC0gc2hvdyBsb2FkaW5nIHBsYWNlaG9sZGVyXHJcblx0XHRcdFx0YnJlYWRjcnVtYnMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogJy4uLicsXHJcblx0XHRcdFx0XHR1cmw6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPHAtYnJlYWRjcnVtYiBjbGFzcz1cIm1heC13LWZ1bGxcIiBbbW9kZWxdPVwiYnJlYWRjcnVtYnNcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIj5cclxuXHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwiW2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6ICcnLCAndGV4dC01MDAnXVwiPjwvc3Bhbj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9J3RleHQtNTAwJz57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG5cdFx0PC9hPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC1icmVhZGNydW1iPlxyXG4iXX0=
@@ -4,6 +4,7 @@ import { toSignal } from '@angular/core/rxjs-interop';
4
4
  import { NavigationEnd, RouterLink } from '@angular/router';
5
5
  import { TooltipModule } from 'primeng/tooltip';
6
6
  import { filter } from 'rxjs';
7
+ import { bridge } from 'aril/boot/bridge';
7
8
  import { TranslateJsonPipe } from 'aril/util/pipes';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "aril/util/pipes";
@@ -31,8 +32,6 @@ export class ExpandableMenuComponent {
31
32
  this.http = http;
32
33
  this.overlayMenuOpenSubscription = null;
33
34
  this.routerSubscription = null;
34
- this.isHostMode = globalThis.isHostMode;
35
- this.hostMenuItems = globalThis.hostMenuItems;
36
35
  this.cachedMenuItems = [];
37
36
  this.selectedMainMenuItem = null;
38
37
  this.tooltipText = {
@@ -152,7 +151,7 @@ export class ExpandableMenuComponent {
152
151
  }
153
152
  }
154
153
  updateMenuItems() {
155
- this.cachedMenuItems = this.isHostMode ? this.hostMenuItems() : this.menuService.menuItems();
154
+ this.cachedMenuItems = bridge.isHostMode() ? bridge.hostMenuItems() : this.menuService.menuItems();
156
155
  }
157
156
  getMenuItems() {
158
157
  return this.cachedMenuItems;
@@ -312,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
312
311
  type: HostListener,
313
312
  args: ['window:resize']
314
313
  }] } });
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OztBQVlwRCxNQUFNLE9BQU8sdUJBQXVCO0lBWW5DLElBQUksZUFBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQWtDRCxZQUNTLGlCQUFvQyxFQUNwQyxXQUEyQixFQUMzQixNQUFjLEVBQ2QsUUFBeUIsRUFDekIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLElB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QkFDMUMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELGFBQWE7UUFDWixnRkFBZ0Y7UUFDaEYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoSCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQztJQUNGLENBQUM7OEdBM1ZXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDBIQUZ4QixDQUFDLGlCQUFpQixDQUFDLDBCQ3ZCL0IsZ3VSQXlJQSw0Q0RwSFcsVUFBVSxvT0FBRSxPQUFPLG1GQUFFLGFBQWE7OzJGQUloQyx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0csSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLGFBRWxDLENBQUMsaUJBQWlCLENBQUM7MFBBbU85QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgTmdDbGFzcywgVG9vbHRpcE1vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGlzSG9zdE1vZGUgPSAoPGFueT5nbG9iYWxUaGlzKS5pc0hvc3RNb2RlO1xyXG5cdGhvc3RNZW51SXRlbXMgPSAoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zO1xyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdHByaXZhdGUgbWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG5cdCkge1xyXG5cdFx0dGhpcy5hY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gR2V0dGVyIGZvciBsYXlvdXQgc2VydmljZSBzdGF0ZXNcclxuXHRnZXQgc2VsZWN0ZWRNYWluSXRlbSgpOiBudW1iZXIgfCBudWxsIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2VsZWN0ZWRNYWluSXRlbTtcclxuXHR9XHJcblxyXG5cdGdldCBzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHRleHQgaXMgdHJ1bmNhdGVkIGFuZCBuZWVkcyB0b29sdGlwXHJcblx0aXNUZXh0VHJ1bmNhdGVkKFxyXG5cdFx0bGFiZWw6IGFueSxcclxuXHRcdGxhbmc6IHN0cmluZyB8IG51bGwsXHJcblx0XHRtZW51VHlwZTogJ21haW4nIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ25lc3RlZCcgPSAnc2Vjb25kYXJ5J1xyXG5cdCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRjb25zdCB0ZXh0ID0gbGFiZWxbbGFuZ107XHJcblx0XHRjb25zdCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBtYXhMZW5ndGggPSBtZW51VHlwZSA9PT0gJ25lc3RlZCcgPyB0aGlzLk1BWF9MRU5HVEgudGVydGlhcnkgOiB0aGlzLk1BWF9MRU5HVEhbbWVudVR5cGVdO1xyXG5cdFx0cmV0dXJuIHRleHRMZW5ndGggPiBtYXhMZW5ndGg7XHJcblx0fVxyXG5cclxuXHQvLyBSZWN1cnNpdmVseSBjaGVjayBpZiBhIG1lbnUgaXRlbSBvciBpdHMgY2hpbGRyZW4gbWF0Y2ggdGhlIGN1cnJlbnQgcm91dGVcclxuXHRpc0FjdGl2ZVJvdXRlKG1lbnVJdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFtZW51SXRlbSB8fCAhbWVudUl0ZW0ucm91dGVyTGluaykgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdC8vIEdldCBjdXJyZW50IFVSTCBwYXRoIGFmdGVyIHRoZSBoYXNoXHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cclxuXHRcdC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBmaXJzdFxyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG1lbnVJdGVtLnJvdXRlckxpbmsgfHwgaGFzaFVybCA9PT0gJy8nICsgbWVudUl0ZW0ucm91dGVyTGluaykge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiBjdXJyZW50IFVSTCBzdGFydHMgd2l0aCB0aGUgcm91dGVyTGluayAoaGFuZGxlcyBjaGlsZCByb3V0ZXMpXHJcblx0XHRpZiAoXHJcblx0XHRcdG1lbnVJdGVtLnJvdXRlckxpbmsgIT09ICcvJyAmJlxyXG5cdFx0XHQoaGFzaFVybC5zdGFydHNXaXRoKG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBjaGlsZCBpdGVtcyBpZiB0aGV5IGV4aXN0XHJcblx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRyZXR1cm4gbWVudUl0ZW0uaXRlbXMuc29tZSgoY2hpbGRJdGVtKSA9PiB0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGRJdGVtKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplTWVudSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIG92ZXJsYXkgbWVudSBvcGVuIG5vdGlmaWNhdGlvbnNcclxuXHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uID0gdGhpcy5sYXlvdXRTZXJ2aWNlLm92ZXJsYXlPcGVuJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBJbml0aWFsaXplIHRoZSBtZW51IHdpdGggcHJvcGVyIGFjdGl2ZSBzdGF0ZVxyXG5cdGluaXRpYWxpemVNZW51KCkge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0obnVsbCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVNZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVGcm9tUm9vdEtleShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jYWNoZWRNZW51SXRlbXMgPSB0aGlzLmlzSG9zdE1vZGUgPyB0aGlzLmhvc3RNZW51SXRlbXMoKSA6IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBQbHVnaW5NZW51SXRlbSk6IHZvaWQge1xyXG5cdFx0Ly8gSGFuZGxlIGFjdGlvbiBpdGVtcyBhdCB0b3AgbGV2ZWxcclxuXHRcdGlmIChpdGVtLmFjdGlvbiAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMub25BY3Rpb25JdGVtQ2xpY2soaXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rICYmICghaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaW5kZXgpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcblx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3IgbW9iaWxlIGRldmljZXMsIGVuc3VyZSB0aGUgbWVudSBzdGF5cyBvcGVuXHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSgpKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBMaXN0ZW4gZm9yIHJlc2l6ZSBldmVudHMgLSBub3cgaGFuZGxlZCBtb3JlIGVmZmljaWVudGx5IGJ5IGxheW91dCBzZXJ2aWNlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUobWVudUl0ZW0pKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFpdGVtIHx8ICFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLml0ZW1zKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGQpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChjaGlsZC5pdGVtcyAmJiBjaGlsZC5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRnZXRMb2NhbFRleHQodGV4dDogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZUpzb25QaXBlLnRyYW5zZm9ybSh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNpZGViYXIoKSB7XHJcblx0XHQvLyBFxJ9lciBzZcOnaWxpIGJpciBhbmEgbWVuw7wgw7bEn2VzaSB2YXJzYSB2ZSBhbHQgbWVuw7xsZXJpIHZhcnNhIHRvZ2dsZSB5YXBhYmlsaXJpelxyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcyAmJiB0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5zaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zaWRlYmFyRXhwYW5kZWQ7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2lkZWJhckV4cGFuZGVkKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIiA+XHJcblx0PCEtLSBNYWluIHNpZGViYXIgKGZpcnN0IGxldmVsKSAtLT5cclxuXHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0PHVsIGNsYXNzPVwibWFpbi1tZW51XCI+XHJcblx0XHRcdFx0QGZvcihpdGVtIG9mIGdldE1lbnVJdGVtcygpOyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRAaWYoIWl0ZW0uc2VwYXJhdG9yKXtcclxuXHRcdFx0XHRcdFx0PGxpXHJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShpdGVtKSB8fCBpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtKX1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwic2VsZWN0TWFpbkl0ZW0oaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwic3ViSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBkZWVwZXIgbGV2ZWxzIGlmIHRoZXkgZXhpc3QsIGFsc28gdmlzaWJsZSBieSBkZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjaGlsZEl0ZW0uaXRlbXMgJiYgY2hpbGRJdGVtLml0ZW1zLmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwibmVzdGVkLW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihuZXN0ZWRJdGVtIG9mIGNoaWxkSXRlbS5pdGVtczsgdHJhY2sgbmVzdGVkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihuZXN0ZWRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwibmVzdGVkLW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwibmVzdGVkLW1lbnUtbGluayBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhuZXN0ZWRJdGVtLCAkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5lc3RlZEl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ25lc3RlZCcpID8gKG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZXN0ZWQtbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5lc3RlZC1tZW51LWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKG5lc3RlZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCA8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0XHJcbjwvZGl2PlxyXG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFZcEQsTUFBTSxPQUFPLHVCQUF1QjtJQVVuQyxJQUFJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFrQ0QsWUFDUyxpQkFBb0MsRUFDcEMsV0FBMkIsRUFDM0IsTUFBYyxF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LENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsYUFBYTtRQUNaLGdGQUFnRjtRQUNoRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hILElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQzs4R0F6VlcsdUJBQXVCO2tHQUF2Qix1QkFBdUIsMEhBRnhCLENBQUMsaUJBQWlCLENBQUMsMEJDeEIvQixndVJBeUlBLDRDRG5IVyxVQUFVLG9PQUFFLE9BQU8sbUZBQUUsYUFBYTs7MkZBSWhDLHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDRyxJQUFJLFlBQ04scUJBQXFCLFdBQ3RCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsYUFFbEMsQ0FBQyxpQkFBaUIsQ0FBQzswUEFpTzlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgTmdDbGFzcywgVG9vbHRpcE1vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdHByaXZhdGUgbWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG5cdCkge1xyXG5cdFx0dGhpcy5hY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gR2V0dGVyIGZvciBsYXlvdXQgc2VydmljZSBzdGF0ZXNcclxuXHRnZXQgc2VsZWN0ZWRNYWluSXRlbSgpOiBudW1iZXIgfCBudWxsIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2VsZWN0ZWRNYWluSXRlbTtcclxuXHR9XHJcblxyXG5cdGdldCBzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHRleHQgaXMgdHJ1bmNhdGVkIGFuZCBuZWVkcyB0b29sdGlwXHJcblx0aXNUZXh0VHJ1bmNhdGVkKFxyXG5cdFx0bGFiZWw6IGFueSxcclxuXHRcdGxhbmc6IHN0cmluZyB8IG51bGwsXHJcblx0XHRtZW51VHlwZTogJ21haW4nIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ25lc3RlZCcgPSAnc2Vjb25kYXJ5J1xyXG5cdCk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFsYWJlbCB8fCAhbGFuZyB8fCAhbGFiZWxbbGFuZ10pIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRjb25zdCB0ZXh0ID0gbGFiZWxbbGFuZ107XHJcblx0XHRjb25zdCB0ZXh0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBtYXhMZW5ndGggPSBtZW51VHlwZSA9PT0gJ25lc3RlZCcgPyB0aGlzLk1BWF9MRU5HVEgudGVydGlhcnkgOiB0aGlzLk1BWF9MRU5HVEhbbWVudVR5cGVdO1xyXG5cdFx0cmV0dXJuIHRleHRMZW5ndGggPiBtYXhMZW5ndGg7XHJcblx0fVxyXG5cclxuXHQvLyBSZWN1cnNpdmVseSBjaGVjayBpZiBhIG1lbnUgaXRlbSBvciBpdHMgY2hpbGRyZW4gbWF0Y2ggdGhlIGN1cnJlbnQgcm91dGVcclxuXHRpc0FjdGl2ZVJvdXRlKG1lbnVJdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFtZW51SXRlbSB8fCAhbWVudUl0ZW0ucm91dGVyTGluaykgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdC8vIEdldCBjdXJyZW50IFVSTCBwYXRoIGFmdGVyIHRoZSBoYXNoXHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cclxuXHRcdC8vIENoZWNrIGZvciBleGFjdCBtYXRjaCBmaXJzdFxyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG1lbnVJdGVtLnJvdXRlckxpbmsgfHwgaGFzaFVybCA9PT0gJy8nICsgbWVudUl0ZW0ucm91dGVyTGluaykge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiBjdXJyZW50IFVSTCBzdGFydHMgd2l0aCB0aGUgcm91dGVyTGluayAoaGFuZGxlcyBjaGlsZCByb3V0ZXMpXHJcblx0XHRpZiAoXHJcblx0XHRcdG1lbnVJdGVtLnJvdXRlckxpbmsgIT09ICcvJyAmJlxyXG5cdFx0XHQoaGFzaFVybC5zdGFydHNXaXRoKG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBjaGlsZCBpdGVtcyBpZiB0aGV5IGV4aXN0XHJcblx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRyZXR1cm4gbWVudUl0ZW0uaXRlbXMuc29tZSgoY2hpbGRJdGVtKSA9PiB0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGRJdGVtKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0dGhpcy5pbml0aWFsaXplTWVudSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIG92ZXJsYXkgbWVudSBvcGVuIG5vdGlmaWNhdGlvbnNcclxuXHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uID0gdGhpcy5sYXlvdXRTZXJ2aWNlLm92ZXJsYXlPcGVuJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBJbml0aWFsaXplIHRoZSBtZW51IHdpdGggcHJvcGVyIGFjdGl2ZSBzdGF0ZVxyXG5cdGluaXRpYWxpemVNZW51KCkge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0obnVsbCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0dGhpcy51cGRhdGVNZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVGcm9tUm9vdEtleShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jYWNoZWRNZW51SXRlbXMgPSBicmlkZ2UuaXNIb3N0TW9kZSgpID8gYnJpZGdlLmhvc3RNZW51SXRlbXMoKSA6IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShpbmRleDogbnVtYmVyLCBpdGVtOiBQbHVnaW5NZW51SXRlbSk6IHZvaWQge1xyXG5cdFx0Ly8gSGFuZGxlIGFjdGlvbiBpdGVtcyBhdCB0b3AgbGV2ZWxcclxuXHRcdGlmIChpdGVtLmFjdGlvbiAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMub25BY3Rpb25JdGVtQ2xpY2soaXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rICYmICghaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaW5kZXgpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcblx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3IgbW9iaWxlIGRldmljZXMsIGVuc3VyZSB0aGUgbWVudSBzdGF5cyBvcGVuXHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSgpKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2UudG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmlzTW9iaWxlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBMaXN0ZW4gZm9yIHJlc2l6ZSBldmVudHMgLSBub3cgaGFuZGxlZCBtb3JlIGVmZmljaWVudGx5IGJ5IGxheW91dCBzZXJ2aWNlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2UuY2xvc2VNb2JpbGVNZW51KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgbWVudUl0ZW0gPSBtZW51SXRlbXNbaV07XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUobWVudUl0ZW0pKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlbGVjdGVkTWFpbkl0ZW0oaSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtOiBQbHVnaW5NZW51SXRlbSk6IGJvb2xlYW4ge1xyXG5cdFx0aWYgKCFpdGVtIHx8ICFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLml0ZW1zKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGUoY2hpbGQpKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChjaGlsZC5pdGVtcyAmJiBjaGlsZC5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRnZXRMb2NhbFRleHQodGV4dDogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZUpzb25QaXBlLnRyYW5zZm9ybSh0ZXh0KTtcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZVNpZGViYXIoKSB7XHJcblx0XHQvLyBFxJ9lciBzZcOnaWxpIGJpciBhbmEgbWVuw7wgw7bEn2VzaSB2YXJzYSB2ZSBhbHQgbWVuw7xsZXJpIHZhcnNhIHRvZ2dsZSB5YXBhYmlsaXJpelxyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcyAmJiB0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5zaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zaWRlYmFyRXhwYW5kZWQ7XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMuc2lkZWJhckV4cGFuZGVkKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIiA+XHJcblx0PCEtLSBNYWluIHNpZGViYXIgKGZpcnN0IGxldmVsKSAtLT5cclxuXHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0PHVsIGNsYXNzPVwibWFpbi1tZW51XCI+XHJcblx0XHRcdFx0QGZvcihpdGVtIG9mIGdldE1lbnVJdGVtcygpOyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRAaWYoIWl0ZW0uc2VwYXJhdG9yKXtcclxuXHRcdFx0XHRcdFx0PGxpXHJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShpdGVtKSB8fCBpc0hhdmVTZWxlY3RlZENoaWxkSXRlbShpdGVtKX1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwic2VsZWN0TWFpbkl0ZW0oaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwic3ViSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBkZWVwZXIgbGV2ZWxzIGlmIHRoZXkgZXhpc3QsIGFsc28gdmlzaWJsZSBieSBkZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjaGlsZEl0ZW0uaXRlbXMgJiYgY2hpbGRJdGVtLml0ZW1zLmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwibmVzdGVkLW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihuZXN0ZWRJdGVtIG9mIGNoaWxkSXRlbS5pdGVtczsgdHJhY2sgbmVzdGVkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihuZXN0ZWRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwibmVzdGVkLW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwibmVzdGVkLW1lbnUtbGluayBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhuZXN0ZWRJdGVtLCAkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5lc3RlZEl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ25lc3RlZCcpID8gKG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihpc0FjdGlvbkxvYWRpbmcobmVzdGVkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZXN0ZWQtbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5lc3RlZC1tZW51LWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKG5lc3RlZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCA8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0XHJcbjwvZGl2PlxyXG4iXX0=