@esfaenza/core 15.2.0

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 (180) hide show
  1. package/README.md +24 -0
  2. package/components/back-top/back-top.component.d.ts +12 -0
  3. package/components/breadcrumb/breadcrumb.component.d.ts +15 -0
  4. package/components/components.module.d.ts +25 -0
  5. package/components/error/404/pagenotfound.component.d.ts +13 -0
  6. package/components/error/500/servererror.component.d.ts +17 -0
  7. package/components/error/Angular/angularerror.component.d.ts +24 -0
  8. package/components/external-page/external_pages.component.d.ts +21 -0
  9. package/components/index.d.ts +5 -0
  10. package/components/jace-login/jace-login.component.d.ts +7 -0
  11. package/components/navbar/modules-board/jace-modules-board.component.d.ts +13 -0
  12. package/components/navbar/navbar.component.d.ts +60 -0
  13. package/components/navbar/navbar.component.loc.d.ts +8 -0
  14. package/components/page/pages.component.d.ts +23 -0
  15. package/components/public-api.d.ts +13 -0
  16. package/components/redirecter/redirecter.component.d.ts +19 -0
  17. package/components/sidebar/sidebar.component.d.ts +39 -0
  18. package/components/sidebar/sidebar.component.service.d.ts +27 -0
  19. package/directives/directives.module.d.ts +9 -0
  20. package/directives/draggable/draggable.directive.d.ts +13 -0
  21. package/directives/index.d.ts +5 -0
  22. package/directives/public-api.d.ts +4 -0
  23. package/directives/slim-scroll/slim-scroll.directive.d.ts +15 -0
  24. package/directives/widget/widget.directive.d.ts +9 -0
  25. package/domain/index.d.ts +5 -0
  26. package/domain/models/core/classes/ApplicationMenu.d.ts +16 -0
  27. package/domain/models/core/classes/EnvOptions.d.ts +14 -0
  28. package/domain/models/jace/classes/AccountScope.d.ts +9 -0
  29. package/domain/models/jace/classes/ActiveModuleView.d.ts +15 -0
  30. package/domain/models/jace/classes/JaceAccount.d.ts +26 -0
  31. package/domain/models/jace/classes/JaceIdentity.d.ts +17 -0
  32. package/domain/models/jace/classes/JaceModule.d.ts +6 -0
  33. package/domain/models/jace/classes/JacePermission.d.ts +9 -0
  34. package/domain/models/jace/classes/JaceRole.d.ts +11 -0
  35. package/domain/models/jace/classes/User.d.ts +4 -0
  36. package/domain/public-api.d.ts +11 -0
  37. package/domain/tokens.d.ts +16 -0
  38. package/esm2020/components/back-top/back-top.component.mjs +43 -0
  39. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +55 -0
  40. package/esm2020/components/components.module.mjs +74 -0
  41. package/esm2020/components/error/404/pagenotfound.component.mjs +27 -0
  42. package/esm2020/components/error/500/servererror.component.mjs +35 -0
  43. package/esm2020/components/error/Angular/angularerror.component.mjs +50 -0
  44. package/esm2020/components/esfaenza-core-components.mjs +5 -0
  45. package/esm2020/components/external-page/external_pages.component.mjs +46 -0
  46. package/esm2020/components/jace-login/jace-login.component.mjs +17 -0
  47. package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +40 -0
  48. package/esm2020/components/navbar/navbar.component.loc.mjs +36 -0
  49. package/esm2020/components/navbar/navbar.component.mjs +179 -0
  50. package/esm2020/components/page/pages.component.mjs +57 -0
  51. package/esm2020/components/public-api.mjs +14 -0
  52. package/esm2020/components/redirecter/redirecter.component.mjs +53 -0
  53. package/esm2020/components/sidebar/sidebar.component.mjs +179 -0
  54. package/esm2020/components/sidebar/sidebar.component.service.mjs +58 -0
  55. package/esm2020/directives/directives.module.mjs +18 -0
  56. package/esm2020/directives/draggable/draggable.directive.mjs +48 -0
  57. package/esm2020/directives/esfaenza-core-directives.mjs +5 -0
  58. package/esm2020/directives/public-api.mjs +5 -0
  59. package/esm2020/directives/slim-scroll/slim-scroll.directive.mjs +40 -0
  60. package/esm2020/directives/widget/widget.directive.mjs +36 -0
  61. package/esm2020/domain/esfaenza-core-domain.mjs +5 -0
  62. package/esm2020/domain/models/core/classes/ApplicationMenu.mjs +26 -0
  63. package/esm2020/domain/models/core/classes/EnvOptions.mjs +4 -0
  64. package/esm2020/domain/models/jace/classes/AccountScope.mjs +8 -0
  65. package/esm2020/domain/models/jace/classes/ActiveModuleView.mjs +9 -0
  66. package/esm2020/domain/models/jace/classes/JaceAccount.mjs +5 -0
  67. package/esm2020/domain/models/jace/classes/JaceIdentity.mjs +16 -0
  68. package/esm2020/domain/models/jace/classes/JaceModule.mjs +3 -0
  69. package/esm2020/domain/models/jace/classes/JacePermission.mjs +3 -0
  70. package/esm2020/domain/models/jace/classes/JaceRole.mjs +3 -0
  71. package/esm2020/domain/models/jace/classes/User.mjs +3 -0
  72. package/esm2020/domain/public-api.mjs +12 -0
  73. package/esm2020/domain/tokens.mjs +11 -0
  74. package/esm2020/esfaenza-core.mjs +5 -0
  75. package/esm2020/helpers/classes/ResizeListener.mjs +38 -0
  76. package/esm2020/helpers/esfaenza-core-helpers.mjs +5 -0
  77. package/esm2020/helpers/public-api.mjs +2 -0
  78. package/esm2020/lib/app.component.mjs +26 -0
  79. package/esm2020/lib/core.module.mjs +227 -0
  80. package/esm2020/modules/classes/_base.module.mjs +27 -0
  81. package/esm2020/modules/classes/t_c.module.mjs +85 -0
  82. package/esm2020/modules/esfaenza-core-modules.mjs +5 -0
  83. package/esm2020/modules/public-api.mjs +3 -0
  84. package/esm2020/pipes/esfaenza-core-pipes.mjs +5 -0
  85. package/esm2020/pipes/included_in/included_in.pipe.mjs +17 -0
  86. package/esm2020/pipes/pipes.module.mjs +20 -0
  87. package/esm2020/pipes/public-api.mjs +7 -0
  88. package/esm2020/pipes/safe_html/safe_html.pipe.mjs +18 -0
  89. package/esm2020/pipes/safe_script/safe_script.pipe.mjs +18 -0
  90. package/esm2020/pipes/safe_style/safe_style.pipe.mjs +18 -0
  91. package/esm2020/pipes/safe_url/safe_url.pipe.mjs +18 -0
  92. package/esm2020/public-api.mjs +4 -0
  93. package/esm2020/services/classes/app.accesstoken.mjs +51 -0
  94. package/esm2020/services/classes/app.errorhandler.mjs +41 -0
  95. package/esm2020/services/classes/app.event.mjs +27 -0
  96. package/esm2020/services/classes/app.httpextensions.loc.mjs +15 -0
  97. package/esm2020/services/classes/app.httpextensions.mjs +90 -0
  98. package/esm2020/services/classes/app.routeguard.mjs +22 -0
  99. package/esm2020/services/classes/app.session.mjs +33 -0
  100. package/esm2020/services/classes/app.state.mjs +172 -0
  101. package/esm2020/services/classes/preferences/app.cache.persistor.mjs +94 -0
  102. package/esm2020/services/classes/preferences/app.preference.persistor.mjs +94 -0
  103. package/esm2020/services/esfaenza-core-services.mjs +5 -0
  104. package/esm2020/services/public-api.mjs +10 -0
  105. package/fesm2015/esfaenza-core-components.mjs +870 -0
  106. package/fesm2015/esfaenza-core-components.mjs.map +1 -0
  107. package/fesm2015/esfaenza-core-directives.mjs +138 -0
  108. package/fesm2015/esfaenza-core-directives.mjs.map +1 -0
  109. package/fesm2015/esfaenza-core-domain.mjs +99 -0
  110. package/fesm2015/esfaenza-core-domain.mjs.map +1 -0
  111. package/fesm2015/esfaenza-core-helpers.mjs +44 -0
  112. package/fesm2015/esfaenza-core-helpers.mjs.map +1 -0
  113. package/fesm2015/esfaenza-core-modules.mjs +112 -0
  114. package/fesm2015/esfaenza-core-modules.mjs.map +1 -0
  115. package/fesm2015/esfaenza-core-pipes.mjs +97 -0
  116. package/fesm2015/esfaenza-core-pipes.mjs.map +1 -0
  117. package/fesm2015/esfaenza-core-services.mjs +598 -0
  118. package/fesm2015/esfaenza-core-services.mjs.map +1 -0
  119. package/fesm2015/esfaenza-core.mjs +251 -0
  120. package/fesm2015/esfaenza-core.mjs.map +1 -0
  121. package/fesm2020/esfaenza-core-components.mjs +863 -0
  122. package/fesm2020/esfaenza-core-components.mjs.map +1 -0
  123. package/fesm2020/esfaenza-core-directives.mjs +138 -0
  124. package/fesm2020/esfaenza-core-directives.mjs.map +1 -0
  125. package/fesm2020/esfaenza-core-domain.mjs +98 -0
  126. package/fesm2020/esfaenza-core-domain.mjs.map +1 -0
  127. package/fesm2020/esfaenza-core-helpers.mjs +44 -0
  128. package/fesm2020/esfaenza-core-helpers.mjs.map +1 -0
  129. package/fesm2020/esfaenza-core-modules.mjs +112 -0
  130. package/fesm2020/esfaenza-core-modules.mjs.map +1 -0
  131. package/fesm2020/esfaenza-core-pipes.mjs +97 -0
  132. package/fesm2020/esfaenza-core-pipes.mjs.map +1 -0
  133. package/fesm2020/esfaenza-core-services.mjs +595 -0
  134. package/fesm2020/esfaenza-core-services.mjs.map +1 -0
  135. package/fesm2020/esfaenza-core.mjs +251 -0
  136. package/fesm2020/esfaenza-core.mjs.map +1 -0
  137. package/helpers/classes/ResizeListener.d.ts +12 -0
  138. package/helpers/index.d.ts +5 -0
  139. package/helpers/public-api.d.ts +1 -0
  140. package/index.d.ts +5 -0
  141. package/lib/app.component.d.ts +12 -0
  142. package/lib/core.module.d.ts +82 -0
  143. package/modules/classes/_base.module.d.ts +4 -0
  144. package/modules/classes/t_c.module.d.ts +19 -0
  145. package/modules/index.d.ts +5 -0
  146. package/modules/public-api.d.ts +2 -0
  147. package/package.json +115 -0
  148. package/pipes/included_in/included_in.pipe.d.ts +7 -0
  149. package/pipes/index.d.ts +5 -0
  150. package/pipes/pipes.module.d.ts +11 -0
  151. package/pipes/public-api.d.ts +6 -0
  152. package/pipes/safe_html/safe_html.pipe.d.ts +10 -0
  153. package/pipes/safe_script/safe_script.pipe.d.ts +10 -0
  154. package/pipes/safe_style/safe_style.pipe.d.ts +10 -0
  155. package/pipes/safe_url/safe_url.pipe.d.ts +10 -0
  156. package/public-api.d.ts +3 -0
  157. package/services/classes/app.accesstoken.d.ts +15 -0
  158. package/services/classes/app.errorhandler.d.ts +11 -0
  159. package/services/classes/app.event.d.ts +10 -0
  160. package/services/classes/app.httpextensions.d.ts +34 -0
  161. package/services/classes/app.httpextensions.loc.d.ts +8 -0
  162. package/services/classes/app.routeguard.d.ts +10 -0
  163. package/services/classes/app.session.d.ts +14 -0
  164. package/services/classes/app.state.d.ts +59 -0
  165. package/services/classes/preferences/app.cache.persistor.d.ts +25 -0
  166. package/services/classes/preferences/app.preference.persistor.d.ts +25 -0
  167. package/services/index.d.ts +5 -0
  168. package/services/public-api.d.ts +9 -0
  169. package/theme/initial.scss +48 -0
  170. package/theme/styles/_base.scss +257 -0
  171. package/theme/styles/_bootstrap-override.scss +1624 -0
  172. package/theme/styles/_font.scss +86 -0
  173. package/theme/styles/_fullcalendar-override.scss +86 -0
  174. package/theme/styles/_libs-override.scss +97 -0
  175. package/theme/styles/_material-override.scss +231 -0
  176. package/theme/styles/_mixins.scss +50 -0
  177. package/theme/styles/_preloader.scss +119 -0
  178. package/theme/styles/_project-override.scss +2383 -0
  179. package/theme/styles/_variables.scss +52 -0
  180. package/theme/styles/skins/_blue.scss +16 -0
@@ -0,0 +1,179 @@
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation } from "@angular/core";
3
+ import { LocalizationService } from "@esfaenza/localizations";
4
+ // Applicazione
5
+ import { NavBarLoc } from "./navbar.component.loc";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@esfaenza/preferences";
8
+ import * as i2 from "@esfaenza/signalr-notifications";
9
+ import * as i3 from "@esfaenza/extensions";
10
+ import * as i4 from "@esfaenza/localizations";
11
+ import * as i5 from "@esfaenza/httpservice";
12
+ import * as i6 from "@esfaenza/core/services";
13
+ import * as i7 from "@angular/router";
14
+ import * as i8 from "@angular/common";
15
+ import * as i9 from "@angular/forms";
16
+ import * as i10 from "ngx-bootstrap/progressbar";
17
+ import * as i11 from "@angular/material/slide-toggle";
18
+ import * as i12 from "./modules-board/jace-modules-board.component";
19
+ // Chiamate ai Repository
20
+ const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
21
+ const GET_Adm_ClearAllCaches = "/api/Adm/ClearAllCaches";
22
+ export class Navbar {
23
+ constructor(prefsService, cacheService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router) {
24
+ this.prefsService = prefsService;
25
+ this.cacheService = cacheService;
26
+ this.MessageDef = MessageDef;
27
+ this.notifications = notifications;
28
+ this.msgExts = msgExts;
29
+ this.lc = lc;
30
+ this.http = http;
31
+ this.cdr = cdr;
32
+ this._state = _state;
33
+ this.sr = sr;
34
+ this.router = router;
35
+ this.isMenuCollapsed = false;
36
+ this.applicationVersion = myconfig.AppData.ComponentVersion;
37
+ this.myconfig = myconfig;
38
+ this.anomaliesProcessing = false;
39
+ this.intervals = [];
40
+ this.user = "";
41
+ this.tenant = "";
42
+ this.idtenant = "";
43
+ this.groupName = "";
44
+ this.IsJaceAdmin = false;
45
+ this.newVersionWarned = false;
46
+ this.notificationsSubs = [];
47
+ this._state.subscribe("menu.isCollapsed", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });
48
+ this.thisLoc = lc.Locale;
49
+ this.checkIdentity();
50
+ this.getActiveJaceModules();
51
+ var i = setInterval(() => {
52
+ if (!myconfig.redirectInProgress) {
53
+ this.checkIdentity();
54
+ this.cdr.markForCheck();
55
+ }
56
+ }, 1000);
57
+ this.intervals.push(i);
58
+ this.startSignalRListening();
59
+ this._state.subscribe("app.completedJob", (jobDescription) => {
60
+ this.msgExts.simpleSuccess(this.lc.loc("Job Completato") + ": " + jobDescription);
61
+ });
62
+ }
63
+ ngOnDestroy() {
64
+ this.intervals.forEach(i => { clearInterval(i); });
65
+ this.stopSignalRListening();
66
+ }
67
+ startSignalRListening() {
68
+ this.notificationsSubs.push(this.notifications.observe(this.MessageDef.IN_SendVersion).subscribe((message) => {
69
+ if (message != myconfig.AppData.ComponentVersion && !this.newVersionWarned) {
70
+ this.msgExts.simpleWarning(this.lc.loc("È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
71
+ this.newVersionWarned = true;
72
+ }
73
+ }));
74
+ }
75
+ stopSignalRListening() {
76
+ //Quando viene distrutta la navbar devo distruggere anche il client di signalr perch� vuol dire che ho chiuso la pagina
77
+ this.notificationsSubs.forEach(i => { i.unsubscribe(); });
78
+ this.notifications.disconnect();
79
+ }
80
+ checkIdentity() {
81
+ // Controllo identity
82
+ var identity = this.sr.getJaceIdentity();
83
+ if (identity) {
84
+ this.checkSession(identity);
85
+ if ((this.user != identity.FullName || this.idtenant != identity.Idtenant) && this.user) {
86
+ this.msgExts.simpleWarning(this.lc.loc("Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
87
+ }
88
+ this.user = identity.FullName;
89
+ this.tenant = identity.TenantName;
90
+ this.idtenant = identity.Idtenant;
91
+ this.Permissions = identity.Permissions;
92
+ this.Roles = identity.Roles;
93
+ this.IsJaceAdmin = identity.Roles.some(t => t == "Jace Admin") && !identity.Permissions.some(t => t == "alg_custom");
94
+ }
95
+ }
96
+ getActiveJaceModules() {
97
+ this.http.get(GET_Jace_GetActiveJaceModules).subscribe(res => {
98
+ this.Modules = res;
99
+ });
100
+ }
101
+ checkSession(identity) {
102
+ //10 minuti prima
103
+ if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {
104
+ myconfig.redirectInProgress = true;
105
+ //popup
106
+ this.msgExts.expiredSessionMessage(this.lc.loc('Expired session'), this.lc.loc("L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login."), () => {
107
+ myconfig.redirectInProgress = false;
108
+ this.router.navigate(["login"]);
109
+ });
110
+ }
111
+ }
112
+ ngAfterViewInit() {
113
+ this._state.setHeaderHeight(this.navbar.nativeElement.offsetHeight);
114
+ }
115
+ toggleMenu() {
116
+ this.isMenuCollapsed = !this.isMenuCollapsed;
117
+ this._state.notifyDataChanged("menu.isCollapsed", this.isMenuCollapsed);
118
+ }
119
+ logout() {
120
+ window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;
121
+ }
122
+ changeModule() {
123
+ window.location.href = myconfig.JaceDashboardUrl;
124
+ }
125
+ changeTenant() {
126
+ window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;
127
+ }
128
+ clearUserPreferences() {
129
+ this.prefsService.clear().subscribe();
130
+ this.msgExts.simpleSuccess(this.lc.loc("Preferenze utente ripulite"));
131
+ }
132
+ clearCacheClient() {
133
+ this.cacheService.clear().subscribe();
134
+ this.http.resetHttpUntimedCacheStorage();
135
+ this.http.resetHttpTimedCacheStorage();
136
+ this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
137
+ }
138
+ clearCacheServer() {
139
+ this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
140
+ this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
141
+ });
142
+ }
143
+ clearAll() {
144
+ this.cacheService.clear().subscribe();
145
+ this.http.resetHttpUntimedCacheStorage();
146
+ this.http.resetHttpTimedCacheStorage();
147
+ this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
148
+ this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
149
+ });
150
+ }
151
+ clearMessages() {
152
+ this.msgExts.clearMessages();
153
+ }
154
+ completedJobClicked(job) {
155
+ if (job.reportid) {
156
+ localStorage.setItem("JOB_RPT_PARS", JSON.stringify(job.reportpars));
157
+ this.router.navigate(["pages/rpt/rpt_details", { 'idRpt': job.reportid, 'searchOnOpen': true }]);
158
+ }
159
+ else if (job.id) {
160
+ this.router.navigate(["pages/job/job_details", { 'idJob': job.id }]);
161
+ }
162
+ else if (job.fileid) {
163
+ // Scaricare il file
164
+ }
165
+ else if (job.complexreportid) {
166
+ // Navigare al complex report (?)
167
+ }
168
+ }
169
+ }
170
+ Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1.PreferencesService }, { token: i1.CacheService }, { token: i2.BaseMessageService }, { token: i2.NotificationsService }, { token: i3.MessageService }, { token: i4.LocalizationService }, { token: i5.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i6.AppState }, { token: i6.TokenService }, { token: i7.Router }], target: i0.ɵɵFactoryTarget.Component });
171
+ Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" alt=\"\" class=\"d-md-block d-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" alt=\"\" class=\"d-md-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <li>\r\n <a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a>\r\n </li>\r\n <li class=\"d-none d-md-block\">\r\n <form role=\"search\" class=\"app-search\">\r\n <input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\r\n <a><i class=\"fa fa-search\" style=\"color: #aaa\"></i></a>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle>\r\n </a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\">\r\n <jace-modules-board [Modules]=\"Modules\"></jace-modules-board>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!-- USER MENU -->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"pull-right d-none d-sm-block\">\r\n <div class=\"app-white-text\">\r\n {{user}} - ({{tenant}})\r\n </div>\r\n <div class=\"app-white-text text-sm-center\">\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 1\">\r\n {{'Ambiente di Produzione' | localize : lc}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <div>\r\n {{user}} - {{tenant}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\">&nbsp;</i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\">&nbsp;</i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\">&nbsp;</i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\">&nbsp;</i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\">&nbsp;</i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \">&nbsp;</i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\">&nbsp;</i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i12.JaceModulesBoardComponent, selector: "jace-modules-board", inputs: ["Modules"] }, { kind: "pipe", type: i4.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
173
+ type: Component,
174
+ args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" alt=\"\" class=\"d-md-block d-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" alt=\"\" class=\"d-md-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <li>\r\n <a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a>\r\n </li>\r\n <li class=\"d-none d-md-block\">\r\n <form role=\"search\" class=\"app-search\">\r\n <input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\r\n <a><i class=\"fa fa-search\" style=\"color: #aaa\"></i></a>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle>\r\n </a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\">\r\n <jace-modules-board [Modules]=\"Modules\"></jace-modules-board>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!-- USER MENU -->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"pull-right d-none d-sm-block\">\r\n <div class=\"app-white-text\">\r\n {{user}} - ({{tenant}})\r\n </div>\r\n <div class=\"app-white-text text-sm-center\">\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 1\">\r\n {{'Ambiente di Produzione' | localize : lc}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <div>\r\n {{user}} - {{tenant}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\">&nbsp;</i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\">&nbsp;</i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\">&nbsp;</i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\">&nbsp;</i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\">&nbsp;</i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \">&nbsp;</i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\">&nbsp;</i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
175
+ }], ctorParameters: function () { return [{ type: i1.PreferencesService }, { type: i1.CacheService }, { type: i2.BaseMessageService }, { type: i2.NotificationsService }, { type: i3.MessageService }, { type: i4.LocalizationService }, { type: i5.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i6.AppState }, { type: i6.TokenService }, { type: i7.Router }]; }, propDecorators: { navbar: [{
176
+ type: ViewChild,
177
+ args: ["navbar", { static: false }]
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1oSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVc5RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVuRCx5QkFBeUI7QUFDekIsTUFBTSw2QkFBNkIsR0FBVyxnQ0FBZ0MsQ0FBQztBQUMvRSxNQUFNLHNCQUFzQixHQUFXLHlCQUF5QixDQUFDO0FBYWpFLE1BQU0sT0FBTyxNQUFNO0lBcUJmLFlBQW9CLFlBQWdDLEVBQ3hDLFlBQTBCLEVBQzFCLFVBQThCLEVBQzlCLGFBQW1DLEVBQ25DLE9BQXVCLEVBQ3hCLEVBQXVCLEVBQ3RCLElBQWlCLEVBQ2xCLEdBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLEVBQWdCLEVBQ2YsTUFBYztRQVZOLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixX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MnhUQXNJTSwweE1EeEdhLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDOzJGQU03RCxNQUFNO2tCQVJsQixTQUFTOytCQUNJLFFBQVEsaUJBQ0gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQ3ZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07d1lBa0JQLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgQXBwbGljYXRpb25Kb2IsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuaW1wb3J0IHsgSmFjZUlkZW50aXR5LCBBY3RpdmVNb2R1bGVWaWV3LCBFbnZPcHRpb25zIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IE5hdkJhckxvYyB9IGZyb20gXCIuL25hdmJhci5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmNvbnN0IEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzOiBzdHJpbmcgPSBcIi9hcGkvSmFjZS9HZXRBY3RpdmVKYWNlTW9kdWxlc1wiO1xyXG5jb25zdCBHRVRfQWRtX0NsZWFyQWxsQ2FjaGVzOiBzdHJpbmcgPSBcIi9hcGkvQWRtL0NsZWFyQWxsQ2FjaGVzXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogRW52T3B0aW9ucztcclxuZGVjbGFyZSB2YXIgZGF5anM7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcIm5hdmJhclwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdkJhckxvYyB9XSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0eWxlVXJsczogW1wiLi9uYXZiYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL25hdmJhci5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZiYXIge1xyXG4gICAgcHVibGljIGlzTWVudUNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uVmVyc2lvbiA9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbjtcclxuICAgIHB1YmxpYyBteWNvbmZpZyA9IG15Y29uZmlnO1xyXG4gICAgcHVibGljIGFub21hbGllc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpbnRlcnZhbHM6IGFueVtdID0gW107XHJcblxyXG4gICAgcHVibGljIHVzZXIgPSBcIlwiO1xyXG4gICAgcHVibGljIHRlbmFudCA9IFwiXCI7XHJcbiAgICBwdWJsaWMgaWR0ZW5hbnQgPSBcIlwiO1xyXG4gICAgcHVibGljIGdyb3VwTmFtZSA9IFwiXCI7XHJcbiAgICBwdWJsaWMgSXNKYWNlQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRoaXNMb2M6IHN0cmluZztcclxuICAgIEBWaWV3Q2hpbGQoXCJuYXZiYXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG5hdmJhcjogRWxlbWVudFJlZjtcclxuICAgIHB1YmxpYyBQZXJtaXNzaW9uczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgUm9sZXM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIE1vZHVsZXM6IEFjdGl2ZU1vZHVsZVZpZXdbXTtcclxuXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlZnNTZXJ2aWNlOiBQcmVmZXJlbmNlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIE1lc3NhZ2VEZWY6IEJhc2VNZXNzYWdlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSFRUUFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsXHJcbiAgICAgICAgcHVibGljIHNyOiBUb2tlblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7IHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7IH0pO1xyXG5cclxuICAgICAgICB0aGlzLnRoaXNMb2MgPSBsYy5Mb2NhbGU7XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tJZGVudGl0eSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKTtcclxuXHJcbiAgICAgICAgdmFyIGkgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWxzLnB1c2goaSk7XHJcbiAgICAgICAgdGhpcy5zdGFydFNpZ25hbFJMaXN0ZW5pbmcoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLmNvbXBsZXRlZEpvYlwiLCAoam9iRGVzY3JpcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJKb2IgQ29tcGxldGF0b1wiKSArIFwiOiBcIiArIGpvYkRlc2NyaXB0aW9uKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmludGVydmFscy5mb3JFYWNoKGkgPT4geyBjbGVhckludGVydmFsKGkpOyB9KTtcclxuICAgICAgICB0aGlzLnN0b3BTaWduYWxSTGlzdGVuaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRTaWduYWxSTGlzdGVuaW5nKCkge1xyXG5cclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWJzLnB1c2godGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX1NlbmRWZXJzaW9uKS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uICYmICF0aGlzLm5ld1ZlcnNpb25XYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiw4ggZGlzcG9uaWJpbGUgdW5hIG51b3ZhIHZlcnNpb25lIHBlciBsJ2FwcGxpY2F6aW9uZSBjb3JyZW50ZS4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld1ZlcnNpb25XYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzdG9wU2lnbmFsUkxpc3RlbmluZygpIHtcclxuICAgICAgICAvL1F1YW5kbyB2aWVuZSBkaXN0cnV0dGEgbGEgbmF2YmFyIGRldm8gZGlzdHJ1Z2dlcmUgYW5jaGUgaWwgY2xpZW50IGRpIHNpZ25hbHIgcGVyY2jvv70gdnVvbCBkaXJlIGNoZSBobyBjaGl1c28gbGEgcGFnaW5hXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU3Vicy5mb3JFYWNoKGkgPT4geyBpLnVuc3Vic2NyaWJlKCk7IH0pO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZGVudGl0eSgpIHtcclxuICAgICAgICAvLyBDb250cm9sbG8gaWRlbnRpdHlcclxuICAgICAgICB2YXIgaWRlbnRpdHkgPSB0aGlzLnNyLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIGlmIChpZGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrU2Vzc2lvbihpZGVudGl0eSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoKHRoaXMudXNlciAhPSBpZGVudGl0eS5GdWxsTmFtZSB8fCB0aGlzLmlkdGVuYW50ICE9IGlkZW50aXR5LklkdGVuYW50KSAmJiB0aGlzLnVzZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiTGUgaW5mb3JtYXppb25pIGRpIFNlc3Npb25lIChUZW5hbnQvQWNjb3VudCkgc29ubyBjYW1iaWF0ZSBhIHNlZ3VpdG8gZGkgdW4gbG9naW4gc3UgbW9kdWxvIGRpdmVyc28gdXRpbGl6emFuZG8gZGl2ZXJzbyBUZW5hbnQvVXRlbnRlIHN1bGxvIHN0ZXNzbyBicm93c2VyLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy51c2VyID0gaWRlbnRpdHkuRnVsbE5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50ID0gaWRlbnRpdHkuVGVuYW50TmFtZTtcclxuICAgICAgICAgICAgdGhpcy5pZHRlbmFudCA9IGlkZW50aXR5LklkdGVuYW50O1xyXG4gICAgICAgICAgICB0aGlzLlBlcm1pc3Npb25zID0gaWRlbnRpdHkuUGVybWlzc2lvbnM7XHJcbiAgICAgICAgICAgIHRoaXMuUm9sZXMgPSBpZGVudGl0eS5Sb2xlcztcclxuICAgICAgICAgICAgdGhpcy5Jc0phY2VBZG1pbiA9IGlkZW50aXR5LlJvbGVzLnNvbWUodCA9PiB0ID09IFwiSmFjZSBBZG1pblwiKSAmJiAhaWRlbnRpdHkuUGVybWlzc2lvbnMuc29tZSh0ID0+IHQgPT0gXCJhbGdfY3VzdG9tXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb24oaWRlbnRpdHk6IEphY2VJZGVudGl0eSkge1xyXG4gICAgICAgIC8vMTAgbWludXRpIHByaW1hXHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy9wb3B1cFxyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuZXhwaXJlZFNlc3Npb25NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoJ0V4cGlyZWQgc2Vzc2lvbicpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoXCJMJ2F0dHVhbGUgc2Vzc2lvbmUgZGkgbGF2b3JvIG5vbiDDqCBwacO5IHZhbGlkYS48YnI+U2kgcHJlZ2EgZGkgZXNlZ3VpcmUgbnVvdmFtZW50ZSBpbCBsb2dpbi5cIiksXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0SGVhZGVySGVpZ2h0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9ICF0aGlzLmlzTWVudUNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dvdXQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ2luL3RlbmFudD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclVzZXJQcmVmZXJlbmNlcygpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVTZXJ2ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQWRtX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIGlmIChqb2IucmVwb3J0aWQpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJKT0JfUlBUX1BBUlNcIiwgSlNPTi5zdHJpbmdpZnkoam9iLnJlcG9ydHBhcnMpKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicGFnZXMvcnB0L3JwdF9kZXRhaWxzXCIsIHsgJ2lkUnB0Jzogam9iLnJlcG9ydGlkLCAnc2VhcmNoT25PcGVuJzogdHJ1ZSB9XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpvYi5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwYWdlcy9qb2Ivam9iX2RldGFpbHNcIiwgeyAnaWRKb2InOiBqb2IuaWQgfV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChqb2IuZmlsZWlkKSB7XHJcbiAgICAgICAgICAgIC8vIFNjYXJpY2FyZSBpbCBmaWxlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGpvYi5jb21wbGV4cmVwb3J0aWQpIHtcclxuICAgICAgICAgICAgLy8gTmF2aWdhcmUgYWwgY29tcGxleCByZXBvcnQgKD8pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGF6LW5hdmJhciBmaXhlZC10b3BcIj5cclxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kXCIgcm91dGVyTGluaz1cIi9wYWdlcy9kYXNoYm9hcmRcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvLnBuZ1wiIGFsdD1cIlwiIGNsYXNzPVwiZC1tZC1ibG9jayBkLW5vbmVcIlxyXG4gICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXYgZC1tZC1ibG9jayBkLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nb19zbS5wbmdcIiBhbHQ9XCJcIiBjbGFzcz1cImQtbWQtbm9uZVwiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtc20tdiBkLW1kLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdiBuYXZiYXItZmlsbGFibGVcIj5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiBjbGFzcz1cImNvbGxhcHNlLW1lbnUtbGluayBmYSBmYS1uYXZpY29uXCI+PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwiZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGZvcm0gcm9sZT1cInNlYXJjaFwiIGNsYXNzPVwiYXBwLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGE+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIiBzdHlsZT1cImNvbG9yOiAjYWFhXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiByaWdodC1zZWN0aW9uXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gam9iIGluIGVzZWN1emlvbmUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgdXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtjbGFzcy5mYS1zcGluXT1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhIGZhLWNvZyBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXIgbmF2LWpvYnMtaWNvblwiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibmF2LWpvYnMtbWVudVwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J0pvYiBBcHBsaWNhdGl2aScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGFwcC1tYXJnaW4tcmlnaHQtNVwiPnt7J05vdGlmaWNoZScgfCBsb2NhbGl6ZSA6IGxjfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5hbGxKb2JzLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tcIkFsIG1vbWVudG8gbm9uIGMnw6ggbnVsbGEgaW4gZXNlY3V6aW9uZVwiIHwgbG9jYWxpemUgOiBsY319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBqb2Igb2YgX3N0YXRlLmFsbEpvYnM7IGxldCBsYXN0ID0gbGFzdFwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS01XT1cIiFsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCIgY2xhc3M9XCJhcHAtbGluayBhcHAtbm8tc2VsZWN0aW9uIGFwcC1pbmxpbmUgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY29tcGxldGVkSm9iQ2xpY2tlZChqb2IpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiPnt7am9iLnBlcmNlbnRhZ2V9fSU8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiPnt7ICdDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCJqb2IucGVyY2VudGFnZVwiIFtzdHJpcGVkXT1cInRydWVcIiBbYW5pbWF0ZV09XCJ0cnVlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdHlwZT1cInN1Y2Nlc3NcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCIxMDBcIiBbc3RyaXBlZF09XCJmYWxzZVwiIFthbmltYXRlXT1cImZhbHNlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIG1vZHVsaS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodCB1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYSBmYS10aCBtb2R1bGUtbmF2LW1lbnUtbGluayBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXJcIiBkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibW9kdWxlLWJvYXJkLW1lbnUgY29udGFpbmVyXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxqYWNlLW1vZHVsZXMtYm9hcmQgW01vZHVsZXNdPVwiTW9kdWxlc1wiPjwvamFjZS1tb2R1bGVzLWJvYXJkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFVTRVIgTUVOVSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgdXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb25cIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCIgc3R5bGU9XCJoZWlnaHQ6NTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHVzZXItbGluayBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnQgYXBwLW1hcmdpbi1yaWdodC0xMCBhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvdXNlcnMvdXNlci5qcGcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9jaHJpc3RtYXMucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9oYWxsb3dlZW4ucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiAqbmdJZj1cIl9zdGF0ZS5oYWxsb3dlZW5UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgZC1ub25lIGQtc20tYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VzZXJ9fSAtICh7e3RlbmFudH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0IHRleHQtc20tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSAyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdGFnaW5nJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSA2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgUHJvZHV6aW9uZScgfCBsb2NhbGl6ZSA6IGxjfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodC11c2VyIGFwcC1uby1wYWRkaW5nXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvdXNlcnMvdXNlci5qcGcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvY2hyaXN0bWFzLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgc3R5bGU9XCJyaWdodDo2MnB4O1wiICpuZ0lmPVwiX3N0YXRlLmNocmlzdG1hc1RpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9oYWxsb3dlZW4ucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBzdHlsZT1cInJpZ2h0OjYycHg7XCIgKm5nSWY9XCJfc3RhdGUuaGFsbG93ZWVuVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0IGFwcC1tYXJnaW4tdG9wLTEwIGFwcC1tYXJnaW4tYm90dG9tLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXNlcn19IC0ge3t0ZW5hbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSAyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50ID09IDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBbWJpZW50ZSBkaSBTdGFnaW5nJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXljb25maWcuQXBwRGF0YS5Db21wb25lbnRFbnZpcm9ubWVudCA9PSA2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBQZXJtaXNzaW9uc1wiPnt7cH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5Sb2xlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIFJvbGVzXCI+e3tyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwidGhpc0xvYyA9PSAnZW4tVVMnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnaXQtSVQnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+U3dpdGNoIHRvIEl0YWxpYW4gU2l0ZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cInRoaXNMb2MgPT0gJ2l0LUlUJ1wiIChjbGljayk9XCJsYy5jaGFuZ2VMb2NhbGUoJ2VuLVVTJylcIj48aSBjbGFzcz1cImZhIGZhLWdsb2JlXCI+Jm5ic3A7PC9pPlBhc3NhIGFsIFNpdG8gaW4gSW5nbGVzZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hhbmdlTW9kdWxlKClcIj48aSBjbGFzcz1cImZhIGZhLXRoXCI+Jm5ic3A7PC9pPnt7J0NhbWJpYSBNb2R1bG8nIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjaGFuZ2VUZW5hbnQoKVwiPjxpIGNsYXNzPVwiZmEgZmEtYnVpbGRpbmdcIj4mbmJzcDs8L2k+e3snQ2FtYmlhIFRlbmFudCcgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyVXNlclByZWZlcmVuY2VzKClcIj48aSBjbGFzcz1cImZhIGZhLXVzZXItdGltZXNcIj4mbmJzcDs8L2k+e3snUmlwdWxpc2NpIGxlIFByZWZlcmVuemUgVXRlbnRlJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPjxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBcIj4mbmJzcDs8L2k+e3snUmlwdWxpc2NpIGxhIENhY2hlJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJsb2dvdXQoKVwiPjxpIGNsYXNzPVwiZmEgZmEtcG93ZXItb2ZmXCI+Jm5ic3A7PC9pPkxvZyBvdXQ8L2E+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3VsPlxyXG4gICAgPC91bD5cclxuPC9uYXY+Il19
@@ -0,0 +1,57 @@
1
+ // Angular
2
+ import { Component, HostListener, ViewEncapsulation } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ import * as i2 from "@esfaenza/core/services";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/router";
8
+ import * as i5 from "../back-top/back-top.component";
9
+ import * as i6 from "../breadcrumb/breadcrumb.component";
10
+ import * as i7 from "../navbar/navbar.component";
11
+ import * as i8 from "../sidebar/sidebar.component";
12
+ export class PagesComponent {
13
+ constructor(sanitizer, _state, _location, router) {
14
+ this.sanitizer = sanitizer;
15
+ this._state = _state;
16
+ this._location = _location;
17
+ this.router = router;
18
+ this.isMenuCollapsed = false;
19
+ this.maxHeight = 0;
20
+ this.dynamicCSSUrl = null;
21
+ this.loadedModuleCss = "";
22
+ this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
23
+ this.isMenuCollapsed = isCollapsed;
24
+ });
25
+ }
26
+ ngOnInit() {
27
+ this.getCurrentPageName();
28
+ this.getHeight();
29
+ }
30
+ getCurrentPageName() {
31
+ var url = this._location.path();
32
+ setTimeout(function () {
33
+ window.scrollTo(0, 0);
34
+ jQuery('a[href="#' + url + '"]').closest("li").closest("ul").closest("li").addClass("sidebar-item-expanded");
35
+ });
36
+ }
37
+ hideMenu() {
38
+ this._state.notifyDataChanged("menu.isCollapsed", true);
39
+ }
40
+ getHeight() {
41
+ var html = document.documentElement;
42
+ this.maxHeight = html.clientHeight - 60;
43
+ }
44
+ onResize(event) {
45
+ this.getHeight();
46
+ }
47
+ }
48
+ PagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.AppState }, { token: i3.Location }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
49
+ PagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PagesComponent, selector: "pages", host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<navbar></navbar>\r\n<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <sidebar></sidebar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n\r\n <div class=\"main\">\r\n <breadcrumb></breadcrumb>\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{margin-left:230px;padding:20px 40px;margin-top:60px;position:relative;width:100%;overflow:auto}.main-wrapper.menu-collapsed{margin-left:50px}.main{height:100%;min-height:500px}.footer{padding-top:20px}.footer .footer-main{display:inline-block}.footer .footer-main .copyright{color:#242424;font-size:14px}.footer .footer-main .copyright a{color:#242d3a}.footer .footer-main .share{padding-left:5px;margin:0}.footer .footer-main .share li{list-style:none;float:left;margin-left:10px}.footer .footer-main .share li i{cursor:pointer;transition:all .1s ease;color:#fff;padding:9px 9px 6px;font-size:12px;border-radius:50%;background-color:#242d3a}.footer .footer-main .share li i.socicon-facebook{background-color:#3b5998}.footer .footer-main .share li i.socicon-twitter{background-color:#55acee}.footer .footer-main .share li i.socicon-instagram{background-color:#8a3ab9}.footer .footer-main .share li i.socicon-pinterest{background-color:#c92228}.footer .footer-main .share li i:hover{opacity:.9}.footer .created{color:#242424;font-size:14px}.footer .created i{color:red}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:50px}.az-overlay{display:block}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i5.BackTop, selector: "back-top", inputs: ["position", "showSpeed", "moveSpeed"] }, { kind: "component", type: i6.Breadcrumb, selector: "breadcrumb" }, { kind: "component", type: i7.Navbar, selector: "navbar" }, { kind: "component", type: i8.Sidebar, selector: "sidebar" }], encapsulation: i0.ViewEncapsulation.None });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: "pages", encapsulation: ViewEncapsulation.None, template: "<navbar></navbar>\r\n<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <sidebar></sidebar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n\r\n <div class=\"main\">\r\n <breadcrumb></breadcrumb>\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{margin-left:230px;padding:20px 40px;margin-top:60px;position:relative;width:100%;overflow:auto}.main-wrapper.menu-collapsed{margin-left:50px}.main{height:100%;min-height:500px}.footer{padding-top:20px}.footer .footer-main{display:inline-block}.footer .footer-main .copyright{color:#242424;font-size:14px}.footer .footer-main .copyright a{color:#242d3a}.footer .footer-main .share{padding-left:5px;margin:0}.footer .footer-main .share li{list-style:none;float:left;margin-left:10px}.footer .footer-main .share li i{cursor:pointer;transition:all .1s ease;color:#fff;padding:9px 9px 6px;font-size:12px;border-radius:50%;background-color:#242d3a}.footer .footer-main .share li i.socicon-facebook{background-color:#3b5998}.footer .footer-main .share li i.socicon-twitter{background-color:#55acee}.footer .footer-main .share li i.socicon-instagram{background-color:#8a3ab9}.footer .footer-main .share li i.socicon-pinterest{background-color:#c92228}.footer .footer-main .share li i:hover{opacity:.9}.footer .created{color:#242424;font-size:14px}.footer .created i{color:red}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:50px}.az-overlay{display:block}}\n"] }]
53
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.AppState }, { type: i3.Location }, { type: i4.Router }]; }, propDecorators: { onResize: [{
54
+ type: HostListener,
55
+ args: ['window:resize', ['$event']]
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9wYWdlL3BhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcGFnZS9wYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFnQjNFLE1BQU0sT0FBTyxjQUFjO0lBTXZCLFlBQW1CLFNBQXVCLEVBQVMsTUFBZ0IsRUFBVSxTQUFtQixFQUFTLE1BQWM7UUFBcEcsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUxoSCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLGtCQUFhLEdBQW9CLElBQUksQ0FBQztRQUN0QyxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUdoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsVUFBVSxDQUFDO1lBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDakgsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLFNBQVM7UUFDWixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUdELFFBQVEsQ0FBQyxLQUFLO1FBQ1YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7OzJHQXJDUSxjQUFjOytGQUFkLGNBQWMsMkdDakIzQixvbEJBZU07MkZERU8sY0FBYztrQkFOMUIsU0FBUzsrQkFDSSxPQUFPLGlCQUNGLGlCQUFpQixDQUFDLElBQUk7c0tBdUNyQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgalF1ZXJ5O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJwYWdlc1wiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHN0eWxlVXJsczogW1wiLi9wYWdlcy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGFnZXMuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZXNDb21wb25lbnQge1xyXG4gICAgcHVibGljIGlzTWVudUNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIG1heEhlaWdodDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBkeW5hbWljQ1NTVXJsOiBTYWZlUmVzb3VyY2VVcmwgPSBudWxsO1xyXG4gICAgcHVibGljIGxvYWRlZE1vZHVsZUNzczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24sIHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50UGFnZU5hbWUoKTtcclxuICAgICAgICB0aGlzLmdldEhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRQYWdlTmFtZSgpOiB2b2lkIHtcclxuICAgICAgICB2YXIgdXJsID0gdGhpcy5fbG9jYXRpb24ucGF0aCgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgICAgICAgICAgIGpRdWVyeSgnYVtocmVmPVwiIycgKyB1cmwgKyAnXCJdJykuY2xvc2VzdChcImxpXCIpLmNsb3Nlc3QoXCJ1bFwiKS5jbG9zZXN0KFwibGlcIikuYWRkQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhpZGVNZW51KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SGVpZ2h0KCkge1xyXG4gICAgICAgIHZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQgLSA2MDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICAgIG9uUmVzaXplKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5nZXRIZWlnaHQoKTtcclxuICAgIH1cclxufSIsIjxuYXZiYXI+PC9uYXZiYXI+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8c2lkZWJhcj48L3NpZGViYXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4td3JhcHBlclwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm1heEhlaWdodFwiIFtuZ0NsYXNzXT1cInsnbWVudS1jb2xsYXBzZWQnOiBpc01lbnVDb2xsYXBzZWR9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhei1vdmVybGF5XCIgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgKGNsaWNrKT1cImhpZGVNZW51KClcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluXCI+XHJcbiAgICAgICAgICAgICAgICA8YnJlYWRjcnVtYj48L2JyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJhY2stdG9wIFtwb3NpdGlvbl09XCIyMDBcIj48L2JhY2stdG9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,14 @@
1
+ export * from './back-top/back-top.component';
2
+ export * from './breadcrumb/breadcrumb.component';
3
+ export * from './error/404/pagenotfound.component';
4
+ export * from './error/500/servererror.component';
5
+ export * from './error/Angular/angularerror.component';
6
+ export * from './page/pages.component';
7
+ export * from './external-page/external_pages.component';
8
+ export * from './jace-login/jace-login.component';
9
+ export * from './navbar/navbar.component';
10
+ export * from './navbar/modules-board/jace-modules-board.component';
11
+ export * from './redirecter/redirecter.component';
12
+ export * from './sidebar/sidebar.component';
13
+ export * from './components.module';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYWNrLXRvcC9iYWNrLXRvcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLzQwNC9wYWdlbm90Zm91bmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci81MDAvc2VydmVyZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9Bbmd1bGFyL2FuZ3VsYXJlcnJvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2UvcGFnZXMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9leHRlcm5hbC1wYWdlL2V4dGVybmFsX3BhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vamFjZS1sb2dpbi9qYWNlLWxvZ2luLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2YmFyL25hdmJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmJhci9tb2R1bGVzLWJvYXJkL2phY2UtbW9kdWxlcy1ib2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMubW9kdWxlJzsiXX0=
@@ -0,0 +1,53 @@
1
+ // Angular
2
+ import { Component, Inject, Optional, ViewEncapsulation } from "@angular/core";
3
+ // Applicazione
4
+ import { REDIRECT_MAP } from "@esfaenza/core/domain";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@esfaenza/core/services";
7
+ import * as i2 from "@angular/router";
8
+ import * as i3 from "@angular/common";
9
+ // TODO: loc.ts
10
+ export class RedirecterComponent {
11
+ constructor(_state, route, router, redirectMap) {
12
+ this._state = _state;
13
+ this.route = route;
14
+ this.router = router;
15
+ this.redirectMap = redirectMap;
16
+ this.Error = "";
17
+ }
18
+ ngOnInit() {
19
+ let url = this.route.snapshot.params["url"];
20
+ //§ = 167... non so perché ma scrivendolo esplicitamente non funziona
21
+ let parts = url.split(String.fromCharCode(167)).filter(s => !!s);
22
+ if (parts.length < 2) {
23
+ this.Error = "L'url passato è incompleto. Impossibile riconoscerlo";
24
+ return;
25
+ }
26
+ else {
27
+ var redirect = this.redirectMap[parts[0]];
28
+ if (!redirect) {
29
+ this.Error = "L'url passato fa riferimento a un oggetto non navigabile. Impossibile procedere";
30
+ return;
31
+ }
32
+ if (redirect.params.length != parts.length - 1) {
33
+ this.Error = "Il numero di parametri richiesti per navigare all'entità richiesta è diverso dal numero di parametri passato";
34
+ return;
35
+ }
36
+ let parObject = {};
37
+ redirect.params.forEach((t, i) => parObject[t] = parts[i + 1]);
38
+ this.router.navigate(["pages/" + redirect.url, parObject]);
39
+ }
40
+ }
41
+ }
42
+ RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: REDIRECT_MAP, optional: true }], target: i0.ɵɵFactoryTarget.Component });
43
+ RedirecterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedirecterComponent, selector: "redirecter", ngImport: i0, template: "<div *ngIf=\"Error\">{{Error}}</div>", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: "redirecter", encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Error\">{{Error}}</div>" }]
47
+ }], ctorParameters: function () { return [{ type: i1.AppState }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: undefined, decorators: [{
48
+ type: Optional
49
+ }, {
50
+ type: Inject,
51
+ args: [REDIRECT_MAP]
52
+ }] }]; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9FLGVBQWU7QUFDZixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBRXJELGVBQWU7QUFNZixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQW1CLE1BQWdCLEVBQVUsS0FBcUIsRUFBUyxNQUFjLEVBQTRDLFdBQW1FO1FBQXJMLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBNEMsZ0JBQVcsR0FBWCxXQUFXLENBQXdEO1FBRmpNLFVBQUssR0FBVyxFQUFFLENBQUM7SUFFa0wsQ0FBQztJQUU3TSxRQUFRO1FBQ0osSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELHFFQUFxRTtRQUNyRSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLHNEQUFzRCxDQUFDO1lBQ3BFLE9BQU87U0FDVjthQUNJO1lBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsaUZBQWlGLENBQUM7Z0JBQy9GLE9BQU87YUFDVjtZQUVELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsOEdBQThHLENBQUM7Z0JBQzVILE9BQU87YUFDVjtZQUVELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNuQixRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzlEO0lBQ0wsQ0FBQzs7Z0hBL0JRLG1CQUFtQiw4RkFJbUYsWUFBWTtvR0FKbEgsbUJBQW1CLGtEQ2hCaEMsc0NBQWtDOzJGRGdCckIsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNJLFlBQVksaUJBQ1AsaUJBQWlCLENBQUMsSUFBSTs7MEJBT3VELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IFJFRElSRUNUX01BUCB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuXHJcbi8vIFRPRE86IGxvYy50c1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInJlZGlyZWN0ZXJcIixcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3JlZGlyZWN0ZXIuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RlckNvbXBvbmVudCB7XHJcblxyXG4gICAgcHVibGljIEVycm9yOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBAT3B0aW9uYWwoKSBASW5qZWN0KFJFRElSRUNUX01BUCkgcHJpdmF0ZSByZWRpcmVjdE1hcDogeyBbaW5kZXg6IHN0cmluZ106IHsgdXJsOiBzdHJpbmcsIHBhcmFtczogc3RyaW5nW10gfSB9KSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBsZXQgdXJsOiBzdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcInVybFwiXTtcclxuICAgICAgICAvL8KnID0gMTY3Li4uIG5vbiBzbyBwZXJjaMOpIG1hIHNjcml2ZW5kb2xvIGVzcGxpY2l0YW1lbnRlIG5vbiBmdW56aW9uYVxyXG4gICAgICAgIGxldCBwYXJ0cyA9IHVybC5zcGxpdChTdHJpbmcuZnJvbUNoYXJDb2RlKDE2NykpLmZpbHRlcihzID0+ICEhcyk7XHJcblxyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRXJyb3IgPSBcIkwndXJsIHBhc3NhdG8gw6ggaW5jb21wbGV0by4gSW1wb3NzaWJpbGUgcmljb25vc2NlcmxvXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciByZWRpcmVjdCA9IHRoaXMucmVkaXJlY3RNYXBbcGFydHNbMF1dO1xyXG4gICAgICAgICAgICBpZiAoIXJlZGlyZWN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVycm9yID0gXCJMJ3VybCBwYXNzYXRvIGZhIHJpZmVyaW1lbnRvIGEgdW4gb2dnZXR0byBub24gbmF2aWdhYmlsZS4gSW1wb3NzaWJpbGUgcHJvY2VkZXJlXCI7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChyZWRpcmVjdC5wYXJhbXMubGVuZ3RoICE9IHBhcnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuRXJyb3IgPSBcIklsIG51bWVybyBkaSBwYXJhbWV0cmkgcmljaGllc3RpIHBlciBuYXZpZ2FyZSBhbGwnZW50aXTDoCByaWNoaWVzdGEgw6ggZGl2ZXJzbyBkYWwgbnVtZXJvIGRpIHBhcmFtZXRyaSBwYXNzYXRvXCI7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBwYXJPYmplY3QgPSB7fTtcclxuICAgICAgICAgICAgcmVkaXJlY3QucGFyYW1zLmZvckVhY2goKHQsIGkpID0+IHBhck9iamVjdFt0XSA9IHBhcnRzW2kgKyAxXSk7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInBhZ2VzL1wiICsgcmVkaXJlY3QudXJsLCBwYXJPYmplY3RdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiRXJyb3JcIj57e0Vycm9yfX08L2Rpdj4iXX0=