@smartbit4all/ng-client 1.1.16 → 1.1.18

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 (259) hide show
  1. package/README.md +386 -386
  2. package/esm2020/lib/session/api/api/api.mjs +4 -4
  3. package/esm2020/lib/session/api/api/session.service.mjs +306 -306
  4. package/esm2020/lib/session/api/configuration.mjs +91 -91
  5. package/esm2020/lib/session/api/encoder.mjs +19 -19
  6. package/esm2020/lib/session/api/index.mjs +3 -3
  7. package/esm2020/lib/session/api/model/accountInfo.mjs +13 -13
  8. package/esm2020/lib/session/api/model/apiError.mjs +13 -13
  9. package/esm2020/lib/session/api/model/authenticationProviderData.mjs +13 -13
  10. package/esm2020/lib/session/api/model/getAuthenticationProvidersResponse.mjs +2 -2
  11. package/esm2020/lib/session/api/model/models.mjs +9 -9
  12. package/esm2020/lib/session/api/model/refreshSessionRequest.mjs +13 -13
  13. package/esm2020/lib/session/api/model/session.mjs +2 -2
  14. package/esm2020/lib/session/api/model/sessionInfoData.mjs +2 -2
  15. package/esm2020/lib/session/api/model/userActivityLog.mjs +13 -13
  16. package/esm2020/lib/session/api/param.mjs +2 -2
  17. package/esm2020/lib/session/api/variables.mjs +9 -9
  18. package/esm2020/lib/session/cookie-service/smart-cookie.service.mjs +225 -225
  19. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +90 -90
  20. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +43 -43
  21. package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +40 -40
  22. package/esm2020/lib/session/dev-tool/smart-dev-tool.interceptor.mjs +52 -52
  23. package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +161 -161
  24. package/esm2020/lib/session/projects.mjs +12 -12
  25. package/esm2020/lib/session/smart-error-catching.interceptor.mjs +71 -71
  26. package/esm2020/lib/session/smart-header-maintainer.interceptor.mjs +36 -36
  27. package/esm2020/lib/session/smart-session-handler.service.mjs +6 -6
  28. package/esm2020/lib/session/smart-session.module.mjs +74 -74
  29. package/esm2020/lib/session/smart-session.service.mjs +204 -204
  30. package/esm2020/lib/session/smart-timer/smart-session-timer.component.mjs +35 -35
  31. package/esm2020/lib/session/smart-timer/smart-session-timer.service.mjs +51 -51
  32. package/esm2020/lib/smart-client/projects.mjs +6 -6
  33. package/esm2020/lib/smart-client/smart-authentication.service.mjs +15 -15
  34. package/esm2020/lib/smart-client/smart-component-api-client.mjs +316 -310
  35. package/esm2020/lib/smart-client/smart.component.mjs +30 -30
  36. package/esm2020/lib/smart-client/smart.service.mjs +30 -30
  37. package/esm2020/lib/smart-client/smart.subject.mjs +21 -21
  38. package/esm2020/lib/smart-ng-client.module.mjs +20 -20
  39. package/esm2020/lib/smart-ng-client.service.mjs +19 -19
  40. package/esm2020/lib/view-context/api/api/api.mjs +4 -4
  41. package/esm2020/lib/view-context/api/api/view.service.mjs +701 -701
  42. package/esm2020/lib/view-context/api/api.module.mjs +40 -40
  43. package/esm2020/lib/view-context/api/configuration.mjs +91 -91
  44. package/esm2020/lib/view-context/api/encoder.mjs +19 -19
  45. package/esm2020/lib/view-context/api/index.mjs +7 -7
  46. package/esm2020/lib/view-context/api/model/closeResult.mjs +17 -17
  47. package/esm2020/lib/view-context/api/model/componentConstraint.mjs +2 -2
  48. package/esm2020/lib/view-context/api/model/componentModel.mjs +2 -2
  49. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +13 -13
  50. package/esm2020/lib/view-context/api/model/dataChange.mjs +2 -2
  51. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +2 -2
  52. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +17 -17
  53. package/esm2020/lib/view-context/api/model/messageData.mjs +2 -2
  54. package/esm2020/lib/view-context/api/model/messageOption.mjs +2 -2
  55. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +17 -17
  56. package/esm2020/lib/view-context/api/model/messageResult.mjs +2 -2
  57. package/esm2020/lib/view-context/api/model/messageType.mjs +18 -18
  58. package/esm2020/lib/view-context/api/model/models.mjs +37 -37
  59. package/esm2020/lib/view-context/api/model/openPendingData.mjs +2 -2
  60. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +2 -2
  61. package/esm2020/lib/view-context/api/model/uiAction.mjs +2 -2
  62. package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +13 -13
  63. package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +16 -16
  64. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +21 -21
  65. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +2 -2
  66. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +2 -2
  67. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +16 -16
  68. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +18 -18
  69. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +13 -13
  70. package/esm2020/lib/view-context/api/model/valueSet.mjs +2 -2
  71. package/esm2020/lib/view-context/api/model/view.mjs +2 -2
  72. package/esm2020/lib/view-context/api/model/viewApiError.mjs +13 -13
  73. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +2 -2
  74. package/esm2020/lib/view-context/api/model/viewContext.mjs +2 -2
  75. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +2 -2
  76. package/esm2020/lib/view-context/api/model/viewContextData.mjs +2 -2
  77. package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +2 -2
  78. package/esm2020/lib/view-context/api/model/viewData.mjs +2 -2
  79. package/esm2020/lib/view-context/api/model/viewEventHandler.mjs +20 -20
  80. package/esm2020/lib/view-context/api/model/viewState.mjs +21 -21
  81. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +2 -2
  82. package/esm2020/lib/view-context/api/model/viewType.mjs +17 -17
  83. package/esm2020/lib/view-context/api/param.mjs +2 -2
  84. package/esm2020/lib/view-context/api/variables.mjs +9 -9
  85. package/esm2020/lib/view-context/message-dialog/message-dialog.component.mjs +63 -63
  86. package/esm2020/lib/view-context/projects.mjs +17 -17
  87. package/esm2020/lib/view-context/property-definition-data.mjs +2 -2
  88. package/esm2020/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +30 -30
  89. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +53 -53
  90. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +47 -47
  91. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +119 -119
  92. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +51 -51
  93. package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +109 -109
  94. package/esm2020/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +118 -118
  95. package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +7 -7
  96. package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +149 -149
  97. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +24 -24
  98. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +49 -49
  99. package/esm2020/lib/view-context/smart-view-context.interceptor.mjs +39 -39
  100. package/esm2020/lib/view-context/smart-view-context.model.mjs +2 -2
  101. package/esm2020/lib/view-context/smart-view-context.module.mjs +84 -84
  102. package/esm2020/lib/view-context/smart-view-context.service.mjs +473 -473
  103. package/esm2020/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +33 -33
  104. package/esm2020/lib/view-context/value-api/api/api.mjs +4 -4
  105. package/esm2020/lib/view-context/value-api/api/value.service.mjs +138 -138
  106. package/esm2020/lib/view-context/value-api/api.module.mjs +40 -40
  107. package/esm2020/lib/view-context/value-api/configuration.mjs +91 -91
  108. package/esm2020/lib/view-context/value-api/encoder.mjs +19 -19
  109. package/esm2020/lib/view-context/value-api/index.mjs +7 -7
  110. package/esm2020/lib/view-context/value-api/model/models.mjs +9 -9
  111. package/esm2020/lib/view-context/value-api/model/value.mjs +13 -13
  112. package/esm2020/lib/view-context/value-api/model/valueSetData.mjs +13 -13
  113. package/esm2020/lib/view-context/value-api/model/valueSetDefinition.mjs +2 -2
  114. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionData.mjs +2 -2
  115. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +23 -23
  116. package/esm2020/lib/view-context/value-api/model/valueSetExpression.mjs +2 -2
  117. package/esm2020/lib/view-context/value-api/model/valueSetOperand.mjs +2 -2
  118. package/esm2020/lib/view-context/value-api/model/valueSetOperation.mjs +18 -18
  119. package/esm2020/lib/view-context/value-api/param.mjs +2 -2
  120. package/esm2020/lib/view-context/value-api/variables.mjs +9 -9
  121. package/esm2020/projects.mjs +9 -9
  122. package/esm2020/smartbit4all-ng-client.mjs +4 -4
  123. package/fesm2015/smartbit4all-ng-client.mjs +4255 -4249
  124. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  125. package/fesm2020/smartbit4all-ng-client.mjs +4209 -4203
  126. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  127. package/lib/session/api/api/api.d.ts +3 -3
  128. package/lib/session/api/api/session.service.d.ts +107 -107
  129. package/lib/session/api/configuration.d.ts +104 -104
  130. package/lib/session/api/encoder.d.ts +11 -11
  131. package/lib/session/api/index.d.ts +2 -2
  132. package/lib/session/api/model/accountInfo.d.ts +22 -22
  133. package/lib/session/api/model/apiError.d.ts +15 -15
  134. package/lib/session/api/model/authenticationProviderData.d.ts +17 -17
  135. package/lib/session/api/model/getAuthenticationProvidersResponse.d.ts +15 -15
  136. package/lib/session/api/model/models.d.ts +8 -8
  137. package/lib/session/api/model/refreshSessionRequest.d.ts +14 -14
  138. package/lib/session/api/model/session.d.ts +32 -32
  139. package/lib/session/api/model/sessionInfoData.d.ts +22 -22
  140. package/lib/session/api/model/userActivityLog.d.ts +33 -33
  141. package/lib/session/api/param.d.ts +37 -37
  142. package/lib/session/api/variables.d.ts +8 -8
  143. package/lib/session/cookie-service/smart-cookie.service.d.ts +129 -129
  144. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.d.ts +28 -28
  145. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +18 -18
  146. package/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.d.ts +15 -15
  147. package/lib/session/dev-tool/smart-dev-tool.interceptor.d.ts +18 -18
  148. package/lib/session/dev-tool/smart-dev-tool.service.d.ts +55 -55
  149. package/lib/session/projects.d.ts +8 -8
  150. package/lib/session/smart-error-catching.interceptor.d.ts +13 -13
  151. package/lib/session/smart-header-maintainer.interceptor.d.ts +11 -11
  152. package/lib/session/smart-session-handler.service.d.ts +11 -11
  153. package/lib/session/smart-session.module.d.ts +15 -15
  154. package/lib/session/smart-session.service.d.ts +50 -50
  155. package/lib/session/smart-timer/smart-session-timer.component.d.ts +14 -14
  156. package/lib/session/smart-timer/smart-session-timer.service.d.ts +21 -21
  157. package/lib/smart-client/projects.d.ts +5 -5
  158. package/lib/smart-client/smart-authentication.service.d.ts +12 -12
  159. package/lib/smart-client/smart-component-api-client.d.ts +71 -71
  160. package/lib/smart-client/smart.component.d.ts +11 -11
  161. package/lib/smart-client/smart.service.d.ts +11 -11
  162. package/lib/smart-client/smart.subject.d.ts +6 -6
  163. package/lib/smart-ng-client.module.d.ts +8 -8
  164. package/lib/smart-ng-client.service.d.ts +10 -10
  165. package/lib/view-context/api/api/api.d.ts +3 -3
  166. package/lib/view-context/api/api/view.service.d.ts +266 -266
  167. package/lib/view-context/api/api.module.d.ts +11 -11
  168. package/lib/view-context/api/configuration.d.ts +104 -104
  169. package/lib/view-context/api/encoder.d.ts +11 -11
  170. package/lib/view-context/api/index.d.ts +6 -6
  171. package/lib/view-context/api/model/closeResult.d.ts +17 -17
  172. package/lib/view-context/api/model/componentConstraint.d.ts +25 -25
  173. package/lib/view-context/api/model/componentModel.d.ts +31 -31
  174. package/lib/view-context/api/model/componentModelChange.d.ts +29 -29
  175. package/lib/view-context/api/model/dataChange.d.ts +27 -27
  176. package/lib/view-context/api/model/dataChangeEvent.d.ts +33 -33
  177. package/lib/view-context/api/model/dataChangeKind.d.ts +20 -20
  178. package/lib/view-context/api/model/messageData.d.ts +29 -29
  179. package/lib/view-context/api/model/messageOption.d.ts +20 -20
  180. package/lib/view-context/api/model/messageOptionType.d.ts +17 -17
  181. package/lib/view-context/api/model/messageResult.d.ts +16 -16
  182. package/lib/view-context/api/model/messageType.d.ts +18 -18
  183. package/lib/view-context/api/model/models.d.ts +36 -36
  184. package/lib/view-context/api/model/openPendingData.d.ts +22 -22
  185. package/lib/view-context/api/model/smartLinkData.d.ts +21 -21
  186. package/lib/view-context/api/model/uiAction.d.ts +29 -29
  187. package/lib/view-context/api/model/uiActionButtonDescriptor.d.ts +18 -18
  188. package/lib/view-context/api/model/uiActionButtonIconPos.d.ts +19 -19
  189. package/lib/view-context/api/model/uiActionButtonType.d.ts +24 -24
  190. package/lib/view-context/api/model/uiActionDescriptor.d.ts +34 -34
  191. package/lib/view-context/api/model/uiActionDialogDescriptor.d.ts +23 -23
  192. package/lib/view-context/api/model/uiActionFeedbackType.d.ts +19 -19
  193. package/lib/view-context/api/model/uiActionInputType.d.ts +18 -18
  194. package/lib/view-context/api/model/uiActionRequest.d.ts +28 -28
  195. package/lib/view-context/api/model/valueSet.d.ts +20 -20
  196. package/lib/view-context/api/model/view.d.ts +68 -68
  197. package/lib/view-context/api/model/viewApiError.d.ts +18 -18
  198. package/lib/view-context/api/model/viewConstraint.d.ts +18 -18
  199. package/lib/view-context/api/model/viewContext.d.ts +22 -22
  200. package/lib/view-context/api/model/viewContextChange.d.ts +20 -20
  201. package/lib/view-context/api/model/viewContextData.d.ts +19 -19
  202. package/lib/view-context/api/model/viewContextUpdate.d.ts +22 -22
  203. package/lib/view-context/api/model/viewData.d.ts +27 -27
  204. package/lib/view-context/api/model/viewEventHandler.d.ts +30 -30
  205. package/lib/view-context/api/model/viewState.d.ts +21 -21
  206. package/lib/view-context/api/model/viewStateUpdate.d.ts +24 -24
  207. package/lib/view-context/api/model/viewType.d.ts +17 -17
  208. package/lib/view-context/api/param.d.ts +37 -37
  209. package/lib/view-context/api/variables.d.ts +8 -8
  210. package/lib/view-context/message-dialog/message-dialog.component.d.ts +17 -17
  211. package/lib/view-context/projects.d.ts +13 -13
  212. package/lib/view-context/property-definition-data.d.ts +5 -5
  213. package/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.d.ts +13 -13
  214. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.d.ts +25 -25
  215. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +18 -18
  216. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +29 -29
  217. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +25 -25
  218. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +30 -30
  219. package/lib/view-context/smart-ui-action/ui-action.descriptor.service.d.ts +21 -21
  220. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +32 -32
  221. package/lib/view-context/smart-ui-action/ui-action.service.d.ts +31 -31
  222. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.d.ts +13 -13
  223. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +19 -19
  224. package/lib/view-context/smart-view-context.interceptor.d.ts +13 -13
  225. package/lib/view-context/smart-view-context.model.d.ts +30 -30
  226. package/lib/view-context/smart-view-context.module.d.ts +20 -20
  227. package/lib/view-context/smart-view-context.service.d.ts +96 -96
  228. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +14 -14
  229. package/lib/view-context/value-api/api/api.d.ts +3 -3
  230. package/lib/view-context/value-api/api/value.service.d.ts +35 -35
  231. package/lib/view-context/value-api/api.module.d.ts +11 -11
  232. package/lib/view-context/value-api/configuration.d.ts +104 -104
  233. package/lib/view-context/value-api/encoder.d.ts +11 -11
  234. package/lib/view-context/value-api/index.d.ts +6 -6
  235. package/lib/view-context/value-api/model/models.d.ts +8 -8
  236. package/lib/view-context/value-api/model/value.d.ts +29 -29
  237. package/lib/view-context/value-api/model/valueSetData.d.ts +41 -41
  238. package/lib/view-context/value-api/model/valueSetDefinition.d.ts +16 -16
  239. package/lib/view-context/value-api/model/valueSetDefinitionData.d.ts +55 -55
  240. package/lib/view-context/value-api/model/valueSetDefinitionKind.d.ts +23 -23
  241. package/lib/view-context/value-api/model/valueSetExpression.d.ts +20 -20
  242. package/lib/view-context/value-api/model/valueSetOperand.d.ts +25 -25
  243. package/lib/view-context/value-api/model/valueSetOperation.d.ts +18 -18
  244. package/lib/view-context/value-api/param.d.ts +37 -37
  245. package/lib/view-context/value-api/variables.d.ts +8 -8
  246. package/package.json +1 -1
  247. package/projects.d.ts +5 -5
  248. package/schematics/collection.json +11 -11
  249. package/schematics/smart-component/index.ts +26 -26
  250. package/schematics/smart-component/schema.json +20 -20
  251. package/schematics/smart-component/smart-component.schema.ts +4 -4
  252. package/schematics/smart-component/templates/__name@dasherize__.component.html.template +2 -2
  253. package/schematics/smart-component/templates/__name@dasherize__.component.ts.template +26 -26
  254. package/smartbit4all-ng-client-1.1.18.tgz +0 -0
  255. package/smartbit4all-ng-client.d.ts +5 -5
  256. package/src/lib/session/api/README.md +226 -226
  257. package/src/lib/view-context/api/README.md +226 -226
  258. package/src/lib/view-context/value-api/README.md +226 -226
  259. package/smartbit4all-ng-client-1.1.16.tgz +0 -0
