@sunbird-cb/utils 1.0.19-ang-9-12 → 1.0.19

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 (389) hide show
  1. package/bundles/sunbird-cb-utils.umd.js +2971 -2006
  2. package/bundles/sunbird-cb-utils.umd.js.map +1 -1
  3. package/bundles/sunbird-cb-utils.umd.min.js +16 -0
  4. package/bundles/sunbird-cb-utils.umd.min.js.map +1 -0
  5. package/esm2015/lib/components/image-crop/image-crop.component.js +48 -13
  6. package/esm2015/lib/components/image-crop/image-crop.module.js +2 -8
  7. package/esm2015/lib/constants/features.enum.js +555 -555
  8. package/esm2015/lib/constants/instances.enum.js +5 -5
  9. package/esm2015/lib/constants/misc.constants.js +1 -2
  10. package/esm2015/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +21 -11
  11. package/esm2015/lib/directives/class-change-on-scroll/class-change-on-scroll.module.js +1 -1
  12. package/esm2015/lib/directives/default-thumbnail/default-thumbnail.directive.js +7 -1
  13. package/esm2015/lib/directives/default-thumbnail/default-thumbnail.module.js +1 -1
  14. package/esm2015/lib/directives/image-responsive/image-responsive.directive.js +11 -3
  15. package/esm2015/lib/directives/image-responsive/image-responsive.module.js +1 -1
  16. package/esm2015/lib/directives/in-view-port/in-view-port.directive.js +11 -5
  17. package/esm2015/lib/directives/in-view-port/in-view-port.module.js +1 -1
  18. package/esm2015/lib/directives/navigation/navigation.directive.js +6 -1
  19. package/esm2015/lib/directives/navigation/navigation.module.js +1 -1
  20. package/esm2015/lib/directives/permission/permission.directive.js +1 -1
  21. package/esm2015/lib/directives/permission/permission.module.js +1 -1
  22. package/esm2015/lib/helpers/functions/getStringifiedQueryParams.js +4 -4
  23. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +20 -11
  24. package/esm2015/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +2 -4
  25. package/esm2015/lib/helpers/logout/logout.component.js +13 -4
  26. package/esm2015/lib/helpers/logout/logout.module.js +2 -3
  27. package/esm2015/lib/models/contentRating.model.js +12 -2
  28. package/esm2015/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.js +1 -1
  29. package/esm2015/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +7 -1
  30. package/esm2015/lib/pipes/pipe-count-transform/pipe-count-transform.module.js +1 -1
  31. package/esm2015/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +1 -1
  32. package/esm2015/lib/pipes/pipe-date-concat/pipe-date-concat.module.js +1 -1
  33. package/esm2015/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +11 -1
  34. package/esm2015/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.js +1 -1
  35. package/esm2015/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +1 -1
  36. package/esm2015/lib/pipes/pipe-filter/pipe-filter.module.js +1 -1
  37. package/esm2015/lib/pipes/pipe-filter/pipe-filter.pipe.js +3 -3
  38. package/esm2015/lib/pipes/pipe-filter-search/pipe-filter-search.module.js +1 -1
  39. package/esm2015/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +5 -5
  40. package/esm2015/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.js +1 -1
  41. package/esm2015/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.js +1 -1
  42. package/esm2015/lib/pipes/pipe-limit-to/pipe-limit-to.module.js +1 -1
  43. package/esm2015/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +1 -1
  44. package/esm2015/lib/pipes/pipe-list-filter/pipe-list-filter.module.js +1 -1
  45. package/esm2015/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +4 -4
  46. package/esm2015/lib/pipes/pipe-name-transform/pipe-name-transform.module.js +1 -1
  47. package/esm2015/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +7 -1
  48. package/esm2015/lib/pipes/pipe-order-by/pipe-order-by.module.js +1 -1
  49. package/esm2015/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +4 -1
  50. package/esm2015/lib/pipes/pipe-partial-content/pipe-partial-content.module.js +1 -1
  51. package/esm2015/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +1 -1
  52. package/esm2015/lib/pipes/pipe-relative-time/pipe-relative-time.module.js +1 -1
  53. package/esm2015/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.js +1 -1
  54. package/esm2015/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.js +1 -1
  55. package/esm2015/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +4 -1
  56. package/esm2015/lib/resolvers/explore-detail.resolver.js +19 -12
  57. package/esm2015/lib/resolvers/marketing-offering.resolve.js +10 -7
  58. package/esm2015/lib/resolvers/page.constant.js +1 -1
  59. package/esm2015/lib/resolvers/page.model.js +47 -2
  60. package/esm2015/lib/resolvers/page.resolver.js +18 -12
  61. package/esm2015/lib/resolvers/resolver.model.js +6 -2
  62. package/esm2015/lib/services/auth-keycloak.service.js +33 -20
  63. package/esm2015/lib/services/auth-microsoft.service.js +17 -9
  64. package/esm2015/lib/services/card-content.model.js +22 -1
  65. package/esm2015/lib/services/configurations.model.js +508 -2
  66. package/esm2015/lib/services/configurations.service.js +50 -2
  67. package/esm2015/lib/services/content-strip-multiple.model.js +75 -2
  68. package/esm2015/lib/services/event.model.js +109 -1
  69. package/esm2015/lib/services/event.service.js +17 -4
  70. package/esm2015/lib/services/logger.service.js +13 -5
  71. package/esm2015/lib/services/ms-office.model.js +8 -2
  72. package/esm2015/lib/services/subapplication-respond.service.js +21 -8
  73. package/esm2015/lib/services/telemetry.service.js +59 -48
  74. package/esm2015/lib/services/user-preference.model.js +38 -2
  75. package/esm2015/lib/services/user-preference.service.js +15 -11
  76. package/esm2015/lib/services/utility.service.js +26 -9
  77. package/esm2015/lib/services/value.service.js +9 -4
  78. package/esm2015/lib/services/widget-content.model.js +236 -1
  79. package/esm2015/lib/services/widget-content.service.js +19 -15
  80. package/esm2015/lib/services/widget-resolver.model.js +57 -2
  81. package/esm2015/lib/services/widget-search.model.js +126 -2
  82. package/esm2015/public-api.js +68 -74
  83. package/esm2015/sunbird-cb-utils.js +8 -2
  84. package/esm5/lib/components/image-crop/image-crop.component.js +200 -0
  85. package/esm5/lib/components/image-crop/image-crop.module.js +31 -0
  86. package/esm5/lib/constants/features.enum.js +555 -0
  87. package/esm5/lib/constants/instances.enum.js +5 -0
  88. package/esm5/lib/constants/misc.constants.js +1 -0
  89. package/esm5/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.js +105 -0
  90. package/esm5/lib/directives/class-change-on-scroll/class-change-on-scroll.module.js +19 -0
  91. package/esm5/lib/directives/default-thumbnail/default-thumbnail.directive.js +40 -0
  92. package/esm5/lib/directives/default-thumbnail/default-thumbnail.module.js +19 -0
  93. package/esm5/lib/directives/image-responsive/image-responsive.directive.js +95 -0
  94. package/esm5/lib/directives/image-responsive/image-responsive.module.js +19 -0
  95. package/esm5/lib/directives/in-view-port/in-view-port.directive.js +73 -0
  96. package/esm5/lib/directives/in-view-port/in-view-port.module.js +19 -0
  97. package/esm5/lib/directives/navigation/navigation.directive.js +41 -0
  98. package/esm5/lib/directives/navigation/navigation.module.js +19 -0
  99. package/esm5/lib/directives/permission/permission.directive.js +14 -0
  100. package/esm5/lib/directives/permission/permission.module.js +19 -0
  101. package/esm5/lib/helpers/functions/getStringifiedQueryParams.js +9 -0
  102. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.component.js +103 -0
  103. package/esm5/lib/helpers/horizontal-scroller/horizontal-scroller.module.js +23 -0
  104. package/esm5/lib/helpers/logout/logout.component.js +63 -0
  105. package/esm5/lib/helpers/logout/logout.module.js +22 -0
  106. package/esm5/lib/models/contentRating.model.js +12 -0
  107. package/esm5/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.js +17 -0
  108. package/esm5/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.js +63 -0
  109. package/esm5/lib/pipes/pipe-count-transform/pipe-count-transform.module.js +19 -0
  110. package/esm5/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.js +37 -0
  111. package/esm5/lib/pipes/pipe-date-concat/pipe-date-concat.module.js +19 -0
  112. package/esm5/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.js +45 -0
  113. package/esm5/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.js +19 -0
  114. package/esm5/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +64 -0
  115. package/esm5/lib/pipes/pipe-filter/pipe-filter.module.js +19 -0
  116. package/esm5/lib/pipes/pipe-filter/pipe-filter.pipe.js +20 -0
  117. package/esm5/lib/pipes/pipe-filter-search/pipe-filter-search.module.js +19 -0
  118. package/esm5/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.js +38 -0
  119. package/esm5/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.js +19 -0
  120. package/esm5/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.js +16 -0
  121. package/esm5/lib/pipes/pipe-limit-to/pipe-limit-to.module.js +19 -0
  122. package/esm5/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.js +30 -0
  123. package/esm5/lib/pipes/pipe-list-filter/pipe-list-filter.module.js +19 -0
  124. package/esm5/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.js +21 -0
  125. package/esm5/lib/pipes/pipe-name-transform/pipe-name-transform.module.js +19 -0
  126. package/esm5/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.js +35 -0
  127. package/esm5/lib/pipes/pipe-order-by/pipe-order-by.module.js +19 -0
  128. package/esm5/lib/pipes/pipe-order-by/pipe-order-by.pipe.js +18 -0
  129. package/esm5/lib/pipes/pipe-partial-content/pipe-partial-content.module.js +19 -0
  130. package/esm5/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.js +34 -0
  131. package/esm5/lib/pipes/pipe-relative-time/pipe-relative-time.module.js +19 -0
  132. package/esm5/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.js +21 -0
  133. package/esm5/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.js +19 -0
  134. package/esm5/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.js +38 -0
  135. package/esm5/lib/resolvers/explore-detail.resolver.js +93 -0
  136. package/esm5/lib/resolvers/marketing-offering.resolve.js +43 -0
  137. package/esm5/lib/resolvers/page.constant.js +4 -0
  138. package/esm5/lib/resolvers/page.model.js +47 -0
  139. package/esm5/lib/resolvers/page.resolver.js +98 -0
  140. package/esm5/lib/resolvers/resolver.model.js +6 -0
  141. package/esm5/lib/services/auth-keycloak.service.js +316 -0
  142. package/esm5/lib/services/auth-microsoft.service.js +251 -0
  143. package/esm5/lib/services/card-content.model.js +32 -0
  144. package/esm5/lib/services/configurations.model.js +508 -0
  145. package/esm5/lib/services/configurations.service.js +114 -0
  146. package/esm5/lib/services/content-strip-multiple.model.js +75 -0
  147. package/esm5/lib/services/event.model.js +229 -0
  148. package/esm5/lib/services/event.service.js +216 -0
  149. package/esm5/lib/services/logger.service.js +73 -0
  150. package/esm5/lib/services/ms-office.model.js +8 -0
  151. package/esm5/lib/services/subapplication-respond.service.js +230 -0
  152. package/esm5/lib/services/telemetry.service.js +484 -0
  153. package/esm5/lib/services/user-preference.model.js +38 -0
  154. package/esm5/lib/services/user-preference.service.js +109 -0
  155. package/esm5/lib/services/utility.service.js +178 -0
  156. package/esm5/lib/services/value.service.js +33 -0
  157. package/esm5/lib/services/widget-content.model.js +342 -0
  158. package/esm5/lib/services/widget-content.service.js +214 -0
  159. package/esm5/lib/services/widget-resolver.model.js +57 -0
  160. package/esm5/lib/services/widget-search.model.js +126 -0
  161. package/esm5/public-api.js +68 -0
  162. package/esm5/sunbird-cb-utils.js +8 -0
  163. package/fesm2015/sunbird-cb-utils.js +2011 -788
  164. package/fesm2015/sunbird-cb-utils.js.map +1 -1
  165. package/fesm5/sunbird-cb-utils.js +5605 -0
  166. package/fesm5/sunbird-cb-utils.js.map +1 -0
  167. package/lib/components/image-crop/image-crop.component.d.ts +0 -1
  168. package/lib/components/image-crop/image-crop.module.d.ts +0 -1
  169. package/lib/constants/features.enum.d.ts +0 -1
  170. package/lib/constants/instances.enum.d.ts +0 -1
  171. package/lib/constants/misc.constants.d.ts +0 -1
  172. package/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.d.ts +3 -4
  173. package/lib/directives/class-change-on-scroll/class-change-on-scroll.module.d.ts +0 -1
  174. package/lib/directives/default-thumbnail/default-thumbnail.directive.d.ts +0 -1
  175. package/lib/directives/default-thumbnail/default-thumbnail.module.d.ts +0 -1
  176. package/lib/directives/image-responsive/image-responsive.directive.d.ts +0 -1
  177. package/lib/directives/image-responsive/image-responsive.module.d.ts +0 -1
  178. package/lib/directives/in-view-port/in-view-port.directive.d.ts +0 -1
  179. package/lib/directives/in-view-port/in-view-port.module.d.ts +0 -1
  180. package/lib/directives/navigation/navigation.directive.d.ts +0 -1
  181. package/lib/directives/navigation/navigation.module.d.ts +0 -1
  182. package/lib/directives/permission/permission.directive.d.ts +0 -1
  183. package/lib/directives/permission/permission.module.d.ts +0 -1
  184. package/lib/helpers/functions/getStringifiedQueryParams.d.ts +0 -1
  185. package/lib/helpers/horizontal-scroller/horizontal-scroller.component.d.ts +0 -1
  186. package/lib/helpers/horizontal-scroller/horizontal-scroller.module.d.ts +0 -1
  187. package/lib/helpers/logout/logout.component.d.ts +2 -3
  188. package/lib/helpers/logout/logout.module.d.ts +0 -1
  189. package/lib/models/contentRating.model.d.ts +0 -1
  190. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.d.ts +0 -1
  191. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.d.ts +0 -1
  192. package/lib/pipes/pipe-count-transform/pipe-count-transform.module.d.ts +0 -1
  193. package/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.d.ts +0 -1
  194. package/lib/pipes/pipe-date-concat/pipe-date-concat.module.d.ts +0 -1
  195. package/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.d.ts +0 -1
  196. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.d.ts +0 -1
  197. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts +0 -1
  198. package/lib/pipes/pipe-filter/pipe-filter.module.d.ts +0 -1
  199. package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts +0 -1
  200. package/lib/pipes/pipe-filter-search/pipe-filter-search.module.d.ts +0 -1
  201. package/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.d.ts +0 -1
  202. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.d.ts +0 -1
  203. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.d.ts +0 -1
  204. package/lib/pipes/pipe-limit-to/pipe-limit-to.module.d.ts +0 -1
  205. package/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.d.ts +0 -1
  206. package/lib/pipes/pipe-list-filter/pipe-list-filter.module.d.ts +0 -1
  207. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts +0 -1
  208. package/lib/pipes/pipe-name-transform/pipe-name-transform.module.d.ts +0 -1
  209. package/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.d.ts +0 -1
  210. package/lib/pipes/pipe-order-by/pipe-order-by.module.d.ts +0 -1
  211. package/lib/pipes/pipe-order-by/pipe-order-by.pipe.d.ts +4 -5
  212. package/lib/pipes/pipe-partial-content/pipe-partial-content.module.d.ts +0 -1
  213. package/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.d.ts +0 -1
  214. package/lib/pipes/pipe-relative-time/pipe-relative-time.module.d.ts +0 -1
  215. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts +0 -1
  216. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.d.ts +0 -1
  217. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.d.ts +0 -1
  218. package/lib/resolvers/explore-detail.resolver.d.ts +0 -1
  219. package/lib/resolvers/marketing-offering.resolve.d.ts +0 -1
  220. package/lib/resolvers/page.constant.d.ts +0 -1
  221. package/lib/resolvers/page.model.d.ts +1 -2
  222. package/lib/resolvers/page.resolver.d.ts +0 -1
  223. package/lib/resolvers/resolver.model.d.ts +0 -1
  224. package/lib/services/auth-keycloak.service.d.ts +9 -10
  225. package/lib/services/auth-microsoft.service.d.ts +2 -3
  226. package/lib/services/card-content.model.d.ts +0 -1
  227. package/lib/services/configurations.model.d.ts +24 -27
  228. package/lib/services/configurations.service.d.ts +0 -1
  229. package/lib/services/content-strip-multiple.model.d.ts +6 -8
  230. package/lib/services/event.model.d.ts +1 -2
  231. package/lib/services/event.service.d.ts +0 -1
  232. package/lib/services/logger.service.d.ts +4 -5
  233. package/lib/services/ms-office.model.d.ts +0 -1
  234. package/lib/services/subapplication-respond.service.d.ts +0 -1
  235. package/lib/services/telemetry.service.d.ts +2 -3
  236. package/lib/services/user-preference.model.d.ts +0 -1
  237. package/lib/services/user-preference.service.d.ts +0 -1
  238. package/lib/services/utility.service.d.ts +7 -8
  239. package/lib/services/value.service.d.ts +0 -1
  240. package/lib/services/widget-content.model.d.ts +19 -21
  241. package/lib/services/widget-content.service.d.ts +0 -1
  242. package/lib/services/widget-resolver.model.d.ts +0 -1
  243. package/lib/services/widget-search.model.d.ts +0 -1
  244. package/package.json +17 -14
  245. package/public-api.d.ts +0 -7
  246. package/sunbird-cb-utils.d.ts +6 -1
  247. package/sunbird-cb-utils.metadata.json +1 -1
  248. package/lib/components/image-crop/image-crop.component.d.ts.map +0 -1
  249. package/lib/components/image-crop/image-crop.component.ngfactory.d.ts.map +0 -1
  250. package/lib/components/image-crop/image-crop.component.scss.shim.ngstyle.d.ts.map +0 -1
  251. package/lib/components/image-crop/image-crop.module.d.ts.map +0 -1
  252. package/lib/components/image-crop/image-crop.module.ngfactory.d.ts.map +0 -1
  253. package/lib/constants/features.enum.d.ts.map +0 -1
  254. package/lib/constants/instances.enum.d.ts.map +0 -1
  255. package/lib/constants/misc.constants.d.ts.map +0 -1
  256. package/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.d.ts.map +0 -1
  257. package/lib/directives/class-change-on-scroll/class-change-on-scroll.directive.ngfactory.d.ts.map +0 -1
  258. package/lib/directives/class-change-on-scroll/class-change-on-scroll.module.d.ts.map +0 -1
  259. package/lib/directives/class-change-on-scroll/class-change-on-scroll.module.ngfactory.d.ts.map +0 -1
  260. package/lib/directives/default-thumbnail/default-thumbnail.directive.d.ts.map +0 -1
  261. package/lib/directives/default-thumbnail/default-thumbnail.directive.ngfactory.d.ts.map +0 -1
  262. package/lib/directives/default-thumbnail/default-thumbnail.module.d.ts.map +0 -1
  263. package/lib/directives/default-thumbnail/default-thumbnail.module.ngfactory.d.ts.map +0 -1
  264. package/lib/directives/image-responsive/image-responsive.directive.d.ts.map +0 -1
  265. package/lib/directives/image-responsive/image-responsive.directive.ngfactory.d.ts.map +0 -1
  266. package/lib/directives/image-responsive/image-responsive.module.d.ts.map +0 -1
  267. package/lib/directives/image-responsive/image-responsive.module.ngfactory.d.ts.map +0 -1
  268. package/lib/directives/in-view-port/in-view-port.directive.d.ts.map +0 -1
  269. package/lib/directives/in-view-port/in-view-port.directive.ngfactory.d.ts.map +0 -1
  270. package/lib/directives/in-view-port/in-view-port.module.d.ts.map +0 -1
  271. package/lib/directives/in-view-port/in-view-port.module.ngfactory.d.ts.map +0 -1
  272. package/lib/directives/navigation/navigation.directive.d.ts.map +0 -1
  273. package/lib/directives/navigation/navigation.directive.ngfactory.d.ts.map +0 -1
  274. package/lib/directives/navigation/navigation.module.d.ts.map +0 -1
  275. package/lib/directives/navigation/navigation.module.ngfactory.d.ts.map +0 -1
  276. package/lib/directives/permission/permission.directive.d.ts.map +0 -1
  277. package/lib/directives/permission/permission.directive.ngfactory.d.ts.map +0 -1
  278. package/lib/directives/permission/permission.module.d.ts.map +0 -1
  279. package/lib/directives/permission/permission.module.ngfactory.d.ts.map +0 -1
  280. package/lib/helpers/functions/getStringifiedQueryParams.d.ts.map +0 -1
  281. package/lib/helpers/horizontal-scroller/horizontal-scroller.component.d.ts.map +0 -1
  282. package/lib/helpers/horizontal-scroller/horizontal-scroller.component.ngfactory.d.ts.map +0 -1
  283. package/lib/helpers/horizontal-scroller/horizontal-scroller.component.scss.shim.ngstyle.d.ts.map +0 -1
  284. package/lib/helpers/horizontal-scroller/horizontal-scroller.module.d.ts.map +0 -1
  285. package/lib/helpers/horizontal-scroller/horizontal-scroller.module.ngfactory.d.ts.map +0 -1
  286. package/lib/helpers/logout/logout.component.d.ts.map +0 -1
  287. package/lib/helpers/logout/logout.component.ngfactory.d.ts.map +0 -1
  288. package/lib/helpers/logout/logout.component.scss.shim.ngstyle.d.ts.map +0 -1
  289. package/lib/helpers/logout/logout.module.d.ts.map +0 -1
  290. package/lib/helpers/logout/logout.module.ngfactory.d.ts.map +0 -1
  291. package/lib/models/contentRating.model.d.ts.map +0 -1
  292. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.d.ts.map +0 -1
  293. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.module.ngfactory.d.ts.map +0 -1
  294. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.d.ts.map +0 -1
  295. package/lib/pipes/pipe-concise-date-range/pipe-concise-date-range.pipe.ngfactory.d.ts.map +0 -1
  296. package/lib/pipes/pipe-count-transform/pipe-count-transform.module.d.ts.map +0 -1
  297. package/lib/pipes/pipe-count-transform/pipe-count-transform.module.ngfactory.d.ts.map +0 -1
  298. package/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.d.ts.map +0 -1
  299. package/lib/pipes/pipe-count-transform/pipe-count-transform.pipe.ngfactory.d.ts.map +0 -1
  300. package/lib/pipes/pipe-date-concat/pipe-date-concat.module.d.ts.map +0 -1
  301. package/lib/pipes/pipe-date-concat/pipe-date-concat.module.ngfactory.d.ts.map +0 -1
  302. package/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.d.ts.map +0 -1
  303. package/lib/pipes/pipe-date-concat/pipe-date-concat.pipe.ngfactory.d.ts.map +0 -1
  304. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.d.ts.map +0 -1
  305. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.module.ngfactory.d.ts.map +0 -1
  306. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts.map +0 -1
  307. package/lib/pipes/pipe-duration-transform/pipe-duration-transform.pipe.ngfactory.d.ts.map +0 -1
  308. package/lib/pipes/pipe-filter/pipe-filter.module.d.ts.map +0 -1
  309. package/lib/pipes/pipe-filter/pipe-filter.module.ngfactory.d.ts.map +0 -1
  310. package/lib/pipes/pipe-filter/pipe-filter.pipe.d.ts.map +0 -1
  311. package/lib/pipes/pipe-filter/pipe-filter.pipe.ngfactory.d.ts.map +0 -1
  312. package/lib/pipes/pipe-filter-search/pipe-filter-search.module.d.ts.map +0 -1
  313. package/lib/pipes/pipe-filter-search/pipe-filter-search.module.ngfactory.d.ts.map +0 -1
  314. package/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.d.ts.map +0 -1
  315. package/lib/pipes/pipe-filter-search/pipe-filter-search.pipe.ngfactory.d.ts.map +0 -1
  316. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.d.ts.map +0 -1
  317. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.module.ngfactory.d.ts.map +0 -1
  318. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.d.ts.map +0 -1
  319. package/lib/pipes/pipe-html-tag-removal/pipe-html-tag-removal.pipe.ngfactory.d.ts.map +0 -1
  320. package/lib/pipes/pipe-limit-to/pipe-limit-to.module.d.ts.map +0 -1
  321. package/lib/pipes/pipe-limit-to/pipe-limit-to.module.ngfactory.d.ts.map +0 -1
  322. package/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.d.ts.map +0 -1
  323. package/lib/pipes/pipe-limit-to/pipe-limit-to.pipe.ngfactory.d.ts.map +0 -1
  324. package/lib/pipes/pipe-list-filter/pipe-list-filter.module.d.ts.map +0 -1
  325. package/lib/pipes/pipe-list-filter/pipe-list-filter.module.ngfactory.d.ts.map +0 -1
  326. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.d.ts.map +0 -1
  327. package/lib/pipes/pipe-list-filter/pipe-list-filter.pipe.ngfactory.d.ts.map +0 -1
  328. package/lib/pipes/pipe-name-transform/pipe-name-transform.module.d.ts.map +0 -1
  329. package/lib/pipes/pipe-name-transform/pipe-name-transform.module.ngfactory.d.ts.map +0 -1
  330. package/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.d.ts.map +0 -1
  331. package/lib/pipes/pipe-name-transform/pipe-name-transform.pipe.ngfactory.d.ts.map +0 -1
  332. package/lib/pipes/pipe-order-by/pipe-order-by.module.d.ts.map +0 -1
  333. package/lib/pipes/pipe-order-by/pipe-order-by.module.ngfactory.d.ts.map +0 -1
  334. package/lib/pipes/pipe-order-by/pipe-order-by.pipe.d.ts.map +0 -1
  335. package/lib/pipes/pipe-order-by/pipe-order-by.pipe.ngfactory.d.ts.map +0 -1
  336. package/lib/pipes/pipe-partial-content/pipe-partial-content.module.d.ts.map +0 -1
  337. package/lib/pipes/pipe-partial-content/pipe-partial-content.module.ngfactory.d.ts.map +0 -1
  338. package/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.d.ts.map +0 -1
  339. package/lib/pipes/pipe-partial-content/pipe-partial-content.pipe.ngfactory.d.ts.map +0 -1
  340. package/lib/pipes/pipe-relative-time/pipe-relative-time.module.d.ts.map +0 -1
  341. package/lib/pipes/pipe-relative-time/pipe-relative-time.module.ngfactory.d.ts.map +0 -1
  342. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.d.ts.map +0 -1
  343. package/lib/pipes/pipe-relative-time/pipe-relative-time.pipe.ngfactory.d.ts.map +0 -1
  344. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.d.ts.map +0 -1
  345. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.module.ngfactory.d.ts.map +0 -1
  346. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.d.ts.map +0 -1
  347. package/lib/pipes/pipe-safe-sanitizer/pipe-safe-sanitizer.pipe.ngfactory.d.ts.map +0 -1
  348. package/lib/resolvers/explore-detail.resolver.d.ts.map +0 -1
  349. package/lib/resolvers/explore-detail.resolver.ngfactory.d.ts.map +0 -1
  350. package/lib/resolvers/marketing-offering.resolve.d.ts.map +0 -1
  351. package/lib/resolvers/marketing-offering.resolve.ngfactory.d.ts.map +0 -1
  352. package/lib/resolvers/page.constant.d.ts.map +0 -1
  353. package/lib/resolvers/page.model.d.ts.map +0 -1
  354. package/lib/resolvers/page.resolver.d.ts.map +0 -1
  355. package/lib/resolvers/page.resolver.ngfactory.d.ts.map +0 -1
  356. package/lib/resolvers/resolver.model.d.ts.map +0 -1
  357. package/lib/services/auth-keycloak.service.d.ts.map +0 -1
  358. package/lib/services/auth-keycloak.service.ngfactory.d.ts.map +0 -1
  359. package/lib/services/auth-microsoft.service.d.ts.map +0 -1
  360. package/lib/services/auth-microsoft.service.ngfactory.d.ts.map +0 -1
  361. package/lib/services/card-content.model.d.ts.map +0 -1
  362. package/lib/services/configurations.model.d.ts.map +0 -1
  363. package/lib/services/configurations.service.d.ts.map +0 -1
  364. package/lib/services/configurations.service.ngfactory.d.ts.map +0 -1
  365. package/lib/services/content-strip-multiple.model.d.ts.map +0 -1
  366. package/lib/services/event.model.d.ts.map +0 -1
  367. package/lib/services/event.service.d.ts.map +0 -1
  368. package/lib/services/event.service.ngfactory.d.ts.map +0 -1
  369. package/lib/services/logger.service.d.ts.map +0 -1
  370. package/lib/services/logger.service.ngfactory.d.ts.map +0 -1
  371. package/lib/services/ms-office.model.d.ts.map +0 -1
  372. package/lib/services/subapplication-respond.service.d.ts.map +0 -1
  373. package/lib/services/subapplication-respond.service.ngfactory.d.ts.map +0 -1
  374. package/lib/services/telemetry.service.d.ts.map +0 -1
  375. package/lib/services/telemetry.service.ngfactory.d.ts.map +0 -1
  376. package/lib/services/user-preference.model.d.ts.map +0 -1
  377. package/lib/services/user-preference.service.d.ts.map +0 -1
  378. package/lib/services/user-preference.service.ngfactory.d.ts.map +0 -1
  379. package/lib/services/utility.service.d.ts.map +0 -1
  380. package/lib/services/utility.service.ngfactory.d.ts.map +0 -1
  381. package/lib/services/value.service.d.ts.map +0 -1
  382. package/lib/services/value.service.ngfactory.d.ts.map +0 -1
  383. package/lib/services/widget-content.model.d.ts.map +0 -1
  384. package/lib/services/widget-content.service.d.ts.map +0 -1
  385. package/lib/services/widget-content.service.ngfactory.d.ts.map +0 -1
  386. package/lib/services/widget-resolver.model.d.ts.map +0 -1
  387. package/lib/services/widget-search.model.d.ts.map +0 -1
  388. package/public-api.d.ts.map +0 -1
  389. package/sunbird-cb-utils.d.ts.map +0 -1
