@thetradeengineorg1/snova-shell-module 0.0.260 → 0.0.261

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 (290) hide show
  1. package/README.md +24 -24
  2. package/bundles/thetradeengineorg1-snova-shell-module.umd.js +18874 -18874
  3. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  4. package/esm2015/lib/globaldependencies/components/avatar.component.js +33 -33
  5. package/esm2015/lib/globaldependencies/components/componentbase.js +538 -538
  6. package/esm2015/lib/globaldependencies/constants/feature-ids.js +449 -449
  7. package/esm2015/lib/globaldependencies/constants/localstorage-properties.js +38 -38
  8. package/esm2015/lib/globaldependencies/helpers/dom.helper.js +70 -70
  9. package/esm2015/lib/globaldependencies/helpers/fontawesome-icons.js +144 -144
  10. package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +37 -37
  11. package/esm2015/lib/globaldependencies/helpers/window.helper.js +32 -32
  12. package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +40 -40
  13. package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +36 -36
  14. package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +24 -24
  15. package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +24 -24
  16. package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +22 -22
  17. package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +24 -24
  18. package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +346 -346
  19. package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +23 -23
  20. package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +25 -25
  21. package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +27 -27
  22. package/esm2015/lib/shell-components/components/Payments/account.component.js +121 -121
  23. package/esm2015/lib/shell-components/components/Payments/company-information.js +558 -558
  24. package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +636 -636
  25. package/esm2015/lib/shell-components/components/Payments/document.component.js +129 -129
  26. package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +90 -90
  27. package/esm2015/lib/shell-components/components/Payments/product-service.component.js +438 -438
  28. package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +249 -249
  29. package/esm2015/lib/shell-components/components/Payments/transactions.component.js +172 -172
  30. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +350 -350
  31. package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +102 -102
  32. package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +126 -126
  33. package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +502 -502
  34. package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +98 -98
  35. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +87 -87
  36. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +2342 -2342
  37. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +489 -489
  38. package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +55 -55
  39. package/esm2015/lib/shell-components/components/menu/menu.component.js +3413 -3413
  40. package/esm2015/lib/shell-components/components/menu/searchTask.enum.js +10 -10
  41. package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +110 -110
  42. package/esm2015/lib/shell-components/components/notifications/notifications.component.js +534 -534
  43. package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +39 -39
  44. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +148 -148
  45. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +439 -439
  46. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +75 -75
  47. package/esm2015/lib/shell-components/constants/api-urls.js +1052 -1052
  48. package/esm2015/lib/shell-components/constants/available-languages.js +25 -25
  49. package/esm2015/lib/shell-components/constants/channel-names.js +38 -38
  50. package/esm2015/lib/shell-components/constants/menu-categories.js +6 -6
  51. package/esm2015/lib/shell-components/constants/notification-routes.js +6 -6
  52. package/esm2015/lib/shell-components/constants/notification-type-ids.js +42 -42
  53. package/esm2015/lib/shell-components/enum/recentSearchType.enum.js +13 -13
  54. package/esm2015/lib/shell-components/models/AppMenuItemModel.js +3 -3
  55. package/esm2015/lib/shell-components/models/AppNotification.js +17 -17
  56. package/esm2015/lib/shell-components/models/AssetAssignedNotificationModel.js +12 -12
  57. package/esm2015/lib/shell-components/models/ChannelUpdateModel.js +3 -3
  58. package/esm2015/lib/shell-components/models/EmployeeStatusModel.js +3 -3
  59. package/esm2015/lib/shell-components/models/IAdjust-screen-options.js +2 -2
  60. package/esm2015/lib/shell-components/models/IBadge.js +2 -2
  61. package/esm2015/lib/shell-components/models/IChildItem.js +2 -2
  62. package/esm2015/lib/shell-components/models/ILayout-change-options.js +2 -2
  63. package/esm2015/lib/shell-components/models/IMenuItem.js +2 -2
  64. package/esm2015/lib/shell-components/models/IlayoutConf.js +2 -2
  65. package/esm2015/lib/shell-components/models/IntroModel.js +3 -3
  66. package/esm2015/lib/shell-components/models/MessageDetails.js +3 -3
  67. package/esm2015/lib/shell-components/models/MessageTypingDetails.js +3 -3
  68. package/esm2015/lib/shell-components/models/NewProjectCreatedNotificationModel.js +10 -10
  69. package/esm2015/lib/shell-components/models/NewProjectFeatureNotificationModel.js +10 -10
  70. package/esm2015/lib/shell-components/models/NotificationsOutPutModel.js +22 -22
  71. package/esm2015/lib/shell-components/models/ProjectSearchCriteriaInputModel.js +3 -3
  72. package/esm2015/lib/shell-components/models/RecentSearchModel.js +5 -5
  73. package/esm2015/lib/shell-components/models/ReportConfigAssignedNotification.js +11 -11
  74. package/esm2015/lib/shell-components/models/ReportSubmittedNotification.js +12 -12
  75. package/esm2015/lib/shell-components/models/RoleUpdatedNotification.js +9 -9
  76. package/esm2015/lib/shell-components/models/UserStoryAssignedNotification.js +13 -13
  77. package/esm2015/lib/shell-components/models/archiveUserStoryModel.js +10 -10
  78. package/esm2015/lib/shell-components/models/companieslist.model.js +3 -3
  79. package/esm2015/lib/shell-components/models/company-model.js +7 -7
  80. package/esm2015/lib/shell-components/models/company-payment-model.js +3 -3
  81. package/esm2015/lib/shell-components/models/dragedWidget.js +3 -3
  82. package/esm2015/lib/shell-components/models/employee-List.js +3 -3
  83. package/esm2015/lib/shell-components/models/employee.js +4 -4
  84. package/esm2015/lib/shell-components/models/entityRoleFeature.js +3 -3
  85. package/esm2015/lib/shell-components/models/export-configuration-model.js +3 -3
  86. package/esm2015/lib/shell-components/models/export-data.module.js +8 -8
  87. package/esm2015/lib/shell-components/models/goalApprovedNotificationModel.js +9 -9
  88. package/esm2015/lib/shell-components/models/import-configuration-model.js +3 -3
  89. package/esm2015/lib/shell-components/models/initialStatusofUsers.js +3 -3
  90. package/esm2015/lib/shell-components/models/invoiceOutput-model.js +3 -3
  91. package/esm2015/lib/shell-components/models/leaveApplicationNotifiction.js +9 -9
  92. package/esm2015/lib/shell-components/models/multiChartsScheduling.js +11 -11
  93. package/esm2015/lib/shell-components/models/parkUserStoryInputModel.js +10 -10
  94. package/esm2015/lib/shell-components/models/project.js +3 -3
  95. package/esm2015/lib/shell-components/models/recentSearchApiModel.js +3 -3
  96. package/esm2015/lib/shell-components/models/searchCriteriaInputModelBase.js +3 -3
  97. package/esm2015/lib/shell-components/models/shellModulesInfo.js +7 -7
  98. package/esm2015/lib/shell-components/models/softlabels-model.js +7 -7
  99. package/esm2015/lib/shell-components/models/sprintReplanRequestedModel.js +9 -9
  100. package/esm2015/lib/shell-components/models/sprintStartedNotificationModel.js +9 -9
  101. package/esm2015/lib/shell-components/models/store-model.js +3 -3
  102. package/esm2015/lib/shell-components/models/store-search-model.js +4 -4
  103. package/esm2015/lib/shell-components/models/themes.model.js +3 -3
  104. package/esm2015/lib/shell-components/models/timesheetenabledisable.js +4 -4
  105. package/esm2015/lib/shell-components/models/user.js +8 -8
  106. package/esm2015/lib/shell-components/models/userStory.js +3 -3
  107. package/esm2015/lib/shell-components/models/userStoryCommentNotificationModel.js +9 -9
  108. package/esm2015/lib/shell-components/models/userStoryUpdateNotificationModel.js +9 -9
  109. package/esm2015/lib/shell-components/models/userstory-custom-fields.model.js +3 -3
  110. package/esm2015/lib/shell-components/models/validation.model.js +2 -2
  111. package/esm2015/lib/shell-components/models/widgetlist.js +6 -6
  112. package/esm2015/lib/shell-components/models/workspaceList.js +3 -3
  113. package/esm2015/lib/shell-components/services/authentication.service.js +96 -96
  114. package/esm2015/lib/shell-components/services/chat.service.js +67 -67
  115. package/esm2015/lib/shell-components/services/common-used.service.js +263 -263
  116. package/esm2015/lib/shell-components/services/feature.service.js +101 -101
  117. package/esm2015/lib/shell-components/services/google-analytics.service.js +24 -24
  118. package/esm2015/lib/shell-components/services/layout.service.js +68 -68
  119. package/esm2015/lib/shell-components/services/payment.service.js +103 -103
  120. package/esm2015/lib/shell-components/services/recentSearch.service.js +90 -90
  121. package/esm2015/lib/shell-components/services/shell.modules.service.js +24 -24
  122. package/esm2015/lib/shell-components/services/signalr.service.js +113 -113
  123. package/esm2015/lib/shell-components/services/theme.service.js +161 -161
  124. package/esm2015/lib/shell-components/shell.module.js +450 -450
  125. package/esm2015/lib/shell-components/shell.routing.js +16 -16
  126. package/esm2015/lib/shell-components/store/actions/authentication.actions.js +260 -260
  127. package/esm2015/lib/shell-components/store/actions/chat.actions.js +248 -248
  128. package/esm2015/lib/shell-components/store/actions/menuitems.actions.js +39 -39
  129. package/esm2015/lib/shell-components/store/actions/notification-validator.action.js +19 -19
  130. package/esm2015/lib/shell-components/store/actions/notifications.actions.js +74 -74
  131. package/esm2015/lib/shell-components/store/effects/authentication.effects.js +503 -503
  132. package/esm2015/lib/shell-components/store/effects/chat.effects.js +139 -139
  133. package/esm2015/lib/shell-components/store/effects/index.js +13 -13
  134. package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +53 -53
  135. package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +56 -56
  136. package/esm2015/lib/shell-components/store/effects/notifications.effects.js +116 -116
  137. package/esm2015/lib/shell-components/store/reducers/authentication.reducers.js +86 -86
  138. package/esm2015/lib/shell-components/store/reducers/chat.reducers.js +68 -68
  139. package/esm2015/lib/shell-components/store/reducers/index.js +80 -80
  140. package/esm2015/lib/shell-components/store/reducers/menuitems.reducers.js +56 -56
  141. package/esm2015/lib/shell-components/store/reducers/notification-validator.reducers.js +13 -13
  142. package/esm2015/lib/shell-components/store/reducers/notifications.reducers.js +38 -38
  143. package/esm2015/public-api.js +92 -92
  144. package/esm2015/store/reducers/index.js +47 -47
  145. package/esm2015/thetradeengineorg1-snova-shell-module.js +4 -4
  146. package/fesm2015/thetradeengineorg1-snova-shell-module.js +16979 -16979
  147. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  148. package/lib/globaldependencies/components/avatar.component.d.ts +10 -10
  149. package/lib/globaldependencies/components/componentbase.d.ts +455 -455
  150. package/lib/globaldependencies/constants/feature-ids.d.ts +448 -448
  151. package/lib/globaldependencies/constants/localstorage-properties.d.ts +37 -37
  152. package/lib/globaldependencies/helpers/dom.helper.d.ts +7 -7
  153. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -1
  154. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +9 -9
  155. package/lib/globaldependencies/helpers/window.helper.d.ts +12 -12
  156. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +11 -11
  157. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +8 -8
  158. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +8 -8
  159. package/lib/globaldependencies/pipes/orderby-pipe.d.ts +9 -9
  160. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +8 -8
  161. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +11 -11
  162. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +8 -8
  163. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +8 -8
  164. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +8 -8
  165. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +8 -8
  166. package/lib/shell-components/components/Payments/account.component.d.ts +14 -14
  167. package/lib/shell-components/components/Payments/company-information.d.ts +62 -62
  168. package/lib/shell-components/components/Payments/company-plans.component.d.ts +47 -47
  169. package/lib/shell-components/components/Payments/document.component.d.ts +20 -20
  170. package/lib/shell-components/components/Payments/payment-method.component.d.ts +15 -15
  171. package/lib/shell-components/components/Payments/product-service.component.d.ts +48 -48
  172. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +37 -37
  173. package/lib/shell-components/components/Payments/transactions.component.d.ts +28 -28
  174. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +67 -67
  175. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +32 -32
  176. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +32 -32
  177. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +60 -60
  178. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +33 -33
  179. package/lib/shell-components/components/feed-time/feed-time.component.d.ts +27 -27
  180. package/lib/shell-components/components/header-side/header-side.component.d.ts +220 -220
  181. package/lib/shell-components/components/header-top/header-top.component.d.ts +40 -40
  182. package/lib/shell-components/components/lives/lives-welcome-page.d.ts +14 -14
  183. package/lib/shell-components/components/menu/menu.component.d.ts +220 -220
  184. package/lib/shell-components/components/menu/searchTask.enum.d.ts +8 -8
  185. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +27 -27
  186. package/lib/shell-components/components/notifications/notifications.component.d.ts +53 -53
  187. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +10 -10
  188. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +23 -23
  189. package/lib/shell-components/components/sidenav/sidenav.component.d.ts +17 -17
  190. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +25 -25
  191. package/lib/shell-components/constants/api-urls.d.ts +1051 -1051
  192. package/lib/shell-components/constants/available-languages.d.ts +7 -7
  193. package/lib/shell-components/constants/channel-names.d.ts +37 -37
  194. package/lib/shell-components/constants/menu-categories.d.ts +5 -5
  195. package/lib/shell-components/constants/notification-routes.d.ts +5 -5
  196. package/lib/shell-components/constants/notification-type-ids.d.ts +41 -41
  197. package/lib/shell-components/enum/recentSearchType.enum.d.ts +11 -11
  198. package/lib/shell-components/models/AppMenuItemModel.d.ts +12 -12
  199. package/lib/shell-components/models/AppNotification.d.ts +12 -12
  200. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +10 -10
  201. package/lib/shell-components/models/ChannelUpdateModel.d.ts +47 -47
  202. package/lib/shell-components/models/EmployeeStatusModel.d.ts +11 -11
  203. package/lib/shell-components/models/IAdjust-screen-options.d.ts +4 -4
  204. package/lib/shell-components/models/IBadge.d.ts +4 -4
  205. package/lib/shell-components/models/IChildItem.d.ts +7 -7
  206. package/lib/shell-components/models/ILayout-change-options.d.ts +4 -4
  207. package/lib/shell-components/models/IMenuItem.d.ts +14 -14
  208. package/lib/shell-components/models/IlayoutConf.d.ts +10 -10
  209. package/lib/shell-components/models/IntroModel.d.ts +3 -3
  210. package/lib/shell-components/models/MessageDetails.d.ts +55 -55
  211. package/lib/shell-components/models/MessageTypingDetails.d.ts +9 -9
  212. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +8 -8
  213. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +8 -8
  214. package/lib/shell-components/models/NotificationsOutPutModel.d.ts +41 -41
  215. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +10 -10
  216. package/lib/shell-components/models/RecentSearchModel.d.ts +14 -14
  217. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +9 -9
  218. package/lib/shell-components/models/ReportSubmittedNotification.d.ts +10 -10
  219. package/lib/shell-components/models/RoleUpdatedNotification.d.ts +7 -7
  220. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +8 -8
  221. package/lib/shell-components/models/archiveUserStoryModel.d.ts +7 -7
  222. package/lib/shell-components/models/companieslist.model.d.ts +8 -8
  223. package/lib/shell-components/models/company-model.d.ts +31 -31
  224. package/lib/shell-components/models/company-payment-model.d.ts +18 -18
  225. package/lib/shell-components/models/dragedWidget.d.ts +16 -16
  226. package/lib/shell-components/models/employee-List.d.ts +8 -8
  227. package/lib/shell-components/models/employee.d.ts +60 -60
  228. package/lib/shell-components/models/entityRoleFeature.d.ts +9 -9
  229. package/lib/shell-components/models/export-configuration-model.d.ts +8 -8
  230. package/lib/shell-components/models/export-data.module.d.ts +6 -6
  231. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +8 -8
  232. package/lib/shell-components/models/import-configuration-model.d.ts +3 -3
  233. package/lib/shell-components/models/initialStatusofUsers.d.ts +5 -5
  234. package/lib/shell-components/models/invoiceOutput-model.d.ts +9 -9
  235. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +7 -7
  236. package/lib/shell-components/models/multiChartsScheduling.d.ts +9 -9
  237. package/lib/shell-components/models/parkUserStoryInputModel.d.ts +7 -7
  238. package/lib/shell-components/models/project.d.ts +28 -28
  239. package/lib/shell-components/models/recentSearchApiModel.d.ts +6 -6
  240. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +10 -10
  241. package/lib/shell-components/models/shellModulesInfo.d.ts +16 -16
  242. package/lib/shell-components/models/softlabels-model.d.ts +66 -66
  243. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +7 -7
  244. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +7 -7
  245. package/lib/shell-components/models/store-model.d.ts +13 -13
  246. package/lib/shell-components/models/store-search-model.d.ts +7 -7
  247. package/lib/shell-components/models/themes.model.d.ts +9 -9
  248. package/lib/shell-components/models/timesheetenabledisable.d.ts +16 -16
  249. package/lib/shell-components/models/user.d.ts +40 -40
  250. package/lib/shell-components/models/userStory.d.ts +188 -188
  251. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +6 -6
  252. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +6 -6
  253. package/lib/shell-components/models/userstory-custom-fields.model.d.ts +6 -6
  254. package/lib/shell-components/models/validation.model.d.ts +5 -5
  255. package/lib/shell-components/models/widgetlist.d.ts +28 -28
  256. package/lib/shell-components/models/workspaceList.d.ts +19 -19
  257. package/lib/shell-components/services/authentication.service.d.ts +18 -18
  258. package/lib/shell-components/services/chat.service.d.ts +16 -16
  259. package/lib/shell-components/services/common-used.service.d.ts +45 -45
  260. package/lib/shell-components/services/feature.service.d.ts +19 -19
  261. package/lib/shell-components/services/google-analytics.service.d.ts +9 -9
  262. package/lib/shell-components/services/layout.service.d.ts +23 -23
  263. package/lib/shell-components/services/payment.service.d.ts +19 -19
  264. package/lib/shell-components/services/recentSearch.service.d.ts +16 -16
  265. package/lib/shell-components/services/shell.modules.service.d.ts +9 -9
  266. package/lib/shell-components/services/signalr.service.d.ts +25 -25
  267. package/lib/shell-components/services/theme.service.d.ts +14 -14
  268. package/lib/shell-components/shell.module.d.ts +119 -119
  269. package/lib/shell-components/shell.routing.d.ts +2 -2
  270. package/lib/shell-components/store/actions/authentication.actions.d.ts +327 -327
  271. package/lib/shell-components/store/actions/chat.actions.d.ts +399 -399
  272. package/lib/shell-components/store/actions/menuitems.actions.d.ts +51 -51
  273. package/lib/shell-components/store/actions/notification-validator.action.d.ts +25 -25
  274. package/lib/shell-components/store/actions/notifications.actions.d.ts +116 -116
  275. package/lib/shell-components/store/effects/authentication.effects.d.ts +54 -54
  276. package/lib/shell-components/store/effects/chat.effects.d.ts +30 -30
  277. package/lib/shell-components/store/effects/index.d.ts +1 -1
  278. package/lib/shell-components/store/effects/menuitems.effects.d.ts +17 -17
  279. package/lib/shell-components/store/effects/notification-validator.effects.d.ts +21 -21
  280. package/lib/shell-components/store/effects/notifications.effects.d.ts +23 -23
  281. package/lib/shell-components/store/reducers/authentication.reducers.d.ts +30 -30
  282. package/lib/shell-components/store/reducers/chat.reducers.d.ts +17 -17
  283. package/lib/shell-components/store/reducers/index.d.ts +59 -59
  284. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +11 -11
  285. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +5 -5
  286. package/lib/shell-components/store/reducers/notifications.reducers.d.ts +10 -10
  287. package/package.json +1 -1
  288. package/public-api.d.ts +82 -82
  289. package/store/reducers/index.d.ts +24 -24
  290. package/thetradeengineorg1-snova-shell-module.d.ts +5 -5
@@ -1,263 +1,263 @@
1
- import { HttpHeaders, HttpParams } from "@angular/common/http";
2
- import { Injectable } from "@angular/core";
3
- import { map } from "rxjs/operators";
4
- import { LocalStorageProperties } from '../../globaldependencies/constants/localstorage-properties';
5
- import { ApiUrls } from '../constants/api-urls';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common/http";
8
- import * as i2 from "ngx-cookie-service";
9
- export class CommonService {
10
- constructor(http, cookieService) {
11
- this.http = http;
12
- this.cookieService = cookieService;
13
- }
14
- getUserInitialData() {
15
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
16
- let APIEndpoint = environment.apiURL;
17
- const httpOptions = {
18
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
19
- };
20
- return this.http.post(APIEndpoint + ApiUrls.GetUsersInitialData, httpOptions).pipe(map((result) => {
21
- return result;
22
- }));
23
- }
24
- getAddOrEditCustomAppIsRequired() {
25
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
26
- let APIEndpoint = environment.apiURL;
27
- const httpOptions = {
28
- headers: new HttpHeaders({ "Content-Type": "application/json" })
29
- };
30
- return this.http.get(APIEndpoint + ApiUrls.GetAddOrEditCustomAppIsRequired, httpOptions)
31
- .pipe(map((result) => {
32
- return result;
33
- }));
34
- }
35
- companyLogin(userDetails) {
36
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
37
- let APIEndpoint = environment.apiURL;
38
- const httpOptions = {
39
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
40
- };
41
- const body = JSON.stringify(userDetails);
42
- return this.http.post(APIEndpoint + ApiUrls.CompanyLogin, body, httpOptions).pipe(map((result) => {
43
- return result;
44
- }));
45
- }
46
- getActTrackerRecorder() {
47
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
48
- let APIEndpoint = environment.apiURL;
49
- const httpOptions = {
50
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
51
- };
52
- return this.http.get(APIEndpoint + ApiUrls.GetActTrackerRecorder, httpOptions).pipe(map(result => {
53
- return result;
54
- }));
55
- }
56
- getCompanyById(companyId) {
57
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
58
- let APIEndpoint = environment.apiURL;
59
- let paramsobj = new HttpParams().set('companyId', companyId);
60
- const httpOptions = {
61
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
62
- params: paramsobj
63
- };
64
- return this.http.get(APIEndpoint + ApiUrls.GetCompanyById, httpOptions).pipe(map(result => {
65
- return result;
66
- }));
67
- }
68
- updateCompanyDetails(companyModel) {
69
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
70
- let APIEndpoint = environment.apiURL;
71
- let body = JSON.stringify(companyModel);
72
- const httpOptions = {
73
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
74
- };
75
- return this.http.post(`${APIEndpoint + ApiUrls.UpsertCompanyDetails}`, body, httpOptions)
76
- .pipe(map(result => {
77
- return result;
78
- }));
79
- }
80
- getTimeSheetEnabledInformation() {
81
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
82
- let APIEndpoint = environment.apiURL;
83
- const httpOptions = {
84
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
85
- };
86
- return this.http.get(APIEndpoint + ApiUrls.GetEnableorDisableTimesheetButtons, httpOptions).pipe(map(data => {
87
- // this.timeSheetEnabledInformation.next(data);
88
- return data;
89
- }));
90
- }
91
- getUserById(userId) {
92
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
93
- let APIEndpoint = environment.apiURL;
94
- let paramsobj = new HttpParams().set('userId', userId);
95
- const httpOptions = {
96
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
97
- params: paramsobj
98
- };
99
- return this.http.get(APIEndpoint + ApiUrls.GetUserById, httpOptions)
100
- .pipe(map(result => {
101
- return result;
102
- }));
103
- }
104
- searchProjects(projectSearchInput) {
105
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
106
- let APIEndpoint = environment.apiURL;
107
- const httpOptions = {
108
- headers: new HttpHeaders({ "Content-Type": "application/json" })
109
- };
110
- let body = JSON.stringify(projectSearchInput);
111
- return this.http.post(`${APIEndpoint + ApiUrls.SearchProjects}`, body, httpOptions);
112
- }
113
- GetWidgetsBasedOnUser(widget) {
114
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
115
- let APIEndpoint = environment.apiURL;
116
- const httpOptions = {
117
- headers: new HttpHeaders({ "Content-Type": "application/json" })
118
- };
119
- const body = JSON.stringify(widget);
120
- return this.http.post(APIEndpoint + ApiUrls.GetWidgetsBasedOnUser, body, httpOptions);
121
- }
122
- GetWorkspaceList(workspace) {
123
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
124
- let APIEndpoint = environment.apiURL;
125
- const httpOptions = {
126
- headers: new HttpHeaders({ "Content-Type": "application/json" })
127
- };
128
- const body = JSON.stringify(workspace);
129
- return this.http.post(APIEndpoint + ApiUrls.GetWorkspaces, body, httpOptions);
130
- }
131
- GetallRoles() {
132
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
133
- let APIEndpoint = environment.apiURL;
134
- const httpOptions = {
135
- headers: new HttpHeaders({ "Content-Type": "application/json" })
136
- };
137
- var data = { RoleId: null, RoleName: null, Data: null, isArchived: false };
138
- let body = JSON.stringify(data);
139
- return this.http
140
- .post(APIEndpoint + ApiUrls.GetAllRoles, body, httpOptions)
141
- .pipe(map(result => {
142
- return result;
143
- }));
144
- }
145
- getAllEmployees(employeeModel) {
146
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
147
- let APIEndpoint = environment.apiURL;
148
- const httpOptions = {
149
- headers: new HttpHeaders({ "Content-Type": "application/json" }),
150
- };
151
- let body = JSON.stringify(employeeModel);
152
- return this.http.post(APIEndpoint + ApiUrls.GetAllEmployees, body, httpOptions)
153
- .pipe(map(result => {
154
- return result;
155
- }));
156
- }
157
- getStores(storeSearchModel) {
158
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
159
- let APIEndpoint = environment.apiURL;
160
- const httpOptions = {
161
- headers: new HttpHeaders({ "Content-Type": "application/json" })
162
- };
163
- const body = JSON.stringify(storeSearchModel);
164
- return this.http.post(APIEndpoint + ApiUrls.GetStores, body, httpOptions)
165
- .pipe(map((result) => {
166
- return result;
167
- }));
168
- }
169
- getAllCompanySettingsDetails(companysettingModel) {
170
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
171
- let APIEndpoint = environment.apiURL;
172
- const httpOptions = {
173
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
174
- };
175
- let body = JSON.stringify(companysettingModel);
176
- return this.http.post(APIEndpoint + ApiUrls.GetCompanySettingsDetails, body, httpOptions);
177
- }
178
- getLoggedInUser() {
179
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
180
- let APIEndpoint = environment.apiURL;
181
- const httpOptions = {
182
- headers: new HttpHeaders({
183
- "Content-Type": "application/json"
184
- })
185
- };
186
- return this.http.get(APIEndpoint + ApiUrls.GetLoggedInUser, httpOptions).pipe(map(result => {
187
- return result;
188
- }));
189
- }
190
- getCompanyWorkItemStartFunctionalityRequired() {
191
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
192
- let APIEndpoint = environment.apiURL;
193
- const httpOptions = {
194
- headers: new HttpHeaders({
195
- "Content-Type": "application/json"
196
- })
197
- };
198
- return this.http.get(APIEndpoint + ApiUrls.GET_COMPANY_START_FUNCTIONALITY_ENABLED, httpOptions).pipe(map(result => {
199
- return result;
200
- }));
201
- }
202
- getSoftLabels(softLabelModel) {
203
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
204
- let APIEndpoint = environment.apiURL;
205
- const httpOptions = {
206
- headers: new HttpHeaders({ "Content-Type": "application/json" })
207
- };
208
- const body = JSON.stringify(softLabelModel);
209
- return this.http.post(APIEndpoint + ApiUrls.GetSoftLabelConfigurations, body, httpOptions)
210
- .pipe(map((result) => {
211
- return result;
212
- }));
213
- }
214
- GetExportData(exportConfigurationModel) {
215
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
216
- let APIEndpoint = environment.apiURL;
217
- const httpOptions = {
218
- headers: new HttpHeaders({ "Content-Type": "application/json" })
219
- };
220
- const body = JSON.stringify(exportConfigurationModel);
221
- return this.http.post(APIEndpoint + ApiUrls.ExportSystemConfiguration, body, httpOptions);
222
- }
223
- SystemImportConfiguration(importConfigurationModel) {
224
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
225
- let APIEndpoint = environment.apiURL;
226
- const httpOptions = {
227
- headers: new HttpHeaders({ "Content-Type": "application/json" })
228
- };
229
- const body = JSON.stringify(importConfigurationModel);
230
- return this.http.post(APIEndpoint + ApiUrls.ImportSystemConfiguration, body, httpOptions);
231
- }
232
- getIntroDetails(introModel) {
233
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
234
- let APIEndpoint = environment.apiURL;
235
- const httpOptions = {
236
- headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': 'my-auth-token' }),
237
- };
238
- const body = JSON.stringify(introModel);
239
- return this.http.post(APIEndpoint + ApiUrls.GetIntroDetails, body, httpOptions)
240
- .pipe(map(result => {
241
- return result;
242
- }));
243
- }
244
- getTeamLeadsList(model) {
245
- let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
246
- let APIEndpoint = environment.apiURL;
247
- const httpOptions = {
248
- headers: new HttpHeaders({ 'Content-Type': 'application/json' })
249
- };
250
- let body = JSON.stringify(model);
251
- return this.http.post(`${APIEndpoint + ApiUrls.GetMyTeamMembersList}`, body, httpOptions)
252
- .pipe(map(result => {
253
- return result;
254
- }));
255
- }
256
- }
257
- CommonService.ɵfac = function CommonService_Factory(t) { return new (t || CommonService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.CookieService)); };
258
- CommonService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CommonService, factory: CommonService.ɵfac, providedIn: "root" });
259
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonService, [{
260
- type: Injectable,
261
- args: [{ providedIn: "root" }]
262
- }], function () { return [{ type: i1.HttpClient }, { type: i2.CookieService }]; }, null); })();
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXVzZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFnQmhELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFlBQW9CLElBQWdCLEVBQVUsYUFBNEI7UUFBdEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUksQ0FBQztJQUUvRSxrQkFBa0I7UUFDZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2RixJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRXJDLE1BQU0sV0FBVyxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1NBQ25FLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM5RSxHQUFHLENB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YSxtQkFGQSxNQUFNO3VGQUVuQixhQUFhO2NBRnpCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBBcGlVcmxzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS11cmxzJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xyXG5pbXBvcnQgeyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL1Byb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vbW9kZWxzL3Byb2plY3QnO1xyXG5pbXBvcnQgeyBXaWRnZXRMaXN0IH0gZnJvbSAnLi4vbW9kZWxzL3dpZGdldGxpc3QnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaXN0IH0gZnJvbSAnLi4vbW9kZWxzL3dvcmtzcGFjZUxpc3QnO1xyXG5pbXBvcnQgeyBFbXBsb3llZUxpc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9lbXBsb3llZSc7XHJcbmltcG9ydCB7IFN0b3JlU2VhcmNoTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc3RvcmUtc2VhcmNoLW1vZGVsJztcclxuaW1wb3J0IHsgQ29tcGFueU1vZGVsLCBDb21wYW55c2V0dGluZ3NNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wYW55LW1vZGVsJztcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZXhwb3J0LWNvbmZpZ3VyYXRpb24tbW9kZWwnO1xyXG5pbXBvcnQgeyBJbXBvcnRDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaW1wb3J0LWNvbmZpZ3VyYXRpb24tbW9kZWwnO1xyXG5pbXBvcnQgeyBJbnRyb01vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9JbnRyb01vZGVsXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSkgeyB9XHJcblxyXG4gICAgZ2V0VXNlckluaXRpYWxEYXRhKCkge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcclxuXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSlcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0VXNlcnNJbml0aWFsRGF0YSwgaHR0cE9wdGlvbnMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWRkT3JFZGl0Q3VzdG9tQXBwSXNSZXF1aXJlZCgpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFkZE9yRWRpdEN1c3RvbUFwcElzUmVxdWlyZWQsIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUobWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG5cclxuICAgIGNvbXBhbnlMb2dpbih1c2VyRGV0YWlsczogYW55KSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG5cclxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeSh1c2VyRGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5Db21wYW55TG9naW4sIGJvZHksIGh0dHBPcHRpb25zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdFRyYWNrZXJSZWNvcmRlcigpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFjdFRyYWNrZXJSZWNvcmRlciwgaHR0cE9wdGlvbnMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbXBhbnlCeUlkKGNvbXBhbnlJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG5cclxuICAgICAgICBsZXQgcGFyYW1zb2JqID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2NvbXBhbnlJZCcsIGNvbXBhbnlJZCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxyXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtc29ialxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRDb21wYW55QnlJZCwgaHR0cE9wdGlvbnMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUNvbXBhbnlEZXRhaWxzKGNvbXBhbnlNb2RlbCA6IENvbXBhbnlNb2RlbCApe1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcclxuXHJcbiAgICAgICAgbGV0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShjb21wYW55TW9kZWwpO1xyXG5cclxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElFbmRwb2ludCArIEFwaVVybHMuVXBzZXJ0Q29tcGFueURldGFpbHN9YCwgYm9keSwgaHR0cE9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRpbWVTaGVldEVuYWJsZWRJbmZvcm1hdGlvbigpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihBUElFbmRwb2ludCArIEFwaVVybHMuR2V0RW5hYmxlb3JEaXNhYmxlVGltZXNoZWV0QnV0dG9ucywgaHR0cE9wdGlvbnMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZVNoZWV0RW5hYmxlZEluZm9ybWF0aW9uLm5leHQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVzZXJCeUlkKHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG4gICAgICAgIGxldCBwYXJhbXNvYmogPSBuZXcgSHR0cFBhcmFtcygpLnNldCgndXNlcklkJywgdXNlcklkKTtcclxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSxcclxuICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNvYmpcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFVzZXJNb2RlbFtdPihBUElFbmRwb2ludCArIEFwaVVybHMuR2V0VXNlckJ5SWQsIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2hQcm9qZWN0cyhwcm9qZWN0U2VhcmNoSW5wdXQ6IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KHByb2plY3RTZWFyY2hJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2plY3RbXT4oXHJcbiAgICAgICAgICAgIGAke0FQSUVuZHBvaW50ICsgQXBpVXJscy5TZWFyY2hQcm9qZWN0c31gLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICBodHRwT3B0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgR2V0V2lkZ2V0c0Jhc2VkT25Vc2VyKHdpZGdldDogV2lkZ2V0TGlzdCkge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcclxuXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHdpZGdldCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0V2lkZ2V0c0Jhc2VkT25Vc2VyLCBib2R5LCBodHRwT3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgR2V0V29ya3NwYWNlTGlzdCh3b3Jrc3BhY2U6IFdvcmtzcGFjZUxpc3QpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeSh3b3Jrc3BhY2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldFdvcmtzcGFjZXMsIGJvZHksIGh0dHBPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBHZXRhbGxSb2xlcygpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHZhciBkYXRhID0geyBSb2xlSWQ6IG51bGwsIFJvbGVOYW1lOiBudWxsLCBEYXRhOiBudWxsLCBpc0FyY2hpdmVkOiBmYWxzZSB9O1xyXG4gICAgICAgIGxldCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFsbFJvbGVzLCBib2R5LCBodHRwT3B0aW9ucylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVNb2RlbDogRW1wbG95ZWVMaXN0TW9kZWwpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShlbXBsb3llZU1vZGVsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFsbEVtcGxveWVlcywgYm9keSwgaHR0cE9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0b3JlcyhzdG9yZVNlYXJjaE1vZGVsOiBTdG9yZVNlYXJjaE1vZGVsKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHN0b3JlU2VhcmNoTW9kZWwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0U3RvcmVzLCBib2R5LCBodHRwT3B0aW9ucylcclxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxDb21wYW55U2V0dGluZ3NEZXRhaWxzKGNvbXBhbnlzZXR0aW5nTW9kZWw6IENvbXBhbnlzZXR0aW5nc01vZGVsKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShjb21wYW55c2V0dGluZ01vZGVsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRDb21wYW55U2V0dGluZ3NEZXRhaWxzLCBib2R5LCBodHRwT3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9nZ2VkSW5Vc2VyKCkge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcclxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0TG9nZ2VkSW5Vc2VyLCBodHRwT3B0aW9ucykucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29tcGFueVdvcmtJdGVtU3RhcnRGdW5jdGlvbmFsaXR5UmVxdWlyZWQoKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HRVRfQ09NUEFOWV9TVEFSVF9GVU5DVElPTkFMSVRZX0VOQUJMRUQsIGh0dHBPcHRpb25zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTb2Z0TGFiZWxzKHNvZnRMYWJlbE1vZGVsOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoc29mdExhYmVsTW9kZWwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMsIGJvZHksIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIEdldEV4cG9ydERhdGEoZXhwb3J0Q29uZmlndXJhdGlvbk1vZGVsOiBFeHBvcnRDb25maWd1cmF0aW9uTW9kZWwpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoZXhwb3J0Q29uZmlndXJhdGlvbk1vZGVsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkV4cG9ydFN5c3RlbUNvbmZpZ3VyYXRpb24sIGJvZHksIGh0dHBPcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBTeXN0ZW1JbXBvcnRDb25maWd1cmF0aW9uKGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbDogSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5JbXBvcnRTeXN0ZW1Db25maWd1cmF0aW9uLCBib2R5LCBodHRwT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBnZXRJbnRyb0RldGFpbHMoaW50cm9Nb2RlbCA6IEludHJvTW9kZWwpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogJ215LWF1dGgtdG9rZW4nIH0pLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShpbnRyb01vZGVsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRJbnRyb0RldGFpbHMsIGJvZHksIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUZWFtTGVhZHNMaXN0KG1vZGVsOiBhbnkpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KG1vZGVsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldE15VGVhbU1lbWJlcnNMaXN0fWAsIGJvZHksIGh0dHBPcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxufSJdfQ==
1
+ import { HttpHeaders, HttpParams } from "@angular/common/http";
2
+ import { Injectable } from "@angular/core";
3
+ import { map } from "rxjs/operators";
4
+ import { LocalStorageProperties } from '../../globaldependencies/constants/localstorage-properties';
5
+ import { ApiUrls } from '../constants/api-urls';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "ngx-cookie-service";
9
+ export class CommonService {
10
+ constructor(http, cookieService) {
11
+ this.http = http;
12
+ this.cookieService = cookieService;
13
+ }
14
+ getUserInitialData() {
15
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
16
+ let APIEndpoint = environment.apiURL;
17
+ const httpOptions = {
18
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
19
+ };
20
+ return this.http.post(APIEndpoint + ApiUrls.GetUsersInitialData, httpOptions).pipe(map((result) => {
21
+ return result;
22
+ }));
23
+ }
24
+ getAddOrEditCustomAppIsRequired() {
25
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
26
+ let APIEndpoint = environment.apiURL;
27
+ const httpOptions = {
28
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
29
+ };
30
+ return this.http.get(APIEndpoint + ApiUrls.GetAddOrEditCustomAppIsRequired, httpOptions)
31
+ .pipe(map((result) => {
32
+ return result;
33
+ }));
34
+ }
35
+ companyLogin(userDetails) {
36
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
37
+ let APIEndpoint = environment.apiURL;
38
+ const httpOptions = {
39
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
40
+ };
41
+ const body = JSON.stringify(userDetails);
42
+ return this.http.post(APIEndpoint + ApiUrls.CompanyLogin, body, httpOptions).pipe(map((result) => {
43
+ return result;
44
+ }));
45
+ }
46
+ getActTrackerRecorder() {
47
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
48
+ let APIEndpoint = environment.apiURL;
49
+ const httpOptions = {
50
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
51
+ };
52
+ return this.http.get(APIEndpoint + ApiUrls.GetActTrackerRecorder, httpOptions).pipe(map(result => {
53
+ return result;
54
+ }));
55
+ }
56
+ getCompanyById(companyId) {
57
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
58
+ let APIEndpoint = environment.apiURL;
59
+ let paramsobj = new HttpParams().set('companyId', companyId);
60
+ const httpOptions = {
61
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
62
+ params: paramsobj
63
+ };
64
+ return this.http.get(APIEndpoint + ApiUrls.GetCompanyById, httpOptions).pipe(map(result => {
65
+ return result;
66
+ }));
67
+ }
68
+ updateCompanyDetails(companyModel) {
69
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
70
+ let APIEndpoint = environment.apiURL;
71
+ let body = JSON.stringify(companyModel);
72
+ const httpOptions = {
73
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
74
+ };
75
+ return this.http.post(`${APIEndpoint + ApiUrls.UpsertCompanyDetails}`, body, httpOptions)
76
+ .pipe(map(result => {
77
+ return result;
78
+ }));
79
+ }
80
+ getTimeSheetEnabledInformation() {
81
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
82
+ let APIEndpoint = environment.apiURL;
83
+ const httpOptions = {
84
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
85
+ };
86
+ return this.http.get(APIEndpoint + ApiUrls.GetEnableorDisableTimesheetButtons, httpOptions).pipe(map(data => {
87
+ // this.timeSheetEnabledInformation.next(data);
88
+ return data;
89
+ }));
90
+ }
91
+ getUserById(userId) {
92
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
93
+ let APIEndpoint = environment.apiURL;
94
+ let paramsobj = new HttpParams().set('userId', userId);
95
+ const httpOptions = {
96
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
97
+ params: paramsobj
98
+ };
99
+ return this.http.get(APIEndpoint + ApiUrls.GetUserById, httpOptions)
100
+ .pipe(map(result => {
101
+ return result;
102
+ }));
103
+ }
104
+ searchProjects(projectSearchInput) {
105
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
106
+ let APIEndpoint = environment.apiURL;
107
+ const httpOptions = {
108
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
109
+ };
110
+ let body = JSON.stringify(projectSearchInput);
111
+ return this.http.post(`${APIEndpoint + ApiUrls.SearchProjects}`, body, httpOptions);
112
+ }
113
+ GetWidgetsBasedOnUser(widget) {
114
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
115
+ let APIEndpoint = environment.apiURL;
116
+ const httpOptions = {
117
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
118
+ };
119
+ const body = JSON.stringify(widget);
120
+ return this.http.post(APIEndpoint + ApiUrls.GetWidgetsBasedOnUser, body, httpOptions);
121
+ }
122
+ GetWorkspaceList(workspace) {
123
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
124
+ let APIEndpoint = environment.apiURL;
125
+ const httpOptions = {
126
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
127
+ };
128
+ const body = JSON.stringify(workspace);
129
+ return this.http.post(APIEndpoint + ApiUrls.GetWorkspaces, body, httpOptions);
130
+ }
131
+ GetallRoles() {
132
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
133
+ let APIEndpoint = environment.apiURL;
134
+ const httpOptions = {
135
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
136
+ };
137
+ var data = { RoleId: null, RoleName: null, Data: null, isArchived: false };
138
+ let body = JSON.stringify(data);
139
+ return this.http
140
+ .post(APIEndpoint + ApiUrls.GetAllRoles, body, httpOptions)
141
+ .pipe(map(result => {
142
+ return result;
143
+ }));
144
+ }
145
+ getAllEmployees(employeeModel) {
146
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
147
+ let APIEndpoint = environment.apiURL;
148
+ const httpOptions = {
149
+ headers: new HttpHeaders({ "Content-Type": "application/json" }),
150
+ };
151
+ let body = JSON.stringify(employeeModel);
152
+ return this.http.post(APIEndpoint + ApiUrls.GetAllEmployees, body, httpOptions)
153
+ .pipe(map(result => {
154
+ return result;
155
+ }));
156
+ }
157
+ getStores(storeSearchModel) {
158
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
159
+ let APIEndpoint = environment.apiURL;
160
+ const httpOptions = {
161
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
162
+ };
163
+ const body = JSON.stringify(storeSearchModel);
164
+ return this.http.post(APIEndpoint + ApiUrls.GetStores, body, httpOptions)
165
+ .pipe(map((result) => {
166
+ return result;
167
+ }));
168
+ }
169
+ getAllCompanySettingsDetails(companysettingModel) {
170
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
171
+ let APIEndpoint = environment.apiURL;
172
+ const httpOptions = {
173
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
174
+ };
175
+ let body = JSON.stringify(companysettingModel);
176
+ return this.http.post(APIEndpoint + ApiUrls.GetCompanySettingsDetails, body, httpOptions);
177
+ }
178
+ getLoggedInUser() {
179
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
180
+ let APIEndpoint = environment.apiURL;
181
+ const httpOptions = {
182
+ headers: new HttpHeaders({
183
+ "Content-Type": "application/json"
184
+ })
185
+ };
186
+ return this.http.get(APIEndpoint + ApiUrls.GetLoggedInUser, httpOptions).pipe(map(result => {
187
+ return result;
188
+ }));
189
+ }
190
+ getCompanyWorkItemStartFunctionalityRequired() {
191
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
192
+ let APIEndpoint = environment.apiURL;
193
+ const httpOptions = {
194
+ headers: new HttpHeaders({
195
+ "Content-Type": "application/json"
196
+ })
197
+ };
198
+ return this.http.get(APIEndpoint + ApiUrls.GET_COMPANY_START_FUNCTIONALITY_ENABLED, httpOptions).pipe(map(result => {
199
+ return result;
200
+ }));
201
+ }
202
+ getSoftLabels(softLabelModel) {
203
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
204
+ let APIEndpoint = environment.apiURL;
205
+ const httpOptions = {
206
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
207
+ };
208
+ const body = JSON.stringify(softLabelModel);
209
+ return this.http.post(APIEndpoint + ApiUrls.GetSoftLabelConfigurations, body, httpOptions)
210
+ .pipe(map((result) => {
211
+ return result;
212
+ }));
213
+ }
214
+ GetExportData(exportConfigurationModel) {
215
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
216
+ let APIEndpoint = environment.apiURL;
217
+ const httpOptions = {
218
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
219
+ };
220
+ const body = JSON.stringify(exportConfigurationModel);
221
+ return this.http.post(APIEndpoint + ApiUrls.ExportSystemConfiguration, body, httpOptions);
222
+ }
223
+ SystemImportConfiguration(importConfigurationModel) {
224
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
225
+ let APIEndpoint = environment.apiURL;
226
+ const httpOptions = {
227
+ headers: new HttpHeaders({ "Content-Type": "application/json" })
228
+ };
229
+ const body = JSON.stringify(importConfigurationModel);
230
+ return this.http.post(APIEndpoint + ApiUrls.ImportSystemConfiguration, body, httpOptions);
231
+ }
232
+ getIntroDetails(introModel) {
233
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
234
+ let APIEndpoint = environment.apiURL;
235
+ const httpOptions = {
236
+ headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': 'my-auth-token' }),
237
+ };
238
+ const body = JSON.stringify(introModel);
239
+ return this.http.post(APIEndpoint + ApiUrls.GetIntroDetails, body, httpOptions)
240
+ .pipe(map(result => {
241
+ return result;
242
+ }));
243
+ }
244
+ getTeamLeadsList(model) {
245
+ let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
246
+ let APIEndpoint = environment.apiURL;
247
+ const httpOptions = {
248
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' })
249
+ };
250
+ let body = JSON.stringify(model);
251
+ return this.http.post(`${APIEndpoint + ApiUrls.GetMyTeamMembersList}`, body, httpOptions)
252
+ .pipe(map(result => {
253
+ return result;
254
+ }));
255
+ }
256
+ }
257
+ CommonService.ɵfac = function CommonService_Factory(t) { return new (t || CommonService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.CookieService)); };
258
+ CommonService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CommonService, factory: CommonService.ɵfac, providedIn: "root" });
259
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonService, [{
260
+ type: Injectable,
261
+ args: [{ providedIn: "root" }]
262
+ }], function () { return [{ type: i1.HttpClient }, { type: i2.CookieService }]; }, null); })();
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXVzZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFnQmhELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFlBQW9CLElBQWdCLEVBQVUsYUFBNEI7UUFBdEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUksQ0FBQztJQUUvRSxrQkFBa0I7UUFDZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2RixJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRXJDLE1BQU0sV0FBVyxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1NBQ25FLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM5RSxHQUFHLENB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YSxtQkFGQSxNQUFNO3VGQUVuQixhQUFhO2NBRnpCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XG5pbXBvcnQgeyBBcGlVcmxzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS11cmxzJztcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uL21vZGVscy91c2VyJztcbmltcG9ydCB7IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vbW9kZWxzL3Byb2plY3QnO1xuaW1wb3J0IHsgV2lkZ2V0TGlzdCB9IGZyb20gJy4uL21vZGVscy93aWRnZXRsaXN0JztcbmltcG9ydCB7IFdvcmtzcGFjZUxpc3QgfSBmcm9tICcuLi9tb2RlbHMvd29ya3NwYWNlTGlzdCc7XG5pbXBvcnQgeyBFbXBsb3llZUxpc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9lbXBsb3llZSc7XG5pbXBvcnQgeyBTdG9yZVNlYXJjaE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3N0b3JlLXNlYXJjaC1tb2RlbCc7XG5pbXBvcnQgeyBDb21wYW55TW9kZWwsIENvbXBhbnlzZXR0aW5nc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBhbnktbW9kZWwnO1xuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xuaW1wb3J0IHsgRXhwb3J0Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2V4cG9ydC1jb25maWd1cmF0aW9uLW1vZGVsJztcbmltcG9ydCB7IEltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9pbXBvcnQtY29uZmlndXJhdGlvbi1tb2RlbCc7XG5pbXBvcnQgeyBJbnRyb01vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9JbnRyb01vZGVsXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcblxuZXhwb3J0IGNsYXNzIENvbW1vblNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlKSB7IH1cblxuICAgIGdldFVzZXJJbml0aWFsRGF0YSgpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcblxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRVc2Vyc0luaXRpYWxEYXRhLCBodHRwT3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QWRkT3JFZGl0Q3VzdG9tQXBwSXNSZXF1aXJlZCgpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFkZE9yRWRpdEN1c3RvbUFwcElzUmVxdWlyZWQsIGh0dHBPcHRpb25zKVxuICAgICAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgIGNvbXBhbnlMb2dpbih1c2VyRGV0YWlsczogYW55KSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG5cbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHVzZXJEZXRhaWxzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5Db21wYW55TG9naW4sIGJvZHksIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRBY3RUcmFja2VyUmVjb3JkZXIoKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG5cbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFjdFRyYWNrZXJSZWNvcmRlciwgaHR0cE9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRDb21wYW55QnlJZChjb21wYW55SWQ6IHN0cmluZykge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuXG4gICAgICAgIGxldCBwYXJhbXNvYmogPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnY29tcGFueUlkJywgY29tcGFueUlkKTtcblxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSksXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtc29ialxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRDb21wYW55QnlJZCwgaHR0cE9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDb21wYW55RGV0YWlscyhjb21wYW55TW9kZWwgOiBDb21wYW55TW9kZWwgKXtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcblxuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvbXBhbnlNb2RlbCk7XG5cbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke0FQSUVuZHBvaW50ICsgQXBpVXJscy5VcHNlcnRDb21wYW55RGV0YWlsc31gLCBib2R5LCBodHRwT3B0aW9ucylcbiAgICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZ2V0VGltZVNoZWV0RW5hYmxlZEluZm9ybWF0aW9uKCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEVuYWJsZW9yRGlzYWJsZVRpbWVzaGVldEJ1dHRvbnMsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMudGltZVNoZWV0RW5hYmxlZEluZm9ybWF0aW9uLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFVzZXJCeUlkKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG4gICAgICAgIGxldCBwYXJhbXNvYmogPSBuZXcgSHR0cFBhcmFtcygpLnNldCgndXNlcklkJywgdXNlcklkKTtcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLFxuICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNvYmpcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlck1vZGVsW10+KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRVc2VyQnlJZCwgaHR0cE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hJbnB1dDogUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXG4gICAgICAgIH07XG4gICAgICAgIGxldCBib2R5ID0gSlNPTi5zdHJpbmdpZnkocHJvamVjdFNlYXJjaElucHV0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2plY3RbXT4oXG4gICAgICAgICAgICBgJHtBUElFbmRwb2ludCArIEFwaVVybHMuU2VhcmNoUHJvamVjdHN9YCxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICBodHRwT3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIEdldFdpZGdldHNCYXNlZE9uVXNlcih3aWRnZXQ6IFdpZGdldExpc3QpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcblxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHdpZGdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRXaWRnZXRzQmFzZWRPblVzZXIsIGJvZHksIGh0dHBPcHRpb25zKTtcbiAgICB9XG5cbiAgICBHZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZTogV29ya3NwYWNlTGlzdCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSlcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkod29ya3NwYWNlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldFdvcmtzcGFjZXMsIGJvZHksIGh0dHBPcHRpb25zKTtcbiAgICB9XG5cbiAgICBHZXRhbGxSb2xlcygpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcblxuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGRhdGEgPSB7IFJvbGVJZDogbnVsbCwgUm9sZU5hbWU6IG51bGwsIERhdGE6IG51bGwsIGlzQXJjaGl2ZWQ6IGZhbHNlIH07XG4gICAgICAgIGxldCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFsbFJvbGVzLCBib2R5LCBodHRwT3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEFsbEVtcGxveWVlcyhlbXBsb3llZU1vZGVsOiBFbXBsb3llZUxpc3RNb2RlbCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pLFxuICAgICAgICB9O1xuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KGVtcGxveWVlTW9kZWwpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldEFsbEVtcGxveWVlcywgYm9keSwgaHR0cE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGdldFN0b3JlcyhzdG9yZVNlYXJjaE1vZGVsOiBTdG9yZVNlYXJjaE1vZGVsKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHN0b3JlU2VhcmNoTW9kZWwpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkdldFN0b3JlcywgYm9keSwgaHR0cE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsQ29tcGFueVNldHRpbmdzRGV0YWlscyhjb21wYW55c2V0dGluZ01vZGVsOiBDb21wYW55c2V0dGluZ3NNb2RlbCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSlcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvbXBhbnlzZXR0aW5nTW9kZWwpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0Q29tcGFueVNldHRpbmdzRGV0YWlscywgYm9keSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldExvZ2dlZEluVXNlcigpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChBUElFbmRwb2ludCArIEFwaVVybHMuR2V0TG9nZ2VkSW5Vc2VyLCBodHRwT3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldENvbXBhbnlXb3JrSXRlbVN0YXJ0RnVuY3Rpb25hbGl0eVJlcXVpcmVkKCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HRVRfQ09NUEFOWV9TVEFSVF9GVU5DVElPTkFMSVRZX0VOQUJMRUQsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0U29mdExhYmVscyhzb2Z0TGFiZWxNb2RlbDogU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHNvZnRMYWJlbE1vZGVsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucywgYm9keSwgaHR0cE9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgR2V0RXhwb3J0RGF0YShleHBvcnRDb25maWd1cmF0aW9uTW9kZWw6IEV4cG9ydENvbmZpZ3VyYXRpb25Nb2RlbCkge1xuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcbiAgICAgICAgbGV0IEFQSUVuZHBvaW50ID0gZW52aXJvbm1lbnQuYXBpVVJMO1xuICAgICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0pXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShleHBvcnRDb25maWd1cmF0aW9uTW9kZWwpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJRW5kcG9pbnQgKyBBcGlVcmxzLkV4cG9ydFN5c3RlbUNvbmZpZ3VyYXRpb24sIGJvZHksIGh0dHBPcHRpb25zKTtcbiAgICB9XG5cbiAgICBTeXN0ZW1JbXBvcnRDb25maWd1cmF0aW9uKGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbDogSW1wb3J0Q29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xuICAgICAgICBsZXQgQVBJRW5kcG9pbnQgPSBlbnZpcm9ubWVudC5hcGlVUkw7XG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KGltcG9ydENvbmZpZ3VyYXRpb25Nb2RlbCk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChBUElFbmRwb2ludCArIEFwaVVybHMuSW1wb3J0U3lzdGVtQ29uZmlndXJhdGlvbiwgYm9keSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXRJbnRyb0RldGFpbHMoaW50cm9Nb2RlbCA6IEludHJvTW9kZWwpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGhvcml6YXRpb24nOiAnbXktYXV0aC10b2tlbicgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KGludHJvTW9kZWwpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KEFQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRJbnRyb0RldGFpbHMsIGJvZHksIGh0dHBPcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXRUZWFtTGVhZHNMaXN0KG1vZGVsOiBhbnkpIHtcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgICAgIGxldCBBUElFbmRwb2ludCA9IGVudmlyb25tZW50LmFwaVVSTDtcbiAgICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgICAgICB9O1xuICAgICAgICBsZXQgYm9keSA9IEpTT04uc3RyaW5naWZ5KG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke0FQSUVuZHBvaW50ICsgQXBpVXJscy5HZXRNeVRlYW1NZW1iZXJzTGlzdH1gLCBib2R5LCBodHRwT3B0aW9ucylcbiAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSkpO1xuICAgICAgfVxufSJdfQ==