@@ -1,204 +1,204 @@
1
- import { Injectable } from "@angular/core";
2
- import { Subject } from "rxjs";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./api";
5
- import * as i2 from "./cookie-service/smart-cookie.service";
6
- export class SmartSessionService {
7
- constructor(apiService, cookieService) {
8
- this.apiService = apiService;
9
- this.cookieService = cookieService;
10
- this.isAuthenticated = false;
11
- this.authenticationStateChanged = new Subject();
12
- this.headerParams = new Array();
13
- this.headersUpdated = new Subject();
14
- // Locale
15
- this.localStorageLocaleName = "locale";
16
- this.localeChanged = new Subject();
17
- this.sessionExpiracyChanged = new Subject();
18
- }
19
- get sessionInfoData() {
20
- return this._sessionInfoData;
21
- }
22
- set sessionInfoData(sessionInfoData) {
23
- let expiracyChanged = this.sessionInfoData?.expiration !== sessionInfoData?.expiration;
24
- this._sessionInfoData = sessionInfoData;
25
- if (expiracyChanged) {
26
- this.sessionExpiracyChanged.next();
27
- }
28
- }
29
- setSessionHandlerService(smartSessionHandlerService) {
30
- this.sessionHandlerService = smartSessionHandlerService;
31
- }
32
- async handleSessionError(sessionError) {
33
- if (this.sessionHandlerService) {
34
- await this.sessionHandlerService.handleSessionError(sessionError);
35
- }
36
- throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);
37
- }
38
- addHeaderParam(headerParam) {
39
- this.headerParams.push(headerParam);
40
- this.headersUpdated.next();
41
- }
42
- setUpTokenForSessionService() {
43
- if (this.headerParams.find((header) => header.headerName === "Authorization")) {
44
- let index = this.headerParams.findIndex((header) => header.headerName === "Authorization");
45
- this.headerParams[index].value = `Bearer ${this.token}`;
46
- }
47
- else {
48
- this.addHeaderParam({ headerName: "Authorization", value: `Bearer ${this.token}` });
49
- }
50
- }
51
- setUrl(url) {
52
- this.basePath = url;
53
- }
54
- getBasePath() {
55
- if (!this.basePath) {
56
- throw new Error("BasePath has not been set in SmartSessionService!");
57
- }
58
- return this.basePath;
59
- }
60
- setCookieName(name) {
61
- this.cookieName = name;
62
- }
63
- saveTokenToLocalStorage() {
64
- if (this.sessionInfoData && this.cookieName) {
65
- localStorage.setItem("token", this.sessionInfoData.sid);
66
- if (this.sessionInfoData.refreshToken &&
67
- this.sessionInfoData.refreshToken !== localStorage.getItem("refreshToken")) {
68
- localStorage.setItem("refreshToken", this.sessionInfoData.refreshToken);
69
- }
70
- this.cookieService.set(this.cookieName, this.token);
71
- }
72
- }
73
- setAuthenticationStatus() {
74
- if (this.sessionInfoData && this.sessionInfoData.authentications) {
75
- this.isAuthenticated = this.sessionInfoData.authentications.length > 0;
76
- }
77
- this.authenticationStateChanged.next(this.isAuthenticated);
78
- }
79
- checkStatements() {
80
- if (!this.basePath) {
81
- throw new Error("The url of the backend api has not been set!");
82
- }
83
- else if (!this.cookieName) {
84
- throw new Error("The name of the cookie required by the backend has not been set!");
85
- }
86
- }
87
- async initialize() {
88
- this.checkStatements();
89
- let tokenFromLocalStorage = localStorage.getItem("token");
90
- let tokenFromCookies = this.cookieService.get(this.cookieName);
91
- if (tokenFromLocalStorage &&
92
- tokenFromCookies &&
93
- tokenFromLocalStorage === tokenFromCookies) {
94
- this.token = tokenFromLocalStorage;
95
- this.setUpTokenForSessionService();
96
- try {
97
- await this.getSession();
98
- }
99
- catch (err) {
100
- await this.startSession();
101
- }
102
- }
103
- else {
104
- await this.clearAndStartNewSession();
105
- }
106
- if (this.sessionInfoData && this.sessionInfoData.locale) {
107
- localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
108
- this.localeChanged.next();
109
- }
110
- }
111
- async startSession() {
112
- let sessionInfo = await this.apiService.startSession().toPromise();
113
- if (sessionInfo) {
114
- this.sessionInfoData = sessionInfo;
115
- this.token = sessionInfo.sid;
116
- this.saveTokenToLocalStorage();
117
- this.setAuthenticationStatus();
118
- this.setUpTokenForSessionService();
119
- }
120
- return this.sessionInfoData;
121
- }
122
- async getSession() {
123
- let sessionInfo = await this.apiService.getSession().toPromise();
124
- if (sessionInfo) {
125
- this.sessionInfoData = sessionInfo;
126
- this.token = sessionInfo.sid;
127
- this.saveTokenToLocalStorage();
128
- this.setAuthenticationStatus();
129
- }
130
- return this.sessionInfoData;
131
- }
132
- async refreshSession() {
133
- let refreshToken = localStorage.getItem("refreshToken");
134
- if (!refreshToken) {
135
- return await this.startSession();
136
- }
137
- let sessionInfo = await this.apiService
138
- .refreshSession({
139
- refreshToken,
140
- })
141
- .toPromise()
142
- .catch(async (error) => {
143
- if (error.error &&
144
- error.error.code &&
145
- error.error.code === "session.refreshtoken.invalid") {
146
- await this.startSession();
147
- }
148
- });
149
- if (sessionInfo) {
150
- this.sessionInfoData = sessionInfo;
151
- this.token = sessionInfo.sid;
152
- this.saveTokenToLocalStorage();
153
- this.setAuthenticationStatus();
154
- this.setUpTokenForSessionService();
155
- }
156
- return this.sessionInfoData;
157
- }
158
- async getAuthenticationProviders() {
159
- let providers = await this.apiService
160
- .getAuthenticationProviders()
161
- .toPromise();
162
- this.providers = providers?.authenticationProviders;
163
- return this.providers;
164
- }
165
- async getIsAuthenticated() {
166
- if (this.sessionInfoData) {
167
- return this.isAuthenticated;
168
- }
169
- await this.getSession();
170
- return this.isAuthenticated;
171
- }
172
- async clearAndStartNewSession() {
173
- sessionStorage.clear();
174
- localStorage.clear();
175
- this.headerParams = [];
176
- this.cookieService.delete(this.cookieName);
177
- await this.startSession();
178
- }
179
- getLocale() {
180
- if (this.sessionInfoData && this.sessionInfoData.locale) {
181
- if (localStorage.getItem(this.localStorageLocaleName) !== this.sessionInfoData.locale) {
182
- localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
183
- }
184
- return this.sessionInfoData.locale;
185
- }
186
- throw new Error("There is no SessionInfoData or locale is undefined.");
187
- }
188
- async changeLocale(locale) {
189
- this.sessionInfoData = await this.apiService.setLocale(locale).toPromise();
190
- if (this.sessionInfoData && this.sessionInfoData.locale) {
191
- localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
192
- this.localeChanged.next();
193
- }
194
- }
195
- }
196
- SmartSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, deps: [{ token: i1.SessionService }, { token: i2.SmartCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
197
- SmartSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, providedIn: "root" });
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, decorators: [{
199
- type: Injectable,
200
- args: [{
201
- providedIn: "root",
202
- }]
203
- }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.SmartCookieService }]; } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBa0IvQixNQUFNLE9BQU8sbUJBQW1CO0lBbUM1QixZQUFvQixVQUEwQixFQUFVLGFBQWlDO1FBQXJFLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBZmxGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLCtCQUEwQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTdELGlCQUFZLEdBQXVCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDL0MsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVyRCxTQUFTO1FBQ0QsMkJBQXNCLEdBQVcsUUFBUSxDQUFDO1FBQzNDLGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFN0MsMkJBQXNCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFJK0IsQ0FBQztJQTlCN0YsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFZLGVBQWUsQ0FBQyxlQUE0QztRQUNwRSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBRXZGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFFeEMsSUFBSSxlQUFlLEVBQUU7WUFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFD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b25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgQXBpRXJyb3IsXG4gICAgQXV0aGVudGljYXRpb25Qcm92aWRlckRhdGEsXG4gICAgR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSxcbiAgICBTZXNzaW9uSW5mb0RhdGEsXG4gICAgU2Vzc2lvblNlcnZpY2UsXG59IGZyb20gXCIuL2FwaVwiO1xuaW1wb3J0IHsgU21hcnRDb29raWVTZXJ2aWNlIH0gZnJvbSBcIi4vY29va2llLXNlcnZpY2Uvc21hcnQtY29va2llLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlc3Npb25FcnJvciwgU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tIFwiLi9zbWFydC1zZXNzaW9uLWhhbmRsZXIuc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclBhcmFtIHtcbiAgICBoZWFkZXJOYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbn1cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRTZXNzaW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBiYXNlUGF0aD86IHN0cmluZztcbiAgICBwcml2YXRlIHRva2VuPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3Nlc3Npb25JbmZvRGF0YT86IFNlc3Npb25JbmZvRGF0YTtcblxuICAgIHB1YmxpYyBnZXQgc2Vzc2lvbkluZm9EYXRhKCk6IFNlc3Npb25JbmZvRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSW5mb0RhdGE7XG4gICAgfVxuICAgIHByaXZhdGUgc2V0IHNlc3Npb25JbmZvRGF0YShzZXNzaW9uSW5mb0RhdGE6IFNlc3Npb25JbmZvRGF0YSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgZXhwaXJhY3lDaGFuZ2VkID0gdGhpcy5zZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb24gIT09IHNlc3Npb25JbmZvRGF0YT8uZXhwaXJhdGlvbjtcblxuICAgICAgICB0aGlzLl9zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mb0RhdGE7XG5cbiAgICAgICAgaWYgKGV4cGlyYWN5Q2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uRXhwaXJhY3lDaGFuZ2VkLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvdmlkZXJzPzogQXJyYXk8QXV0aGVudGljYXRpb25Qcm92aWRlckRhdGE+O1xuICAgIHByaXZhdGUgY29va2llTmFtZT86IHN0cmluZztcbiAgICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TdGF0ZUNoYW5nZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHVibGljIGhlYWRlclBhcmFtczogQXJyYXk8SGVhZGVyUGFyYW0+ID0gbmV3IEFycmF5KCk7XG4gICAgcHVibGljIGhlYWRlcnNVcGRhdGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8vIExvY2FsZVxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlTG9jYWxlTmFtZTogc3RyaW5nID0gXCJsb2NhbGVcIjtcbiAgICBwdWJsaWMgbG9jYWxlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwdWJsaWMgc2Vzc2lvbkV4cGlyYWN5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIHNlc3Npb25IYW5kbGVyU2VydmljZT86IFNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBTbWFydENvb2tpZVNlcnZpY2UpIHt9XG5cbiAgICBwdWJsaWMgc2V0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlKHNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlOiBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZSA9IHNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yOiBTZXNzaW9uRXJyb3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkhhbmRsZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZS5oYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHNlc3Npb25IYW5kbGVyU2VydmljZSB3YXMgbm90IGluaXRpYWxpemVkLiBFcnJvcjogJHtzZXNzaW9uRXJyb3IuY29kZX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSGVhZGVyUGFyYW0oaGVhZGVyUGFyYW06IEhlYWRlclBhcmFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVhZGVyUGFyYW1zLnB1c2goaGVhZGVyUGFyYW0pO1xuICAgICAgICB0aGlzLmhlYWRlcnNVcGRhdGVkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5oZWFkZXJQYXJhbXMuZmluZCgoaGVhZGVyOiBIZWFkZXJQYXJhbSkgPT4gaGVhZGVyLmhlYWRlck5hbWUgPT09IFwiQXV0aG9yaXphdGlvblwiKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuaGVhZGVyUGFyYW1zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAoaGVhZGVyOiBIZWFkZXJQYXJhbSkgPT4gaGVhZGVyLmhlYWRlck5hbWUgPT09IFwiQXV0aG9yaXphdGlvblwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJQYXJhbXNbaW5kZXghXS52YWx1ZSA9IGBCZWFyZXIgJHt0aGlzLnRva2VuIX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJQYXJhbSh7IGhlYWRlck5hbWU6IFwiQXV0aG9yaXphdGlvblwiLCB2YWx1ZTogYEJlYXJlciAke3RoaXMudG9rZW4hfWAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSB1cmw7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRCYXNlUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYmFzZVBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJhc2VQYXRoIGhhcyBub3QgYmVlbiBzZXQgaW4gU21hcnRTZXNzaW9uU2VydmljZSFcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29va2llTmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuY29va2llTmFtZSkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ0b2tlblwiLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5zaWQpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAhPT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJyZWZyZXNoVG9rZW5cIilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicmVmcmVzaFRva2VuXCIsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KHRoaXMuY29va2llTmFtZSwgdGhpcy50b2tlbiEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBdXRoZW50aWNhdGlvblN0YXR1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLnNlc3Npb25JbmZvRGF0YS5hdXRoZW50aWNhdGlvbnMubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU3RhdGVDaGFuZ2VkLm5leHQodGhpcy5pc0F1dGhlbnRpY2F0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tTdGF0ZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYmFzZVBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB1cmwgb2YgdGhlIGJhY2tlbmQgYXBpIGhhcyBub3QgYmVlbiBzZXQhXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvb2tpZU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBuYW1lIG9mIHRoZSBjb29raWUgcmVxdWlyZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlbWVudHMoKTtcblxuICAgICAgICBsZXQgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKTtcbiAgICAgICAgbGV0IHRva2VuRnJvbUNvb2tpZXMgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuY29va2llTmFtZSEpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRva2VuRnJvbUxvY2FsU3RvcmFnZSAmJlxuICAgICAgICAgICAgdG9rZW5Gcm9tQ29va2llcyAmJlxuICAgICAgICAgICAgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlID09PSB0b2tlbkZyb21Db29raWVzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuRnJvbUxvY2FsU3RvcmFnZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBUb2tlbkZvclNlc3Npb25TZXJ2aWNlKCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbigpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xlYXJBbmRTdGFydE5ld1Nlc3Npb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzdGFydFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcbiAgICAgICAgbGV0IHNlc3Npb25JbmZvID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN0YXJ0U2Vzc2lvbigpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAoc2Vzc2lvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhID0gc2Vzc2lvbkluZm87XG4gICAgICAgICAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xuICAgICAgICAgICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5zZXRBdXRoZW50aWNhdGlvblN0YXR1cygpO1xuICAgICAgICAgICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YSE7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcbiAgICAgICAgbGV0IHNlc3Npb25JbmZvID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldFNlc3Npb24oKS50b1Byb21pc2UoKTtcbiAgICAgICAgaWYgKHNlc3Npb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHNlc3Npb25JbmZvLnNpZDtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRva2VuVG9Mb2NhbFN0b3JhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YSE7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZnJlc2hTZXNzaW9uKCk6IFByb21pc2U8U2Vzc2lvbkluZm9EYXRhPiB7XG4gICAgICAgIGxldCByZWZyZXNoVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInJlZnJlc2hUb2tlblwiKTtcbiAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlc3Npb25JbmZvID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAgICAgICAucmVmcmVzaFNlc3Npb24oe1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC5jYXRjaChhc3luYyAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBlcnJvci5lcnJvciAmJlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3IpLmNvZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlID09PSBcInNlc3Npb24ucmVmcmVzaHRva2VuLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzZXNzaW9uSW5mbykge1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mbztcbiAgICAgICAgICAgIHRoaXMudG9rZW4gPSBzZXNzaW9uSW5mby5zaWQ7XG4gICAgICAgICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkluZm9EYXRhITtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnMoKTogUHJvbWlzZTxBcnJheTxBdXRoZW50aWNhdGlvblByb3ZpZGVyRGF0YT4+IHtcbiAgICAgICAgbGV0IHByb3ZpZGVyczogR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuYXBpU2VydmljZVxuICAgICAgICAgICAgLmdldEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzKClcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgICB0aGlzLnByb3ZpZGVycyA9IHByb3ZpZGVycz8uYXV0aGVudGljYXRpb25Qcm92aWRlcnM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJzITtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZDtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmdldFNlc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhckFuZFN0YXJ0TmV3U2Vzc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaGVhZGVyUGFyYW1zID0gW107XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5jb29raWVOYW1lISk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUpICE9PSB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZXJlIGlzIG5vIFNlc3Npb25JbmZvRGF0YSBvciBsb2NhbGUgaXMgdW5kZWZpbmVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hhbmdlTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnNldExvY2FsZShsb2NhbGUpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
1
+ import { Injectable } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./api";
5
+ import * as i2 from "./cookie-service/smart-cookie.service";
6
+ export class SmartSessionService {
7
+ constructor(apiService, cookieService) {
8
+ this.apiService = apiService;
9
+ this.cookieService = cookieService;
10
+ this.isAuthenticated = false;
11
+ this.authenticationStateChanged = new Subject();
12
+ this.headerParams = new Array();
13
+ this.headersUpdated = new Subject();
14
+ // Locale
15
+ this.localStorageLocaleName = "locale";
16
+ this.localeChanged = new Subject();
17
+ this.sessionExpiracyChanged = new Subject();
18
+ }
19
+ get sessionInfoData() {
20
+ return this._sessionInfoData;
21
+ }
22
+ set sessionInfoData(sessionInfoData) {
23
+ let expiracyChanged = this.sessionInfoData?.expiration !== sessionInfoData?.expiration;
24
+ this._sessionInfoData = sessionInfoData;
25
+ if (expiracyChanged) {
26
+ this.sessionExpiracyChanged.next();
27
+ }
28
+ }
29
+ setSessionHandlerService(smartSessionHandlerService) {
30
+ this.sessionHandlerService = smartSessionHandlerService;
31
+ }
32
+ async handleSessionError(sessionError) {
33
+ if (this.sessionHandlerService) {
34
+ await this.sessionHandlerService.handleSessionError(sessionError);
35
+ }
36
+ throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);
37
+ }
38
+ addHeaderParam(headerParam) {
39
+ this.headerParams.push(headerParam);
40
+ this.headersUpdated.next();
41
+ }
42
+ setUpTokenForSessionService() {
43
+ if (this.headerParams.find((header) => header.headerName === "Authorization")) {
44
+ let index = this.headerParams.findIndex((header) => header.headerName === "Authorization");
45
+ this.headerParams[index].value = `Bearer ${this.token}`;
46
+ }
47
+ else {
48
+ this.addHeaderParam({ headerName: "Authorization", value: `Bearer ${this.token}` });
49
+ }
50
+ }
51
+ setUrl(url) {
52
+ this.basePath = url;
53
+ }
54
+ getBasePath() {
55
+ if (!this.basePath) {
56
+ throw new Error("BasePath has not been set in SmartSessionService!");
57
+ }
58
+ return this.basePath;
59
+ }
60
+ setCookieName(name) {
61
+ this.cookieName = name;
62
+ }
63
+ saveTokenToLocalStorage() {
64
+ if (this.sessionInfoData && this.cookieName) {
65
+ localStorage.setItem("token", this.sessionInfoData.sid);
66
+ if (this.sessionInfoData.refreshToken &&
67
+ this.sessionInfoData.refreshToken !== localStorage.getItem("refreshToken")) {
68
+ localStorage.setItem("refreshToken", this.sessionInfoData.refreshToken);
69
+ }
70
+ this.cookieService.set(this.cookieName, this.token);
71
+ }
72
+ }
73
+ setAuthenticationStatus() {
74
+ if (this.sessionInfoData && this.sessionInfoData.authentications) {
75
+ this.isAuthenticated = this.sessionInfoData.authentications.length > 0;
76
+ }
77
+ this.authenticationStateChanged.next(this.isAuthenticated);
78
+ }
79
+ checkStatements() {
80
+ if (!this.basePath) {
81
+ throw new Error("The url of the backend api has not been set!");
82
+ }
83
+ else if (!this.cookieName) {
84
+ throw new Error("The name of the cookie required by the backend has not been set!");
85
+ }
86
+ }
87
+ async initialize() {
88
+ this.checkStatements();
89
+ let tokenFromLocalStorage = localStorage.getItem("token");
90
+ let tokenFromCookies = this.cookieService.get(this.cookieName);
91
+ if (tokenFromLocalStorage &&
92
+ tokenFromCookies &&
93
+ tokenFromLocalStorage === tokenFromCookies) {
94
+ this.token = tokenFromLocalStorage;
95
+ this.setUpTokenForSessionService();
96
+ try {
97
+ await this.getSession();
98
+ }
99
+ catch (err) {
100
+ await this.startSession();
101
+ }
102
+ }
103
+ else {
104
+ await this.clearAndStartNewSession();
105
+ }
106
+ if (this.sessionInfoData && this.sessionInfoData.locale) {
107
+ localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
108
+ this.localeChanged.next();
109
+ }
110
+ }
111
+ async startSession() {
112
+ let sessionInfo = await this.apiService.startSession().toPromise();
113
+ if (sessionInfo) {
114
+ this.sessionInfoData = sessionInfo;
115
+ this.token = sessionInfo.sid;
116
+ this.saveTokenToLocalStorage();
117
+ this.setAuthenticationStatus();
118
+ this.setUpTokenForSessionService();
119
+ }
120
+ return this.sessionInfoData;
121
+ }
122
+ async getSession() {
123
+ let sessionInfo = await this.apiService.getSession().toPromise();
124
+ if (sessionInfo) {
125
+ this.sessionInfoData = sessionInfo;
126
+ this.token = sessionInfo.sid;
127
+ this.saveTokenToLocalStorage();
128
+ this.setAuthenticationStatus();
129
+ }
130
+ return this.sessionInfoData;
131
+ }
132
+ async refreshSession() {
133
+ let refreshToken = localStorage.getItem("refreshToken");
134
+ if (!refreshToken) {
135
+ return await this.startSession();
136
+ }
137
+ let sessionInfo = await this.apiService
138
+ .refreshSession({
139
+ refreshToken,
140
+ })
141
+ .toPromise()
142
+ .catch(async (error) => {
143
+ if (error.error &&
144
+ error.error.code &&
145
+ error.error.code === "session.refreshtoken.invalid") {
146
+ await this.startSession();
147
+ }
148
+ });
149
+ if (sessionInfo) {
150
+ this.sessionInfoData = sessionInfo;
151
+ this.token = sessionInfo.sid;
152
+ this.saveTokenToLocalStorage();
153
+ this.setAuthenticationStatus();
154
+ this.setUpTokenForSessionService();
155
+ }
156
+ return this.sessionInfoData;
157
+ }
158
+ async getAuthenticationProviders() {
159
+ let providers = await this.apiService
160
+ .getAuthenticationProviders()
161
+ .toPromise();
162
+ this.providers = providers?.authenticationProviders;
163
+ return this.providers;
164
+ }
165
+ async getIsAuthenticated() {
166
+ if (this.sessionInfoData) {
167
+ return this.isAuthenticated;
168
+ }
169
+ await this.getSession();
170
+ return this.isAuthenticated;
171
+ }
172
+ async clearAndStartNewSession() {
173
+ sessionStorage.clear();
174
+ localStorage.clear();
175
+ this.headerParams = [];
176
+ this.cookieService.delete(this.cookieName);
177
+ await this.startSession();
178
+ }
179
+ getLocale() {
180
+ if (this.sessionInfoData && this.sessionInfoData.locale) {
181
+ if (localStorage.getItem(this.localStorageLocaleName) !== this.sessionInfoData.locale) {
182
+ localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
183
+ }
184
+ return this.sessionInfoData.locale;
185
+ }
186
+ throw new Error("There is no SessionInfoData or locale is undefined.");
187
+ }
188
+ async changeLocale(locale) {
189
+ this.sessionInfoData = await this.apiService.setLocale(locale).toPromise();
190
+ if (this.sessionInfoData && this.sessionInfoData.locale) {
191
+ localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
192
+ this.localeChanged.next();
193
+ }
194
+ }
195
+ }
196
+ SmartSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, deps: [{ token: i1.SessionService }, { token: i2.SmartCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
197
+ SmartSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, providedIn: "root" });
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionService, decorators: [{
199
+ type: Injectable,
200
+ args: [{
201
+ providedIn: "root",
202
+ }]
203
+ }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.SmartCookieService }]; } });
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBa0IvQixNQUFNLE9BQU8sbUJBQW1CO0lBbUM1QixZQUFvQixVQUEwQixFQUFVLGFBQWlDO1FBQXJFLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBZmxGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLCtCQUEwQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTdELGlCQUFZLEdBQXVCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDL0MsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVyRCxTQUFTO1FBQ0QsMkJBQXNCLEdBQVcsUUFBUSxDQUFDO1FBQzNDLGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFN0MsMkJBQXNCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFJK0IsQ0FBQztJQTlCN0YsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFZLGVBQWUsQ0FBQyxlQUE0QztRQUNwRSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBRXZGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFFeEMsSUFBSSxlQUFlLEVBQUU7WUFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFD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b25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBcGlFcnJvcixcclxuICAgIEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhLFxyXG4gICAgR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSxcclxuICAgIFNlc3Npb25JbmZvRGF0YSxcclxuICAgIFNlc3Npb25TZXJ2aWNlLFxyXG59IGZyb20gXCIuL2FwaVwiO1xyXG5pbXBvcnQgeyBTbWFydENvb2tpZVNlcnZpY2UgfSBmcm9tIFwiLi9jb29raWUtc2VydmljZS9zbWFydC1jb29raWUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uRXJyb3IsIFNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc21hcnQtc2Vzc2lvbi1oYW5kbGVyLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUGFyYW0ge1xyXG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBiYXNlUGF0aD86IHN0cmluZztcclxuICAgIHByaXZhdGUgdG9rZW4/OiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9zZXNzaW9uSW5mb0RhdGE/OiBTZXNzaW9uSW5mb0RhdGE7XHJcblxyXG4gICAgcHVibGljIGdldCBzZXNzaW9uSW5mb0RhdGEoKTogU2Vzc2lvbkluZm9EYXRhIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkluZm9EYXRhO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBzZXQgc2Vzc2lvbkluZm9EYXRhKHNlc3Npb25JbmZvRGF0YTogU2Vzc2lvbkluZm9EYXRhIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgbGV0IGV4cGlyYWN5Q2hhbmdlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhPy5leHBpcmF0aW9uICE9PSBzZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb247XHJcblxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvRGF0YTtcclxuXHJcbiAgICAgICAgaWYgKGV4cGlyYWN5Q2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25FeHBpcmFjeUNoYW5nZWQubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb3ZpZGVycz86IEFycmF5PEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhPjtcclxuICAgIHByaXZhdGUgY29va2llTmFtZT86IHN0cmluZztcclxuICAgIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TdGF0ZUNoYW5nZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHB1YmxpYyBoZWFkZXJQYXJhbXM6IEFycmF5PEhlYWRlclBhcmFtPiA9IG5ldyBBcnJheSgpO1xyXG4gICAgcHVibGljIGhlYWRlcnNVcGRhdGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICAvLyBMb2NhbGVcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlTG9jYWxlTmFtZTogc3RyaW5nID0gXCJsb2NhbGVcIjtcclxuICAgIHB1YmxpYyBsb2NhbGVDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBwdWJsaWMgc2Vzc2lvbkV4cGlyYWN5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uSGFuZGxlclNlcnZpY2U/OiBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlLCBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IFNtYXJ0Q29va2llU2VydmljZSkge31cclxuXHJcbiAgICBwdWJsaWMgc2V0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlKHNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlOiBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkhhbmRsZXJTZXJ2aWNlID0gc21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZVNlc3Npb25FcnJvcihzZXNzaW9uRXJyb3I6IFNlc3Npb25FcnJvcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZS5oYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzZXNzaW9uSGFuZGxlclNlcnZpY2Ugd2FzIG5vdCBpbml0aWFsaXplZC4gRXJyb3I6ICR7c2Vzc2lvbkVycm9yLmNvZGV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZEhlYWRlclBhcmFtKGhlYWRlclBhcmFtOiBIZWFkZXJQYXJhbSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyUGFyYW1zLnB1c2goaGVhZGVyUGFyYW0pO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyc1VwZGF0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VXBUb2tlbkZvclNlc3Npb25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJQYXJhbXMuZmluZCgoaGVhZGVyOiBIZWFkZXJQYXJhbSkgPT4gaGVhZGVyLmhlYWRlck5hbWUgPT09IFwiQXV0aG9yaXphdGlvblwiKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmhlYWRlclBhcmFtcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAoaGVhZGVyOiBIZWFkZXJQYXJhbSkgPT4gaGVhZGVyLmhlYWRlck5hbWUgPT09IFwiQXV0aG9yaXphdGlvblwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyUGFyYW1zW2luZGV4IV0udmFsdWUgPSBgQmVhcmVyICR7dGhpcy50b2tlbiF9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEhlYWRlclBhcmFtKHsgaGVhZGVyTmFtZTogXCJBdXRob3JpemF0aW9uXCIsIHZhbHVlOiBgQmVhcmVyICR7dGhpcy50b2tlbiF9YCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSB1cmw7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuYmFzZVBhdGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQmFzZVBhdGggaGFzIG5vdCBiZWVuIHNldCBpbiBTbWFydFNlc3Npb25TZXJ2aWNlIVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb29raWVOYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLmNvb2tpZU5hbWUpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ0b2tlblwiLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5zaWQpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YS5yZWZyZXNoVG9rZW4gJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAhPT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJyZWZyZXNoVG9rZW5cIilcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlZnJlc2hUb2tlblwiLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5yZWZyZXNoVG9rZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQodGhpcy5jb29raWVOYW1lLCB0aGlzLnRva2VuISk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucy5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU3RhdGVDaGFuZ2VkLm5leHQodGhpcy5pc0F1dGhlbnRpY2F0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTdGF0ZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5iYXNlUGF0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgdXJsIG9mIHRoZSBiYWNrZW5kIGFwaSBoYXMgbm90IGJlZW4gc2V0IVwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvb2tpZU5hbWUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIG5hbWUgb2YgdGhlIGNvb2tpZSByZXF1aXJlZCBieSB0aGUgYmFja2VuZCBoYXMgbm90IGJlZW4gc2V0IVwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlbWVudHMoKTtcclxuXHJcbiAgICAgICAgbGV0IHRva2VuRnJvbUxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIik7XHJcbiAgICAgICAgbGV0IHRva2VuRnJvbUNvb2tpZXMgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuY29va2llTmFtZSEpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRva2VuRnJvbUxvY2FsU3RvcmFnZSAmJlxyXG4gICAgICAgICAgICB0b2tlbkZyb21Db29raWVzICYmXHJcbiAgICAgICAgICAgIHRva2VuRnJvbUxvY2FsU3RvcmFnZSA9PT0gdG9rZW5Gcm9tQ29va2llc1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW5Gcm9tTG9jYWxTdG9yYWdlO1xyXG4gICAgICAgICAgICB0aGlzLnNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xlYXJBbmRTdGFydE5ld1Nlc3Npb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYWxlQ2hhbmdlZC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgc3RhcnRTZXNzaW9uKCk6IFByb21pc2U8U2Vzc2lvbkluZm9EYXRhPiB7XHJcbiAgICAgICAgbGV0IHNlc3Npb25JbmZvID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN0YXJ0U2Vzc2lvbigpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIGlmIChzZXNzaW9uSW5mbykge1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YSE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcclxuICAgICAgICBsZXQgc2Vzc2lvbkluZm8gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0U2Vzc2lvbigpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIGlmIChzZXNzaW9uSW5mbykge1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YSE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIHJlZnJlc2hTZXNzaW9uKCk6IFByb21pc2U8U2Vzc2lvbkluZm9EYXRhPiB7XHJcbiAgICAgICAgbGV0IHJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicmVmcmVzaFRva2VuXCIpO1xyXG4gICAgICAgIGlmICghcmVmcmVzaFRva2VuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHNlc3Npb25JbmZvID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZWZyZXNoU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW4sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAuY2F0Y2goYXN5bmMgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlID09PSBcInNlc3Npb24ucmVmcmVzaHRva2VuLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChzZXNzaW9uSW5mbykge1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YSE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzKCk6IFByb21pc2U8QXJyYXk8QXV0aGVudGljYXRpb25Qcm92aWRlckRhdGE+PiB7XHJcbiAgICAgICAgbGV0IHByb3ZpZGVyczogR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuYXBpU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnMoKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMucHJvdmlkZXJzID0gcHJvdmlkZXJzPy5hdXRoZW50aWNhdGlvblByb3ZpZGVycztcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJzITtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0SXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJBbmRTdGFydE5ld1Nlc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmhlYWRlclBhcmFtcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5jb29raWVOYW1lISk7XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuc3RhcnRTZXNzaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldExvY2FsZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpIHtcclxuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSkgIT09IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VMb2NhbGVOYW1lLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZXJlIGlzIG5vIFNlc3Npb25JbmZvRGF0YSBvciBsb2NhbGUgaXMgdW5kZWZpbmVkLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY2hhbmdlTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2Uuc2V0TG9jYWxlKGxvY2FsZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYWxlQ2hhbmdlZC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,35 +1,35 @@
1
- import { Component } from "@angular/core";
2
- import { Subject, takeUntil } from "rxjs";
3
- import { SmartSessionTimerService } from "./smart-session-timer.service";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./smart-session-timer.service";
6
- import * as i2 from "@angular/common";
7
- export class SmartSessionTimerComponent {
8
- constructor(service) {
9
- this.service = service;
10
- this._destroy$ = new Subject();
11
- }
12
- ngOnInit() {
13
- this.service.startTimer();
14
- this.timeInSeconds = this.service.timeLeftInSeconds;
15
- this.service.timeChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
- this.timeInSeconds = this.service.timeLeftInSeconds;
17
- });
18
- }
19
- ngOnDestroy() {
20
- this._destroy$.next();
21
- this._destroy$.complete();
22
- }
23
- formatTime(seconds) {
24
- let minutes = Math.floor(seconds / 60);
25
- let remainingSeconds = seconds % 60;
26
- return `${minutes}:${remainingSeconds < 10 ? "0" : ""}${remainingSeconds}`;
27
- }
28
- }
29
- SmartSessionTimerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: i1.SmartSessionTimerService }], target: i0.ɵɵFactoryTarget.Component });
30
- SmartSessionTimerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartSessionTimerComponent, selector: "smart-session-timer", providers: [SmartSessionTimerService], ngImport: i0, template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: "smart-session-timer", providers: [SmartSessionTimerService], template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n", styles: [""] }]
34
- }], ctorParameters: function () { return [{ type: i1.SmartSessionTimerService }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUXpFLE1BQU0sT0FBTywwQkFBMEI7SUFLckMsWUFBbUIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFKNUMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSU0sQ0FBQztJQUV4RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFFcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLGdCQUFnQixHQUFXLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDNUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDN0UsQ0FBQzs7d0hBekJVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDhDQUYxQixDQUFDLHdCQUF3QixDQUFDLDBCQ1R2QyxrTEFLQTs0RkRNYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UscUJBQXFCLGFBR3BCLENBQUMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblRpbWVyU2VydmljZSB9IGZyb20gXCIuL3NtYXJ0LXNlc3Npb24tdGltZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic21hcnQtc2Vzc2lvbi10aW1lclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LmNzc1wiXSxcbiAgcHJvdmlkZXJzOiBbU21hcnRTZXNzaW9uVGltZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRTZXNzaW9uVGltZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICB0aW1lSW5TZWNvbmRzPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBTbWFydFNlc3Npb25UaW1lclNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLnN0YXJ0VGltZXIoKTtcbiAgICB0aGlzLnRpbWVJblNlY29uZHMgPSB0aGlzLnNlcnZpY2UudGltZUxlZnRJblNlY29uZHM7XG5cbiAgICB0aGlzLnNlcnZpY2UudGltZUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy50aW1lSW5TZWNvbmRzID0gdGhpcy5zZXJ2aWNlLnRpbWVMZWZ0SW5TZWNvbmRzO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBmb3JtYXRUaW1lKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IG1pbnV0ZXM6IG51bWJlciA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBsZXQgcmVtYWluaW5nU2Vjb25kczogbnVtYmVyID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW51dGVzfToke3JlbWFpbmluZ1NlY29uZHMgPCAxMCA/IFwiMFwiIDogXCJcIn0ke3JlbWFpbmluZ1NlY29uZHN9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNtYXJ0LXNlc3Npb24tdGltZXItY29udGFpbmVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyXCIgKm5nSWY9XCJ0aW1lSW5TZWNvbmRzXCI+XG4gICAgICAgIHt7IGZvcm1hdFRpbWUodGltZUluU2Vjb25kcyEpIH19XG4gICAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
1
+ import { Component } from "@angular/core";
2
+ import { Subject, takeUntil } from "rxjs";
3
+ import { SmartSessionTimerService } from "./smart-session-timer.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./smart-session-timer.service";
6
+ import * as i2 from "@angular/common";
7
+ export class SmartSessionTimerComponent {
8
+ constructor(service) {
9
+ this.service = service;
10
+ this._destroy$ = new Subject();
11
+ }
12
+ ngOnInit() {
13
+ this.service.startTimer();
14
+ this.timeInSeconds = this.service.timeLeftInSeconds;
15
+ this.service.timeChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
16
+ this.timeInSeconds = this.service.timeLeftInSeconds;
17
+ });
18
+ }
19
+ ngOnDestroy() {
20
+ this._destroy$.next();
21
+ this._destroy$.complete();
22
+ }
23
+ formatTime(seconds) {
24
+ let minutes = Math.floor(seconds / 60);
25
+ let remainingSeconds = seconds % 60;
26
+ return `${minutes}:${remainingSeconds < 10 ? "0" : ""}${remainingSeconds}`;
27
+ }
28
+ }
29
+ SmartSessionTimerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: i1.SmartSessionTimerService }], target: i0.ɵɵFactoryTarget.Component });
30
+ SmartSessionTimerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SmartSessionTimerComponent, selector: "smart-session-timer", providers: [SmartSessionTimerService], ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\r\n {{ formatTime(timeInSeconds!) }}\r\n </span>\r\n</div>\r\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: "smart-session-timer", providers: [SmartSessionTimerService], template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\r\n {{ formatTime(timeInSeconds!) }}\r\n </span>\r\n</div>\r\n", styles: [""] }]
34
+ }], ctorParameters: function () { return [{ type: i1.SmartSessionTimerService }]; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUXpFLE1BQU0sT0FBTywwQkFBMEI7SUFLckMsWUFBbUIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFKNUMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSU0sQ0FBQztJQUV4RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFFcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLGdCQUFnQixHQUFXLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDNUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDN0UsQ0FBQzs7d0hBekJVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDhDQUYxQixDQUFDLHdCQUF3QixDQUFDLDBCQ1R2Qyw0TEFLQTs0RkRNYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UscUJBQXFCLGFBR3BCLENBQUMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblRpbWVyU2VydmljZSB9IGZyb20gXCIuL3NtYXJ0LXNlc3Npb24tdGltZXIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic21hcnQtc2Vzc2lvbi10aW1lclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5jc3NcIl0sXHJcbiAgcHJvdmlkZXJzOiBbU21hcnRTZXNzaW9uVGltZXJTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdGltZUluU2Vjb25kcz86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6IFNtYXJ0U2Vzc2lvblRpbWVyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uuc3RhcnRUaW1lcigpO1xyXG4gICAgdGhpcy50aW1lSW5TZWNvbmRzID0gdGhpcy5zZXJ2aWNlLnRpbWVMZWZ0SW5TZWNvbmRzO1xyXG5cclxuICAgIHRoaXMuc2VydmljZS50aW1lQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMudGltZUluU2Vjb25kcyA9IHRoaXMuc2VydmljZS50aW1lTGVmdEluU2Vjb25kcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0VGltZShzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1pbnV0ZXM6IG51bWJlciA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGxldCByZW1haW5pbmdTZWNvbmRzOiBudW1iZXIgPSBzZWNvbmRzICUgNjA7XHJcbiAgICByZXR1cm4gYCR7bWludXRlc306JHtyZW1haW5pbmdTZWNvbmRzIDwgMTAgPyBcIjBcIiA6IFwiXCJ9JHtyZW1haW5pbmdTZWNvbmRzfWA7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyLWNvbnRhaW5lclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyXCIgKm5nSWY9XCJ0aW1lSW5TZWNvbmRzXCI+XHJcbiAgICAgICAge3sgZm9ybWF0VGltZSh0aW1lSW5TZWNvbmRzISkgfX1cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==