@@ -0,0 +1,484 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { filter } from 'rxjs/operators';
4
+ import { ConfigurationsService } from './configurations.service';
5
+ import { WsEvents } from './event.model';
6
+ import { EventService } from './event.service';
7
+ import { LoggerService } from './logger.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./configurations.service";
10
+ import * as i2 from "./event.service";
11
+ import * as i3 from "./logger.service";
12
+ var TelemetryService = (function () {
13
+ function TelemetryService(environment, configSvc, eventsSvc, logger) {
14
+ this.configSvc = configSvc;
15
+ this.eventsSvc = eventsSvc;
16
+ this.logger = logger;
17
+ this.previousUrl = null;
18
+ this.telemetryConfig = null;
19
+ this.pData = null;
20
+ this.contextCdata = [];
21
+ this.externalApps = {
22
+ RBCP: 'rbcp-web-ui',
23
+ };
24
+ this.environment = environment;
25
+ var instanceConfig = this.configSvc.instanceConfig;
26
+ if (instanceConfig) {
27
+ this.telemetryConfig = instanceConfig.telemetryConfig;
28
+ this.telemetryConfig = tslib_1.__assign({}, this.telemetryConfig, { pdata: tslib_1.__assign({}, this.telemetryConfig.pdata, { id: environment.name + "." + this.telemetryConfig.pdata.id }), uid: this.configSvc.userProfile && this.configSvc.userProfile.userId, channel: this.rootOrgId || this.telemetryConfig.channel, sid: this.getTelemetrySessionId });
29
+ this.pData = this.telemetryConfig.pdata;
30
+ this.addPlayerListener();
31
+ this.addCustomEventListener();
32
+ this.addInteractListener();
33
+ this.addFeedbackListener();
34
+ this.addTimeSpentListener();
35
+ this.addSearchListener();
36
+ this.addHearbeatListener();
37
+ this.addCustomImpressionListener();
38
+ }
39
+ }
40
+ Object.defineProperty(TelemetryService.prototype, "getTelemetrySessionId", {
41
+ get: function () {
42
+ return localStorage.getItem('telemetrySessionId') || '';
43
+ },
44
+ enumerable: true,
45
+ configurable: true
46
+ });
47
+ Object.defineProperty(TelemetryService.prototype, "rootOrgId", {
48
+ get: function () {
49
+ if (this.configSvc && this.configSvc.userProfile && this.configSvc.userProfile.rootOrgId) {
50
+ return this.configSvc.userProfile.rootOrgId;
51
+ }
52
+ return '';
53
+ },
54
+ enumerable: true,
55
+ configurable: true
56
+ });
57
+ TelemetryService.prototype.start = function (edata, data, pageContext) {
58
+ try {
59
+ if (this.telemetryConfig) {
60
+ $t.start(this.telemetryConfig, (pageContext && pageContext.pageId) ?
61
+ pageContext.pageId
62
+ : '', '1.0', {
63
+ type: edata.type,
64
+ mode: edata.mode,
65
+ pageid: (pageContext && pageContext.pageId) ?
66
+ pageContext.pageId
67
+ : '',
68
+ duration: 1,
69
+ }, {
70
+ context: tslib_1.__assign({ pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }) }, (pageContext && pageContext.module ? { env: pageContext.module } : null)),
71
+ object: tslib_1.__assign({}, (data) && data),
72
+ });
73
+ }
74
+ else {
75
+ this.logger.error('Error Initializing Telemetry. Config missing.');
76
+ }
77
+ }
78
+ catch (e) {
79
+ console.log('Error in telemetry start', e);
80
+ }
81
+ };
82
+ TelemetryService.prototype.end = function (edata, data, pageContext) {
83
+ try {
84
+ $t.end({
85
+ type: edata.type,
86
+ mode: edata.mode,
87
+ pageid: (pageContext && pageContext.pageId) ?
88
+ pageContext.pageId
89
+ : '',
90
+ }, {
91
+ context: tslib_1.__assign({ pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }) }, (pageContext && pageContext.module ? { env: pageContext.module } : null)),
92
+ object: tslib_1.__assign({}, (data) && data),
93
+ });
94
+ }
95
+ catch (e) {
96
+ console.log('Error in telemetry end', e);
97
+ }
98
+ };
99
+ TelemetryService.prototype.audit = function (type, props, data) {
100
+ try {
101
+ $t.audit({
102
+ type: type,
103
+ props: props,
104
+ state: data,
105
+ prevstate: '',
106
+ duration: '',
107
+ }, {
108
+ context: {
109
+ pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }),
110
+ },
111
+ });
112
+ }
113
+ catch (e) {
114
+ console.log('Error in telemetry audit', e);
115
+ }
116
+ };
117
+ TelemetryService.prototype.heartbeat = function (type, id) {
118
+ try {
119
+ $t.heartbeat({
120
+ id: id,
121
+ type: type,
122
+ });
123
+ }
124
+ catch (e) {
125
+ console.log('Error in telemetry heartbeat', e);
126
+ }
127
+ };
128
+ TelemetryService.prototype.impression = function (data) {
129
+ try {
130
+ var page = this.getPageDetails();
131
+ if (data && data.pageContext) {
132
+ page.module = data.pageContext.module;
133
+ }
134
+ var edata = {
135
+ pageid: page.pageid,
136
+ type: page.pageUrlParts[0],
137
+ uri: page.pageUrl,
138
+ };
139
+ if (page.objectId) {
140
+ var config = {
141
+ context: {
142
+ pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }),
143
+ env: page.module || (this.telemetryConfig && this.telemetryConfig.env),
144
+ },
145
+ object: tslib_1.__assign({ id: page.objectId }, ((data) ? data.object : {})),
146
+ };
147
+ $t.impression(edata, config);
148
+ }
149
+ else {
150
+ $t.impression(edata, {
151
+ context: {
152
+ pdata: tslib_1.__assign({}, this.pData, { id: this.pData.id }),
153
+ env: page.module || '',
154
+ },
155
+ object: tslib_1.__assign({}, ((data) ? data.object : {})),
156
+ });
157
+ }
158
+ this.previousUrl = page.pageUrl;
159
+ }
160
+ catch (e) {
161
+ console.log('Error in telemetry impression', e);
162
+ }
163
+ };
164
+ TelemetryService.prototype.externalImpression = function (impressionData) {
165
+ try {
166
+ var page = this.getPageDetails();
167
+ if (this.externalApps[impressionData.subApplicationName]) {
168
+ var externalConfig = page.objectId ? {
169
+ context: {
170
+ pdata: tslib_1.__assign({}, this.pData, { id: this.externalApps[impressionData.subApplicationName] }),
171
+ },
172
+ object: {
173
+ id: page.objectId,
174
+ },
175
+ } : {
176
+ context: {
177
+ pdata: tslib_1.__assign({}, this.pData, { id: this.externalApps[impressionData.subApplicationName] }),
178
+ },
179
+ };
180
+ $t.impression(impressionData.data, externalConfig);
181
+ }
182
+ }
183
+ catch (e) {
184
+ console.log('Error in telemetry externalImpression', e);
185
+ }
186
+ };
187
+ TelemetryService.prototype.addCustomImpressionListener = function () {
188
+ var _this = this;
189
+ this.eventsSvc.events$
190
+ .pipe(filter((function (event) {
191
+ return event &&
192
+ event.data &&
193
+ event.eventType === WsEvents.WsEventType.Telemetry &&
194
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.Impression;
195
+ })))
196
+ .subscribe((function (event) {
197
+ try {
198
+ _this.impression(event.data);
199
+ }
200
+ catch (e) {
201
+ console.log('Error in telemetry impression', e);
202
+ }
203
+ }));
204
+ };
205
+ TelemetryService.prototype.addTimeSpentListener = function () {
206
+ var _this = this;
207
+ this.eventsSvc.events$
208
+ .pipe(filter((function (event) {
209
+ return event &&
210
+ event.eventType === WsEvents.WsEventType.Telemetry &&
211
+ event.data.type === WsEvents.WsTimeSpentType.Page &&
212
+ event.data.mode &&
213
+ event.data;
214
+ })))
215
+ .subscribe((function (event) {
216
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded) {
217
+ _this.start({
218
+ type: event.data.type || WsEvents.WsTimeSpentType.Player,
219
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
220
+ }, {}, event.pageContext);
221
+ }
222
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Unloaded) {
223
+ _this.end({
224
+ type: event.data.type || WsEvents.WsTimeSpentType.Player,
225
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
226
+ }, {}, event.pageContext);
227
+ }
228
+ }));
229
+ };
230
+ TelemetryService.prototype.addCustomEventListener = function () {
231
+ var _this = this;
232
+ this.eventsSvc.events$
233
+ .pipe(filter((function (event) {
234
+ return event &&
235
+ event.eventType === WsEvents.WsEventType.Telemetry;
236
+ })))
237
+ .subscribe((function (event) {
238
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&
239
+ event.data.type !== WsEvents.WsTimeSpentType.Player) {
240
+ _this.start({
241
+ type: event.data.type,
242
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
243
+ }, event.data.object, event.pageContext);
244
+ }
245
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&
246
+ event.data.type !== WsEvents.WsTimeSpentType.Player) {
247
+ _this.end({
248
+ type: event.data.type || WsEvents.WsTimeSpentType.Player,
249
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
250
+ }, event.data.object, event.pageContext);
251
+ }
252
+ }));
253
+ };
254
+ TelemetryService.prototype.addPlayerListener = function () {
255
+ var _this = this;
256
+ this.eventsSvc.events$
257
+ .pipe(filter((function (event) {
258
+ return event &&
259
+ event.eventType === WsEvents.WsEventType.Telemetry &&
260
+ event.data.type === WsEvents.WsTimeSpentType.Player &&
261
+ event.data.mode &&
262
+ event.data;
263
+ })))
264
+ .subscribe((function (event) {
265
+ var content = event.data.content;
266
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Loaded &&
267
+ (!content ||
268
+ (content.isIframeSupported || '').toLowerCase() === 'maybe' ||
269
+ (content.isIframeSupported || '').toLowerCase() === 'yes' ||
270
+ (content.mimeType === 'application/pdf' || 'application/json'))) {
271
+ _this.start({
272
+ type: event.data.type || WsEvents.WsTimeSpentType.Player,
273
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
274
+ }, event.data.object, event.pageContext);
275
+ }
276
+ if (event.data.state === WsEvents.EnumTelemetrySubType.Unloaded &&
277
+ (!content ||
278
+ (content.isIframeSupported || '').toLowerCase() === 'maybe' ||
279
+ (content.isIframeSupported || '').toLowerCase() === 'yes' ||
280
+ (content.mimeType === 'application/pdf' || 'application/json'))) {
281
+ _this.end({
282
+ type: event.data.type || WsEvents.WsTimeSpentType.Player,
283
+ mode: event.data.mode || WsEvents.WsTimeSpentMode.Play,
284
+ }, event.data.object, event.pageContext);
285
+ }
286
+ }));
287
+ };
288
+ TelemetryService.prototype.addInteractListener = function () {
289
+ var _this = this;
290
+ this.eventsSvc.events$
291
+ .pipe(filter((function (event) {
292
+ return event &&
293
+ event.data &&
294
+ event.eventType === WsEvents.WsEventType.Telemetry &&
295
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.Interact;
296
+ })))
297
+ .subscribe((function (event) {
298
+ var page = _this.getPageDetails();
299
+ if (typeof event.from === 'string' && _this.externalApps[event.from]) {
300
+ var externalConfig = {
301
+ context: {
302
+ pdata: tslib_1.__assign({}, _this.pData, { id: _this.externalApps[event.from] }),
303
+ },
304
+ };
305
+ try {
306
+ $t.interact(event.data, externalConfig);
307
+ }
308
+ catch (e) {
309
+ console.log('Error in telemetry interact', e);
310
+ }
311
+ }
312
+ else {
313
+ try {
314
+ $t.interact({
315
+ type: event.data.edata.type,
316
+ subtype: event.data.edata.subType,
317
+ id: (event.data.edata && event.data.edata.id) ?
318
+ event.data.edata.id
319
+ : '',
320
+ pageid: event.data.pageContext && event.data.pageContext.pageId || page.pageid,
321
+ }, {
322
+ context: tslib_1.__assign({ pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }) }, (event.data.pageContext && event.data.pageContext.module ? { env: event.data.pageContext.module } : null)),
323
+ object: tslib_1.__assign({}, event.data.object),
324
+ });
325
+ }
326
+ catch (e) {
327
+ console.log('Error in telemetry interact', e);
328
+ }
329
+ }
330
+ }));
331
+ };
332
+ TelemetryService.prototype.addFeedbackListener = function () {
333
+ var _this = this;
334
+ this.eventsSvc.events$
335
+ .pipe(filter((function (event) {
336
+ return event &&
337
+ event.data &&
338
+ event.eventType === WsEvents.WsEventType.Telemetry &&
339
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.Feedback;
340
+ })))
341
+ .subscribe((function (event) {
342
+ var page = _this.getPageDetails();
343
+ try {
344
+ $t.feedback({
345
+ rating: event.data.object.rating || 0,
346
+ commentid: event.data.object.commentid || '',
347
+ commenttxt: event.data.object.commenttxt || '',
348
+ pageid: page.pageid,
349
+ }, {
350
+ context: {
351
+ pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }),
352
+ },
353
+ object: {
354
+ id: event.data.object.contentId || event.data.object.id || '',
355
+ type: event.data.edata.type || '',
356
+ ver: "" + (event.data.object.version || '1') + '',
357
+ rollup: {},
358
+ },
359
+ });
360
+ }
361
+ catch (e) {
362
+ console.log('Error in telemetry interact', e);
363
+ }
364
+ }));
365
+ };
366
+ TelemetryService.prototype.addHearbeatListener = function () {
367
+ var _this = this;
368
+ this.eventsSvc.events$
369
+ .pipe(filter((function (event) {
370
+ return event &&
371
+ event.data &&
372
+ event.eventType === WsEvents.WsEventType.Telemetry &&
373
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.HeartBeat;
374
+ })))
375
+ .subscribe((function (event) {
376
+ if (typeof event.from === 'string' && _this.externalApps[event.from]) {
377
+ var externalConfig = {
378
+ context: {
379
+ pdata: tslib_1.__assign({}, _this.pData, { id: _this.externalApps[event.from] }),
380
+ },
381
+ };
382
+ try {
383
+ $t.heartbeat(event.data, externalConfig);
384
+ }
385
+ catch (e) {
386
+ console.log('Error in telemetry heartbeat', e);
387
+ }
388
+ }
389
+ else {
390
+ try {
391
+ $t.heartbeat({
392
+ type: event.data.type,
393
+ id: event.data.id,
394
+ }, {
395
+ context: {
396
+ pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }),
397
+ },
398
+ });
399
+ }
400
+ catch (e) {
401
+ console.log('Error in telemetry heartbeat', e);
402
+ }
403
+ }
404
+ }));
405
+ };
406
+ TelemetryService.prototype.addSearchListener = function () {
407
+ var _this = this;
408
+ this.eventsSvc.events$
409
+ .pipe(filter((function (event) {
410
+ return event &&
411
+ event.data &&
412
+ event.eventType === WsEvents.WsEventType.Telemetry &&
413
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.Search;
414
+ })))
415
+ .subscribe((function (event) {
416
+ try {
417
+ $t.search({
418
+ query: event.data.query,
419
+ filters: event.data.filters,
420
+ size: event.data.size,
421
+ }, {
422
+ context: {
423
+ pdata: tslib_1.__assign({}, _this.pData, { id: _this.pData.id }),
424
+ },
425
+ });
426
+ }
427
+ catch (e) {
428
+ console.log('Error in telemetry search', e);
429
+ }
430
+ }));
431
+ };
432
+ TelemetryService.prototype.getPageDetails = function () {
433
+ var path = window.location.pathname.replace('/', '');
434
+ var url = path + window.location.search;
435
+ return {
436
+ pageid: path,
437
+ pageUrl: url,
438
+ pageUrlParts: path.split('/'),
439
+ refferUrl: this.previousUrl,
440
+ objectId: this.extractContentIdFromUrlParts(path.split('/')),
441
+ module: '',
442
+ };
443
+ };
444
+ TelemetryService.prototype.extractContentIdFromUrlParts = function (urlParts) {
445
+ var tocIdx = urlParts.indexOf('toc');
446
+ var viewerIdx = urlParts.indexOf('viewer');
447
+ if (tocIdx === -1 && viewerIdx === -1) {
448
+ return null;
449
+ }
450
+ if (tocIdx !== -1 && tocIdx < urlParts.length - 1) {
451
+ return urlParts[tocIdx + 1];
452
+ }
453
+ if (viewerIdx !== -1 && viewerIdx < urlParts.length - 2) {
454
+ return urlParts[viewerIdx + 2];
455
+ }
456
+ return null;
457
+ };
458
+ TelemetryService.decorators = [
459
+ { type: Injectable, args: [{
460
+ providedIn: 'root',
461
+ },] }
462
+ ];
463
+ TelemetryService.ctorParameters = function () { return [
464
+ { type: undefined, decorators: [{ type: Inject, args: ['environment',] }] },
465
+ { type: ConfigurationsService },
466
+ { type: EventService },
467
+ { type: LoggerService }
468
+ ]; };
469
+ /** @nocollapse */ TelemetryService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function TelemetryService_Factory() { return new TelemetryService(i0.ɵɵinject("environment"), i0.ɵɵinject(i1.ConfigurationsService), i0.ɵɵinject(i2.EventService), i0.ɵɵinject(i3.LoggerService)); }, token: TelemetryService, providedIn: "root" });
470
+ return TelemetryService;
471
+ }());
472
+ export { TelemetryService };
473
+ if (false) {
474
+ TelemetryService.prototype.previousUrl;
475
+ TelemetryService.prototype.telemetryConfig;
476
+ TelemetryService.prototype.pData;
477
+ TelemetryService.prototype.contextCdata;
478
+ TelemetryService.prototype.environment;
479
+ TelemetryService.prototype.externalApps;
480
+ TelemetryService.prototype.configSvc;
481
+ TelemetryService.prototype.eventsSvc;
482
+ TelemetryService.prototype.logger;
483
+ }
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7QUFLaEQ7SUFhRSwwQkFDeUIsV0FBZ0IsRUFDL0IsU0FBZ0MsRUFDaEMsU0FBdUIsRUFFdkIsTUFBcUI7UUFIckIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUV2QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBZC9CLGdCQUFXLEdBQWtCLElBQUksQ0FBQTtRQUNqQyxvQkFBZSxHQUE2QyxJQUFJLENBQUE7UUFDaEUsVUFBSyxHQUFRLElBQUksQ0FBQTtRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUdqQixpQkFBWSxHQUFRO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUE7UUFRQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtZQUN4QixjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjO1FBQ3BELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQTtZQUNyRCxJQUFJLENBQUMsZUFBZSx3QkFDZixJQUFJLENBQUMs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cnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuLy8gaW1wb3J0IHsgQXV0aEtleWNsb2FrU2VydmljZSB9IGZyb20gJy4vYXV0aC1rZXljbG9hay5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBOc0luc3RhbmNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5tb2RlbCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4vZXZlbnQuc2VydmljZSdcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcblxyXG5kZWNsYXJlIHZhciAkdDogYW55XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XHJcbiAgcHJldmlvdXNVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgdGVsZW1ldHJ5Q29uZmlnOiBOc0luc3RhbmNlQ29uZmlnLklUZWxlbWV0cnlDb25maWcgfCBudWxsID0gbnVsbFxyXG4gIHBEYXRhOiBhbnkgPSBudWxsXHJcbiAgY29udGV4dENkYXRhID0gW11cclxuICBlbnZpcm9ubWVudDogYW55XHJcblxyXG4gIGV4dGVybmFsQXBwczogYW55ID0ge1xyXG4gICAgUkJDUDogJ3JiY3Atd2ViLXVpJyxcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudHNTdmM6IEV2ZW50U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYXV0aFN2YzogQXV0aEtleWNsb2FrU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50XHJcbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZyA9IHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnXHJcbiAgICBpZiAoaW5zdGFuY2VDb25maWcpIHtcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSBpbnN0YW5jZUNvbmZpZy50ZWxlbWV0cnlDb25maWdcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy50ZWxlbWV0cnlDb25maWcsXHJcbiAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgIC4uLnRoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhLFxyXG4gICAgICAgICAgLy8gcGlkOiBuYXZpZ2F0b3IudXNlckFnZW50LFxyXG4gICAgICAgICAgaWQ6IGAke2Vudmlyb25tZW50Lm5hbWV9LiR7dGhpcy50ZWxlbWV0cnlDb25maWcucGRhdGEuaWR9YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVpZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkLFxyXG4gICAgICAgIC8vIGF1dGh0b2tlbjogdGhpcy5hdXRoU3ZjLnRva2VuLFxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgY2hhbm5lbDogdGhpcy5yb290T3JnSWQgfHwgdGhpcy50ZWxlbWV0cnlDb25maWcuY2hhbm5lbCxcclxuICAgICAgICBzaWQ6IHRoaXMuZ2V0VGVsZW1ldHJ5U2Vzc2lvbklkLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucERhdGEgPSB0aGlzLnRlbGVtZXRyeUNvbmZpZy5wZGF0YVxyXG4gICAgICB0aGlzLmFkZFBsYXllckxpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRDdXN0b21FdmVudExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRJbnRlcmFjdExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRGZWVkYmFja0xpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRUaW1lU3BlbnRMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkU2VhcmNoTGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZEhlYXJiZWF0TGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZEN1c3RvbUltcHJlc3Npb25MaXN0ZW5lcigpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0VGVsZW1ldHJ5U2Vzc2lvbklkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGVtZXRyeVNlc3Npb25JZCcpIHx8ICcnXHJcbiAgfVxyXG5cclxuICBnZXQgcm9vdE9yZ0lkKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jb25maWdTdmMgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUucm9vdE9yZ0lkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5yb290T3JnSWRcclxuICAgIH1cclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgc3RhcnQoZWRhdGE6IGFueSwgZGF0YTogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudGVsZW1ldHJ5Q29uZmlnKSB7XHJcbiAgICAgICAgJHQuc3RhcnQoXHJcbiAgICAgICAgICB0aGlzLnRlbGVtZXRyeUNvbmZpZyxcclxuICAgICAgICAgIChwYWdlQ29udGV4dCAmJiBwYWdlQ29udGV4dC5wYWdlSWQpID9cclxuICAgICAgICAgICAgcGFnZUNvbnRleHQucGFnZUlkXHJcbiAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAnMS4wJyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLy8gaWQsXHJcbiAgICAgICAgICAgIHR5cGU6IGVkYXRhLnR5cGUsXHJcbiAgICAgICAgICAgIG1vZGU6IGVkYXRhLm1vZGUsXHJcbiAgICAgICAgICAgIHBhZ2VpZDogKHBhZ2VDb250ZXh0ICYmIHBhZ2VDb250ZXh0LnBhZ2VJZCkgP1xyXG4gICAgICAgICAgICAgIHBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAuLi4ocGFnZUNvbnRleHQgJiYgcGFnZUNvbnRleHQubW9kdWxlID8geyBlbnY6IHBhZ2VDb250ZXh0Lm1vZHVsZSB9IDogbnVsbCksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICAgIC4uLihkYXRhKSAmJiBkYXRhLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgSW5pdGlhbGl6aW5nIFRlbGVtZXRyeS4gQ29uZmlnIG1pc3NpbmcuJylcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBzdGFydCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQoZWRhdGE6IGFueSwgZGF0YTogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgJHQuZW5kKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IGVkYXRhLnR5cGUsXHJcbiAgICAgICAgICBtb2RlOiBlZGF0YS5tb2RlLFxyXG4gICAgICAgICAgcGFnZWlkOiAocGFnZUNvbnRleHQgJiYgcGFnZUNvbnRleHQucGFnZUlkKSA/XHJcbiAgICAgICAgICAgIHBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLihwYWdlQ29udGV4dCAmJiBwYWdlQ29udGV4dC5tb2R1bGUgPyB7IGVudjogcGFnZUNvbnRleHQubW9kdWxlIH0gOiBudWxsKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgLi4uKGRhdGEpICYmIGRhdGEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgZW5kJywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1ZGl0KHR5cGU6IHN0cmluZywgcHJvcHM6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAkdC5hdWRpdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgICAvLyBkYXRhLFxyXG4gICAgICAgICAgc3RhdGU6IGRhdGEsIC8vIE9wdGlvbmFsLiBDdXJyZW50IFN0YXRlXHJcbiAgICAgICAgICBwcmV2c3RhdGU6ICcnLCAvLyBPcHRpb25hbC4gUHJldmlvdXMgU3RhdGVcclxuICAgICAgICAgIGR1cmF0aW9uOiAnJywgLy8gT3B0aW9uYWwuXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBhdWRpdCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoZWFydGJlYXQodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAkdC5oZWFydGJlYXQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIC8vIG1vZGUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgfSlcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaGVhcnRiZWF0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltcHJlc3Npb24oZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLnBhZ2VDb250ZXh0KSB7XHJcbiAgICAgICAgLy8gcGFnZS5wYWdlaWQgPSBkYXRhLnBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICAgIHBhZ2UubW9kdWxlID0gZGF0YS5wYWdlQ29udGV4dC5tb2R1bGVcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBlZGF0YSA9IHtcclxuICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLCAvLyBSZXF1aXJlZC4gVW5pcXVlIHBhZ2UgaWRcclxuICAgICAgICB0eXBlOiBwYWdlLnBhZ2VVcmxQYXJ0c1swXSwgLy8gUmVxdWlyZWQuIEltcHJlc3Npb24gdHlwZSAobGlzdCwgZGV0YWlsLCB2aWV3LCBlZGl0LCB3b3JrZmxvdywgc2VhcmNoKVxyXG4gICAgICAgIHVyaTogcGFnZS5wYWdlVXJsLFxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYWdlLm9iamVjdElkKSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudjogcGFnZS5tb2R1bGUgfHwgKHRoaXMudGVsZW1ldHJ5Q29uZmlnICYmIHRoaXMudGVsZW1ldHJ5Q29uZmlnLmVudiksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgIGlkOiBwYWdlLm9iamVjdElkLFxyXG4gICAgICAgICAgICAvLyBUaGlzIHdpbGwgb3ZlcnJpZGUgYWJvdmUgaWQgaWYgdGhlIGRhdGEgaGFzIG9iamVjdCBpbiBpdC5cclxuICAgICAgICAgICAgLi4uKChkYXRhKSA/IGRhdGEub2JqZWN0IDoge30pLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICAgJHQuaW1wcmVzc2lvbihlZGF0YSwgY29uZmlnKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICR0LmltcHJlc3Npb24oZWRhdGEsIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnY6IHBhZ2UubW9kdWxlIHx8ICcnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICAuLi4oKGRhdGEpID8gZGF0YS5vYmplY3QgOiB7fSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmV2aW91c1VybCA9IHBhZ2UucGFnZVVybFxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbXByZXNzaW9uJywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dGVybmFsSW1wcmVzc2lvbihpbXByZXNzaW9uRGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlRGV0YWlscygpXHJcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsQXBwc1tpbXByZXNzaW9uRGF0YS5zdWJBcHBsaWNhdGlvbk5hbWVdKSB7XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxDb25maWcgPSBwYWdlLm9iamVjdElkID8ge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2ltcHJlc3Npb25EYXRhLnN1YkFwcGxpY2F0aW9uTmFtZV0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgIGlkOiBwYWdlLm9iamVjdElkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9IDoge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2ltcHJlc3Npb25EYXRhLnN1YkFwcGxpY2F0aW9uTmFtZV0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgICAkdC5pbXByZXNzaW9uKGltcHJlc3Npb25EYXRhLmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGV4dGVybmFsSW1wcmVzc2lvbicsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDdXN0b21JbXByZXNzaW9uTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUltcHJlc3Npb24pID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkltcHJlc3Npb24sXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ2V2ZW50LmRhdGE6OicsIGV2ZW50LmRhdGEpXHJcbiAgICAgICAgICB0aGlzLmltcHJlc3Npb24oZXZlbnQuZGF0YSlcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW1wcmVzc2lvbicsIGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkVGltZVNwZW50TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSA9PT0gV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0KFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIsXHJcbiAgICAgICAgICAgICAgbW9kZTogZXZlbnQuZGF0YS5tb2RlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50TW9kZS5QbGF5LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgZXZlbnQucGFnZUNvbnRleHRcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLlVubG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCh7XHJcbiAgICAgICAgICAgIHR5cGU6IGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyLFxyXG4gICAgICAgICAgICBtb2RlOiBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlBsYXksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICBldmVudC5wYWdlQ29udGV4dFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEN1c3RvbUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5XHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQgJiZcclxuICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSAhPT0gV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBsYXllclxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5zdGFydChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IGV2ZW50LmRhdGEudHlwZSxcclxuICAgICAgICAgICAgICBtb2RlOiBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlBsYXksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICBldmVudC5wYWdlQ29udGV4dFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCAmJlxyXG4gICAgICAgICAgZXZlbnQuZGF0YS50eXBlICE9PSBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyLFxyXG4gICAgICAgICAgICAgIG1vZGU6IGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5vYmplY3QsXHJcbiAgICAgICAgICAgIGV2ZW50LnBhZ2VDb250ZXh0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBhZGRQbGF5ZXJMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgZXZlbnQgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlID09PSBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IGV2ZW50LmRhdGEuY29udGVudFxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCAmJlxyXG4gICAgICAgICAgKCFjb250ZW50IHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnbWF5YmUnIHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAneWVzJyB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgJ2FwcGxpY2F0aW9uL2pzb24nKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc3RhcnQoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBsYXllcixcclxuICAgICAgICAgICAgICBtb2RlOiBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlBsYXksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICBldmVudC5wYWdlQ29udGV4dFxyXG5cclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQgJiZcclxuICAgICAgICAgICghY29udGVudCB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ21heWJlJyB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3llcycgfHxcclxuICAgICAgICAgICAgKGNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYnIHx8ICdhcHBsaWNhdGlvbi9qc29uJykpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyLFxyXG4gICAgICAgICAgICAgIG1vZGU6IGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5vYmplY3QsXHJcbiAgICAgICAgICAgIGV2ZW50LnBhZ2VDb250ZXh0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSW50ZXJhY3RMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QpID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZnJvbSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0pIHtcclxuICAgICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICR0LmludGVyYWN0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGxldCBpbnRlcmFjdGlkXHJcbiAgICAgICAgICAvLyBpZiAoZXZlbnQuZGF0YS5lZGF0YS50eXBlID09PSAnZ29hbCcpIHtcclxuICAgICAgICAgIC8vICAgaW50ZXJhY3RpZCA9IHBhZ2UucGFnZVVybFBhcnRzWzRdXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5pbnRlcmFjdChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLmVkYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBzdWJ0eXBlOiBldmVudC5kYXRhLmVkYXRhLnN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBvYmplY3Q6IGV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgaWQ6IChldmVudC5kYXRhLmVkYXRhICYmIGV2ZW50LmRhdGEuZWRhdGEuaWQpID9cclxuICAgICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5lZGF0YS5pZFxyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiBldmVudC5kYXRhLnBhZ2VDb250ZXh0ICYmIGV2ZW50LmRhdGEucGFnZUNvbnRleHQucGFnZUlkIHx8IHBhZ2UucGFnZWlkLFxyXG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0OiB7IHBhZ2UgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi4oZXZlbnQuZGF0YS5wYWdlQ29udGV4dCAmJiBldmVudC5kYXRhLnBhZ2VDb250ZXh0Lm1vZHVsZSA/IHsgZW52OiBldmVudC5kYXRhLnBhZ2VDb250ZXh0Lm1vZHVsZSB9IDogbnVsbCksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkRmVlZGJhY2tMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2spID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAkdC5mZWVkYmFjayhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHJhdGluZzogZXZlbnQuZGF0YS5vYmplY3QucmF0aW5nIHx8IDAsXHJcbiAgICAgICAgICAgICAgY29tbWVudGlkOiBldmVudC5kYXRhLm9iamVjdC5jb21tZW50aWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgY29tbWVudHR4dDogZXZlbnQuZGF0YS5vYmplY3QuY29tbWVudHR4dCB8fCAnJyxcclxuICAgICAgICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5vYmplY3QuY29udGVudElkIHx8IGV2ZW50LmRhdGEub2JqZWN0LmlkIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS5lZGF0YS50eXBlIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdmVyOiBgJHsoZXZlbnQuZGF0YS5vYmplY3QudmVyc2lvbiB8fCAnMScpfSR7Jyd9YCxcclxuICAgICAgICAgICAgICAgIHJvbGx1cDoge30sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW50ZXJhY3QnLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEhlYXJiZWF0TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUhlYXJ0QmVhdCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSGVhcnRCZWF0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5mcm9tID09PSAnc3RyaW5nJyAmJiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSkge1xyXG4gICAgICAgICAgY29uc3QgZXh0ZXJuYWxDb25maWcgPSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgJHQuaGVhcnRiZWF0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBoZWFydGJlYXQnLCBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5oZWFydGJlYXQoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gc3VidHlwZTogZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIC8vIG1pbWVUeXBlOiBldmVudC5kYXRhLm1pbWVUeXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gbW9kZTogZXZlbnQuZGF0YS5tb2RlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkU2VhcmNoTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeVNlYXJjaCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuU2VhcmNoLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICR0LnNlYXJjaChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHF1ZXJ5OiBldmVudC5kYXRhLnF1ZXJ5LFxyXG4gICAgICAgICAgICAgIGZpbHRlcnM6IGV2ZW50LmRhdGEuZmlsdGVycyxcclxuICAgICAgICAgICAgICBzaXplOiBldmVudC5kYXRhLnNpemUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgc2VhcmNoJywgZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQYWdlRGV0YWlscygpIHtcclxuICAgIGNvbnN0IHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgnLycsICcnKVxyXG4gICAgY29uc3QgdXJsID0gcGF0aCArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBhZ2VpZDogcGF0aCxcclxuICAgICAgcGFnZVVybDogdXJsLFxyXG4gICAgICBwYWdlVXJsUGFydHM6IHBhdGguc3BsaXQoJy8nKSxcclxuICAgICAgcmVmZmVyVXJsOiB0aGlzLnByZXZpb3VzVXJsLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5leHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHBhdGguc3BsaXQoJy8nKSksXHJcbiAgICAgIG1vZHVsZTogJycsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHVybFBhcnRzOiBzdHJpbmdbXSkge1xyXG4gICAgLy8gVE9ETzogcGljayB0b2MgYW5kIHZpZXdlciB1cmwgZnJvbSBzb21lIGNvbmZpZ3VyYXRpb25cclxuICAgIGNvbnN0IHRvY0lkeCA9IHVybFBhcnRzLmluZGV4T2YoJ3RvYycpXHJcbiAgICBjb25zdCB2aWV3ZXJJZHggPSB1cmxQYXJ0cy5pbmRleE9mKCd2aWV3ZXInKVxyXG5cclxuICAgIGlmICh0b2NJZHggPT09IC0xICYmIHZpZXdlcklkeCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG9jSWR4ICE9PSAtMSAmJiB0b2NJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t0b2NJZHggKyAxXSAvLyBlLmcuIHVybCAvYXBwL3RvYy88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodmlld2VySWR4ICE9PSAtMSAmJiB2aWV3ZXJJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAyKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t2aWV3ZXJJZHggKyAyXSAvLyBlLmcuIHVybCAvYXBwL3ZpZXdlci88Y29udGVudF90eXBlPi88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ export function IUserPreference() { }
2
+ if (false) {
3
+ IUserPreference.prototype.selectedTheme;
4
+ IUserPreference.prototype.selectedFont;
5
+ IUserPreference.prototype.selectedLocale;
6
+ IUserPreference.prototype.isDarkMode;
7
+ IUserPreference.prototype.isIntranetAllowed;
8
+ IUserPreference.prototype.isRTL;
9
+ IUserPreference.prototype.colorPallet;
10
+ IUserPreference.prototype.defaultCardType;
11
+ IUserPreference.prototype.pinnedApps;
12
+ IUserPreference.prototype.selectedLangGroup;
13
+ IUserPreference.prototype.completedActivity;
14
+ IUserPreference.prototype.completedTour;
15
+ IUserPreference.prototype.profileSettings;
16
+ }
17
+ export function IProfile() { }
18
+ if (false) {
19
+ IProfile.prototype.showProfilePicture;
20
+ IProfile.prototype.showUserInterest;
21
+ IProfile.prototype.showKbFollowed;
22
+ IProfile.prototype.showPlaylist;
23
+ IProfile.prototype.showAuthoredByMe;
24
+ IProfile.prototype.showReviewedByMe;
25
+ IProfile.prototype.showBadgeDetails;
26
+ IProfile.prototype.showBlogs;
27
+ IProfile.prototype.showQnA;
28
+ }
29
+ export function IPortalUrls() { }
30
+ if (false) {
31
+ IPortalUrls.prototype.igot;
32
+ IPortalUrls.prototype.spv;
33
+ IPortalUrls.prototype.mdo;
34
+ IPortalUrls.prototype.cbc;
35
+ IPortalUrls.prototype.cbp;
36
+ IPortalUrls.prototype.frac;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdXNlci1wcmVmZXJlbmNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQWNDOztJQWJDLHdDQUFxQjtJQUNyQix1Q0FBb0I7SUFDcEIseUNBQXNCO0lBQ3RCLHFDQUFtQjtJQUNuQiw0Q0FBMkI7SUFDM0IsZ0NBQWM7SUFDZCxzQ0FBcUI7SUFDckIsMENBQXVCO0lBQ3ZCLHFDQUFrQjtJQUNsQiw0Q0FBMEI7SUFDMUIsNENBQTJCO0lBQzNCLHdDQUF1QjtJQUN2QiwwQ0FBeUI7O0FBRzNCLDhCQWtCQzs7SUFqQkMsc0NBQTJCO0lBQzNCLG9DQUF5QjtJQUN6QixrQ0FBdUI7SUFDdkIsZ0NBQXFCO0lBQ3JCLG9DQUF5QjtJQUN6QixvQ0FBeUI7SUFDekIsb0NBQXlCO0lBQ3pCLDZCQUFrQjtJQUNsQiwyQkFBZ0I7O0FBVWxCLGlDQU9DOztJQU5DLDJCQUFhO0lBQ2IsMEJBQVk7SUFDWiwwQkFBWTtJQUNaLDBCQUFZO0lBQ1osMEJBQVk7SUFDWiwyQkFBWSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVVzZXJQcmVmZXJlbmNlIHtcclxuICBzZWxlY3RlZFRoZW1lOiBzdHJpbmdcclxuICBzZWxlY3RlZEZvbnQ6IHN0cmluZ1xyXG4gIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmdcclxuICBpc0RhcmtNb2RlOiBib29sZWFuXHJcbiAgaXNJbnRyYW5ldEFsbG93ZWQ/OiBib29sZWFuXHJcbiAgaXNSVEw6IGJvb2xlYW5cclxuICBjb2xvclBhbGxldDogc3RyaW5nW11cclxuICBkZWZhdWx0Q2FyZFR5cGU6IHN0cmluZ1xyXG4gIHBpbm5lZEFwcHM6IHN0cmluZ1xyXG4gIHNlbGVjdGVkTGFuZ0dyb3VwPzogc3RyaW5nXHJcbiAgY29tcGxldGVkQWN0aXZpdHk6IHN0cmluZ1tdXHJcbiAgY29tcGxldGVkVG91cj86IGJvb2xlYW5cclxuICBwcm9maWxlU2V0dGluZ3M6IHN0cmluZ1tdXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb2ZpbGUge1xyXG4gIHNob3dQcm9maWxlUGljdHVyZTogYm9vbGVhblxyXG4gIHNob3dVc2VySW50ZXJlc3Q6IGJvb2xlYW5cclxuICBzaG93S2JGb2xsb3dlZDogYm9vbGVhblxyXG4gIHNob3dQbGF5bGlzdDogYm9vbGVhblxyXG4gIHNob3dBdXRob3JlZEJ5TWU6IGJvb2xlYW5cclxuICBzaG93UmV2aWV3ZWRCeU1lOiBib29sZWFuXHJcbiAgc2hvd0JhZGdlRGV0YWlsczogYm9vbGVhblxyXG4gIHNob3dCbG9nczogYm9vbGVhblxyXG4gIHNob3dRbkE6IGJvb2xlYW5cclxuICAvLyBzaG93TGVhcm5pbmdUaW1lOiBib29sZWFuXHJcbiAgLy8gc2hvd0xlYXJuaW5nUG9pbnRzOiBib29sZWFuXHJcbiAgLy8gc2hvd0xhc3RWaWV3ZWQ6IGJvb2xlYW5cclxuICAvLyBzaG93R29hbHM6IGJvb2xlYW5cclxuICAvLyBzaG93VG9waWNzRm9sbG93ZWQ6IGJvb2xlYW5cclxuICAvLyBzaG93QXNzZXNzbWVudERldGFpbHM6IGJvb2xlYW5cclxuICAvLyBzaG93Q2VydGlmaWNhdGlvbkRldGFpbHM6IGJvb2xlYW5cclxuICAvLyBzaG93VXNlclNraWxsczogYm9vbGVhblxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcnRhbFVybHMge1xyXG4gIGlnb3Q6IHN0cmluZyxcclxuICBzcHY6IHN0cmluZyxcclxuICBtZG86IHN0cmluZyxcclxuICBjYmM6IHN0cmluZyxcclxuICBjYnA6IHN0cmluZyxcclxuICBmcmFjOiBzdHJpbmdcclxufVxyXG4iXX0=