tin-spa 9.0.0 → 9.1.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 (249) hide show
  1. package/bundles/tin-spa.umd.js +4416 -1589
  2. package/bundles/tin-spa.umd.js.map +1 -1
  3. package/bundles/tin-spa.umd.min.js +2 -2
  4. package/bundles/tin-spa.umd.min.js.map +1 -1
  5. package/esm2015/lib/classes/Classes.js +58 -45
  6. package/esm2015/lib/classes/TinCore.js +137 -0
  7. package/esm2015/lib/components/activity/activity.component.js +84 -18
  8. package/esm2015/lib/components/attach/attach.component.js +101 -27
  9. package/esm2015/lib/components/change-password/change-password.component.js +122 -34
  10. package/esm2015/lib/components/check/check.component.js +39 -33
  11. package/esm2015/lib/components/chips/chips.component.js +75 -35
  12. package/esm2015/lib/components/create-account/create-account.component.js +124 -42
  13. package/esm2015/lib/components/date/date.component.js +54 -33
  14. package/esm2015/lib/components/datetime/datetime.component.js +43 -30
  15. package/esm2015/lib/components/filter/filter.component.js +64 -0
  16. package/esm2015/lib/components/html/html.component.js +30 -25
  17. package/esm2015/lib/components/label/label.component.js +109 -21
  18. package/esm2015/lib/components/loader/loader.component.js +43 -20
  19. package/esm2015/lib/components/login/login.component.js +194 -76
  20. package/esm2015/lib/components/logs/logs.component.js +180 -28
  21. package/esm2015/lib/components/message/messageDialog.component.js +128 -17
  22. package/esm2015/lib/components/money/currency-input-mask.directive.js +187 -0
  23. package/esm2015/lib/components/money/currency-input-mask.module.js +30 -0
  24. package/esm2015/lib/components/money/money.component.js +141 -39
  25. package/esm2015/lib/components/nav-menu/nav-menu.component.js +174 -21
  26. package/esm2015/lib/components/option/option.component.js +107 -40
  27. package/esm2015/lib/components/profile/profile.component.js +143 -53
  28. package/esm2015/lib/components/recover-account/recover-account.component.js +48 -26
  29. package/esm2015/lib/components/roles/addRoleDialog.component.js +99 -26
  30. package/esm2015/lib/components/roles/roles.component.js +153 -73
  31. package/esm2015/lib/components/select/select.component.js +108 -48
  32. package/esm2015/lib/components/settings/settings.component.js +76 -21
  33. package/esm2015/lib/components/signup/signup.component.js +107 -24
  34. package/esm2015/lib/components/steps/steps.component.js +47 -31
  35. package/esm2015/lib/components/table/table.component.js +301 -35
  36. package/esm2015/lib/components/text/text.component.js +146 -71
  37. package/esm2015/lib/components/tiles/tiles.component.js +75 -21
  38. package/esm2015/lib/components/timeout/timeout.component.js +65 -22
  39. package/esm2015/lib/components/tin-spa.component.js +19 -12
  40. package/esm2015/lib/components/users/users.component.js +308 -65
  41. package/esm2015/lib/components/viewer/viewer.component.js +64 -39
  42. package/esm2015/lib/components/viewer/viewerDialog.component.js +73 -18
  43. package/esm2015/lib/dnd.directive.js +30 -25
  44. package/esm2015/lib/modules/spa-admin.module.js +65 -51
  45. package/esm2015/lib/modules/spa-index.module.js +45 -20
  46. package/esm2015/lib/modules/spa-mat.module.js +40 -25
  47. package/esm2015/lib/modules/spa-user.module.js +43 -19
  48. package/esm2015/lib/services/auth.service.js +39 -50
  49. package/esm2015/lib/services/data.service.js +82 -49
  50. package/esm2015/lib/services/export.service.js +11 -11
  51. package/esm2015/lib/services/http.service.js +79 -0
  52. package/esm2015/lib/services/loader-interceptor.service.js +30 -30
  53. package/esm2015/lib/services/loader.service.js +11 -11
  54. package/esm2015/lib/services/log.service.js +12 -12
  55. package/esm2015/lib/services/message.service.js +11 -17
  56. package/esm2015/lib/services/storage.service.js +12 -11
  57. package/esm2015/lib/services/tin-spa.service.js +11 -11
  58. package/esm2015/lib/tin-spa.module.js +113 -48
  59. package/esm2015/public-api.js +4 -6
  60. package/esm2015/tin-spa.js +1 -5
  61. package/esm5/lib/classes/Classes.js +70 -55
  62. package/esm5/lib/classes/TinCore.js +164 -0
  63. package/esm5/lib/components/activity/activity.component.js +82 -15
  64. package/esm5/lib/components/attach/attach.component.js +100 -24
  65. package/esm5/lib/components/change-password/change-password.component.js +120 -31
  66. package/esm5/lib/components/check/check.component.js +37 -30
  67. package/esm5/lib/components/chips/chips.component.js +73 -32
  68. package/esm5/lib/components/create-account/create-account.component.js +122 -39
  69. package/esm5/lib/components/date/date.component.js +52 -30
  70. package/esm5/lib/components/datetime/datetime.component.js +41 -27
  71. package/esm5/lib/components/filter/filter.component.js +66 -0
  72. package/esm5/lib/components/html/html.component.js +28 -22
  73. package/esm5/lib/components/label/label.component.js +107 -18
  74. package/esm5/lib/components/loader/loader.component.js +41 -17
  75. package/esm5/lib/components/login/login.component.js +193 -74
  76. package/esm5/lib/components/logs/logs.component.js +178 -25
  77. package/esm5/lib/components/message/messageDialog.component.js +126 -14
  78. package/esm5/lib/components/money/currency-input-mask.directive.js +193 -0
  79. package/esm5/lib/components/money/currency-input-mask.module.js +34 -0
  80. package/esm5/lib/components/money/money.component.js +139 -36
  81. package/esm5/lib/components/nav-menu/nav-menu.component.js +172 -18
  82. package/esm5/lib/components/option/option.component.js +105 -37
  83. package/esm5/lib/components/profile/profile.component.js +141 -50
  84. package/esm5/lib/components/recover-account/recover-account.component.js +46 -23
  85. package/esm5/lib/components/roles/addRoleDialog.component.js +97 -23
  86. package/esm5/lib/components/roles/roles.component.js +152 -72
  87. package/esm5/lib/components/select/select.component.js +106 -45
  88. package/esm5/lib/components/settings/settings.component.js +74 -18
  89. package/esm5/lib/components/signup/signup.component.js +105 -21
  90. package/esm5/lib/components/steps/steps.component.js +46 -28
  91. package/esm5/lib/components/table/table.component.js +299 -32
  92. package/esm5/lib/components/text/text.component.js +144 -68
  93. package/esm5/lib/components/tiles/tiles.component.js +73 -18
  94. package/esm5/lib/components/timeout/timeout.component.js +63 -19
  95. package/esm5/lib/components/tin-spa.component.js +16 -8
  96. package/esm5/lib/components/users/users.component.js +307 -62
  97. package/esm5/lib/components/viewer/viewer.component.js +62 -36
  98. package/esm5/lib/components/viewer/viewerDialog.component.js +71 -15
  99. package/esm5/lib/dnd.directive.js +28 -22
  100. package/esm5/lib/modules/spa-admin.module.js +63 -48
  101. package/esm5/lib/modules/spa-index.module.js +43 -17
  102. package/esm5/lib/modules/spa-mat.module.js +38 -22
  103. package/esm5/lib/modules/spa-user.module.js +41 -16
  104. package/esm5/lib/services/auth.service.js +37 -47
  105. package/esm5/lib/services/data.service.js +89 -55
  106. package/esm5/lib/services/export.service.js +9 -8
  107. package/esm5/lib/services/http.service.js +81 -0
  108. package/esm5/lib/services/loader-interceptor.service.js +28 -27
  109. package/esm5/lib/services/loader.service.js +9 -8
  110. package/esm5/lib/services/log.service.js +11 -9
  111. package/esm5/lib/services/message.service.js +9 -14
  112. package/esm5/lib/services/storage.service.js +10 -8
  113. package/esm5/lib/services/tin-spa.service.js +9 -8
  114. package/esm5/lib/tin-spa.module.js +111 -45
  115. package/esm5/public-api.js +4 -6
  116. package/esm5/tin-spa.js +1 -5
  117. package/fesm2015/tin-spa.js +4418 -1612
  118. package/fesm2015/tin-spa.js.map +1 -1
  119. package/fesm5/tin-spa.js +4442 -1612
  120. package/fesm5/tin-spa.js.map +1 -1
  121. package/lib/classes/Classes.d.ts +55 -43
  122. package/lib/classes/TinCore.d.ts +27 -0
  123. package/lib/components/activity/activity.component.d.ts +3 -5
  124. package/lib/components/attach/attach.component.d.ts +3 -5
  125. package/lib/components/change-password/change-password.component.d.ts +11 -9
  126. package/lib/components/check/check.component.d.ts +3 -5
  127. package/lib/components/chips/chips.component.d.ts +3 -5
  128. package/lib/components/create-account/create-account.component.d.ts +13 -13
  129. package/lib/components/date/date.component.d.ts +6 -7
  130. package/lib/components/datetime/datetime.component.d.ts +3 -5
  131. package/lib/components/filter/filter.component.d.ts +15 -0
  132. package/lib/components/html/html.component.d.ts +3 -5
  133. package/lib/components/label/label.component.d.ts +3 -5
  134. package/lib/components/loader/loader.component.d.ts +3 -5
  135. package/lib/components/login/login.component.d.ts +12 -14
  136. package/lib/components/logs/logs.component.d.ts +5 -9
  137. package/lib/components/message/messageDialog.component.d.ts +3 -5
  138. package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
  139. package/lib/components/money/currency-input-mask.module.d.ts +8 -0
  140. package/lib/components/money/money.component.d.ts +19 -8
  141. package/lib/components/nav-menu/nav-menu.component.d.ts +3 -5
  142. package/lib/components/option/option.component.d.ts +4 -5
  143. package/lib/components/profile/profile.component.d.ts +9 -11
  144. package/lib/components/recover-account/recover-account.component.d.ts +6 -8
  145. package/lib/components/roles/addRoleDialog.component.d.ts +5 -7
  146. package/lib/components/roles/roles.component.d.ts +6 -10
  147. package/lib/components/select/select.component.d.ts +4 -6
  148. package/lib/components/settings/settings.component.d.ts +5 -7
  149. package/lib/components/signup/signup.component.d.ts +6 -8
  150. package/lib/components/steps/steps.component.d.ts +3 -5
  151. package/lib/components/table/table.component.d.ts +3 -5
  152. package/lib/components/text/text.component.d.ts +4 -5
  153. package/lib/components/tiles/tiles.component.d.ts +3 -5
  154. package/lib/components/timeout/timeout.component.d.ts +3 -5
  155. package/lib/components/tin-spa.component.d.ts +3 -5
  156. package/lib/components/users/users.component.d.ts +8 -13
  157. package/lib/components/viewer/viewer.component.d.ts +3 -5
  158. package/lib/components/viewer/viewerDialog.component.d.ts +4 -6
  159. package/lib/dnd.directive.d.ts +3 -5
  160. package/lib/modules/spa-admin.module.d.ts +13 -19
  161. package/lib/modules/spa-index.module.d.ts +10 -11
  162. package/lib/modules/spa-mat.module.d.ts +30 -32
  163. package/lib/modules/spa-user.module.d.ts +9 -10
  164. package/lib/services/auth.service.d.ts +14 -14
  165. package/lib/services/data.service.d.ts +28 -17
  166. package/lib/services/export.service.d.ts +3 -4
  167. package/lib/services/http.service.d.ts +22 -0
  168. package/lib/services/loader-interceptor.service.d.ts +3 -5
  169. package/lib/services/loader.service.d.ts +3 -4
  170. package/lib/services/log.service.d.ts +3 -4
  171. package/lib/services/message.service.d.ts +3 -4
  172. package/lib/services/storage.service.d.ts +3 -4
  173. package/lib/services/tin-spa.service.d.ts +3 -4
  174. package/lib/tin-spa.module.d.ts +35 -35
  175. package/package.json +2 -10
  176. package/public-api.d.ts +3 -5
  177. package/tin-spa.d.ts +1 -6
  178. package/__ivy_ngcc__/fesm2015/tin-spa.js +0 -6813
  179. package/__ivy_ngcc__/fesm2015/tin-spa.js.map +0 -1
  180. package/esm2015/lib/components/profiles/profiles.component.js +0 -16
  181. package/esm2015/lib/components/roles/editRoleDialog.component.js +0 -57
  182. package/esm2015/lib/components/roles/viewRoleDialog.component.js +0 -38
  183. package/esm2015/lib/components/users/addUserDialog.component.js +0 -53
  184. package/esm2015/lib/components/users/editUserDialog.component.js +0 -96
  185. package/esm5/lib/components/profiles/profiles.component.js +0 -18
  186. package/esm5/lib/components/roles/editRoleDialog.component.js +0 -59
  187. package/esm5/lib/components/roles/viewRoleDialog.component.js +0 -39
  188. package/esm5/lib/components/users/addUserDialog.component.js +0 -55
  189. package/esm5/lib/components/users/editUserDialog.component.js +0 -99
  190. package/lib/components/activity/activity.component.d.ts.__ivy_ngcc_bak +0 -8
  191. package/lib/components/attach/attach.component.d.ts.__ivy_ngcc_bak +0 -39
  192. package/lib/components/change-password/change-password.component.d.ts.__ivy_ngcc_bak +0 -20
  193. package/lib/components/check/check.component.d.ts.__ivy_ngcc_bak +0 -16
  194. package/lib/components/chips/chips.component.d.ts.__ivy_ngcc_bak +0 -15
  195. package/lib/components/create-account/create-account.component.d.ts.__ivy_ngcc_bak +0 -25
  196. package/lib/components/date/date.component.d.ts.__ivy_ngcc_bak +0 -13
  197. package/lib/components/datetime/datetime.component.d.ts.__ivy_ngcc_bak +0 -12
  198. package/lib/components/html/html.component.d.ts.__ivy_ngcc_bak +0 -12
  199. package/lib/components/label/label.component.d.ts.__ivy_ngcc_bak +0 -8
  200. package/lib/components/loader/loader.component.d.ts.__ivy_ngcc_bak +0 -9
  201. package/lib/components/login/login.component.d.ts.__ivy_ngcc_bak +0 -29
  202. package/lib/components/logs/logs.component.d.ts.__ivy_ngcc_bak +0 -17
  203. package/lib/components/message/messageDialog.component.d.ts.__ivy_ngcc_bak +0 -12
  204. package/lib/components/money/money.component.d.ts.__ivy_ngcc_bak +0 -14
  205. package/lib/components/nav-menu/nav-menu.component.d.ts.__ivy_ngcc_bak +0 -17
  206. package/lib/components/option/option.component.d.ts.__ivy_ngcc_bak +0 -17
  207. package/lib/components/profile/profile.component.d.ts.__ivy_ngcc_bak +0 -30
  208. package/lib/components/profiles/profiles.component.d.ts +0 -10
  209. package/lib/components/profiles/profiles.component.d.ts.__ivy_ngcc_bak +0 -5
  210. package/lib/components/recover-account/recover-account.component.d.ts.__ivy_ngcc_bak +0 -15
  211. package/lib/components/roles/addRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  212. package/lib/components/roles/editRoleDialog.component.d.ts +0 -24
  213. package/lib/components/roles/editRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  214. package/lib/components/roles/roles.component.d.ts.__ivy_ngcc_bak +0 -29
  215. package/lib/components/roles/viewRoleDialog.component.d.ts +0 -20
  216. package/lib/components/roles/viewRoleDialog.component.d.ts.__ivy_ngcc_bak +0 -15
  217. package/lib/components/select/select.component.d.ts.__ivy_ngcc_bak +0 -20
  218. package/lib/components/settings/settings.component.d.ts.__ivy_ngcc_bak +0 -16
  219. package/lib/components/signup/signup.component.d.ts.__ivy_ngcc_bak +0 -20
  220. package/lib/components/steps/steps.component.d.ts.__ivy_ngcc_bak +0 -15
  221. package/lib/components/table/table.component.d.ts.__ivy_ngcc_bak +0 -25
  222. package/lib/components/text/text.component.d.ts.__ivy_ngcc_bak +0 -37
  223. package/lib/components/tiles/tiles.component.d.ts.__ivy_ngcc_bak +0 -11
  224. package/lib/components/timeout/timeout.component.d.ts.__ivy_ngcc_bak +0 -21
  225. package/lib/components/tin-spa.component.d.ts.__ivy_ngcc_bak +0 -5
  226. package/lib/components/users/addUserDialog.component.d.ts +0 -21
  227. package/lib/components/users/addUserDialog.component.d.ts.__ivy_ngcc_bak +0 -16
  228. package/lib/components/users/editUserDialog.component.d.ts +0 -32
  229. package/lib/components/users/editUserDialog.component.d.ts.__ivy_ngcc_bak +0 -27
  230. package/lib/components/users/users.component.d.ts.__ivy_ngcc_bak +0 -35
  231. package/lib/components/viewer/viewer.component.d.ts.__ivy_ngcc_bak +0 -16
  232. package/lib/components/viewer/viewerDialog.component.d.ts.__ivy_ngcc_bak +0 -19
  233. package/lib/dnd.directive.d.ts.__ivy_ngcc_bak +0 -8
  234. package/lib/modules/spa-admin.module.d.ts.__ivy_ngcc_bak +0 -2
  235. package/lib/modules/spa-index.module.d.ts.__ivy_ngcc_bak +0 -2
  236. package/lib/modules/spa-mat.module.d.ts.__ivy_ngcc_bak +0 -2
  237. package/lib/modules/spa-user.module.d.ts.__ivy_ngcc_bak +0 -2
  238. package/lib/services/auth.service.d.ts.__ivy_ngcc_bak +0 -45
  239. package/lib/services/data.service.d.ts.__ivy_ngcc_bak +0 -23
  240. package/lib/services/export.service.d.ts.__ivy_ngcc_bak +0 -7
  241. package/lib/services/loader-interceptor.service.d.ts.__ivy_ngcc_bak +0 -18
  242. package/lib/services/loader.service.d.ts.__ivy_ngcc_bak +0 -5
  243. package/lib/services/log.service.d.ts.__ivy_ngcc_bak +0 -16
  244. package/lib/services/message.service.d.ts.__ivy_ngcc_bak +0 -12
  245. package/lib/services/storage.service.d.ts.__ivy_ngcc_bak +0 -7
  246. package/lib/services/tin-spa.service.d.ts.__ivy_ngcc_bak +0 -3
  247. package/lib/tin-spa.module.d.ts.__ivy_ngcc_bak +0 -2
  248. package/tin-spa.d.ts.__ivy_ngcc_bak +0 -8
  249. package/tin-spa.metadata.json +0 -1
