@esfaenza/core 15.2.40 → 15.2.42-beta1

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 (145) hide show
  1. package/README.md +24 -24
  2. package/assets/fontawesome/css/all.css +27093 -0
  3. package/assets/fontawesome/css/all.min.css +9 -0
  4. package/assets/fontawesome/css/brands.css +1522 -0
  5. package/assets/fontawesome/css/brands.min.css +6 -0
  6. package/assets/fontawesome/css/duotone.css +12491 -0
  7. package/assets/fontawesome/css/duotone.min.css +6 -0
  8. package/assets/fontawesome/css/fontawesome.css +12984 -0
  9. package/assets/fontawesome/css/fontawesome.min.css +9 -0
  10. package/assets/fontawesome/css/light.css +19 -0
  11. package/assets/fontawesome/css/light.min.css +6 -0
  12. package/assets/fontawesome/css/regular.css +19 -0
  13. package/assets/fontawesome/css/regular.min.css +6 -0
  14. package/assets/fontawesome/css/sharp-regular.css +19 -0
  15. package/assets/fontawesome/css/sharp-regular.min.css +6 -0
  16. package/assets/fontawesome/css/sharp-solid.css +19 -0
  17. package/assets/fontawesome/css/sharp-solid.min.css +6 -0
  18. package/assets/fontawesome/css/solid.css +19 -0
  19. package/assets/fontawesome/css/solid.min.css +6 -0
  20. package/assets/fontawesome/css/svg-with-js.css +638 -0
  21. package/assets/fontawesome/css/svg-with-js.min.css +6 -0
  22. package/assets/fontawesome/css/thin.css +19 -0
  23. package/assets/fontawesome/css/thin.min.css +6 -0
  24. package/assets/fontawesome/css/v4-font-face.css +26 -0
  25. package/assets/fontawesome/css/v4-font-face.min.css +6 -0
  26. package/assets/fontawesome/css/v4-shims.css +2194 -0
  27. package/assets/fontawesome/css/v4-shims.min.css +6 -0
  28. package/assets/fontawesome/css/v5-font-face.css +34 -0
  29. package/assets/fontawesome/css/v5-font-face.min.css +6 -0
  30. package/assets/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  31. package/assets/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  32. package/assets/fontawesome/webfonts/fa-duotone-900.ttf +0 -0
  33. package/assets/fontawesome/webfonts/fa-duotone-900.woff2 +0 -0
  34. package/assets/fontawesome/webfonts/fa-light-300.ttf +0 -0
  35. package/assets/fontawesome/webfonts/fa-light-300.woff2 +0 -0
  36. package/assets/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  37. package/assets/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  38. package/assets/fontawesome/webfonts/fa-sharp-regular-400.ttf +0 -0
  39. package/assets/fontawesome/webfonts/fa-sharp-regular-400.woff2 +0 -0
  40. package/assets/fontawesome/webfonts/fa-sharp-solid-900.ttf +0 -0
  41. package/assets/fontawesome/webfonts/fa-sharp-solid-900.woff2 +0 -0
  42. package/assets/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  43. package/assets/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  44. package/assets/fontawesome/webfonts/fa-thin-100.ttf +0 -0
  45. package/assets/fontawesome/webfonts/fa-thin-100.woff2 +0 -0
  46. package/assets/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
  47. package/assets/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
  48. package/components/breadcrumb/breadcrumb.component.d.ts +12 -8
  49. package/components/navbar/navbar.component.d.ts +6 -16
  50. package/components/sidebar/sidebar.component.d.ts +31 -5
  51. package/domain/models/jace/ActiveModuleView.d.ts +8 -8
  52. package/esm2020/components/back-top/back-top.component.mjs +5 -5
  53. package/esm2020/components/base/base.component.mjs +4 -4
  54. package/esm2020/components/base/reactive.component.mjs +4 -4
  55. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +53 -43
  56. package/esm2020/components/components.module.mjs +5 -5
  57. package/esm2020/components/error/404/pagenotfound.component.mjs +4 -4
  58. package/esm2020/components/error/500/servererror.component.mjs +4 -4
  59. package/esm2020/components/error/Angular/angularerror.component.mjs +4 -4
  60. package/esm2020/components/es-modal/es-modal-head/es-modal-head.component.mjs +4 -4
  61. package/esm2020/components/es-modal/es-modal.component.mjs +4 -4
  62. package/esm2020/components/external-page/external_pages.component.mjs +4 -4
  63. package/esm2020/components/jace-login/jace-login.component.mjs +4 -4
  64. package/esm2020/components/jace-resource/jace-resource.component.mjs +4 -4
  65. package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +5 -5
  66. package/esm2020/components/navbar/navbar.component.loc.mjs +4 -4
  67. package/esm2020/components/navbar/navbar.component.mjs +16 -63
  68. package/esm2020/components/page/pages.component.mjs +5 -5
  69. package/esm2020/components/redirecter/redirecter.component.mjs +4 -4
  70. package/esm2020/components/sidebar/sidebar.component.mjs +93 -10
  71. package/esm2020/directives/componentHost/componentHost.directive.mjs +4 -4
  72. package/esm2020/directives/directives.module.mjs +5 -5
  73. package/esm2020/directives/draggable/draggable.directive.mjs +4 -4
  74. package/esm2020/directives/es-modal/es-modal.directive.mjs +4 -4
  75. package/esm2020/directives/es-routerLink/es-routerLink.directive.mjs +4 -4
  76. package/esm2020/directives/slim-scroll/slim-scroll.directive.mjs +4 -4
  77. package/esm2020/directives/widget/widget.directive.mjs +4 -4
  78. package/esm2020/domain/models/jace/ActiveModuleView.mjs +1 -1
  79. package/esm2020/domain/public-api.mjs +1 -1
  80. package/esm2020/lib/app.component.mjs +5 -5
  81. package/esm2020/lib/core.module.mjs +5 -5
  82. package/esm2020/modules/classes/_shared.module.mjs +5 -5
  83. package/esm2020/modules/classes/t_c.module.mjs +5 -5
  84. package/esm2020/pipes/classes/included_in.pipe.mjs +4 -4
  85. package/esm2020/pipes/classes/safe_html.pipe.mjs +4 -4
  86. package/esm2020/pipes/classes/safe_script.pipe.mjs +4 -4
  87. package/esm2020/pipes/classes/safe_style.pipe.mjs +4 -4
  88. package/esm2020/pipes/classes/safe_url.pipe.mjs +4 -4
  89. package/esm2020/pipes/pipes.module.mjs +5 -5
  90. package/esm2020/public-api.mjs +1 -1
  91. package/esm2020/services/classes/app.accesstoken.mjs +4 -4
  92. package/esm2020/services/classes/app.completedjobredirection.mjs +4 -4
  93. package/esm2020/services/classes/app.errorhandler.mjs +4 -4
  94. package/esm2020/services/classes/app.event.mjs +4 -4
  95. package/esm2020/services/classes/app.globalsearch.mjs +4 -4
  96. package/esm2020/services/classes/app.httpextensions.loc.mjs +4 -4
  97. package/esm2020/services/classes/app.httpextensions.mjs +4 -4
  98. package/esm2020/services/classes/app.menufilter.mjs +4 -4
  99. package/esm2020/services/classes/app.routeguard.mjs +4 -4
  100. package/esm2020/services/classes/app.session.mjs +4 -4
  101. package/esm2020/services/classes/app.state.mjs +4 -4
  102. package/esm2020/services/classes/preferences/app.cache.persistor.mjs +4 -4
  103. package/esm2020/services/classes/preferences/app.preference.persistor.mjs +4 -4
  104. package/fesm2015/esfaenza-core-components.mjs +225 -185
  105. package/fesm2015/esfaenza-core-components.mjs.map +1 -1
  106. package/fesm2015/esfaenza-core-directives.mjs +22 -22
  107. package/fesm2015/esfaenza-core-directives.mjs.map +1 -1
  108. package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
  109. package/fesm2015/esfaenza-core-modules.mjs +8 -8
  110. package/fesm2015/esfaenza-core-modules.mjs.map +1 -1
  111. package/fesm2015/esfaenza-core-pipes.mjs +19 -19
  112. package/fesm2015/esfaenza-core-pipes.mjs.map +1 -1
  113. package/fesm2015/esfaenza-core-services.mjs +39 -39
  114. package/fesm2015/esfaenza-core-services.mjs.map +1 -1
  115. package/fesm2015/esfaenza-core.mjs +8 -8
  116. package/fesm2015/esfaenza-core.mjs.map +1 -1
  117. package/fesm2020/esfaenza-core-components.mjs +223 -184
  118. package/fesm2020/esfaenza-core-components.mjs.map +1 -1
  119. package/fesm2020/esfaenza-core-directives.mjs +22 -22
  120. package/fesm2020/esfaenza-core-directives.mjs.map +1 -1
  121. package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
  122. package/fesm2020/esfaenza-core-modules.mjs +8 -8
  123. package/fesm2020/esfaenza-core-modules.mjs.map +1 -1
  124. package/fesm2020/esfaenza-core-pipes.mjs +19 -19
  125. package/fesm2020/esfaenza-core-pipes.mjs.map +1 -1
  126. package/fesm2020/esfaenza-core-services.mjs +39 -39
  127. package/fesm2020/esfaenza-core-services.mjs.map +1 -1
  128. package/fesm2020/esfaenza-core.mjs +8 -8
  129. package/fesm2020/esfaenza-core.mjs.map +1 -1
  130. package/package.json +2 -2
  131. package/theme/styles/_base.scss +8 -23
  132. package/theme/styles/_bootstrap-override.scss +36 -62
  133. package/theme/styles/_libs-override.scss +43 -6
  134. package/theme/styles/_project-override.scss +4 -0
  135. package/theme/styles/_variables.scss +14 -42
  136. package/theme/styles/skins/enuma.scss +59 -0
  137. package/theme/styles/skins/etnograph.scss +52 -0
  138. package/assets/fonts/fontawesome/FontAwesome.otf +0 -0
  139. package/assets/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  140. package/assets/fonts/fontawesome/fontawesome-webfont.svg +0 -2671
  141. package/assets/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
  142. package/assets/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  143. package/assets/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
  144. package/assets/styles/font-awesome.min.css +0 -2929
  145. package/theme/styles/skins/_blue.scss +0 -16
@@ -9,14 +9,22 @@ import { MENU, MENU_LOCALIZATION } from "@esfaenza/core/domain";
9
9
  import { SlimScroll } from "@esfaenza/core/directives";
10
10
  // Librerie
11
11
  import { firstValueFrom } from "rxjs";
12
+ import { HttpParams } from "@angular/common/http";
13
+ import { EsTableColumnsDefinition, EsTableModule } from "@esfaenza/es-table";
14
+ import { FormsModule } from "@angular/forms";
12
15
  import * as i0 from "@angular/core";
13
16
  import * as i1 from "@esfaenza/localizations";
14
17
  import * as i2 from "@angular/router";
15
18
  import * as i3 from "@esfaenza/core/services";
16
19
  import * as i4 from "@esfaenza/extensions";
17
20
  import * as i5 from "@esfaenza/access-control";
21
+ import * as i6 from "@esfaenza/httpservice";
22
+ import * as i7 from "@esfaenza/es-table";
23
+ import * as i8 from "@angular/forms";
24
+ // Chiamate ai Repository
25
+ const GET_Users_GetProfilePicture = "/api/Users/GetProfilePicture";
18
26
  export class Sidebar {
19
- constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService) {
27
+ constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService, sr, https, msgs, globalSearchService) {
20
28
  this.lc = lc;
21
29
  this.cdr = cdr;
22
30
  this._elementRef = _elementRef;
@@ -27,8 +35,22 @@ export class Sidebar {
27
35
  this.aac = aac;
28
36
  this.menuItemsRaw = menuItemsRaw;
29
37
  this.menuFilteringService = menuFilteringService;
38
+ this.sr = sr;
39
+ this.https = https;
40
+ this.msgs = msgs;
41
+ this.globalSearchService = globalSearchService;
30
42
  this.isMenuCollapsed = false;
31
43
  this.isMenuShouldCollapsed = false;
44
+ this.applicationVersion = myconfig.AppData.ComponentVersion;
45
+ this.user = "";
46
+ this.tenant = "";
47
+ this.SearchModel = "";
48
+ // TODO: Salvare dentro una service preferenze account
49
+ this.safeprofilepic = null;
50
+ // ***************************************** Gestione Ricerca Globale *****************************************
51
+ this.SelectedResult = null;
52
+ this.ShowSingleTable = false;
53
+ this.searchingTerm = false;
32
54
  this.lc = this.lc.generateFromType(lcMenu);
33
55
  this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
34
56
  this.isMenuCollapsed = isCollapsed;
@@ -46,6 +68,7 @@ export class Sidebar {
46
68
  window.scrollTo(0, 0);
47
69
  }
48
70
  });
71
+ this.getUserProfileData();
49
72
  }
50
73
  async ngOnInit() {
51
74
  let tmpMenuItems = this.getMenuItems();
@@ -91,6 +114,7 @@ export class Sidebar {
91
114
  }
92
115
  return item;
93
116
  }
117
+ //#region JQuery
94
118
  onWindowResize() {
95
119
  var isMenuShouldCollapsed = this._shouldMenuCollapse();
96
120
  if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {
@@ -117,7 +141,7 @@ export class Sidebar {
117
141
  hoverItem(jQueryevent) {
118
142
  this.showHoverElem = true;
119
143
  this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;
120
- this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top - 60;
144
+ this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;
121
145
  jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
122
146
  jQuery(".sidebar-hover-elem").css("height", this.hoverElemHeight + "px");
123
147
  jQuery(".sidebar-hover-elem").addClass("show-hover-elem");
@@ -127,7 +151,9 @@ export class Sidebar {
127
151
  jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
128
152
  }
129
153
  updateSidebarHeight() {
130
- this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - 60;
154
+ let marginTop = 60 + 40;
155
+ let footerHeight = 150;
156
+ this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;
131
157
  }
132
158
  //Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone
133
159
  //generando un po' di irresponsività iniziale... succede solo col click... boh
@@ -186,12 +212,66 @@ export class Sidebar {
186
212
  link.next().slideUp(slidePeriod);
187
213
  }
188
214
  }
215
+ //#endregion
216
+ onChangeTenant() {
217
+ window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;
218
+ }
219
+ onLogout() {
220
+ window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;
221
+ }
222
+ getUserProfileData() {
223
+ var identity = this.sr.getJaceIdentity();
224
+ if (identity) {
225
+ this.user = identity.FullName;
226
+ this.tenant = identity.TenantName;
227
+ // TODO: Mettere logica dentro una service preferenze account
228
+ this.https.get(GET_Users_GetProfilePicture, new HttpParams().set('id', identity.IdAccount.toString())).subscribe(t => {
229
+ //this._state.setSanitizerPicProfile(t.image);
230
+ });
231
+ }
232
+ }
233
+ onSearchRequest() {
234
+ console.log("sent!");
235
+ this.searchingTerm = true;
236
+ this.searchResult = null;
237
+ if (!this.globalSearchService.Enabled)
238
+ return;
239
+ this.globalSearchService.search(this.searchTerm).subscribe(t => {
240
+ this.searchingTerm = false;
241
+ this.searchResult = t;
242
+ this.searchResult.results.forEach(t => {
243
+ t.est_cols = t.columns.map(c => {
244
+ let colLink = this.globalSearchService.generateColumnLink(c);
245
+ return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);
246
+ });
247
+ });
248
+ });
249
+ }
250
+ onSearchModelChanged() {
251
+ console.log("changed!");
252
+ if (!this.searchingTerm)
253
+ this.closeSearch();
254
+ }
255
+ closeSearch() {
256
+ this.searchingTerm = false;
257
+ this.searchResult = null;
258
+ }
259
+ FilterSearchResults(item = null) {
260
+ this.SelectedResult = null;
261
+ this.ShowSingleTable = true;
262
+ requestAnimationFrame(() => {
263
+ if (item)
264
+ this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);
265
+ else
266
+ this.ShowSingleTable = false;
267
+ });
268
+ }
189
269
  }
190
- Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token: i1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.Router }, { token: i3.AppState }, { token: i0.NgZone }, { token: i4.UtilityService }, { token: i5.AccessControlService }, { token: MENU }, { token: i3.MenuFilteringService }], target: i0.ɵɵFactoryTarget.Component });
191
- Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"app-sidebar\" #sidebar [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\" style=\"position:relative; zoom:1\">\r\n\r\n <li *ngFor=\"let item of menuItems\" class=\"sidebar-list-item level-{{item.level}}\" [ngClass]=\"{'has-sub-menu': item.subMenu, 'sidebar-item-expanded': item.expanded}\" [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"sidebar-hover-elem\"></div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;padding-left:40px!important;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, decorators: [{
270
+ Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Sidebar, deps: [{ token: i1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.Router }, { token: i3.AppState }, { token: i0.NgZone }, { token: i4.UtilityService }, { token: i5.AccessControlService }, { token: MENU }, { token: i3.MenuFilteringService }, { token: i3.TokenService }, { token: i6.HTTPService }, { token: i4.MessageService }, { token: i3.GlobalSearchService }], target: i0.ɵɵFactoryTarget.Component });
271
+ Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize.out-zone": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i>&nbsp;\r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i>&nbsp;&nbsp;\r\n </div>\r\n <div class=\"app-margin-left-10\">Template a15</div>\r\n </div>\r\n <!--<img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"../dist/assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"../dist/assets/img/logo/logo_sm.png\" alt=\"\">-->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!safeprofilepic\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"safeprofilepic\">\r\n <img [src]=\"safeprofilepic\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile/user_info']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i>&nbsp;Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i>&nbsp;Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-sidebar{background:#132D46;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #191E29}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#0e2032}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#183a5a}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #191E29}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;padding-left:30px!important;height:42px;line-height:42px}.sidebar-sublist li a:hover{background-color:#0e2032}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#183a5a}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#01c38d;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{color:#01c38d!important;font-weight:700!important;background-color:#183a5a}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#132d46;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #191E29;color:#fff}.app-sidebar-search{height:39px}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#132d46}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#132d46,rgba(19,45,70,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #191E29}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#01c38d;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#183a5a;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #191E29}\n"], dependencies: [{ kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Sidebar, decorators: [{
193
273
  type: Component,
194
- args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule], template: "<div class=\"app-sidebar\" #sidebar [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\" style=\"position:relative; zoom:1\">\r\n\r\n <li *ngFor=\"let item of menuItems\" class=\"sidebar-list-item level-{{item.level}}\" [ngClass]=\"{'has-sub-menu': item.subMenu, 'sidebar-item-expanded': item.expanded}\" [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: item}\"></ng-container>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"sidebar-hover-elem\"></div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;padding-left:40px!important;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"] }]
274
+ args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule, EsTableModule, FormsModule], template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i>&nbsp;\r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i>&nbsp;&nbsp;\r\n </div>\r\n <div class=\"app-margin-left-10\">Template a15</div>\r\n </div>\r\n <!--<img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"../dist/assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"../dist/assets/img/logo/logo_sm.png\" alt=\"\">-->\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!safeprofilepic\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"safeprofilepic\">\r\n <img [src]=\"safeprofilepic\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile/user_info']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i>&nbsp;Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i>&nbsp;Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-sidebar{background:#132D46;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #191E29}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#0e2032}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#183a5a}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #191E29}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;padding-left:30px!important;height:42px;line-height:42px}.sidebar-sublist li a:hover{background-color:#0e2032}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#183a5a}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#01c38d;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{color:#01c38d!important;font-weight:700!important;background-color:#183a5a}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#132d46;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #191E29;color:#fff}.app-sidebar-search{height:39px}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#132d46}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#132d46,rgba(19,45,70,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #191E29}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#01c38d;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#183a5a;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #191E29}\n"] }]
195
275
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Type, decorators: [{
196
276
  type: Optional
197
277
  }, {
@@ -200,11 +280,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
200
280
  }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.Router }, { type: i3.AppState }, { type: i0.NgZone }, { type: i4.UtilityService }, { type: i5.AccessControlService }, { type: undefined, decorators: [{
201
281
  type: Inject,
202
282
  args: [MENU]
203
- }] }, { type: i3.MenuFilteringService }]; }, propDecorators: { sidebar: [{
283
+ }] }, { type: i3.MenuFilteringService }, { type: i3.TokenService }, { type: i6.HTTPService }, { type: i4.MessageService }, { type: i3.GlobalSearchService }]; }, propDecorators: { sidebar: [{
204
284
  type: ViewChild,
205
285
  args: ["sidebar", { static: true }]
206
286
  }], onWindowResize: [{
207
287
  type: HostListener,
208
- args: ["window:resize"]
288
+ args: ["window:resize.out-zone"]
209
289
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRixXQUFXO0FBQ1gsT0FBTyxFQUFtQixJQUFJLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsV0FBVztBQUNYLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFhdEMsTUFBTSxPQUFPLE9BQU87SUFZaEIsWUFDVyxFQUF1QixFQUF5QyxNQUFpQyxFQUFVLEdBQXNCLEVBQVUsV0FBdUIsRUFDakssT0FBZSxFQUFTLE1BQWdCLEVBQVUsSUFBWSxFQUFVLE9BQXVCLEVBQVUsR0FBeUIsRUFBd0IsWUFBK0IsRUFDekwsb0JBQTBDO1FBRjNDLE9BQUUsR0FBRixFQUFFLENB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SUFBSSxFQUFFO2dCQW1GL0IsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE5nWm9uZSwgT3B0aW9uYWwsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmsgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBFc0ZhZW56YVxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1lbnUsIE1FTlUsIE1FTlVfTE9DQUxJWkFUSU9OIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgTWVudUZpbHRlcmluZ1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sXCI7XHJcbmltcG9ydCB7IFNsaW1TY3JvbGwgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZGlyZWN0aXZlc1wiO1xyXG5cclxuLy8gTGlicmVyaWVcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgalF1ZXJ5O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJzaWRlYmFyXCIsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBTbGltU2Nyb2xsLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgTG9jYWxpemF0aW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZWJhciB7XHJcbiAgICBwdWJsaWMgbWVudUl0ZW1zOiBBcnJheTxhbnk+O1xyXG4gICAgcHVibGljIG1lbnVIZWlnaHQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc01lbnVTaG91bGRDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc2hvd0hvdmVyRWxlbTogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBob3ZlckVsZW1IZWlnaHQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyBob3ZlckVsZW1Ub3A6IG51bWJlcjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwic2lkZWJhclwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaWRlYmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX0xPQ0FMSVpBVElPTikgbGNNZW51OiBUeXBlPExvY2FsaXphdGlvblNlcnZpY2U+LCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBhYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBASW5qZWN0KE1FTlUpIHByaXZhdGUgbWVudUl0ZW1zUmF3OiBBcHBsaWNhdGlvbk1lbnVbXSxcclxuICAgICAgICBwcml2YXRlIG1lbnVGaWx0ZXJpbmdTZXJ2aWNlOiBNZW51RmlsdGVyaW5nU2VydmljZSkge1xyXG5cclxuICAgICAgICB0aGlzLmxjID0gdGhpcy5sYy5nZW5lcmF0ZUZyb21UeXBlKGxjTWVudSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHBsaWNhdGlvbi5EZXBsb3lBdmFpbGFibGVcIiwgKGF2YWlsYWJsZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXZhaWxhYmxlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9ICh3aW5kb3cuaW5uZXJXaWR0aCA+IDApID8gd2luZG93LmlubmVyV2lkdGggOiBzY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPD0gNzY4KSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgbGV0IHRtcE1lbnVJdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1lbnVGaWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcih0bXBNZW51SXRlbXMpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZE1lbnVDb2xsYXBzZSgpKVxyXG4gICAgICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWVudUl0ZW1zKCk6IEFwcGxpY2F0aW9uTWVudVtdIHtcclxuICAgICAgICB2YXIgaXRlbXM6IEFwcGxpY2F0aW9uTWVudVtdID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tZW51SXRlbXNSYXcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHQgPSB0aGlzLm1lbnVJdGVtc1Jhd1tpXTtcclxuICAgICAgICAgICAgKDxhbnk+dCkubGV2ZWwgPSAxO1xyXG4gICAgICAgICAgICBpZiAoIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXQuc3ViTWVudSB8fCB0LnN1Yk1lbnUubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh0KTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0b1B1c2ggPSB0aGlzLmNoZWNrU3ViTWVudU92ZXJDbGFpbXModCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh0b1B1c2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKG1lbnVJdGVtOiBBcHBsaWNhdGlvbk1lbnUsIGxldmVsOiBudW1iZXIpOiBBcHBsaWNhdGlvbk1lbnUge1xyXG4gICAgICAgIHZhciBpdGVtOiBBcHBsaWNhdGlvbk1lbnUgPSB0aGlzLnV0aUV4dHMuZGVlcENsb25lKG1lbnVJdGVtKTtcclxuICAgICAgICBpdGVtLnN1Yk1lbnUgPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbS5zdWJNZW51Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0ID0gbWVudUl0ZW0uc3ViTWVudVtpXTtcclxuICAgICAgICAgICAgKDxhbnk+dCkubGV2ZWwgPSBsZXZlbCsxO1xyXG4gICAgICAgICAgICBpZiAoIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXQuc3ViTWVudSB8fCB0LnN1Yk1lbnUubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zdWJNZW51LnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QdXNoID0gdGhpcy5jaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKHQsIGxldmVsKzEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3ViTWVudS5wdXNoKHRvUHVzaCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gQ2FsY29sbyBxdWkgcGVyIG5vbiBkb3ZlcmxvIGNhbGNvbGFyZSBsYXRvIEhUTUxcclxuICAgICAgICAgICAgKDxhbnk+dCkucGFkZGluZ19sZWZ0ID0gbGV2ZWwgPiAyID8gKDY1ICsgKChsZXZlbCAtIDMpICogMTUpICsgJ3B4ICFpbXBvcnRhbnQnKSA6IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcclxuICAgIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcclxuICAgICAgICB2YXIgaXNNZW51U2hvdWxkQ29sbGFwc2VkID0gdGhpcy5fc2hvdWxkTWVudUNvbGxhcHNlKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzTWVudVNob3VsZENvbGxhcHNlZCAhPT0gaXNNZW51U2hvdWxkQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UoaXNNZW51U2hvdWxkQ29sbGFwc2VkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc01lbnVTaG91bGRDb2xsYXBzZWQgPSBpc01lbnVTaG91bGRDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTaWRlYmFySGVpZ2h0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvdWxkTWVudUNvbGxhcHNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA3Njg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1lbnVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldFNpZGViYXJXaWR0aCh0aGlzLnNpZGViYXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKGlzQ29sbGFwc2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZW51RXhwYW5kKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldFNpZGViYXJXaWR0aCh0aGlzLnNpZGViYXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhvdmVySXRlbShqUXVlcnlldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0hvdmVyRWxlbSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1IZWlnaHQgPSBqUXVlcnlldmVudC5jdXJyZW50VGFyZ2V0LmNsaWVudEhlaWdodDtcclxuICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gNjA7XHJcblxyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwidG9wXCIsIHRoaXMuaG92ZXJFbGVtVG9wICsgXCJweFwiKTtcclxuICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcImhlaWdodFwiLCB0aGlzLmhvdmVyRWxlbUhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5hZGRDbGFzcyhcInNob3ctaG92ZXItZWxlbVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEF3YXlIb3ZlckVsZW1lbnQoKSB7XHJcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1Ub3AgPSAtMjAwO1xyXG5cclxuICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcInRvcFwiLCB0aGlzLmhvdmVyRWxlbVRvcCArIFwicHhcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZVNpZGViYXJIZWlnaHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51SGVpZ2h0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNsaWVudEhlaWdodCAtIDYwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vTm9ub3N0YW50ZSBxdWVzdGEgZnVuemlvbmUgc2lhIGNvbGxlZ2F0YSBjb24gKGNsaWNrLm91dC16b25lKSBwZXIgcXVhbGNoZSBtb3Rpdm8gYW5ndWxhciBsZSBlc2VndWUgY29tdW5xdWUgbmVsbGEgc3VhIHpvbmVcclxuICAgIC8vZ2VuZXJhbmRvIHVuIHBvJyBkaSBpcnJlc3BvbnNpdml0w6AgaW5pemlhbGUuLi4gc3VjY2VkZSBzb2xvIGNvbCBjbGljay4uLiBib2hcclxuICAgIHB1YmxpYyBjb2xsYXBzZU1lbnUoalF1ZXJ5ZXZlbnQsIGl0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc01lbnVDb2xsYXBzZWQpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUV4cGFuZCgpO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW0ubGV2ZWwpXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxpdmVsbG8gbm9uIHByZXNlbnRlIGluIHVuIG9nZ2V0dG8gZGVsIG1lbnUhXCIpO1xyXG5cclxuICAgICAgICAvL04uQjogVHV0dGUgbGUgZnVuemlvbmkgZGkgSlF1ZXJ5IGxlIGVzZ3VvIGZ1b3JpIGRhIEFuZ3VsYXIgZGF0byBjaGUgYyfvv70gdW5hIGJ1b25hIHByb2JhYmlsaXTvv70gY2hlIHNpYW5vIGV2ZW50aSBhc2luY3JvbmlcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4geyB0aGlzLm91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKTsgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3MgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsKSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3NQbHVzT25lID0gaXRlbS5sZXZlbCA/IFwibGV2ZWwtXCIgKyAoaXRlbS5sZXZlbCArIDEpIDogXCJcIjtcclxuICAgICAgICBsZXQgc2xpZGVQZXJpb2QgPSA0MDA7XHJcblxyXG4gICAgICAgIHZhciBsaW5rID0galF1ZXJ5KGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQpO1xyXG5cclxuICAgICAgICAvL1NlIGwnZWxlbWVudG8gbm9uIMOoIGVzcGFuc29cclxuICAgICAgICBpZiAoIWxpbmsuY2xvc2VzdChcIi5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vVGlybyBzdSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbG8gc3Rlc3NvIGxpdmVsbG8gZXNwYW5zaSBlIGxpIGNoaXVkb1xyXG5cclxuICAgICAgICAgICAgLy9TZSBobyBjb21wcmVzc28gdW4gbWVudSB2YWRvIGEgdmVkZXJlIHNlIGMnw6ggYW5jaGUgdW4gYWx0cm8gbWVudSBkaSBsaXZlbGxvIHBp77+9IGJhc3NvIGRhIHJpY2hpdWRlcmVcclxuICAgICAgICAgICAgalF1ZXJ5KFwidWwubmF2LXNpZGViYXIgbGlcIiArIFwiLlwiICsgKGxldmVsQ2xhc3NQbHVzT25lKSkuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvc2VzdExpID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoXCJsaVwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5sZW5ndGggJiYgY2xvc2VzdExpLmhhc0NsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVVcChzbGlkZVBlcmlvZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIChsZXZlbENsYXNzUGx1c09uZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL0RvcG9kaWNo77+9IHJpY2hpdWRvIHR1dHRpIHF1ZWxsaSBkZWwgbWlvIGxpdmVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyBsZXZlbENsYXNzKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gZXNwYW5kbyBxdWVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZURvd24oc2xpZGVQZXJpb2QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5hZGRDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9BbHRyaW1lbnRpLCBzZSBsJ2VsZW1lbnRvIMOoIGdpw6AgZXNwYW5zbyBsbyBjaGl1ZG9cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXJcIiAjc2lkZWJhciBbbmdDbGFzc109XCJ7J21lbnUtY29sbGFwc2VkJzogaXNNZW51Q29sbGFwc2VkfVwiIChtb3VzZWxlYXZlLm91dC16b25lKT1cInNlbmRBd2F5SG92ZXJFbGVtZW50KCk7XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgZmxleC1jb2x1bW4gZmxleC1ub3dyYXBcIiBzbGltLXNjcm9sbCBbc2xpbVNjcm9sbE9wdGlvbnNdPVwie2hlaWdodDogbWVudUhlaWdodH1cIiBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlOyB6b29tOjFcIj5cclxuXHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtc1wiIGNsYXNzPVwic2lkZWJhci1saXN0LWl0ZW0gbGV2ZWwte3tpdGVtLmxldmVsfX1cIiBbbmdDbGFzc109XCJ7J2hhcy1zdWItbWVudSc6IGl0ZW0uc3ViTWVudSwgJ3NpZGViYXItaXRlbS1leHBhbmRlZCc6IGl0ZW0uZXhwYW5kZWR9XCIgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwiaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtOyBjb250ZXh0IDogeyRpbXBsaWNpdDogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1ob3Zlci1lbGVtXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNtZW51SXRlbSBsZXQtaXRlbT5cclxuICAgIDxhIFthdHRyLnN0eWxlLnBhZGRpbmdfbGVmdF09XCJpdGVtLnBhZGRpbmdfbGVmdFwiICpuZ0lmPVwiKCFpdGVtLnJvdXRlckxpbmsgJiYgIWl0ZW0uc3ViTWVudSkgfHwgaXRlbS53aXBcIiBbaHJlZl09XCJpdGVtLmxpbmsgPyBpdGVtLmxpbmsgOiAnIydcIiAoY2xpY2spPVwiaXRlbS53aXAgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFthdHRyLnN0eWxlLnBhZGRpbmdfbGVmdF09XCJpdGVtLnBhZGRpbmdfbGVmdFwiICpuZ0lmPVwiaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLnN1Yk1lbnUgJiYgIWl0ZW0ud2lwXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnJvdXRlckxpbmtdXCIgW3F1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXNcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlLWxpbmtcIiAoY2xpY2sub3V0LXpvbmUpPVwiY29sbGFwc2VNZW51KCRldmVudCwgaXRlbSlcIiAobW91c2VlbnRlci5vdXQtem9uZSk9XCJob3Zlckl0ZW0oJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+PHNwYW4+e3sgaXRlbS50aXRsZSB8IGxvY2FsaXplIDogbGMgfX08L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGEgW2F0dHIuc3R5bGUucGFkZGluZ19sZWZ0XT1cIml0ZW0ucGFkZGluZ19sZWZ0XCIgKm5nSWY9XCJpdGVtLnN1Yk1lbnUgJiYgIWl0ZW0ud2lwXCIgKGNsaWNrLm91dC16b25lKT1cImNvbGxhcHNlTWVudSgkZXZlbnQsIGl0ZW0pXCIgW2F0dHIuaHJlZl09XCInJ1wiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiAobW91c2VlbnRlci5vdXQtem9uZSk9XCJob3Zlckl0ZW0oJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+PHNwYW4+e3sgaXRlbS50aXRsZSB8IGxvY2FsaXplIDogbGMgfX08L3NwYW4+XHJcbiAgICAgICAgPGIgY2xhc3M9XCJmYSBmYS1hbmdsZS1kb3duXCI+PC9iPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDx1bCAqbmdJZj1cIml0ZW0uc3ViTWVudVwiIGNsYXNzPVwic2lkZWJhci1zdWJsaXN0XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdWJpdGVtIG9mIGl0ZW0uc3ViTWVudVwiIGNsYXNzPVwic2lkZWJhci1zdWJsaXN0LWl0ZW0gbGV2ZWwte3tzdWJpdGVtLmxldmVsfX1cIiBbY2xhc3Muc2lkZWJhci1pdGVtLXdpcF09XCJzdWJpdGVtLndpcFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW07IGNvbnRleHQgOiB7JGltcGxpY2l0OiBzdWJpdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
290
+ // TODO: Spostare nel modulo preferenze account
291
+ export class ProfilePicture {
292
+ }
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRixXQUFXO0FBQ1gsT0FBTyxFQUErQixJQUFJLEVBQUUsaUJBQWlCLEVBQXVDLE1BQU0sdUJBQXVCLENBQUM7QUFJbEksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELFdBQVc7QUFDWCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRTdDLHlCQUF5QjtBQUN6QixNQUFNLDJCQUEy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Y0FBYztzQkFEcEIsWUFBWTt1QkFBQyx3QkFBd0I7O0FBeU0xQywrQ0FBK0M7QUFDL0MsTUFBTSxPQUFPLGNBQWM7Q0FFMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgTmdab25lLCBPcHRpb25hbCwgVHlwZSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluayB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlLCBMb2NhbGl6YXRpb25Nb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8vIEVzRmFlbnphXHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWVudSwgRW52T3B0aW9ucywgTUVOVSwgTUVOVV9MT0NBTElaQVRJT04sIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGFpbmVyIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgR2xvYmFsU2VhcmNoU2VydmljZSwgTWVudUZpbHRlcmluZ1NlcnZpY2UsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sXCI7XHJcbmltcG9ydCB7IFNsaW1TY3JvbGwgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZGlyZWN0aXZlc1wiO1xyXG5cclxuLy8gTGlicmVyaWVcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24sIEVzVGFibGVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2VzLXRhYmxlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmNvbnN0IEdFVF9Vc2Vyc19HZXRQcm9maWxlUGljdHVyZTogc3RyaW5nID0gXCIvYXBpL1VzZXJzL0dldFByb2ZpbGVQaWN0dXJlXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogRW52T3B0aW9ucztcclxuZGVjbGFyZSB2YXIgalF1ZXJ5O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJzaWRlYmFyXCIsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBTbGltU2Nyb2xsLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgTG9jYWxpemF0aW9uTW9kdWxlLCBFc1RhYmxlTW9kdWxlLCBGb3Jtc01vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGViYXIge1xyXG4gICAgcHVibGljIG1lbnVJdGVtczogQXJyYXk8YW55PjtcclxuICAgIHB1YmxpYyBtZW51SGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaXNNZW51Q29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNNZW51U2hvdWxkQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHNob3dIb3ZlckVsZW06IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtSGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaG92ZXJFbGVtVG9wOiBudW1iZXI7XHJcblxyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uVmVyc2lvbiA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbjtcclxuICAgIHB1YmxpYyB1c2VyID0gXCJcIjtcclxuICAgIHB1YmxpYyB0ZW5hbnQgPSBcIlwiO1xyXG5cclxuICAgIHB1YmxpYyBTZWFyY2hNb2RlbCA9IFwiXCI7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgc2lkZWJhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9MT0NBTElaQVRJT04pIGxjTWVudTogVHlwZTxMb2NhbGl6YXRpb25TZXJ2aWNlPiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYWFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQEluamVjdChNRU5VKSBwcml2YXRlIG1lbnVJdGVtc1JhdzogQXBwbGljYXRpb25NZW51W10sXHJcbiAgICAgICAgcHJpdmF0ZSBtZW51RmlsdGVyaW5nU2VydmljZTogTWVudUZpbHRlcmluZ1NlcnZpY2UsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIGh0dHBzOiBIVFRQU2VydmljZSwgcHJpdmF0ZSBtc2dzOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgdGhpcy5sYyA9IHRoaXMubGMuZ2VuZXJhdGVGcm9tVHlwZShsY01lbnUpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwbGljYXRpb24uRGVwbG95QXZhaWxhYmxlXCIsIChhdmFpbGFibGU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggPiAwKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDc2OCkgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGxldCB0bXBNZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tZW51RmlsdGVyaW5nU2VydmljZS5maWx0ZXIodG1wTWVudUl0ZW1zKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRNZW51Q29sbGFwc2UoKSlcclxuICAgICAgICAgICAgdGhpcy5tZW51Q29sbGFwc2UoKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTaWRlYmFySGVpZ2h0KCk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE1lbnVJdGVtcygpOiBBcHBsaWNhdGlvbk1lbnVbXSB7XHJcbiAgICAgICAgdmFyIGl0ZW1zOiBBcHBsaWNhdGlvbk1lbnVbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWVudUl0ZW1zUmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0ID0gdGhpcy5tZW51SXRlbXNSYXdbaV07XHJcbiAgICAgICAgICAgICg8YW55PnQpLmxldmVsID0gMTtcclxuICAgICAgICAgICAgaWYgKCF0LmFjIHx8IHRoaXMuYWFjLmhhcyh0LmFjKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0LnN1Yk1lbnUgfHwgdC5zdWJNZW51Lmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QdXNoID0gdGhpcy5jaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKHQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2godG9QdXNoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTdWJNZW51T3ZlckNsYWltcyhtZW51SXRlbTogQXBwbGljYXRpb25NZW51LCBsZXZlbDogbnVtYmVyKTogQXBwbGljYXRpb25NZW51IHtcclxuICAgICAgICB2YXIgaXRlbTogQXBwbGljYXRpb25NZW51ID0gdGhpcy51dGlFeHRzLmRlZXBDbG9uZShtZW51SXRlbSk7XHJcbiAgICAgICAgaXRlbS5zdWJNZW51ID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW0uc3ViTWVudS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdCA9IG1lbnVJdGVtLnN1Yk1lbnVbaV07XHJcbiAgICAgICAgICAgICg8YW55PnQpLmxldmVsID0gbGV2ZWwrMTtcclxuICAgICAgICAgICAgaWYgKCF0LmFjIHx8IHRoaXMuYWFjLmhhcyh0LmFjKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0LnN1Yk1lbnUgfHwgdC5zdWJNZW51Lmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3ViTWVudS5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvUHVzaCA9IHRoaXMuY2hlY2tTdWJNZW51T3ZlckNsYWltcyh0LCBsZXZlbCsxKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnN1Yk1lbnUucHVzaCh0b1B1c2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIENhbGNvbG8gcXVpIHBlciBub24gZG92ZXJsbyBjYWxjb2xhcmUgbGF0byBIVE1MXHJcbiAgICAgICAgICAgICg8YW55PnQpLnBhZGRpbmdfbGVmdCA9IGxldmVsID4gMiA/ICg2NSArICgobGV2ZWwgLSAzKSAqIDE1KSArICdweCAhaW1wb3J0YW50JykgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vI3JlZ2lvbiBKUXVlcnlcclxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplLm91dC16b25lXCIpXHJcbiAgICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgdmFyIGlzTWVudVNob3VsZENvbGxhcHNlZCA9IHRoaXMuX3Nob3VsZE1lbnVDb2xsYXBzZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc01lbnVTaG91bGRDb2xsYXBzZWQgIT09IGlzTWVudVNob3VsZENvbGxhcHNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKGlzTWVudVNob3VsZENvbGxhcHNlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNNZW51U2hvdWxkQ29sbGFwc2VkID0gaXNNZW51U2hvdWxkQ29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2lkZWJhckhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3Nob3VsZE1lbnVDb2xsYXBzZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZW51Q29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZSh0cnVlKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShpc0NvbGxhcHNlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRoaXMuaXNNZW51Q29sbGFwc2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUV4cGFuZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBob3Zlckl0ZW0oalF1ZXJ5ZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3dIb3ZlckVsZW0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaG92ZXJFbGVtSGVpZ2h0ID0galF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1Ub3AgPSBqUXVlcnlldmVudC5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcclxuXHJcbiAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5jc3MoXCJ0b3BcIiwgdGhpcy5ob3ZlckVsZW1Ub3AgKyBcInB4XCIpO1xyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwiaGVpZ2h0XCIsIHRoaXMuaG92ZXJFbGVtSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmFkZENsYXNzKFwic2hvdy1ob3Zlci1lbGVtXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kQXdheUhvdmVyRWxlbWVudCgpIHtcclxuICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IC0yMDA7XHJcblxyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwidG9wXCIsIHRoaXMuaG92ZXJFbGVtVG9wICsgXCJweFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2lkZWJhckhlaWdodCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgbWFyZ2luVG9wID0gNjAgKyA0MDtcclxuICAgICAgICBsZXQgZm9vdGVySGVpZ2h0ID0gMTUwO1xyXG5cclxuICAgICAgICB0aGlzLm1lbnVIZWlnaHQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gbWFyZ2luVG9wIC0gZm9vdGVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vTm9ub3N0YW50ZSBxdWVzdGEgZnVuemlvbmUgc2lhIGNvbGxlZ2F0YSBjb24gKGNsaWNrLm91dC16b25lKSBwZXIgcXVhbGNoZSBtb3Rpdm8gYW5ndWxhciBsZSBlc2VndWUgY29tdW5xdWUgbmVsbGEgc3VhIHpvbmVcclxuICAgIC8vZ2VuZXJhbmRvIHVuIHBvJyBkaSBpcnJlc3BvbnNpdml0w6AgaW5pemlhbGUuLi4gc3VjY2VkZSBzb2xvIGNvbCBjbGljay4uLiBib2hcclxuICAgIHB1YmxpYyBjb2xsYXBzZU1lbnUoalF1ZXJ5ZXZlbnQsIGl0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc01lbnVDb2xsYXBzZWQpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUV4cGFuZCgpO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW0ubGV2ZWwpXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxpdmVsbG8gbm9uIHByZXNlbnRlIGluIHVuIG9nZ2V0dG8gZGVsIG1lbnUhXCIpO1xyXG5cclxuICAgICAgICAvL04uQjogVHV0dGUgbGUgZnVuemlvbmkgZGkgSlF1ZXJ5IGxlIGVzZ3VvIGZ1b3JpIGRhIEFuZ3VsYXIgZGF0byBjaGUgYyfvv70gdW5hIGJ1b25hIHByb2JhYmlsaXTvv70gY2hlIHNpYW5vIGV2ZW50aSBhc2luY3JvbmlcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4geyB0aGlzLm91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKTsgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3MgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsKSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3NQbHVzT25lID0gaXRlbS5sZXZlbCA/IFwibGV2ZWwtXCIgKyAoaXRlbS5sZXZlbCArIDEpIDogXCJcIjtcclxuICAgICAgICBsZXQgc2xpZGVQZXJpb2QgPSA0MDA7XHJcblxyXG4gICAgICAgIHZhciBsaW5rID0galF1ZXJ5KGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQpO1xyXG5cclxuICAgICAgICAvL1NlIGwnZWxlbWVudG8gbm9uIMOoIGVzcGFuc29cclxuICAgICAgICBpZiAoIWxpbmsuY2xvc2VzdChcIi5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vVGlybyBzdSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbG8gc3Rlc3NvIGxpdmVsbG8gZXNwYW5zaSBlIGxpIGNoaXVkb1xyXG5cclxuICAgICAgICAgICAgLy9TZSBobyBjb21wcmVzc28gdW4gbWVudSB2YWRvIGEgdmVkZXJlIHNlIGMnw6ggYW5jaGUgdW4gYWx0cm8gbWVudSBkaSBsaXZlbGxvIHBp77+9IGJhc3NvIGRhIHJpY2hpdWRlcmVcclxuICAgICAgICAgICAgalF1ZXJ5KFwidWwubmF2LXNpZGViYXIgbGlcIiArIFwiLlwiICsgKGxldmVsQ2xhc3NQbHVzT25lKSkuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvc2VzdExpID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoXCJsaVwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5sZW5ndGggJiYgY2xvc2VzdExpLmhhc0NsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVVcChzbGlkZVBlcmlvZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIChsZXZlbENsYXNzUGx1c09uZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL0RvcG9kaWNo77+9IHJpY2hpdWRvIHR1dHRpIHF1ZWxsaSBkZWwgbWlvIGxpdmVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyBsZXZlbENsYXNzKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gZXNwYW5kbyBxdWVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZURvd24oc2xpZGVQZXJpb2QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5hZGRDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9BbHRyaW1lbnRpLCBzZSBsJ2VsZW1lbnRvIMOoIGdpw6AgZXNwYW5zbyBsbyBjaGl1ZG9cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICBwdWJsaWMgb25DaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uTG9nb3V0KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9nb3V0P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFNhbHZhcmUgZGVudHJvIHVuYSBzZXJ2aWNlIHByZWZlcmVuemUgYWNjb3VudFxyXG4gICAgcHVibGljIHNhZmVwcm9maWxlcGljOiBTYWZlUmVzb3VyY2VVcmwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0VXNlclByb2ZpbGVEYXRhKCkge1xyXG4gICAgICAgIHZhciBpZGVudGl0eSA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcblxyXG4gICAgICAgIGlmIChpZGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBpZGVudGl0eS5GdWxsTmFtZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnQgPSBpZGVudGl0eS5UZW5hbnROYW1lO1xyXG5cclxuICAgICAgICAgICAgLy8gVE9ETzogTWV0dGVyZSBsb2dpY2EgZGVudHJvIHVuYSBzZXJ2aWNlIHByZWZlcmVuemUgYWNjb3VudFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBzLmdldDxQcm9maWxlUGljdHVyZT4oR0VUX1VzZXJzX0dldFByb2ZpbGVQaWN0dXJlLCBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZGVudGl0eS5JZEFjY291bnQudG9TdHJpbmcoKSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fc3RhdGUuc2V0U2FuaXRpemVyUGljUHJvZmlsZSh0LmltYWdlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEdlc3Rpb25lIFJpY2VyY2EgR2xvYmFsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgIHB1YmxpYyBTZWxlY3RlZFJlc3VsdDogU2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIHB1YmxpYyBTaG93U2luZ2xlVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBzZWFyY2hpbmdUZXJtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdENvbnRhaW5lcjtcclxuXHJcbiAgICBvblNlYXJjaFJlcXVlc3QoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzZW50IVwiKVxyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5zZWFyY2godGhpcy5zZWFyY2hUZXJtKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0LmVzdF9jb2xzID0gdC5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sTGluayA9IHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5nZW5lcmF0ZUNvbHVtbkxpbmsoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24oYy5kZXNjcmlwdGlvbiwgYy5pZCwgY29sTGluaz8ucm91dGVQYXRoLCBjb2xMaW5rPy5yb3V0ZVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VhcmNoTW9kZWxDaGFuZ2VkKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlZCFcIilcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gVE9ETzogU3Bvc3RhcmUgbmVsIG1vZHVsbyBwcmVmZXJlbnplIGFjY291bnRcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVQaWN0dXJle1xyXG4gICAgaW1hZ2U6IHN0cmluZztcclxufSIsIjxkaXYgI3NpZGViYXIgY2xhc3M9XCJhcHAtc2lkZWJhclwiIFtjbGFzcy5tZW51LWNvbGxhcHNlZF09XCJpc01lbnVDb2xsYXBzZWRcIiAobW91c2VsZWF2ZS5vdXQtem9uZSk9XCJzZW5kQXdheUhvdmVyRWxlbWVudCgpO1wiPlxyXG4gICAgPCEtLUphY2UgTG9nby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1sb2dvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlclwiIFtyb3V0ZXJMaW5rXT1cIlsnL3BhZ2VzL2Rhc2hib2FyZCddXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4OyBvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtbG9nby1pbWcgYXBwLWxvZ28tcGxhY2Vob2xkZXIgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1hcmdpbi1sZWZ0LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgc3R5bGU9XCJjb2xvcjogIzAwYWVlZjtcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWxlZnRcIj48L2k+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgc3R5bGU9XCJjb2xvcjogIzAxQzM4RDtcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1hcmdpbi1sZWZ0LTEwXCI+VGVtcGxhdGUgYTE1PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tPGltZyAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1sb2dvLWltZ1wiIHNyYz1cIi4uL2Rpc3QvYXNzZXRzL2ltZy9sb2dvL2xvZ28ucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1sb2dvLWltZy1zbVwiIHNyYz1cIi4uL2Rpc3QvYXNzZXRzL2ltZy9sb2dvL2xvZ29fc20ucG5nXCIgYWx0PVwiXCI+LS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1zZWFyY2hcIj5cclxuICAgICAgICA8Zm9ybSBub3ZhbGlkYXRlIHJvbGU9XCJzZWFyY2hcIiBjbGFzcz1cImFwcC1zZWFyY2hcIiAobmdTdWJtaXQpPVwib25TZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSaWNlcmNhLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hNb2RlbENoYW5nZWQoKVwiIG5hbWU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8YT48aSBjbGFzcz1cImZhciBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPjwvYT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1CYXJyYSBsYXRlcmFsZSBjb24gdHV0dGUgbGUgdm9jaSBkaSBNZW51LS0+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgZmxleC1jb2x1bW4gZmxleC1ub3dyYXBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgem9vbTogMVwiIHNsaW0tc2Nyb2xsIFtzbGltU2Nyb2xsT3B0aW9uc109XCJ7aGVpZ2h0OiBtZW51SGVpZ2h0fVwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXM7IGxldCBsYXN0ID0gbGFzdDtcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLWxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFxyXG4gICAgICAgICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbV09XCJsYXN0ID8gJzQycHgnIDogJzBweCdcIiBcclxuICAgICAgICAgICAgW2NsYXNzLmhhcy1zdWItbWVudV09XCJpdGVtLnN1Yk1lbnVcIlxyXG4gICAgICAgICAgICBbY2xhc3Muc2lkZWJhci1pdGVtLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIiBcclxuICAgICAgICAgICAgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwiaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtOyBjb250ZXh0IDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPCEtLVNlbGV0dG9yZSBCYXJyYSBkZWkgTWVudS0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZGViYXItaG92ZXItZWxlbVwiPjwvZGl2PlxyXG4gICAgPCEtLUZvb3Rlci0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3RlclwiPlxyXG4gICAgICAgIDwhLS1NaW51c2NvbG8gZmFkZSB0cmEgc2lkZWJhciBlIGluaXppbyBmb290ZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLWZhZGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBhZGRpbmctMTVcIj5cclxuICAgICAgICAgICAgPCEtLUluZm9ybWF6aW9uaSB1dGVudGUgY29sbGVnYXRvLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1NZW50cmUgc3RvIGFuY29yYSBjYXJpY2FuZG8gbGEgUHJvZmlsZVBpYyBtaSBhc3NpY3VybyBkaSBtb3N0cmFyZSB1biBwbGFjZWhvbGRlci0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzYWZlcHJvZmlsZXBpY1wiIGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItaW1nLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtMnggZmEtc3Bpbm5lciBmYS1zcGluLXB1bHNlXCIgc3R5bGU9XCJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDVweDtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1VbmEgdm9sdGEgY2FyaWNhdGEgbGEgUHJvZmlsZVBpYyBuYXNjb25kbyBpbCBwbGFjZWhvbGRlciBlIGxhIG1vc3Ryby0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNhZmVwcm9maWxlcGljXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInNhZmVwcm9maWxlcGljXCIgYWx0PVwiXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWcgYXBwLXBvaW50ZXJcIiBbcm91dGVyTGlua109XCJbJy9wYWdlcy9wcm9maWxlL3VzZXJfaW5mbyddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci11c2VyLXN0YXR1c1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tVXNlcm5hbWUgYW5pbWF0byBxdWFuZG8gc3VwZXJhIGkgMTUgY2FyYXR0ZXJpLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItbmFtZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlcm5hbWUtdGV4dFwiIFtjbGFzcy51c2VybmFtZS10ZXh0LWFuaW1hdG9yXT1cInVzZXI/Lmxlbmd0aCA+IDE1XCI+e3t1c2VyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVuYW50bmFtZS10ZXh0XCI+e3t0ZW5hbnR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tT3BlcmF6aW9uaSByYXBpZGUgKExvZ291dCwgQ2FtYmlhIHRlbmFudCwgR3VpZGEsIFN1cHBvcnRvLC4uLiktLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1xdWljay1vcHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uTG9nb3V0KCk7XCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItb3AgYXBwLW5vLXNlbGVjdGlvblwiPjxpIGNsYXNzPVwiZmFyIGZhLXJpZ2h0LWZyb20tYnJhY2tldFwiPjwvaT4mbmJzcDtMb2dvdXQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uQ2hhbmdlVGVuYW50KCk7XCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItb3AgYXBwLW5vLXNlbGVjdGlvblwiPjxpIGNsYXNzPVwiZmFyIGZhLXJpZ2h0LWxlZnRcIj48L2k+Jm5ic3A7Q2FtYmlhIFRlbmFudDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLVZlcnNpb25lIGNvcnJlbnRlIGFwcGxpY2F6aW9uZS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXZlclwiPlxyXG4gICAgICAgICAgICAgICAgdnt7YXBwbGljYXRpb25WZXJzaW9ufX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI21lbnVJdGVtIGxldC1pdGVtPlxyXG4gICAgPGEgW2F0dHIuc3R5bGUucGFkZGluZ19sZWZ0XT1cIml0ZW0ucGFkZGluZ19sZWZ0XCIgKm5nSWY9XCIoIWl0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51KSB8fCBpdGVtLndpcFwiIFtocmVmXT1cIml0ZW0ubGluayA/IGl0ZW0ubGluayA6ICcjJ1wiIChjbGljayk9XCJpdGVtLndpcCAmJiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiAobW91c2VlbnRlci5vdXQtem9uZSk9XCJob3Zlckl0ZW0oJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+PHNwYW4+e3sgaXRlbS50aXRsZSB8IGxvY2FsaXplIDogbGMgfX08L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGEgW2F0dHIuc3R5bGUucGFkZGluZ19sZWZ0XT1cIml0ZW0ucGFkZGluZ19sZWZ0XCIgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmsgJiYgIWl0ZW0uc3ViTWVudSAmJiAhaXRlbS53aXBcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgW3JvdXRlckxpbmtdPVwiW2l0ZW0ucm91dGVyTGlua11cIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmUtbGlua1wiIChjbGljay5vdXQtem9uZSk9XCJjb2xsYXBzZU1lbnUoJGV2ZW50LCBpdGVtKVwiIChtb3VzZWVudGVyLm91dC16b25lKT1cImhvdmVySXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBpdGVtLnRpdGxlIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Bhbj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8YSBbYXR0ci5zdHlsZS5wYWRkaW5nX2xlZnRdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0uc3ViTWVudSAmJiAhaXRlbS53aXBcIiAoY2xpY2sub3V0LXpvbmUpPVwiY29sbGFwc2VNZW51KCRldmVudCwgaXRlbSlcIiBbYXR0ci5ocmVmXT1cIicnXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIChtb3VzZWVudGVyLm91dC16b25lKT1cImhvdmVySXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBpdGVtLnRpdGxlIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Bhbj5cclxuICAgICAgICA8YiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd25cIj48L2I+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsICpuZ0lmPVwiaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3RcIj5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN1Yml0ZW0gb2YgaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3QtaXRlbSBsZXZlbC17e3N1Yml0ZW0ubGV2ZWx9fVwiIFtjbGFzcy5zaWRlYmFyLWl0ZW0td2lwXT1cInN1Yml0ZW0ud2lwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dCA6IHskaW1wbGljaXQ6IHN1Yml0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIE92ZXJsYXkgcGVyIGxhIHJpY2VyY2EgZ2xvYmFsZSAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm0gfHwgc2VhcmNoUmVzdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLWFic29sdXRlIGFwcC1zZWFyY2gtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLXJlc3VsdC1ib3hcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5TdG8gZWZmZXR0dWFuZG8gbGEgcmljZXJjYS4uLjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiAhc2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCbG9jY28gY29uIGxlIGNhdGVnb3JpZSBkZWkgcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGEgY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlciBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTAgYXBwLWZzLTIwIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCk7XCI+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkNhdGVnb3JpZSBkaSBSaWNlcmNhPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKClcIj57e1NlbGVjdGVkUmVzdWx0ID8gJy0nIDogJz4nfX0gTW9zdHJhIFR1dHRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzXCIgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCJTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW0pXCI+e3tTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvbiA/ICc+JyA6ICctJ319IE1vc3RyYSB7e2l0ZW0uZGVzY3JpcHRpb259fSAoe3tpdGVtLml0ZW1zPy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXR0YWdsaW8gcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByZXMgb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJpID09IChzZWFyY2hSZXN1bHQucmVzdWx0cz8ubGVuZ3RoIC0gMSkgPyAyIDogMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tyZXMuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwicmVzLml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJyZXMuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkUmVzdWx0ICYmIFNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e1NlbGVjdGVkUmVzdWx0LmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkUmVzdWx0Lml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJTZWxlY3RlZFJlc3VsdC5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgZGVzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -13,9 +13,9 @@ export class ComponentHostDirective {
13
13
  this.CreatedComponent.instance[key] = this.Inputs[key];
14
14
  }
15
15
  }
16
- ComponentHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
17
- ComponentHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ComponentHostDirective, isStandalone: true, selector: "[componentHost]", inputs: { componentHost: "componentHost", Inputs: "Inputs" }, ngImport: i0 });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentHostDirective, decorators: [{
16
+ ComponentHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ComponentHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
17
+ ComponentHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ComponentHostDirective, isStandalone: true, selector: "[componentHost]", inputs: { componentHost: "componentHost", Inputs: "Inputs" }, ngImport: i0 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ComponentHostDirective, decorators: [{
19
19
  type: Directive,
20
20
  args: [{
21
21
  selector: '[componentHost]',
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
26
26
  }], Inputs: [{
27
27
  type: Input
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50SG9zdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvc3JjL2NvbXBvbmVudEhvc3QvY29tcG9uZW50SG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTBCLE1BQU0sZUFBZSxDQUFDOztBQU16RSxNQUFNLE9BQU8sc0JBQXNCO0lBUS9CLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTDVDLFdBQU0sR0FBd0IsSUFBSSxDQUFDO0lBS2EsQ0FBQztJQUUxRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNaLE9BQU87UUFFWCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDOzttSEFsQlEsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7dUdBR1ksYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2NvbXBvbmVudEhvc3RdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEhvc3REaXJlY3RpdmUge1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbXBvbmVudEhvc3Q6IFR5cGU8YW55PjtcclxuICAgIEBJbnB1dCgpIElucHV0czogUmVjb3JkPHN0cmluZywgYW55PiA9IG51bGw7XHJcblxyXG4gICAgLy8gRXZlbnR1YWxpIGFjY2Vzc2kgZXN0ZXJuaS4uLiBub24gc2kgc2EgbWFpXHJcbiAgICBwdWJsaWMgQ3JlYXRlZENvbXBvbmVudDogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpe1xyXG4gICAgICAgIHRoaXMuQ3JlYXRlZENvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8YW55Pih0aGlzLmNvbXBvbmVudEhvc3QpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuSW5wdXRzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuSW5wdXRzKVxyXG4gICAgICAgICAgICB0aGlzLkNyZWF0ZWRDb21wb25lbnQuaW5zdGFuY2Vba2V5XSA9IHRoaXMuSW5wdXRzW2tleV07XHJcbiAgICB9XHJcbn0iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50SG9zdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvc3JjL2NvbXBvbmVudEhvc3QvY29tcG9uZW50SG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTBCLE1BQU0sZUFBZSxDQUFDOztBQU16RSxNQUFNLE9BQU8sc0JBQXNCO0lBUS9CLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTDVDLFdBQU0sR0FBd0IsSUFBSSxDQUFDO0lBS2EsQ0FBQztJQUUxRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNaLE9BQU87UUFFWCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDOztvSEFsQlEsc0JBQXNCO3dHQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFKbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7dUdBR1ksYUFBYTtzQkFBckIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2NvbXBvbmVudEhvc3RdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEhvc3REaXJlY3RpdmUge1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbXBvbmVudEhvc3Q6IFR5cGU8YW55PjtcclxuICAgIEBJbnB1dCgpIElucHV0czogUmVjb3JkPHN0cmluZywgYW55PiA9IG51bGw7XHJcblxyXG4gICAgLy8gRXZlbnR1YWxpIGFjY2Vzc2kgZXN0ZXJuaS4uLiBub24gc2kgc2EgbWFpXHJcbiAgICBwdWJsaWMgQ3JlYXRlZENvbXBvbmVudDogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpe1xyXG4gICAgICAgIHRoaXMuQ3JlYXRlZENvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8YW55Pih0aGlzLmNvbXBvbmVudEhvc3QpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuSW5wdXRzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuSW5wdXRzKVxyXG4gICAgICAgICAgICB0aGlzLkNyZWF0ZWRDb21wb25lbnQuaW5zdGFuY2Vba2V5XSA9IHRoaXMuSW5wdXRzW2tleV07XHJcbiAgICB9XHJcbn0iXX0=
@@ -11,11 +11,11 @@ import * as i0 from "@angular/core";
11
11
  const DIRECTIVES = [Draggable, SlimScroll, Widget, EsRouterLink, ComponentHostDirective, EsModalDirective];
12
12
  export class DirectivesModule {
13
13
  }
14
- DirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DirectivesModule, imports: [Draggable, SlimScroll, Widget, EsRouterLink, ComponentHostDirective, EsModalDirective], exports: [Draggable, SlimScroll, Widget, EsRouterLink, ComponentHostDirective, EsModalDirective] });
16
- DirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DirectivesModule });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DirectivesModule, decorators: [{
14
+ DirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: DirectivesModule, imports: [Draggable, SlimScroll, Widget, EsRouterLink, ComponentHostDirective, EsModalDirective], exports: [Draggable, SlimScroll, Widget, EsRouterLink, ComponentHostDirective, EsModalDirective] });
16
+ DirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DirectivesModule });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DirectivesModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{ imports: [...DIRECTIVES], exports: [...DIRECTIVES] }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvc3JjL2RpcmVjdGl2ZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLFlBQVk7QUFDWixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRWpFLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFHM0csTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLFlBSFQsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixhQUFyRixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCOzhHQUc1RixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUTttQkFBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gRGlyZXR0aXZlXHJcbmltcG9ydCB7IERyYWdnYWJsZSB9IGZyb20gXCIuL2RyYWdnYWJsZS9kcmFnZ2FibGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFNsaW1TY3JvbGwgfSBmcm9tIFwiLi9zbGltLXNjcm9sbC9zbGltLXNjcm9sbC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgV2lkZ2V0IH0gZnJvbSBcIi4vd2lkZ2V0L3dpZGdldC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgRXNSb3V0ZXJMaW5rIH0gZnJvbSBcIi4vZXMtcm91dGVyTGluay9lcy1yb3V0ZXJMaW5rLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIb3N0RGlyZWN0aXZlIH0gZnJvbSBcIi4vY29tcG9uZW50SG9zdC9jb21wb25lbnRIb3N0LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBFc01vZGFsRGlyZWN0aXZlIH0gZnJvbSBcIi4vZXMtbW9kYWwvZXMtbW9kYWwuZGlyZWN0aXZlXCI7XHJcblxyXG5jb25zdCBESVJFQ1RJVkVTID0gW0RyYWdnYWJsZSwgU2xpbVNjcm9sbCwgV2lkZ2V0LCBFc1JvdXRlckxpbmssIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIEVzTW9kYWxEaXJlY3RpdmVdO1xyXG5cclxuQE5nTW9kdWxlKHsgaW1wb3J0czogWy4uLkRJUkVDVElWRVNdLCBleHBvcnRzOiBbLi4uRElSRUNUSVZFU10gfSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZXNNb2R1bGUgeyB9Il19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvc3JjL2RpcmVjdGl2ZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLFlBQVk7QUFDWixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRWpFLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFHM0csTUFBTSxPQUFPLGdCQUFnQjs7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLFlBSFQsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixhQUFyRixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCOytHQUc1RixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUTttQkFBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gRGlyZXR0aXZlXHJcbmltcG9ydCB7IERyYWdnYWJsZSB9IGZyb20gXCIuL2RyYWdnYWJsZS9kcmFnZ2FibGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFNsaW1TY3JvbGwgfSBmcm9tIFwiLi9zbGltLXNjcm9sbC9zbGltLXNjcm9sbC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgV2lkZ2V0IH0gZnJvbSBcIi4vd2lkZ2V0L3dpZGdldC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgRXNSb3V0ZXJMaW5rIH0gZnJvbSBcIi4vZXMtcm91dGVyTGluay9lcy1yb3V0ZXJMaW5rLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIb3N0RGlyZWN0aXZlIH0gZnJvbSBcIi4vY29tcG9uZW50SG9zdC9jb21wb25lbnRIb3N0LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBFc01vZGFsRGlyZWN0aXZlIH0gZnJvbSBcIi4vZXMtbW9kYWwvZXMtbW9kYWwuZGlyZWN0aXZlXCI7XHJcblxyXG5jb25zdCBESVJFQ1RJVkVTID0gW0RyYWdnYWJsZSwgU2xpbVNjcm9sbCwgV2lkZ2V0LCBFc1JvdXRlckxpbmssIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIEVzTW9kYWxEaXJlY3RpdmVdO1xyXG5cclxuQE5nTW9kdWxlKHsgaW1wb3J0czogWy4uLkRJUkVDVElWRVNdLCBleHBvcnRzOiBbLi4uRElSRUNUSVZFU10gfSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZXNNb2R1bGUgeyB9Il19
@@ -34,9 +34,9 @@ export class Draggable {
34
34
  });
35
35
  }
36
36
  }
37
- Draggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.AppState }], target: i0.ɵɵFactoryTarget.Directive });
38
- Draggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: Draggable, isStandalone: true, selector: "[emaDraggable]", inputs: { handlerSelector: ["emaDraggable", "handlerSelector"] }, ngImport: i0 });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Draggable, decorators: [{
37
+ Draggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.AppState }], target: i0.ɵɵFactoryTarget.Directive });
38
+ Draggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: Draggable, isStandalone: true, selector: "[emaDraggable]", inputs: { handlerSelector: ["emaDraggable", "handlerSelector"] }, ngImport: i0 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Draggable, decorators: [{
40
40
  type: Directive,
41
41
  args: [{
42
42
  selector: "[emaDraggable]",
@@ -46,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
46
46
  type: Input,
47
47
  args: ['emaDraggable']
48
48
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9zcmMvZHJhZ2dhYmxlL2RyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFXckUsTUFBTSxPQUFPLFNBQVM7SUFHbEIsWUFBb0IsV0FBdUIsRUFBVSxJQUFZLEVBQVUsTUFBZ0I7UUFBdkUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVTtJQUFJLENBQUM7SUFFaEcsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3RFLE1BQU07Z0JBQ04sTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7b0JBQ25CLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzFDLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO29CQUNoRSxjQUFjO3lCQUNULEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO3lCQUN4QixHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzt5QkFDZixHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzt5QkFDaEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7eUJBQ3BCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO3lCQUNyQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNqQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtvQkFDakIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEUsQ0FBQztnQkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2hFLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7c0dBN0JRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs2SUFFMEIsZUFBZTtzQkFBckMsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIGpRdWVyeTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2VtYURyYWdnYWJsZV1cIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZSB7XHJcbiAgICBASW5wdXQoJ2VtYURyYWdnYWJsZScpIGhhbmRsZXJTZWxlY3Rvcjogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIF9zdGF0ZTogQXBwU3RhdGUpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBoYW5kbGUgPSB0aGlzLmhhbmRsZXJTZWxlY3RvciB8fCAnLm1vZGFsLWhlYWRlcic7XHJcbiAgICAgICAgICAgIGpRdWVyeSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS5kcmFnZ2FibGUoe1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlLFxyXG4gICAgICAgICAgICAgICAgaGVscGVyOiBmdW5jdGlvbiAoXywgX18pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgb0JvZHkgPSBqUXVlcnkoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbm1lbnREaXYgPSBqUXVlcnkoJzxkaXYgaWQ9XCJkaXZfY29udGFpbm1lbnRcIj48L2Rpdj4nKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250YWlubWVudERpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCd6LWluZGV4JywgXCItOTk5OTlcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygndG9wJywgXCIwXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ2xlZnQnLCBcIjBcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygnd2lkdGgnLCBcIjEwMCVcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygnaGVpZ2h0JywgXCIxMDAlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbm1lbnREaXYuYXBwZW5kVG8ob0JvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uIChfLCBfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkuZmlsdGVyKCdib2R5JykuZmluZCgnI2Rpdl9jb250YWlubWVudCcpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5tZW50OiB0aGlzLl9zdGF0ZS5FbWJlZGRlZCA/IFwiI2Rpdl9jb250YWlubWVudFwiIDogbnVsbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9zcmMvZHJhZ2dhYmxlL2RyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFXckUsTUFBTSxPQUFPLFNBQVM7SUFHbEIsWUFBb0IsV0FBdUIsRUFBVSxJQUFZLEVBQVUsTUFBZ0I7UUFBdkUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVTtJQUFJLENBQUM7SUFFaEcsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3RFLE1BQU07Z0JBQ04sTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7b0JBQ25CLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzFDLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO29CQUNoRSxjQUFjO3lCQUNULEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO3lCQUN4QixHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzt5QkFDZixHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzt5QkFDaEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7eUJBQ3BCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO3lCQUNyQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNqQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtvQkFDakIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEUsQ0FBQztnQkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2hFLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUdBN0JRLFNBQVM7MkZBQVQsU0FBUzs0RkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs2SUFFMEIsZUFBZTtzQkFBckMsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIGpRdWVyeTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW2VtYURyYWdnYWJsZV1cIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZSB7XHJcbiAgICBASW5wdXQoJ2VtYURyYWdnYWJsZScpIGhhbmRsZXJTZWxlY3Rvcjogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIF9zdGF0ZTogQXBwU3RhdGUpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBoYW5kbGUgPSB0aGlzLmhhbmRsZXJTZWxlY3RvciB8fCAnLm1vZGFsLWhlYWRlcic7XHJcbiAgICAgICAgICAgIGpRdWVyeSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmNoaWxkcmVuKCc6Zmlyc3QtY2hpbGQnKS5kcmFnZ2FibGUoe1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlLFxyXG4gICAgICAgICAgICAgICAgaGVscGVyOiBmdW5jdGlvbiAoXywgX18pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgb0JvZHkgPSBqUXVlcnkoZG9jdW1lbnQpLmZpbmQoJ2JvZHknKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbm1lbnREaXYgPSBqUXVlcnkoJzxkaXYgaWQ9XCJkaXZfY29udGFpbm1lbnRcIj48L2Rpdj4nKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250YWlubWVudERpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCd6LWluZGV4JywgXCItOTk5OTlcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygndG9wJywgXCIwXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ2xlZnQnLCBcIjBcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygnd2lkdGgnLCBcIjEwMCVcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygnaGVpZ2h0JywgXCIxMDAlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbm1lbnREaXYuYXBwZW5kVG8ob0JvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uIChfLCBfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkuZmlsdGVyKCdib2R5JykuZmluZCgnI2Rpdl9jb250YWlubWVudCcpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5tZW50OiB0aGlzLl9zdGF0ZS5FbWJlZGRlZCA/IFwiI2Rpdl9jb250YWlubWVudFwiIDogbnVsbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==