@@ -1,20 +1,79 @@
1
- import { __decorate } from "tslib";
2
- //-----------------Change for Build and Reference purposes for SERVICES ONLY---------//
3
- import { HttpService, ApiResponse, Core, Constants } from "tin-core";
4
- // import { HttpService,ApiResponse, Core, Constants } from 'tin-core';
5
- //----------------------------------------------------------------------------------//
6
- import { MessageService } from "../../services/message.service";
7
- import { StorageService } from "../../services/storage.service";
8
- import { AuthService } from "../../services/auth.service";
9
- import { Component, Input } from "@angular/core";
10
- import { Router, ActivatedRoute } from "@angular/router";
11
- import { DataService } from "../../services/data.service";
12
- import { LogService } from "./../../services/log.service";
13
- // import { AuthService } from "../services/auth.service";
14
- // import { ApiResponse, Core } from "../classes/TinCore";
1
+ import { Component } from "@angular/core";
15
2
  import { User, AppConfig } from "../../classes/Classes";
3
+ import { Constants } from "../../classes/TinCore";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/http.service";
6
+ import * as i2 from "../../services/storage.service";
7
+ import * as i3 from "@angular/router";
8
+ import * as i4 from "../../services/message.service";
9
+ import * as i5 from "../../services/data.service";
10
+ import * as i6 from "../../services/auth.service";
11
+ import * as i7 from "./../../services/log.service";
12
+ import * as i8 from "@angular/common";
13
+ import * as i9 from "@angular/material/card";
14
+ import * as i10 from "../text/text.component";
15
+ import * as i11 from "@angular/material/form-field";
16
+ import * as i12 from "@angular/material/input";
17
+ import * as i13 from "@angular/forms";
18
+ import * as i14 from "@angular/material/button";
19
+ import * as i15 from "@angular/material/icon";
20
+ function LoginComponent_div_1_img_1_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelement(0, "img", 21);
22
+ } if (rf & 2) {
23
+ var ctx_r4 = i0.ɵɵnextContext(2);
24
+ i0.ɵɵproperty("src", ctx_r4.appConfig.logo, i0.ɵɵsanitizeUrl);
25
+ } }
26
+ function LoginComponent_div_1_img_2_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelement(0, "img", 22);
28
+ } if (rf & 2) {
29
+ var ctx_r5 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵproperty("src", ctx_r5.appConfig.logo, i0.ɵɵsanitizeUrl);
31
+ } }
32
+ function LoginComponent_div_1_img_3_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelement(0, "img", 23);
34
+ } if (rf & 2) {
35
+ var ctx_r6 = i0.ɵɵnextContext(2);
36
+ i0.ɵɵproperty("src", ctx_r6.appConfig.logo, i0.ɵɵsanitizeUrl);
37
+ } }
38
+ function LoginComponent_div_1_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "div", 17);
40
+ i0.ɵɵtemplate(1, LoginComponent_div_1_img_1_Template, 1, 1, "img", 18);
41
+ i0.ɵɵtemplate(2, LoginComponent_div_1_img_2_Template, 1, 1, "img", 19);
42
+ i0.ɵɵtemplate(3, LoginComponent_div_1_img_3_Template, 1, 1, "img", 20);
43
+ i0.ɵɵelementEnd();
44
+ } if (rf & 2) {
45
+ var ctx_r0 = i0.ɵɵnextContext();
46
+ i0.ɵɵadvance(1);
47
+ i0.ɵɵproperty("ngIf", ctx_r0.appConfig.logoSize == "normal");
48
+ i0.ɵɵadvance(1);
49
+ i0.ɵɵproperty("ngIf", ctx_r0.appConfig.logoSize == "medium");
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵproperty("ngIf", ctx_r0.appConfig.logoSize == "large");
52
+ } }
53
+ function LoginComponent_div_2_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelement(0, "div", 24);
55
+ } }
56
+ function LoginComponent_div_25_Template(rf, ctx) { if (rf & 1) {
57
+ var _r8 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "div", 13);
59
+ i0.ɵɵelementStart(1, "button", 25);
60
+ i0.ɵɵlistener("click", function LoginComponent_div_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); var ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.signup(); });
61
+ i0.ɵɵtext(2, "Signup");
62
+ i0.ɵɵelementEnd();
63
+ i0.ɵɵelementEnd();
64
+ } }
65
+ function LoginComponent_div_26_Template(rf, ctx) { if (rf & 1) {
66
+ var _r10 = i0.ɵɵgetCurrentView();
67
+ i0.ɵɵelementStart(0, "div");
68
+ i0.ɵɵelement(1, "br");
69
+ i0.ɵɵelementStart(2, "a", 26);
70
+ i0.ɵɵlistener("click", function LoginComponent_div_26_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r10); var ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.recoverAccount(); });
71
+ i0.ɵɵtext(3, "Forgot your password ?");
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementEnd();
74
+ } }
16
75
  var LoginComponent = /** @class */ (function () {
17
- function LoginComponent(httpService, storageService, router, messageService, dataService, authService, logService) {
76
+ function LoginComponent(httpService, storageService, router, messageService, dataService, authService, logService, route) {
18
77
  this.httpService = httpService;
19
78
  this.storageService = storageService;
20
79
  this.router = router;
@@ -22,15 +81,24 @@ var LoginComponent = /** @class */ (function () {
22
81
  this.dataService = dataService;
23
82
  this.authService = authService;
24
83
  this.logService = logService;
84
+ this.route = route;
25
85
  this.user = new User();
26
86
  this.hide = true;
27
87
  this.isProcessing = false;
28
88
  this.appConfig = new AppConfig();
29
89
  }
30
90
  LoginComponent.prototype.ngOnInit = function () {
31
- this.authService.updateloggedin(false);
32
- this.authService.updateRole(null);
91
+ var _this = this;
92
+ this.authService.Updateloggedin(false);
93
+ this.authService.UpdateRole(null);
33
94
  this.storageService.clear();
95
+ this.dataService.appConfigObserv.subscribe(function (x) { return _this.appConfig = x; });
96
+ if (this.route.snapshot.queryParams.redirectTo != undefined) {
97
+ this.redirectPath = this.route.snapshot.queryParams.redirectTo;
98
+ }
99
+ else {
100
+ this.redirectPath = "home";
101
+ }
34
102
  };
35
103
  LoginComponent.prototype.signup = function () {
36
104
  this.router.navigate(["signup"]);
@@ -40,44 +108,45 @@ var LoginComponent = /** @class */ (function () {
40
108
  };
41
109
  LoginComponent.prototype.login = function () {
42
110
  var _this = this;
43
- if (this.user.userID == "" || this.user.password == "") {
111
+ if (this.user.userName == "" || this.user.password == "") {
44
112
  this.messageService.toast("Please enter your credentials");
45
113
  return;
46
114
  }
47
115
  this.logService.info("logging in");
48
116
  this.isProcessing = true;
49
- this.dataService.login(this.user).subscribe(function (apiResponse) {
117
+ this.user.userName = this.user.userName;
118
+ this.dataService.Login(this.user).subscribe(function (apiResponse) {
50
119
  _this.isProcessing = false;
51
- if (apiResponse.message == "success") {
52
- if (apiResponse.ds.dtUser[0]["authType"] == 'local' && !_this.appConfig.localAuth) {
120
+ if (apiResponse.success) {
121
+ if (apiResponse.data.authType == 'local' && !_this.appConfig.localAuth) {
53
122
  _this.messageService.toast("Contact Admin: Authentication Type error");
54
123
  return;
55
124
  }
56
- if (apiResponse.ds.dtUser[0]["authType"] == 'AD' && !_this.appConfig.ADAuth) {
125
+ if (apiResponse.data.authType == 'AD' && !_this.appConfig.ADAuth) {
57
126
  _this.messageService.toast("Contact Admin: Authentication Type error");
58
127
  return;
59
128
  }
60
- _this.authService.updateloggedin(true);
61
- _this.authService.updateToken(apiResponse.ds.dtUser[0]["token"]);
62
- _this.storageService.store(Constants.AUTH_TOKEN, apiResponse.ds.dtUser[0]["token"]);
63
- _this.authService.updateTokenExpire(apiResponse.ds.dtUser[0]["tokenExpire"]);
64
- _this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.ds.dtUser[0]["tokenExpire"]);
65
- _this.authService.updateCurrentUser(_this.user.userID);
66
- _this.storageService.store(Constants.AUTH_USER, _this.user.userID);
67
- _this.authService.updateLoggedUserFullName(apiResponse.ds.dtProfile[0]["firstName"]);
68
- _this.storageService.store(Constants.AUTH_NAME, apiResponse.ds.dtProfile[0]["firstName"]);
69
- _this.authService.updateRole(apiResponse.ds.dtRole[0]);
70
- _this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.ds.dtRole[0]));
71
- // this.setRole(apiResponse.dt[0]["accessLevel"]);
72
- // this.setRole("1");
73
- if (apiResponse.ds.dtUser[0]["changePassword"] == "0") {
74
- _this.router.navigate(["home"]);
75
- // this.messageService.toast("Welcome");
76
- _this.logService.info("logged in");
77
- }
78
- else {
79
- _this.router.navigate(["home/user/change-password"]);
129
+ _this.authService.Updateloggedin(true);
130
+ _this.authService.UpdateToken(apiResponse.data.token);
131
+ _this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);
132
+ _this.authService.UpdateTokenExpire(apiResponse.data.expiration);
133
+ _this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);
134
+ _this.authService.UpdateCurrentUser(_this.user.userName);
135
+ _this.storageService.store(Constants.AUTH_USER, _this.user.userName);
136
+ _this.authService.updateLoggedUserFullName(apiResponse.data.firstName);
137
+ _this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);
138
+ _this.authService.UpdateRole(apiResponse.data.role);
139
+ _this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));
140
+ _this.logService.info("logged in");
141
+ if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {
142
+ _this.router.navigate(["home/user/change-password"], {
143
+ queryParams: { redirectTo: _this.redirectPath },
144
+ queryParamsHandling: 'merge',
145
+ skipLocationChange: false
146
+ });
147
+ return;
80
148
  }
149
+ _this.router.navigate([_this.redirectPath]);
81
150
  }
82
151
  else {
83
152
  _this.messageService.toast("Error: " + apiResponse.message);
@@ -88,38 +157,88 @@ var LoginComponent = /** @class */ (function () {
88
157
  _this.messageService.toast(_this.httpService.Error(error));
89
158
  });
90
159
  };
91
- LoginComponent.prototype.setRole = function (roleID) {
92
- var _this = this;
93
- this.dataService
94
- .GetRole("id", roleID)
95
- .subscribe(function (apiResponse) {
96
- _this.authService.updateRole(apiResponse.dt[0]);
97
- _this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.dt[0]));
98
- });
99
- };
100
- LoginComponent.ctorParameters = function () { return [
101
- { type: HttpService },
102
- { type: StorageService },
103
- { type: Router },
104
- { type: MessageService },
105
- { type: DataService },
106
- { type: AuthService },
107
- { type: LogService }
108
- ]; };
109
- __decorate([
110
- Input()
111
- ], LoginComponent.prototype, "config", void 0);
112
- __decorate([
113
- Input()
114
- ], LoginComponent.prototype, "appConfig", void 0);
115
- LoginComponent = __decorate([
116
- Component({
117
- selector: "spa-login",
118
- template: "\r\n <div class=\"tin-bg-login login-page\">\r\n\r\n\r\n <div *ngIf=\"config.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"config.logoSize=='normal'\" [src]=\"config.logo\" style=\"height:100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"config.logoSize=='medium'\" [src]=\"config.logo\" style=\"height:150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"config.logoSize=='large'\" [src]=\"config.logo\" style=\"height:250px;margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"config.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em\">\r\n\r\n\r\n <div class=\"d-none d-sm-block\">\r\n\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n\r\n\r\n <mat-card class=\"mat-elevation-z3\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{config.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <mat-form-field style=\"width: 100%;\">\r\n <mat-label>Username</mat-label>\r\n <input id=\"txtUserID\" matInput #parentInput placeholder=\"Enter Username\" [(ngModel)]=\"user.userID\" autocomplete=\"off\" autofocus>\r\n </mat-form-field>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"config.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"config.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n",
119
- styles: [".login-page{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto}.tin-bg-login{background-image:url(~/assets/login-bg.jpg);background-size:100%}"]
120
- })
121
- ], LoginComponent);
160
+ LoginComponent.ɵfac = function LoginComponent_Factory(t) { return new (t || LoginComponent)(i0.ɵɵdirectiveInject(i1.HttpService), i0.ɵɵdirectiveInject(i2.StorageService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.MessageService), i0.ɵɵdirectiveInject(i5.DataServiceLib), i0.ɵɵdirectiveInject(i6.AuthService), i0.ɵɵdirectiveInject(i7.LogService), i0.ɵɵdirectiveInject(i3.ActivatedRoute)); };
161
+ LoginComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LoginComponent, selectors: [["spa-login"]], decls: 27, vars: 12, consts: [[1, "tin-bg-login", "login-page"], ["class", "d-flex justify-content-center row align-items-center", "style", "margin-top:3em;margin-bottom:1em", 4, "ngIf"], ["style", "margin-top:2em", 4, "ngIf"], [1, "d-flex", "justify-content-center", "row", "align-items-center", 2, "margin-top", "3em"], [1, "d-none", "d-sm-block"], [2, "margin-left", "1em"], [1, "mat-elevation-z3", 2, "width", "400px"], [1, "tin-input", "mt-2"], ["id", "txtuserName", "display", "Username", 3, "value", "valueChange"], ["id", "txtPassword", "matInput", "", "autocomplete", "off", 3, "type", "ngModel", "keyup.enter", "ngModelChange"], ["mat-icon-button", "", "matSuffix", "", 3, "click"], [2, "font-size", "18px"], [1, "row"], [1, "col", "d-flex", "justify-content-center"], ["id", "btnLogin", "mat-raised-button", "", "color", "primary", 2, "width", "100px", 3, "disabled", "click"], ["class", "col d-flex justify-content-center", 4, "ngIf"], [4, "ngIf"], [1, "d-flex", "justify-content-center", "row", "align-items-center", 2, "margin-top", "3em", "margin-bottom", "1em"], ["style", "height:100px;margin-right:3em;margin-left:3em", 3, "src", 4, "ngIf"], ["style", "height:150px;margin-right:3em;margin-left:3em", 3, "src", 4, "ngIf"], ["style", "height:250px;margin-right:3em;margin-left:3em", 3, "src", 4, "ngIf"], [2, "height", "100px", "margin-right", "3em", "margin-left", "3em", 3, "src"], [2, "height", "150px", "margin-right", "3em", "margin-left", "3em", 3, "src"], [2, "height", "250px", "margin-right", "3em", "margin-left", "3em", 3, "src"], [2, "margin-top", "2em"], ["id", "btnSignup", "mat-stroked-button", "", "color", "primary", 2, "width", "100px", 3, "click"], ["mat-button", "", "id", "lnkRecover", 2, "margin-left", "1em", 3, "click"]], template: function LoginComponent_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelementStart(0, "div", 0);
163
+ i0.ɵɵtemplate(1, LoginComponent_div_1_Template, 4, 3, "div", 1);
164
+ i0.ɵɵtemplate(2, LoginComponent_div_2_Template, 1, 0, "div", 2);
165
+ i0.ɵɵelementStart(3, "div", 3);
166
+ i0.ɵɵelement(4, "div", 4);
167
+ i0.ɵɵelementStart(5, "div", 5);
168
+ i0.ɵɵelementStart(6, "mat-card", 6);
169
+ i0.ɵɵelementStart(7, "mat-card-header");
170
+ i0.ɵɵelementStart(8, "mat-card-title");
171
+ i0.ɵɵtext(9);
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵelementStart(10, "mat-card-content");
175
+ i0.ɵɵelementStart(11, "div", 7);
176
+ i0.ɵɵelementStart(12, "spa-text", 8);
177
+ i0.ɵɵlistener("valueChange", function LoginComponent_Template_spa_text_valueChange_12_listener($event) { return ctx.user.userName = $event; });
178
+ i0.ɵɵelementEnd();
179
+ i0.ɵɵelementStart(13, "mat-form-field");
180
+ i0.ɵɵelementStart(14, "mat-label");
181
+ i0.ɵɵtext(15, "Password");
182
+ i0.ɵɵelementEnd();
183
+ i0.ɵɵelementStart(16, "input", 9);
184
+ i0.ɵɵlistener("keyup.enter", function LoginComponent_Template_input_keyup_enter_16_listener() { return ctx.login(); })("ngModelChange", function LoginComponent_Template_input_ngModelChange_16_listener($event) { return ctx.user.password = $event; });
185
+ i0.ɵɵelementEnd();
186
+ i0.ɵɵelementStart(17, "button", 10);
187
+ i0.ɵɵlistener("click", function LoginComponent_Template_button_click_17_listener() { return ctx.hide = !ctx.hide; });
188
+ i0.ɵɵelementStart(18, "mat-icon", 11);
189
+ i0.ɵɵtext(19);
190
+ i0.ɵɵelementEnd();
191
+ i0.ɵɵelementEnd();
192
+ i0.ɵɵelementEnd();
193
+ i0.ɵɵelementEnd();
194
+ i0.ɵɵelementEnd();
195
+ i0.ɵɵelementStart(20, "mat-card-actions");
196
+ i0.ɵɵelementStart(21, "div", 12);
197
+ i0.ɵɵelementStart(22, "div", 13);
198
+ i0.ɵɵelementStart(23, "button", 14);
199
+ i0.ɵɵlistener("click", function LoginComponent_Template_button_click_23_listener() { return ctx.login(); });
200
+ i0.ɵɵtext(24, "Login");
201
+ i0.ɵɵelementEnd();
202
+ i0.ɵɵelementEnd();
203
+ i0.ɵɵtemplate(25, LoginComponent_div_25_Template, 3, 0, "div", 15);
204
+ i0.ɵɵelementEnd();
205
+ i0.ɵɵelementEnd();
206
+ i0.ɵɵelementEnd();
207
+ i0.ɵɵtemplate(26, LoginComponent_div_26_Template, 4, 0, "div", 16);
208
+ i0.ɵɵelementEnd();
209
+ i0.ɵɵelementEnd();
210
+ i0.ɵɵelementEnd();
211
+ } if (rf & 2) {
212
+ i0.ɵɵadvance(1);
213
+ i0.ɵɵproperty("ngIf", ctx.appConfig.logo != "");
214
+ i0.ɵɵadvance(1);
215
+ i0.ɵɵproperty("ngIf", ctx.appConfig.logo == "");
216
+ i0.ɵɵadvance(7);
217
+ i0.ɵɵtextInterpolate(ctx.appConfig.appName);
218
+ i0.ɵɵadvance(3);
219
+ i0.ɵɵproperty("value", ctx.user.userName);
220
+ i0.ɵɵadvance(4);
221
+ i0.ɵɵproperty("type", ctx.hide ? "password" : "text")("ngModel", ctx.user.password);
222
+ i0.ɵɵadvance(1);
223
+ i0.ɵɵattribute("aria-label", "Hide password")("aria-pressed", ctx.hide);
224
+ i0.ɵɵadvance(2);
225
+ i0.ɵɵtextInterpolate(ctx.hide ? "visibility_off" : "visibility");
226
+ i0.ɵɵadvance(4);
227
+ i0.ɵɵproperty("disabled", ctx.isProcessing);
228
+ i0.ɵɵadvance(2);
229
+ i0.ɵɵproperty("ngIf", ctx.appConfig.selfService);
230
+ i0.ɵɵadvance(1);
231
+ i0.ɵɵproperty("ngIf", ctx.appConfig.selfService);
232
+ } }, directives: [i8.NgIf, i9.MatCard, i9.MatCardHeader, i9.MatCardTitle, i9.MatCardContent, i10.TextComponent, i11.MatFormField, i11.MatLabel, i12.MatInput, i13.DefaultValueAccessor, i13.NgControlStatus, i13.NgModel, i14.MatButton, i11.MatSuffix, i15.MatIcon, i9.MatCardActions, i14.MatAnchor], styles: [".login-page[_ngcontent-%COMP%]{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto}.tin-bg-login[_ngcontent-%COMP%]{background-image:url(~/assets/login-bg.jpg);background-size:100%}"] });
122
233
  return LoginComponent;
123
234
  }());
124
235
  export { LoginComponent };
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGluLXNwYS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUZBQXVGO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckUsdUVBQXVFO0FBQ3ZFLHNGQUFzRjtBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsMERBQTBEO0FBQzFELDBEQUEwRDtBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBV3JFO0lBQ0Usd0JBQ1UsV0FBd0IsRUFDeEIsY0FBOEIsRUFDL0IsTUFBYyxFQUNiLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3pCLFdBQXdCLEVBQ3ZCLFVBQXNCO1FBTnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLGdCQUFXLEdBQVgs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QUFRLEVBQUUsV0FBVztZQUNyQixrc0dBQXFDOztTQUV0QyxDQUFDO09BQ1csY0FBYyxDQW9IMUI7SUFBRCxxQkFBQztDQUFBLEFBcEhELElBb0hDO1NBcEhZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy0tLS0tLS0tLS0tLS0tLS0tQ2hhbmdlIGZvciBCdWlsZCBhbmQgUmVmZXJlbmNlIHB1cnBvc2VzIGZvciBTRVJWSUNFUyBPTkxZLS0tLS0tLS0tLy9cclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UsIEFwaVJlc3BvbnNlLCBDb3JlLCBDb25zdGFudHMgfSBmcm9tIFwidGluLWNvcmVcIjtcclxuLy8gaW1wb3J0IHsgSHR0cFNlcnZpY2UsQXBpUmVzcG9uc2UsIENvcmUsIENvbnN0YW50cyB9IGZyb20gJ3Rpbi1jb3JlJztcclxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy9cclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSBcIi4vLi4vLi4vc2VydmljZXMvbG9nLnNlcnZpY2VcIjtcclxuLy8gaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbi8vIGltcG9ydCB7IEFwaVJlc3BvbnNlLCBDb3JlIH0gZnJvbSBcIi4uL2NsYXNzZXMvVGluQ29yZVwiO1xyXG5pbXBvcnQgeyBVc2VyLCBsb2dpbkNvbmZpZywgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvQ2xhc3Nlc1wiO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbi8vIGltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG4vLyBpbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9UaW5TcGFcIjtcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNwYS1sb2dpblwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vbG9naW4uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyB1c2VyID0gbmV3IFVzZXIoKTtcclxuICBoaWRlID0gdHJ1ZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjb25maWc6IGxvZ2luQ29uZmlnO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlbG9nZ2VkaW4oZmFsc2UpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS51cGRhdGVSb2xlKG51bGwpO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG5cclxuICBwdWJsaWMgc2lnbnVwKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wic2lnbnVwXCJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWNvdmVyQWNjb3VudCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInJlY292ZXItYWNjb3VudFwiXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9naW4oKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlci51c2VySUQgPT0gXCJcIiB8fCB0aGlzLnVzZXIucGFzc3dvcmQgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGVudGVyIHlvdXIgY3JlZGVudGlhbHNcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJsb2dnaW5nIGluXCIpO1xyXG5cclxuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmxvZ2luKHRoaXMudXNlcikuc3Vic2NyaWJlKFxyXG4gICAgICAoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLm1lc3NhZ2UgPT0gXCJzdWNjZXNzXCIpIHtcclxuXHJcblxyXG4gICAgICAgICAgaWYgKGFwaVJlc3BvbnNlLmRzLmR0VXNlclswXVtcImF1dGhUeXBlXCJdID09ICdsb2NhbCcgJiYgIXRoaXMuYXBwQ29uZmlnLmxvY2FsQXV0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJDb250YWN0IEFkbWluOiBBdXRoZW50aWNhdGlvbiBUeXBlIGVycm9yXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGFwaVJlc3BvbnNlLmRzLmR0VXNlclswXVtcImF1dGhUeXBlXCJdID09ICdBRCcgJiYgIXRoaXMuYXBwQ29uZmlnLkFEQXV0aCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQ29udGFjdCBBZG1pbjogQXV0aGVudGljYXRpb24gVHlwZSBlcnJvclwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZWxvZ2dlZGluKHRydWUpO1xyXG5cclxuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlVG9rZW4oYXBpUmVzcG9uc2UuZHMuZHRVc2VyWzBdW1widG9rZW5cIl0pO1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9UT0tFTiwgYXBpUmVzcG9uc2UuZHMuZHRVc2VyWzBdW1widG9rZW5cIl0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlVG9rZW5FeHBpcmUoYXBpUmVzcG9uc2UuZHMuZHRVc2VyWzBdW1widG9rZW5FeHBpcmVcIl0pO1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9UT0tFTl9FWFBJUkUsIGFwaVJlc3BvbnNlLmRzLmR0VXNlclswXVtcInRva2VuRXhwaXJlXCJdKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZUN1cnJlbnRVc2VyKHRoaXMudXNlci51c2VySUQpO1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9VU0VSLCB0aGlzLnVzZXIudXNlcklEKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZUxvZ2dlZFVzZXJGdWxsTmFtZSggYXBpUmVzcG9uc2UuZHMuZHRQcm9maWxlWzBdW1wiZmlyc3ROYW1lXCJdICk7XHJcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX05BTUUsIGFwaVJlc3BvbnNlLmRzLmR0UHJvZmlsZVswXVtcImZpcnN0TmFtZVwiXVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVJvbGUoYXBpUmVzcG9uc2UuZHMuZHRSb2xlWzBdKTtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfUk9MRVMsIEpTT04uc3RyaW5naWZ5KGFwaVJlc3BvbnNlLmRzLmR0Um9sZVswXSkpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zZXRSb2xlKGFwaVJlc3BvbnNlLmR0WzBdW1wiYWNjZXNzTGV2ZWxcIl0pO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMuc2V0Um9sZShcIjFcIik7XHJcblxyXG4gICAgICAgICAgaWYgKGFwaVJlc3BvbnNlLmRzLmR0VXNlclswXVtcImNoYW5nZVBhc3N3b3JkXCJdID09IFwiMFwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhvbWVcIl0pO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiV2VsY29tZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJsb2dnZWQgaW5cIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJob21lL3VzZXIvY2hhbmdlLXBhc3N3b3JkXCJdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMudXNlci5wYXNzd29yZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHRoaXMuaHR0cFNlcnZpY2UuRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFJvbGUocm9sZUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2VcclxuICAgICAgLkdldFJvbGUoXCJpZFwiLCByb2xlSUQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlUm9sZShhcGlSZXNwb25zZS5kdFswXSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoXHJcbiAgICAgICAgICBDb25zdGFudHMuQVVUSF9ST0xFUyxcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFwaVJlc3BvbnNlLmR0WzBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
236
+ /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(LoginComponent, [{
237
+ type: Component,
238
+ args: [{
239
+ selector: "spa-login",
240
+ templateUrl: "./login.component.html",
241
+ styleUrls: ["./login.component.scss"],
242
+ }]
243
+ }], function () { return [{ type: i1.HttpService }, { type: i2.StorageService }, { type: i3.Router }, { type: i4.MessageService }, { type: i5.DataServiceLib }, { type: i6.AuthService }, { type: i7.LogService }, { type: i3.ActivatedRoute }]; }, null); })();
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGluLXNwYS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsImxpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXpELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNKekQsMEJBQ0E7OztJQUQyQyw2REFBc0I7OztJQUNqRSwwQkFDQTs7O0lBRDJDLDZEQUFzQjs7O0lBQ2pFLDBCQUVGOzs7SUFGNEMsNkRBQXNCOzs7SUFKbEUsK0JBRUU7SUFBQSxzRUFDQTtJQUFBLHNFQUNBO0lBQUEsc0VBRUY7SUFBQSxpQkFBTTs7O0lBSkMsZUFBb0M7SUFBcEMsNERBQW9DO0lBQ3BDLGVBQW9DO0lBQXBDLDREQUFvQztJQUNwQyxlQUFtQztJQUFuQywyREFBbUM7OztJQUsxQywwQkFFTTs7OztJQTJDSSwrQkFDRTtJQUFBLGtDQUFvRztJQUFuQiw2S0FBa0I7SUFBQyxzQkFBTTtJQUFBLGlCQUFTO0lBQ3JILGlCQUFNOzs7O0lBUVosMkJBQ0U7SUFBQSxxQkFDQTtJQUFBLDZCQUFtRjtJQUEzQixpTEFBMEI7SUFBQyxzQ0FBc0I7SUFBQSxpQkFBSTtJQUMvRyxpQkFBTTs7QUQzRGQ7SUFPRSx3QkFBb0IsV0FBd0IsRUFBVSxjQUE4QixFQUFTLE1BQWMsRUFBVSxjQUE4QixFQUFTLFdBQTJCLEVBQzlLLFdBQXdCLEVBQVUsVUFBc0IsRUFBVSxLQUFxQjtRQUQ1RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLFdB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QkFBVztZQUVwRix1Q0FDRTtZQUFBLGtDQUFXO1lBQUEseUJBQVE7WUFBQSxpQkFBWTtZQUMvQixpQ0FDQTtZQURzRSx1R0FBZSxXQUFPLElBQUMsa0lBQUE7WUFBN0YsaUJBQ0E7WUFBQSxtQ0FDRTtZQURnQyxvSEFBc0I7WUFDdEQscUNBQW1DO1lBQUEsYUFBMEM7WUFBQSxpQkFBVztZQUMxRixpQkFBUztZQUNYLGlCQUFpQjtZQUVuQixpQkFBTTtZQUVSLGlCQUFtQjtZQUduQix5Q0FFRTtZQUFBLGdDQUVFO1lBQUEsZ0NBQ0U7WUFBQSxtQ0FBMkg7WUFBbEMsNEZBQVMsV0FBTyxJQUFDO1lBQWlCLHNCQUFLO1lBQUEsaUJBQVM7WUFDM0ksaUJBQU07WUFFTixrRUFDRTtZQUdKLGlCQUFNO1lBRVIsaUJBQW1CO1lBRXJCLGlCQUFXO1lBRVgsa0VBQ0U7WUFJSixpQkFBTTtZQUVSLGlCQUFNO1lBRVIsaUJBQU07O1lBekVDLGVBQTBCO1lBQTFCLCtDQUEwQjtZQVMxQixlQUEyQjtZQUEzQiwrQ0FBMkI7WUFlUixlQUFxQjtZQUFyQiwyQ0FBcUI7WUFPVyxlQUF5QjtZQUF6Qix5Q0FBeUI7WUFJcEMsZUFBbUM7WUFBbkMscURBQW1DLDhCQUFBO1lBQ1gsZUFBbUM7WUFBbkMsNkNBQW1DLDBCQUFBO1lBQ3ZELGVBQTBDO1lBQTFDLGdFQUEwQztZQWN0QyxlQUF5QjtZQUF6QiwyQ0FBeUI7WUFHckIsZUFBNkI7WUFBN0IsZ0RBQTZCO1lBVTdFLGVBQTZCO1lBQTdCLGdEQUE2Qjs7eUJEbkUxQztDQXNJQyxBQTNIRCxJQTJIQztTQXRIWSxjQUFjO2tEQUFkLGNBQWM7Y0FMMUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixXQUFXLEVBQUUsd0JBQXdCO2dCQUNyQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzthQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSBcIi4vLi4vLi4vc2VydmljZXMvbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXNlciwgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvQ2xhc3Nlc1wiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXBpUmVzcG9uc2UsIENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL1RpbkNvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInNwYS1sb2dpblwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbG9naW4uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vbG9naW4uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLCBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSwgcHVibGljIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYixcclxuICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgbG9nU2VydmljZTogTG9nU2VydmljZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlbG9nZ2VkaW4oZmFsc2UpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVSb2xlKG51bGwpO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhcigpO1xyXG5cclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBwQ29uZmlnT2JzZXJ2LnN1YnNjcmliZSh4ID0+IHRoaXMuYXBwQ29uZmlnID0geCk7XHJcblxyXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMucmVkaXJlY3RUbyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5yZWRpcmVjdFBhdGggPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlZGlyZWN0VG9cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnJlZGlyZWN0UGF0aCA9IFwiaG9tZVwiXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RQYXRoXHJcblxyXG4gIHB1YmxpYyB1c2VyID0gbmV3IFVzZXIoKTtcclxuICBoaWRlID0gdHJ1ZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG5cclxuICBwdWJsaWMgc2lnbnVwKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wic2lnbnVwXCJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWNvdmVyQWNjb3VudCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInJlY292ZXItYWNjb3VudFwiXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9naW4oKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlci51c2VyTmFtZSA9PSBcIlwiIHx8IHRoaXMudXNlci5wYXNzd29yZCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgZW50ZXIgeW91ciBjcmVkZW50aWFsc1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhcImxvZ2dpbmcgaW5cIik7XHJcblxyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLnVzZXIudXNlck5hbWUgPSB0aGlzLnVzZXIudXNlck5hbWVcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuTG9naW4odGhpcy51c2VyKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UuZGF0YS5hdXRoVHlwZSA9PSAnbG9jYWwnICYmICF0aGlzLmFwcENvbmZpZy5sb2NhbEF1dGgpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJDb250YWN0IEFkbWluOiBBdXRoZW50aWNhdGlvbiBUeXBlIGVycm9yXCIpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGUgPT0gJ0FEJyAmJiAhdGhpcy5hcHBDb25maWcuQURBdXRoKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQ29udGFjdCBBZG1pbjogQXV0aGVudGljYXRpb24gVHlwZSBlcnJvclwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZWxvZ2dlZGluKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZVRva2VuKGFwaVJlc3BvbnNlLmRhdGEudG9rZW4pO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfVE9LRU4sIGFwaVJlc3BvbnNlLmRhdGEudG9rZW4pO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZVRva2VuRXhwaXJlKGFwaVJlc3BvbnNlLmRhdGEuZXhwaXJhdGlvbik7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9UT0tFTl9FWFBJUkUsIGFwaVJlc3BvbnNlLmRhdGEuZXhwaXJhdGlvbik7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlQ3VycmVudFVzZXIodGhpcy51c2VyLnVzZXJOYW1lKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1VTRVIsIHRoaXMudXNlci51c2VyTmFtZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlTG9nZ2VkVXNlckZ1bGxOYW1lKGFwaVJlc3BvbnNlLmRhdGEuZmlyc3ROYW1lKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX05BTUUsIGFwaVJlc3BvbnNlLmRhdGEuZmlyc3ROYW1lKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVSb2xlKGFwaVJlc3BvbnNlLmRhdGEucm9sZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9ST0xFUywgSlNPTi5zdHJpbmdpZnkoYXBpUmVzcG9uc2UuZGF0YS5yb2xlKSk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhcImxvZ2dlZCBpblwiKTtcclxuXHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5kYXRhLmNoYW5nZVBhc3N3b3JkID09IHRydWUgJiYgYXBpUmVzcG9uc2UuZGF0YS5hdXRoVHlwZSA9PSAnbG9jYWwnKSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiaG9tZS91c2VyL2NoYW5nZS1wYXNzd29yZFwiXSwge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyByZWRpcmVjdFRvOiB0aGlzLnJlZGlyZWN0UGF0aCB9LFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmVkaXJlY3RQYXRoXSk7XHJcblxyXG5cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMudXNlci5wYXNzd29yZCA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QodGhpcy5odHRwU2VydmljZS5FcnJvcihlcnJvcikpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIlxyXG4gIDxkaXYgY2xhc3M9XCJ0aW4tYmctbG9naW4gbG9naW4tcGFnZVwiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhcHBDb25maWcubG9nbyE9JydcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6M2VtO21hcmdpbi1ib3R0b206MWVtXCI+XHJcblxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbm9ybWFsJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJoZWlnaHQ6MTAwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbWVkaXVtJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJoZWlnaHQ6MTUwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbGFyZ2UnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cImhlaWdodDoyNTBweDttYXJnaW4tcmlnaHQ6M2VtO21hcmdpbi1sZWZ0OjNlbVwiIC8+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhcHBDb25maWcubG9nbyA9PScnXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjJlbVwiPlxyXG4gICAgICAgIDwhLS0gQWRkIG1hcmdpbiB0b3Agd2hlbiB0aGVyZSBpcyBubyBsb2dvIC0tPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciByb3cgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjNlbVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLXNtLWJsb2NrXCI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjFlbVwiPlxyXG5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXozXCIgc3R5bGU9XCJ3aWR0aDo0MDBweDsgXCI+XHJcblxyXG4gICAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPnt7YXBwQ29uZmlnLmFwcE5hbWV9fTwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW4taW5wdXQgbXQtMlwiPlxyXG5cclxuICAgICAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHR1c2VyTmFtZVwiIGRpc3BsYXk9XCJVc2VybmFtZVwiIFsodmFsdWUpXT1cInVzZXIudXNlck5hbWVcIiA+PC9zcGEtdGV4dD5cclxuXHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkID5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UGFzc3dvcmQ8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInR4dFBhc3N3b3JkXCIgbWF0SW5wdXQgW3R5cGVdPVwiaGlkZSA/ICdwYXNzd29yZCcgOiAndGV4dCdcIiAgKGtleXVwLmVudGVyKT1cImxvZ2luKClcIiBbKG5nTW9kZWwpXT1cInVzZXIucGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImhpZGUgPSAhaGlkZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hpZGUgcGFzc3dvcmQnXCIgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImhpZGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPnt7aGlkZSA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eSd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG5cclxuXHJcbiAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5Mb2dpblwiICBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCIgKGNsaWNrKT1cImxvZ2luKClcIiBjb2xvcj1cInByaW1hcnlcIj5Mb2dpbjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKm5nSWY9XCJhcHBDb25maWcuc2VsZlNlcnZpY2VcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5TaWdudXBcIiBtYXQtc3Ryb2tlZC1idXR0b24gIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIChjbGljayk9XCJzaWdudXAoKVwiPlNpZ251cDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYXBwQ29uZmlnLnNlbGZTZXJ2aWNlXCI+XHJcbiAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgIDxhIG1hdC1idXR0b24gaWQ9XCJsbmtSZWNvdmVyXCIgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDFlbVwiIChjbGljayk9XCJyZWNvdmVyQWNjb3VudCgpXCI+Rm9yZ290IHlvdXIgcGFzc3dvcmQgPzwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiJdfQ==