@sunbird-cb/toc 0.0.1

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 (495) hide show
  1. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -0
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -0
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -0
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -0
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -0
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -0
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -0
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -0
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -0
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -0
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -0
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -0
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -0
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -0
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -0
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -0
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -0
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -0
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -0
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -0
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -0
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -0
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -0
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -0
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -0
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -0
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +223 -0
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +591 -0
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -0
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -0
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -0
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -0
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -0
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -0
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -0
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -0
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -0
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -0
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -0
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -0
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -0
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -0
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -0
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -0
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -0
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -0
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -0
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -0
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -0
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -0
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -0
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +73 -0
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -0
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -0
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -0
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -0
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -0
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -0
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -0
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -0
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -0
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -0
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -0
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -0
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -0
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -0
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -0
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -0
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -0
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -0
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -0
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -0
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -0
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -0
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -0
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -0
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -0
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -0
  79. package/esm2022/lib/_collection-api.mjs +57 -0
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -0
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -0
  82. package/esm2022/lib/_models/common.model.mjs +2 -0
  83. package/esm2022/lib/_models/error.model.mjs +2 -0
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -0
  85. package/esm2022/lib/_services/rating.service.mjs +89 -0
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -0
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -0
  88. package/esm2022/lib/_services/widget-content.model.mjs +246 -0
  89. package/esm2022/lib/_services/widget-content.service.mjs +589 -0
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -0
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -0
  92. package/esm2022/lib/collection.config.mjs +161 -0
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -0
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -0
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -0
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -0
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -0
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -0
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -0
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -0
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -0
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2796 -0
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -0
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -0
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -0
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -0
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -0
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -0
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -0
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -0
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -0
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -0
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -0
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -0
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -0
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -0
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -0
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -0
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -0
  120. package/esm2022/lib/models/card-content.model.mjs +13 -0
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -0
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -0
  123. package/esm2022/lib/models/goal.model.mjs +2 -0
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -0
  125. package/esm2022/lib/models/playlist.model.mjs +2 -0
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -0
  127. package/esm2022/lib/models/rating.model.mjs +2 -0
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -0
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -0
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -0
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -0
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -0
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -0
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -0
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -0
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -0
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -0
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -0
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -0
  140. package/esm2022/lib/services/access-control.service.mjs +56 -0
  141. package/esm2022/lib/services/action.service.mjs +23 -0
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +47 -0
  143. package/esm2022/lib/services/app-toc.service.mjs +1001 -0
  144. package/esm2022/lib/services/certificate.service.mjs +69 -0
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -0
  146. package/esm2022/lib/services/editor.service.mjs +34 -0
  147. package/esm2022/lib/services/load-check.service.mjs +21 -0
  148. package/esm2022/lib/services/loader.service.mjs +33 -0
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -0
  150. package/esm2022/lib/services/netcore.service.mjs +56 -0
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -0
  152. package/esm2022/lib/services/otp.service.mjs +43 -0
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -0
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -0
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -0
  156. package/esm2022/lib/services/timer.service.mjs +23 -0
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -0
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -0
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -0
  160. package/esm2022/lib/services/viewer-util.service.mjs +500 -0
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -0
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -0
  163. package/esm2022/public-api.mjs +56 -0
  164. package/esm2022/sunbird-cb-toc.mjs +5 -0
  165. package/fesm2022/sunbird-cb-toc.mjs +23517 -0
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -0
  167. package/index.d.ts +6 -0
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -0
  169. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
  170. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -0
  171. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
  172. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -0
  173. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
  174. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -0
  175. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
  176. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -0
  177. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  178. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -0
  179. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
  180. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -0
  181. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
  182. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -0
  183. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
  184. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -0
  185. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
  186. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  187. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
  188. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -0
  189. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
  190. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -0
  191. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
  192. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -0
  193. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
  194. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -0
  195. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
  196. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -0
  197. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
  198. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -0
  199. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
  200. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -0
  201. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
  202. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -0
  203. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
  204. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -0
  205. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
  206. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -0
  207. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
  208. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -0
  209. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
  210. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -0
  211. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
  212. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -0
  213. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
  214. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -0
  215. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
  216. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -0
  217. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
  218. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -0
  219. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
  220. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +49 -0
  221. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
  222. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +92 -0
  223. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
  224. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -0
  225. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
  226. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -0
  227. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
  228. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -0
  229. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
  230. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -0
  231. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
  232. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -0
  233. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
  234. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -0
  235. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
  236. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -0
  237. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
  238. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -0
  239. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
  240. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -0
  241. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
  242. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -0
  243. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
  244. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -0
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
  246. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -0
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -0
  249. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
  250. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -0
  251. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
  252. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -0
  253. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
  254. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -0
  255. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
  256. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -0
  257. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
  258. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -0
  259. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
  260. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -0
  261. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
  262. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -0
  263. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
  264. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -0
  265. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
  266. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -0
  267. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
  268. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -0
  269. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
  270. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +17 -0
  271. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
  272. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -0
  273. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
  274. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -0
  275. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
  276. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -0
  277. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
  278. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -0
  279. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
  280. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -0
  281. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  282. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -0
  283. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
  284. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -0
  285. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
  286. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -0
  287. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
  288. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -0
  289. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
  290. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -0
  291. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
  292. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -0
  293. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
  294. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -0
  295. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
  296. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -0
  297. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
  298. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -0
  299. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
  300. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -0
  301. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
  302. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -0
  303. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
  304. package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -0
  305. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
  306. package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -0
  307. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
  308. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -0
  309. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
  310. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -0
  311. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
  312. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -0
  313. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
  314. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -0
  315. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
  316. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -0
  317. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
  318. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -0
  319. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
  320. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -0
  321. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
  322. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -0
  323. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  324. package/lib/_collection-api.d.ts +35 -0
  325. package/lib/_collection-api.d.ts.map +1 -0
  326. package/lib/_constants/widget-content.constants.d.ts +8 -0
  327. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  328. package/lib/_directives/tooltip.directive.d.ts +18 -0
  329. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  330. package/lib/_models/common.model.d.ts +4 -0
  331. package/lib/_models/common.model.d.ts.map +1 -0
  332. package/lib/_models/error.model.d.ts +6 -0
  333. package/lib/_models/error.model.d.ts.map +1 -0
  334. package/lib/_pipes/highlight.pipe.d.ts +11 -0
  335. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  336. package/lib/_services/rating.service.d.ts +19 -0
  337. package/lib/_services/rating.service.d.ts.map +1 -0
  338. package/lib/_services/samuhik-charcha.service.d.ts +14 -0
  339. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  340. package/lib/_services/viewer-route-util.d.ts +9 -0
  341. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  342. package/lib/_services/widget-content.model.d.ts +515 -0
  343. package/lib/_services/widget-content.model.d.ts.map +1 -0
  344. package/lib/_services/widget-content.service.d.ts +101 -0
  345. package/lib/_services/widget-content.service.d.ts.map +1 -0
  346. package/lib/_shared/translate-loader.factory.d.ts +8 -0
  347. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  348. package/lib/app-toc-lib.module.d.ts +89 -0
  349. package/lib/app-toc-lib.module.d.ts.map +1 -0
  350. package/lib/collection.config.d.ts +160 -0
  351. package/lib/collection.config.d.ts.map +1 -0
  352. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -0
  353. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
  354. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -0
  355. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
  356. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -0
  357. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
  358. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -0
  359. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
  360. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -0
  361. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
  362. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -0
  363. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
  364. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -0
  365. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
  366. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -0
  367. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
  368. package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -0
  369. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  370. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +386 -0
  371. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
  372. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -0
  373. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
  374. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -0
  375. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
  376. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -0
  377. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
  378. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -0
  379. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
  380. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -0
  381. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
  382. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -0
  383. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
  384. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -0
  385. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
  386. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -0
  387. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
  388. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -0
  389. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
  390. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -0
  391. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
  392. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -0
  393. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
  394. package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -0
  395. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
  396. package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -0
  397. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
  398. package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -0
  399. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
  400. package/lib/models/app-toc-analytics.model.d.ts +153 -0
  401. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  402. package/lib/models/app-toc.model.d.ts +85 -0
  403. package/lib/models/app-toc.model.d.ts.map +1 -0
  404. package/lib/models/auto-complete.model.d.ts +28 -0
  405. package/lib/models/auto-complete.model.d.ts.map +1 -0
  406. package/lib/models/card-content.model.d.ts +20 -0
  407. package/lib/models/card-content.model.d.ts.map +1 -0
  408. package/lib/models/content-strip-with-tabs.model.d.ts +45 -0
  409. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  410. package/lib/models/discussion-forum.model.d.ts +41 -0
  411. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  412. package/lib/models/goal.model.d.ts +23 -0
  413. package/lib/models/goal.model.d.ts.map +1 -0
  414. package/lib/models/meta-tag.model.d.ts +7 -0
  415. package/lib/models/meta-tag.model.d.ts.map +1 -0
  416. package/lib/models/playlist.model.d.ts +24 -0
  417. package/lib/models/playlist.model.d.ts.map +1 -0
  418. package/lib/models/profile-revamp.model.d.ts +15 -0
  419. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  420. package/lib/models/rating.model.d.ts +18 -0
  421. package/lib/models/rating.model.d.ts.map +1 -0
  422. package/lib/models/user-profile.model.d.ts +38 -0
  423. package/lib/models/user-profile.model.d.ts.map +1 -0
  424. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -0
  425. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
  426. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -0
  427. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
  428. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -0
  429. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
  430. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -0
  431. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
  432. package/lib/resolvers/app-toc-resolver.service.d.ts +17 -0
  433. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  434. package/lib/resolvers/config-resolver.service.d.ts +12 -0
  435. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  436. package/lib/resolvers/profile-resolver.service.d.ts +12 -0
  437. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  438. package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -0
  439. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
  440. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -0
  441. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  442. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -0
  443. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
  444. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -0
  445. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
  446. package/lib/services/access-control.service.d.ts +30 -0
  447. package/lib/services/access-control.service.d.ts.map +1 -0
  448. package/lib/services/action.service.d.ts +10 -0
  449. package/lib/services/action.service.d.ts.map +1 -0
  450. package/lib/services/app-toc-v2.service.d.ts +8 -0
  451. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  452. package/lib/services/app-toc.service.d.ts +131 -0
  453. package/lib/services/app-toc.service.d.ts.map +1 -0
  454. package/lib/services/certificate.service.d.ts +43 -0
  455. package/lib/services/certificate.service.d.ts.map +1 -0
  456. package/lib/services/discuss-utils.service.d.ts +34 -0
  457. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  458. package/lib/services/editor.service.d.ts +18 -0
  459. package/lib/services/editor.service.d.ts.map +1 -0
  460. package/lib/services/load-check.service.d.ts +9 -0
  461. package/lib/services/load-check.service.d.ts.map +1 -0
  462. package/lib/services/loader.service.d.ts +17 -0
  463. package/lib/services/loader.service.d.ts.map +1 -0
  464. package/lib/services/mobile-apps.service.d.ts +39 -0
  465. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  466. package/lib/services/netcore.service.d.ts +34 -0
  467. package/lib/services/netcore.service.d.ts.map +1 -0
  468. package/lib/services/nps-grid.service.d.ts +16 -0
  469. package/lib/services/nps-grid.service.d.ts.map +1 -0
  470. package/lib/services/otp.service.d.ts +21 -0
  471. package/lib/services/otp.service.d.ts.map +1 -0
  472. package/lib/services/profile-v2.service.d.ts +21 -0
  473. package/lib/services/profile-v2.service.d.ts.map +1 -0
  474. package/lib/services/reset-ratings.service.d.ts +9 -0
  475. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  476. package/lib/services/resource-download-helper.service.d.ts +30 -0
  477. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  478. package/lib/services/timer.service.d.ts +10 -0
  479. package/lib/services/timer.service.d.ts.map +1 -0
  480. package/lib/services/title-tag.service.d.ts +22 -0
  481. package/lib/services/title-tag.service.d.ts.map +1 -0
  482. package/lib/services/user-profile.service.d.ts +25 -0
  483. package/lib/services/user-profile.service.d.ts.map +1 -0
  484. package/lib/services/viewer-data.service.d.ts +59 -0
  485. package/lib/services/viewer-data.service.d.ts.map +1 -0
  486. package/lib/services/viewer-util.service.d.ts +63 -0
  487. package/lib/services/viewer-util.service.d.ts.map +1 -0
  488. package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -0
  489. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
  490. package/lib/share-toc/share-toc.module.d.ts +33 -0
  491. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  492. package/package.json +36 -0
  493. package/public-api.d.ts +44 -0
  494. package/public-api.d.ts.map +1 -0
  495. package/sunbird-cb-toc.d.ts.map +1 -0
@@ -0,0 +1,157 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NsContent } from '../../_services/widget-content.model';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../../services/app-toc.service";
6
+ import * as i3 from "@sunbird-cb/utils-v2";
7
+ import * as i4 from "@angular/platform-browser";
8
+ import * as i5 from "../../services/access-control.service";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/material/icon";
11
+ import * as i8 from "@angular/material/legacy-button";
12
+ import * as i9 from "@angular/material/legacy-card";
13
+ import * as i10 from "@angular/material/legacy-chips";
14
+ import * as i11 from "@angular/material/divider";
15
+ import * as i12 from "@angular/material/expansion";
16
+ import * as i13 from "../../_collection/_common/user-image/user-image.component";
17
+ import * as i14 from "../../_collection/_common/player-brief/player-brief.component";
18
+ export class AppTocOverviewComponent {
19
+ constructor(route, tocSharedSvc, configSvc, domSanitizer, authAccessControlSvc) {
20
+ this.route = route;
21
+ this.tocSharedSvc = tocSharedSvc;
22
+ this.configSvc = configSvc;
23
+ this.domSanitizer = domSanitizer;
24
+ this.authAccessControlSvc = authAccessControlSvc;
25
+ this.content = null;
26
+ this.routeSubscription = null;
27
+ this.viewMoreRelatedTopics = false;
28
+ this.hasTocStructure = false;
29
+ this.tocStructure = null;
30
+ this.askAuthorEnabled = true;
31
+ this.trainingLHubEnabled = false;
32
+ this.body = null;
33
+ this.forPreview = false;
34
+ this.tocConfig = null;
35
+ this.contentParents = {};
36
+ this.objKeys = Object.keys;
37
+ if (this.configSvc.restrictedFeatures) {
38
+ this.askAuthorEnabled = !this.configSvc.restrictedFeatures.has('askAuthor');
39
+ this.trainingLHubEnabled = !this.configSvc.restrictedFeatures.has('trainingLHub');
40
+ }
41
+ }
42
+ ngOnInit() {
43
+ if (!this.forPreview) {
44
+ this.forPreview = window.location.href.includes('/author/');
45
+ }
46
+ if (this.route && this.route.parent) {
47
+ this.routeSubscription = this.route.parent.data.subscribe((data) => {
48
+ this.initData(data);
49
+ this.tocConfig = data.pageData.data;
50
+ });
51
+ }
52
+ }
53
+ ngOnDestroy() {
54
+ if (this.routeSubscription) {
55
+ this.routeSubscription.unsubscribe();
56
+ }
57
+ }
58
+ get showSubtitleOnBanner() {
59
+ return this.tocSharedSvc.subtitleOnBanners;
60
+ }
61
+ get showDescription() {
62
+ if (this.content && !this.content.body) {
63
+ return true;
64
+ }
65
+ return this.tocSharedSvc.showDescription;
66
+ }
67
+ initData(data) {
68
+ const initData = this.tocSharedSvc.initData(data);
69
+ this.content = initData.content;
70
+ this.body = this.domSanitizer.bypassSecurityTrustHtml(this.content && this.content.body
71
+ ? this.forPreview
72
+ ? this.authAccessControlSvc.proxyToAuthoringUrl(this.content.body)
73
+ : this.content.body
74
+ : '');
75
+ this.contentParents = {};
76
+ this.resetAndFetchTocStructure();
77
+ this.getTrainingCount();
78
+ this.getContentParent();
79
+ }
80
+ getContentParent() {
81
+ if (this.content) {
82
+ const contentParentReq = {
83
+ fields: ['contentType', 'name'],
84
+ };
85
+ this.tocSharedSvc
86
+ .fetchContentParent(this.content.identifier, contentParentReq, this.forPreview)
87
+ .subscribe(res => {
88
+ this.parseContentParent(res);
89
+ }, _err => {
90
+ this.contentParents = {};
91
+ });
92
+ }
93
+ }
94
+ parseContentParent(content) {
95
+ content.collections.forEach(collection => {
96
+ if (!this.contentParents.hasOwnProperty(collection.contentType)) {
97
+ this.contentParents[collection.contentType] = [];
98
+ }
99
+ this.contentParents[collection.contentType].push(collection);
100
+ this.parseContentParent(collection);
101
+ });
102
+ }
103
+ resetAndFetchTocStructure() {
104
+ this.tocStructure = {
105
+ assessment: 0,
106
+ finalTest: 0,
107
+ course: 0,
108
+ handsOn: 0,
109
+ interactiveVideo: 0,
110
+ learningModule: 0,
111
+ other: 0,
112
+ pdf: 0,
113
+ survey: 0,
114
+ podcast: 0,
115
+ practiceTest: 0,
116
+ quiz: 0,
117
+ video: 0,
118
+ webModule: 0,
119
+ webPage: 0,
120
+ youtube: 0,
121
+ interactivecontent: 0,
122
+ offlineSession: 0,
123
+ };
124
+ if (this.content) {
125
+ this.hasTocStructure = false;
126
+ this.tocStructure.learningModule = this.content.primaryCategory === NsContent.EPrimaryCategory.MODULE ? -1 : 0;
127
+ this.tocStructure.course = this.content.primaryCategory === NsContent.EPrimaryCategory.COURSE ? -1 : 0;
128
+ this.tocStructure = this.tocSharedSvc.getTocStructure(this.content, this.tocStructure);
129
+ for (const progType in this.tocStructure) {
130
+ if (this.tocStructure[progType] > 0) {
131
+ this.hasTocStructure = true;
132
+ break;
133
+ }
134
+ }
135
+ }
136
+ }
137
+ // For Learning Hub trainings
138
+ getTrainingCount() {
139
+ if (this.trainingLHubEnabled &&
140
+ this.content &&
141
+ // this.trainingSvc.isValidTrainingContent(this.content) &&
142
+ !this.forPreview) {
143
+ // this.trainingLHubCount$ = this.trainingApi
144
+ // .getTrainingCount(this.content.identifier)
145
+ // .pipe(retry(2))
146
+ }
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocOverviewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.AccessControlService }], target: i0.ɵɵFactoryTarget.Component }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocOverviewComponent, selector: "ws-app-app-toc-overview", inputs: { forPreview: "forPreview" }, ngImport: i0, template: "<div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <!-- Description : Conditional : If not shown here, will be shown over banner -->\n <mat-card *ngIf=\"\n tocConfig?.overview?.description?.enabled &&\n showDescription &&\n showSubtitleOnBanner &&\n content?.description\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.description?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1\" [innerHTML]=\"content?.description\"></div>\n </mat-card-content>\n </mat-card>\n <!-- Content Body -->\n <mat-card *ngIf=\"tocConfig?.overview?.body?.enabled && content?.body\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.body?.displayName }}</h2>\n <mat-card-content>\n <div class=\"break-words\" [innerHTML]=\"body\"></div>\n </mat-card-content>\n </mat-card>\n <!-- Learning objective -->\n <mat-card *ngIf=\"tocConfig?.overview?.learningObjective?.enabled && content?.learningObjective\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.learningObjective?.displayName }}</h2>\n <mat-card-content>\n <p class=\"mat-subheading-1\" [innerHTML]=\"content?.learningObjective\"></p>\n </mat-card-content>\n </mat-card>\n\n <!-- Registration instructions -->\n <mat-card *ngIf=\"\n tocConfig?.overview?.registrationInstructions?.enabled &&\n content?.registrationInstructions?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.registrationInstructions?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1 break-words\" [innerHTML]=\"content?.registrationInstructions\"></div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.preContents?.enabled && content?.preContents?.length\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.preContents?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let preContent of content?.preContents\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + preContent.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ preContent.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.postContents?.enabled && content?.postContents?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.postContents?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let postContent of content?.postContents\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + postContent.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ postContent.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.certificationList?.enabled && content?.certificationList?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.certificationList?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let certification of content?.certificationList\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + certification.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ certification.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.studyMaterials?.enabled && content?.studyMaterials?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.studyMaterials?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let studyitem of content?.studyMaterials\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + studyitem.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ studyitem.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.playgroundResources?.enabled && content?.playgroundResources?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.playgroundResources?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let playgroundResource of content?.playgroundResources\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + playgroundResource.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ playgroundResource.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.kArtifacts?.enabled && content?.kArtifacts?.length\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.kArtifacts?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let kArtifact of content?.kArtifacts\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + kArtifact.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ kArtifact.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.equivalentCertifications?.enabled &&\n content?.equivalentCertifications?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.equivalentCertifications?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let equivalentCertification of content?.equivalentCertifications\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + equivalentCertification.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ equivalentCertification.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.softwareRequirements?.enabled && content?.softwareRequirements?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.softwareRequirements?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let softwareRequirement of content?.softwareRequirements\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [href]=\"softwareRequirement.url\" target=\"blank\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ softwareRequirement.title }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <!-- Skills -->\n <mat-card *ngIf=\"tocConfig?.overview?.skills?.enabled && content?.skills?.length\"\n class=\"unit-meta-item mat-app-background\">\n <h2>{{ tocConfig?.overview?.skills?.displayName }}</h2>\n <mat-chip-list>\n <mat-chip *ngFor=\"let skill of content?.skills\">{{ skill.name }}</mat-chip>\n </mat-chip-list>\n </mat-card>\n <!-- Requirements -->\n <mat-card *ngIf=\"tocConfig?.overview?.preRequisites?.enabled && content?.preRequisites\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.preRequisites?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1\" [innerHTML]=\"content?.preRequisites\"></div>\n <div class=\"margin-top-s\" *ngIf=\"content?.softwareRequirements?.length\">\n <h3 class=\"mat-h3 margin-bottom-xs\" >Software Requirements</h3>\n <ng-container *ngFor=\"let requirement of content?.softwareRequirements\">\n <a *ngIf=\"requirement.url\" class=\"margin-right-s\" mat-stroked-button target=\"_blank\"\n [href]=\"requirement.url\">\n {{ requirement.title }}\n </a>\n <a mat-stroked-button class=\"margin-right-s\" *ngIf=\"!requirement?.url\">{{ requirement.title }}\n </a>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n\n <!-- Training (LHub) -->\n <mat-card *ngIf=\"trainingLHubEnabled && trainingLHubCount$ | async as trainingLHubCount\" class=\"unit-meta-item\">\n <h2 >Trainings</h2>\n <h4 class=\"mat-h4\">\n <ng-container>{{ trainingLHubCount }}</ng-container>\n <ng-container i18n=\"x trainings available\" *ngIf=\"trainingLHubCount > 1\">\n trainings available</ng-container>\n <ng-container i18n=\"1 training available\" *ngIf=\"trainingLHubCount === 1\">\n training available</ng-container>\n </h4>\n <div>\n \n </div>\n </mat-card>\n\n <!-- Related Topics -->\n <mat-card class=\"unit-meta-item\" *ngIf=\"tocConfig?.overview?.topics?.enabled && content?.topics?.length\">\n <h2>{{ tocConfig?.overview?.topics?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex flex-between flex-wrapped\">\n <a mat-stroked-button class=\"topic-button text-truncate\"\n *ngFor=\"let topic of content?.topics | pipeLimitTo: (viewMoreRelatedTopics ? 24 : 6)\" [title]=\"topic?.name\"\n [routerLink]=\"'/app/concept-graph/' + topic.identifier\">\n {{ topic?.name }}\n </a>\n </div>\n <div *ngIf=\"content?.topics?.length > 6\" class=\"text-right margin-top-xs\">\n <a mat-button (click)=\"viewMoreRelatedTopics = !viewMoreRelatedTopics\">\n <span *ngIf=\"!viewMoreRelatedTopics\" >View More</span>\n <span *ngIf=\"viewMoreRelatedTopics\" >View Less</span>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <!-- Authors on small screen -->\n <div class=\"block sm:hidden margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <!-- Contacts on small screen -->\n <div class=\"block sm:hidden margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorContacts,\n title: 'CONTACT'\n }\">\n </ng-container>\n </div>\n <div class=\"margin-bottom-m\" *ngIf=\"objKeys(contentParents).length\">\n <mat-card>\n <h2 >This content is part of</h2>\n </mat-card>\n <mat-accordion>\n <ng-container *ngFor=\"let key of objKeys(contentParents)\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n {{ key }}\n </mat-expansion-panel-header>\n <div class=\"flex mb-1\" *ngFor=\"let content of contentParents[key]\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"\n content.status !== 'Live'\n ? '/author' + '/toc/' + content.identifier\n : '/app' + '/toc/' + content.identifier\n \">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ content.name }}</p>\n </a>\n </div>\n </mat-expansion-panel>\n </ng-container>\n </mat-accordion>\n </div>\n </div>\n <!-- At a glance section -->\n <div class=\"info-section\">\n <ws-widget-player-brief [forPreview]=\"forPreview\" [content]=\"content\" [hasTocStructure]=\"hasTocStructure\"\n [tocStructure]=\"tocStructure\">\n </ws-widget-player-brief>\n </div>\n</div>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">Authors</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">Curator/Contact</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\n [email]=\"author.email\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <p class=\"margin-remove text-md font-normal\">{{ author.name }}</p>\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\n </ws-widget-btn-mail-user>\n </div>\n </div>\n </mat-card>\n</ng-template>\n", styles: [".meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.info-section2{width:28%;min-width:250px;margin-right:24px}@media only screen and (max-width: 599px){.info-section2{width:100%;margin-right:0}}.info-container{padding:12px 16px;margin-bottom:16px}.info-container .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i9.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i10.MatLegacyChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i10.MatLegacyChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i12.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i12.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i12.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "component", type: i13.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i14.PlayerBriefComponent, selector: "ws-widget-player-brief", inputs: ["content", "hasTocStructure", "tocStructure", "isPreviewMode", "forPreview", "askAuthorEnabled"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.PipeLimitToPipe, name: "pipeLimitTo" }] }); }
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocOverviewComponent, decorators: [{
152
+ type: Component,
153
+ args: [{ selector: 'ws-app-app-toc-overview', template: "<div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <!-- Description : Conditional : If not shown here, will be shown over banner -->\n <mat-card *ngIf=\"\n tocConfig?.overview?.description?.enabled &&\n showDescription &&\n showSubtitleOnBanner &&\n content?.description\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.description?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1\" [innerHTML]=\"content?.description\"></div>\n </mat-card-content>\n </mat-card>\n <!-- Content Body -->\n <mat-card *ngIf=\"tocConfig?.overview?.body?.enabled && content?.body\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.body?.displayName }}</h2>\n <mat-card-content>\n <div class=\"break-words\" [innerHTML]=\"body\"></div>\n </mat-card-content>\n </mat-card>\n <!-- Learning objective -->\n <mat-card *ngIf=\"tocConfig?.overview?.learningObjective?.enabled && content?.learningObjective\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.learningObjective?.displayName }}</h2>\n <mat-card-content>\n <p class=\"mat-subheading-1\" [innerHTML]=\"content?.learningObjective\"></p>\n </mat-card-content>\n </mat-card>\n\n <!-- Registration instructions -->\n <mat-card *ngIf=\"\n tocConfig?.overview?.registrationInstructions?.enabled &&\n content?.registrationInstructions?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.registrationInstructions?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1 break-words\" [innerHTML]=\"content?.registrationInstructions\"></div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.preContents?.enabled && content?.preContents?.length\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.preContents?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let preContent of content?.preContents\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + preContent.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ preContent.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.postContents?.enabled && content?.postContents?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.postContents?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let postContent of content?.postContents\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + postContent.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ postContent.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.certificationList?.enabled && content?.certificationList?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.certificationList?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let certification of content?.certificationList\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + certification.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ certification.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.studyMaterials?.enabled && content?.studyMaterials?.length\"\n class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.studyMaterials?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let studyitem of content?.studyMaterials\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + studyitem.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ studyitem.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.playgroundResources?.enabled && content?.playgroundResources?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.playgroundResources?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let playgroundResource of content?.playgroundResources\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + playgroundResource.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ playgroundResource.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"tocConfig?.overview?.kArtifacts?.enabled && content?.kArtifacts?.length\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.kArtifacts?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let kArtifact of content?.kArtifacts\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + kArtifact.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ kArtifact.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.equivalentCertifications?.enabled &&\n content?.equivalentCertifications?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.equivalentCertifications?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let equivalentCertification of content?.equivalentCertifications\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"'/app/toc/' + equivalentCertification.identifier\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ equivalentCertification.name }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card *ngIf=\"\n tocConfig?.overview?.softwareRequirements?.enabled && content?.softwareRequirements?.length\n \" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.softwareRequirements?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex mb-1\" *ngFor=\"let softwareRequirement of content?.softwareRequirements\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [href]=\"softwareRequirement.url\" target=\"blank\">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ softwareRequirement.title }}</p>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <!-- Skills -->\n <mat-card *ngIf=\"tocConfig?.overview?.skills?.enabled && content?.skills?.length\"\n class=\"unit-meta-item mat-app-background\">\n <h2>{{ tocConfig?.overview?.skills?.displayName }}</h2>\n <mat-chip-list>\n <mat-chip *ngFor=\"let skill of content?.skills\">{{ skill.name }}</mat-chip>\n </mat-chip-list>\n </mat-card>\n <!-- Requirements -->\n <mat-card *ngIf=\"tocConfig?.overview?.preRequisites?.enabled && content?.preRequisites\" class=\"unit-meta-item\">\n <h2>{{ tocConfig?.overview?.preRequisites?.displayName }}</h2>\n <mat-card-content>\n <div class=\"mat-subheading-1\" [innerHTML]=\"content?.preRequisites\"></div>\n <div class=\"margin-top-s\" *ngIf=\"content?.softwareRequirements?.length\">\n <h3 class=\"mat-h3 margin-bottom-xs\" >Software Requirements</h3>\n <ng-container *ngFor=\"let requirement of content?.softwareRequirements\">\n <a *ngIf=\"requirement.url\" class=\"margin-right-s\" mat-stroked-button target=\"_blank\"\n [href]=\"requirement.url\">\n {{ requirement.title }}\n </a>\n <a mat-stroked-button class=\"margin-right-s\" *ngIf=\"!requirement?.url\">{{ requirement.title }}\n </a>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n\n <!-- Training (LHub) -->\n <mat-card *ngIf=\"trainingLHubEnabled && trainingLHubCount$ | async as trainingLHubCount\" class=\"unit-meta-item\">\n <h2 >Trainings</h2>\n <h4 class=\"mat-h4\">\n <ng-container>{{ trainingLHubCount }}</ng-container>\n <ng-container i18n=\"x trainings available\" *ngIf=\"trainingLHubCount > 1\">\n trainings available</ng-container>\n <ng-container i18n=\"1 training available\" *ngIf=\"trainingLHubCount === 1\">\n training available</ng-container>\n </h4>\n <div>\n \n </div>\n </mat-card>\n\n <!-- Related Topics -->\n <mat-card class=\"unit-meta-item\" *ngIf=\"tocConfig?.overview?.topics?.enabled && content?.topics?.length\">\n <h2>{{ tocConfig?.overview?.topics?.displayName }}</h2>\n <mat-card-content>\n <div class=\"flex flex-between flex-wrapped\">\n <a mat-stroked-button class=\"topic-button text-truncate\"\n *ngFor=\"let topic of content?.topics | pipeLimitTo: (viewMoreRelatedTopics ? 24 : 6)\" [title]=\"topic?.name\"\n [routerLink]=\"'/app/concept-graph/' + topic.identifier\">\n {{ topic?.name }}\n </a>\n </div>\n <div *ngIf=\"content?.topics?.length > 6\" class=\"text-right margin-top-xs\">\n <a mat-button (click)=\"viewMoreRelatedTopics = !viewMoreRelatedTopics\">\n <span *ngIf=\"!viewMoreRelatedTopics\" >View More</span>\n <span *ngIf=\"viewMoreRelatedTopics\" >View Less</span>\n </a>\n </div>\n </mat-card-content>\n </mat-card>\n <!-- Authors on small screen -->\n <div class=\"block sm:hidden margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <!-- Contacts on small screen -->\n <div class=\"block sm:hidden margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorContacts,\n title: 'CONTACT'\n }\">\n </ng-container>\n </div>\n <div class=\"margin-bottom-m\" *ngIf=\"objKeys(contentParents).length\">\n <mat-card>\n <h2 >This content is part of</h2>\n </mat-card>\n <mat-accordion>\n <ng-container *ngFor=\"let key of objKeys(contentParents)\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n {{ key }}\n </mat-expansion-panel-header>\n <div class=\"flex mb-1\" *ngFor=\"let content of contentParents[key]\">\n <span class=\"mr-1\">\n <mat-icon class=\"align-bottom\">web_asset</mat-icon>\n </span>\n <a class=\"ws-mat-primary-text\" [routerLink]=\"\n content.status !== 'Live'\n ? '/author' + '/toc/' + content.identifier\n : '/app' + '/toc/' + content.identifier\n \">\n <p class=\"margin-remove-bottom mat-subheading-1\">{{ content.name }}</p>\n </a>\n </div>\n </mat-expansion-panel>\n </ng-container>\n </mat-accordion>\n </div>\n </div>\n <!-- At a glance section -->\n <div class=\"info-section\">\n <ws-widget-player-brief [forPreview]=\"forPreview\" [content]=\"content\" [hasTocStructure]=\"hasTocStructure\"\n [tocStructure]=\"tocStructure\">\n </ws-widget-player-brief>\n </div>\n</div>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">Authors</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">Curator/Contact</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\n [email]=\"author.email\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <p class=\"margin-remove text-md font-normal\">{{ author.name }}</p>\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\n </ws-widget-btn-mail-user>\n </div>\n </div>\n </mat-card>\n</ng-template>\n", styles: [".meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.info-section2{width:28%;min-width:250px;margin-right:24px}@media only screen and (max-width: 599px){.info-section2{width:100%;margin-right:0}}.info-container{padding:12px 16px;margin-bottom:16px}.info-container .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"] }]
154
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.AccessControlService }]; }, propDecorators: { forPreview: [{
155
+ type: Input
156
+ }] } });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1vdmVydmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9hcHAtdG9jLW92ZXJ2aWV3L2FwcC10b2Mtb3ZlcnZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1vdmVydmlldy9hcHAtdG9jLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQTtBQUluRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVaEUsTUFBTSxPQUFPLHVCQUF1QjtJQWVsQyxZQUNVLEtBQXFCLEVBQ3JCLFlBQTJCLEVBQzNCLFNBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLG9CQUEwQztRQUoxQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBbkJwRCxZQUFPLEdBQThCLElBQUksQ0FBQTtRQUN6QyxzQkFBaUIsR0FBd0IsSUFBSSxDQUFBO1FBQzdDLDBCQUFxQixHQUFHLEtBQUssQ0FBQTtRQUM3QixvQkFBZSxHQUFHLEtBQUssQ0FBQTtRQUN2QixpQkFBWSxHQUFrQyxJQUFJLENBQUE7UUFDbEQscUJBQWdCLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLHdCQUFtQixHQUFHLEtBQUssQ0FBQTtRQUUzQixTQUFJLEdBQW9CLElBQUksQ0FBQTtRQUNuQixlQUFVLEdBQUcsS0FBSyxDQUFBO1FBQzNCLGNBQVMsR0FBUSxJQUFJLENBQUE7UUFDckIsbUJBQWMsR0FBeUQsRUFBRSxDQUFBO1FBQ3pFLFlBQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFBO1FBU25CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUMzRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUNsRjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7U0FDNUQ7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtnQkFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQTtZQUNyQyxDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDckM7SUFDSCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFBO0lBQzVDLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUE7SUFDMUMsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFVO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQTtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQ25ELElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNsRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQTtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsTUFBTSxnQkFBZ0IsR0FBK0I7Z0JBQ25ELE1BQU0sRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7YUFDaEMsQ0FBQTtZQUNELElBQUksQ0FBQyxZQUFZO2lCQUNkLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQzlFLFNBQVMsQ0FDUixHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDOUIsQ0FBQyxFQUNELElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFBO1lBQzFCLENBQUMsQ0FDRixDQUFBO1NBQ0o7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBd0M7UUFDekQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO2FBQ2pEO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQzVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsQ0FBQztZQUNWLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsY0FBYyxFQUFFLENBQUM7WUFDakIsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7WUFDVixZQUFZLEVBQUUsQ0FBQztZQUNmLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7WUFDVixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxDQUFDO1NBQ2xCLENBQUE7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5RyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3RHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDdEYsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtvQkFDM0IsTUFBSztpQkFDTjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsNkJBQTZCO0lBQ3JCLGdCQUFnQjtRQUN0QixJQUNFLElBQUksQ0FBQyxtQkFBbUI7WUFDeEIsSUFBSSxDQUFDLE9BQU87WUFDWiwyREFBMkQ7WUFDM0QsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUNoQjtZQUNBLDZDQUE2QztZQUM3QywrQ0FBK0M7WUFDL0Msb0JBQW9CO1NBQ3JCO0lBQ0gsQ0FBQzsrR0FuSlUsdUJBQXVCO21HQUF2Qix1QkFBdUIscUdDZnBDLHdyYUEwUkE7OzRGRDNRYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UseUJBQXlCO21PQWMxQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY2Nlc3MtY29udHJvbC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3dpZGdldC1jb250ZW50Lm1vZGVsJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE5zQXBwVG9jIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10b2MubW9kZWwnXG5pbXBvcnQgeyBBcHBUb2NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLXRvYy5zZXJ2aWNlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtYXBwLXRvYy1vdmVydmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1vdmVydmlldy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBUb2NPdmVydmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IG51bGxcbiAgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsXG4gIHZpZXdNb3JlUmVsYXRlZFRvcGljcyA9IGZhbHNlXG4gIGhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXG4gIHRvY1N0cnVjdHVyZTogTnNBcHBUb2MuSVRvY1N0cnVjdHVyZSB8IG51bGwgPSBudWxsXG4gIGFza0F1dGhvckVuYWJsZWQgPSB0cnVlXG4gIHRyYWluaW5nTEh1YkVuYWJsZWQgPSBmYWxzZVxuICB0cmFpbmluZ0xIdWJDb3VudCQ/OiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgYm9keTogU2FmZUh0bWwgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcbiAgdG9jQ29uZmlnOiBhbnkgPSBudWxsXG4gIGNvbnRlbnRQYXJlbnRzOiB7IFtrZXk6IHN0cmluZ106IE5zQXBwVG9jLklDb250ZW50UGFyZW50UmVzcG9uc2VbXSB9ID0ge31cbiAgb2JqS2V5cyA9IE9iamVjdC5rZXlzXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB0b2NTaGFyZWRTdmM6IEFwcFRvY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgYXV0aEFjY2Vzc0NvbnRyb2xTdmM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLFxuICApIHtcbiAgICBpZiAodGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzKSB7XG4gICAgICB0aGlzLmFza0F1dGhvckVuYWJsZWQgPSAhdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYXNrQXV0aG9yJylcbiAgICAgIHRoaXMudHJhaW5pbmdMSHViRW5hYmxlZCA9ICF0aGlzLmNvbmZpZ1N2Yy5yZXN0cmljdGVkRmVhdHVyZXMuaGFzKCd0cmFpbmluZ0xIdWInKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5mb3JQcmV2aWV3KSB7XG4gICAgICB0aGlzLmZvclByZXZpZXcgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL2F1dGhvci8nKVxuICAgIH1cbiAgICBpZiAodGhpcy5yb3V0ZSAmJiB0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKChkYXRhOiBEYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdERhdGEoZGF0YSlcbiAgICAgICAgdGhpcy50b2NDb25maWcgPSBkYXRhLnBhZ2VEYXRhLmRhdGFcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucm91dGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93U3VidGl0bGVPbkJhbm5lcigpIHtcbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc3VidGl0bGVPbkJhbm5lcnNcbiAgfVxuICBnZXQgc2hvd0Rlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudC5ib2R5KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc2hvd0Rlc2NyaXB0aW9uXG4gIH1cblxuICBwcml2YXRlIGluaXREYXRhKGRhdGE6IERhdGEpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU2hhcmVkU3ZjLmluaXREYXRhKGRhdGEpXG4gICAgdGhpcy5jb250ZW50ID0gaW5pdERhdGEuY29udGVudFxuICAgIHRoaXMuYm9keSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5ib2R5XG4gICAgICAgID8gdGhpcy5mb3JQcmV2aWV3XG4gICAgICAgICAgPyB0aGlzLmF1dGhBY2Nlc3NDb250cm9sU3ZjLnByb3h5VG9BdXRob3JpbmdVcmwodGhpcy5jb250ZW50LmJvZHkpXG4gICAgICAgICAgOiB0aGlzLmNvbnRlbnQuYm9keVxuICAgICAgICA6ICcnLFxuICAgIClcbiAgICB0aGlzLmNvbnRlbnRQYXJlbnRzID0ge31cbiAgICB0aGlzLnJlc2V0QW5kRmV0Y2hUb2NTdHJ1Y3R1cmUoKVxuICAgIHRoaXMuZ2V0VHJhaW5pbmdDb3VudCgpXG4gICAgdGhpcy5nZXRDb250ZW50UGFyZW50KClcbiAgfVxuXG4gIGdldENvbnRlbnRQYXJlbnQoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgY29uc3QgY29udGVudFBhcmVudFJlcTogTnNBcHBUb2MuSUNvbnRlbnRQYXJlbnRSZXEgPSB7XG4gICAgICAgIGZpZWxkczogWydjb250ZW50VHlwZScsICduYW1lJ10sXG4gICAgICB9XG4gICAgICB0aGlzLnRvY1NoYXJlZFN2Y1xuICAgICAgICAuZmV0Y2hDb250ZW50UGFyZW50KHRoaXMuY29udGVudC5pZGVudGlmaWVyLCBjb250ZW50UGFyZW50UmVxLCB0aGlzLmZvclByZXZpZXcpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VDb250ZW50UGFyZW50KHJlcylcbiAgICAgICAgICB9LFxuICAgICAgICAgIF9lcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50UGFyZW50cyA9IHt9XG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlQ29udGVudFBhcmVudChjb250ZW50OiBOc0FwcFRvYy5JQ29udGVudFBhcmVudFJlc3BvbnNlKSB7XG4gICAgY29udGVudC5jb2xsZWN0aW9ucy5mb3JFYWNoKGNvbGxlY3Rpb24gPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRlbnRQYXJlbnRzLmhhc093blByb3BlcnR5KGNvbGxlY3Rpb24uY29udGVudFR5cGUpKSB7XG4gICAgICAgIHRoaXMuY29udGVudFBhcmVudHNbY29sbGVjdGlvbi5jb250ZW50VHlwZV0gPSBbXVxuICAgICAgfVxuICAgICAgdGhpcy5jb250ZW50UGFyZW50c1tjb2xsZWN0aW9uLmNvbnRlbnRUeXBlXS5wdXNoKGNvbGxlY3Rpb24pXG4gICAgICB0aGlzLnBhcnNlQ29udGVudFBhcmVudChjb2xsZWN0aW9uKVxuICAgIH0pXG4gIH1cblxuICByZXNldEFuZEZldGNoVG9jU3RydWN0dXJlKCkge1xuICAgIHRoaXMudG9jU3RydWN0dXJlID0ge1xuICAgICAgYXNzZXNzbWVudDogMCxcbiAgICAgIGZpbmFsVGVzdDogMCxcbiAgICAgIGNvdXJzZTogMCxcbiAgICAgIGhhbmRzT246IDAsXG4gICAgICBpbnRlcmFjdGl2ZVZpZGVvOiAwLFxuICAgICAgbGVhcm5pbmdNb2R1bGU6IDAsXG4gICAgICBvdGhlcjogMCxcbiAgICAgIHBkZjogMCxcbiAgICAgIHN1cnZleTogMCxcbiAgICAgIHBvZGNhc3Q6IDAsXG4gICAgICBwcmFjdGljZVRlc3Q6IDAsXG4gICAgICBxdWl6OiAwLFxuICAgICAgdmlkZW86IDAsXG4gICAgICB3ZWJNb2R1bGU6IDAsXG4gICAgICB3ZWJQYWdlOiAwLFxuICAgICAgeW91dHViZTogMCxcbiAgICAgIGludGVyYWN0aXZlY29udGVudDogMCxcbiAgICAgIG9mZmxpbmVTZXNzaW9uOiAwLFxuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5sZWFybmluZ01vZHVsZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSA/IC0xIDogMFxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUuY291cnNlID0gdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFID8gLTEgOiAwXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZSA9IHRoaXMudG9jU2hhcmVkU3ZjLmdldFRvY1N0cnVjdHVyZSh0aGlzLmNvbnRlbnQsIHRoaXMudG9jU3RydWN0dXJlKVxuICAgICAgZm9yIChjb25zdCBwcm9nVHlwZSBpbiB0aGlzLnRvY1N0cnVjdHVyZSkge1xuICAgICAgICBpZiAodGhpcy50b2NTdHJ1Y3R1cmVbcHJvZ1R5cGVdID4gMCkge1xuICAgICAgICAgIHRoaXMuaGFzVG9jU3RydWN0dXJlID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3IgTGVhcm5pbmcgSHViIHRyYWluaW5nc1xuICBwcml2YXRlIGdldFRyYWluaW5nQ291bnQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy50cmFpbmluZ0xIdWJFbmFibGVkICYmXG4gICAgICB0aGlzLmNvbnRlbnQgJiZcbiAgICAgIC8vIHRoaXMudHJhaW5pbmdTdmMuaXNWYWxpZFRyYWluaW5nQ29udGVudCh0aGlzLmNvbnRlbnQpICYmXG4gICAgICAhdGhpcy5mb3JQcmV2aWV3XG4gICAgKSB7XG4gICAgICAvLyB0aGlzLnRyYWluaW5nTEh1YkNvdW50JCA9IHRoaXMudHJhaW5pbmdBcGlcbiAgICAgIC8vICAgLmdldFRyYWluaW5nQ291bnQodGhpcy5jb250ZW50LmlkZW50aWZpZXIpXG4gICAgICAvLyAgIC5waXBlKHJldHJ5KDIpKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1iZXR3ZWVuIGZsZXgtd3JhcHBlZCBtdC00XCI+XG4gIDxkaXYgY2xhc3M9XCJtZXRhLXNlY3Rpb25cIj5cbiAgICA8IS0tIERlc2NyaXB0aW9uIDogQ29uZGl0aW9uYWwgOiBJZiBub3Qgc2hvd24gaGVyZSwgd2lsbCBiZSBzaG93biBvdmVyIGJhbm5lciAtLT5cbiAgICA8bWF0LWNhcmQgKm5nSWY9XCJcbiAgICAgICAgdG9jQ29uZmlnPy5vdmVydmlldz8uZGVzY3JpcHRpb24/LmVuYWJsZWQgJiZcbiAgICAgICAgc2hvd0Rlc2NyaXB0aW9uICYmXG4gICAgICAgIHNob3dTdWJ0aXRsZU9uQmFubmVyICYmXG4gICAgICAgIGNvbnRlbnQ/LmRlc2NyaXB0aW9uXG4gICAgICBcIiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8uZGVzY3JpcHRpb24/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMVwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDwhLS0gQ29udGVudCBCb2R5IC0tPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LmJvZHk/LmVuYWJsZWQgJiYgY29udGVudD8uYm9keVwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW1cIj5cbiAgICAgIDxoMj57eyB0b2NDb25maWc/Lm92ZXJ2aWV3Py5ib2R5Py5kaXNwbGF5TmFtZSB9fTwvaDI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrLXdvcmRzXCIgW2lubmVySFRNTF09XCJib2R5XCI+PC9kaXY+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cbiAgICA8IS0tIExlYXJuaW5nIG9iamVjdGl2ZSAtLT5cbiAgICA8bWF0LWNhcmQgKm5nSWY9XCJ0b2NDb25maWc/Lm92ZXJ2aWV3Py5sZWFybmluZ09iamVjdGl2ZT8uZW5hYmxlZCAmJiBjb250ZW50Py5sZWFybmluZ09iamVjdGl2ZVwiXG4gICAgICBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8ubGVhcm5pbmdPYmplY3RpdmU/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8cCBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTFcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnQ/LmxlYXJuaW5nT2JqZWN0aXZlXCI+PC9wPlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8IS0tIFJlZ2lzdHJhdGlvbiBpbnN0cnVjdGlvbnMgLS0+XG4gICAgPG1hdC1jYXJkICpuZ0lmPVwiXG4gICAgICAgIHRvY0NvbmZpZz8ub3ZlcnZpZXc/LnJlZ2lzdHJhdGlvbkluc3RydWN0aW9ucz8uZW5hYmxlZCAmJlxuICAgICAgICBjb250ZW50Py5yZWdpc3RyYXRpb25JbnN0cnVjdGlvbnM/Lmxlbmd0aFxuICAgICAgXCIgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbVwiPlxuICAgICAgPGgyPnt7IHRvY0NvbmZpZz8ub3ZlcnZpZXc/LnJlZ2lzdHJhdGlvbkluc3RydWN0aW9ucz8uZGlzcGxheU5hbWUgfX08L2gyPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIGJyZWFrLXdvcmRzXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5yZWdpc3RyYXRpb25JbnN0cnVjdGlvbnNcIj48L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LnByZUNvbnRlbnRzPy5lbmFibGVkICYmIGNvbnRlbnQ/LnByZUNvbnRlbnRzPy5sZW5ndGhcIiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8ucHJlQ29udGVudHM/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0xXCIgKm5nRm9yPVwibGV0IHByZUNvbnRlbnQgb2YgY29udGVudD8ucHJlQ29udGVudHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTFcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIFtyb3V0ZXJMaW5rXT1cIicvYXBwL3RvYy8nICsgcHJlQ29udGVudC5pZGVudGlmaWVyXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUtYm90dG9tIG1hdC1zdWJoZWFkaW5nLTFcIj57eyBwcmVDb250ZW50Lm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LnBvc3RDb250ZW50cz8uZW5hYmxlZCAmJiBjb250ZW50Py5wb3N0Q29udGVudHM/Lmxlbmd0aFwiXG4gICAgICBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8ucG9zdENvbnRlbnRzPy5kaXNwbGF5TmFtZSB9fTwvaDI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItMVwiICpuZ0Zvcj1cImxldCBwb3N0Q29udGVudCBvZiBjb250ZW50Py5wb3N0Q29udGVudHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTFcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIFtyb3V0ZXJMaW5rXT1cIicvYXBwL3RvYy8nICsgcG9zdENvbnRlbnQuaWRlbnRpZmllclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlLWJvdHRvbSBtYXQtc3ViaGVhZGluZy0xXCI+e3sgcG9zdENvbnRlbnQubmFtZSB9fTwvcD5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gICAgPG1hdC1jYXJkICpuZ0lmPVwidG9jQ29uZmlnPy5vdmVydmlldz8uY2VydGlmaWNhdGlvbkxpc3Q/LmVuYWJsZWQgJiYgY29udGVudD8uY2VydGlmaWNhdGlvbkxpc3Q/Lmxlbmd0aFwiXG4gICAgICBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8uY2VydGlmaWNhdGlvbkxpc3Q/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0xXCIgKm5nRm9yPVwibGV0IGNlcnRpZmljYXRpb24gb2YgY29udGVudD8uY2VydGlmaWNhdGlvbkxpc3RcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTFcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIFtyb3V0ZXJMaW5rXT1cIicvYXBwL3RvYy8nICsgY2VydGlmaWNhdGlvbi5pZGVudGlmaWVyXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUtYm90dG9tIG1hdC1zdWJoZWFkaW5nLTFcIj57eyBjZXJ0aWZpY2F0aW9uLm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LnN0dWR5TWF0ZXJpYWxzPy5lbmFibGVkICYmIGNvbnRlbnQ/LnN0dWR5TWF0ZXJpYWxzPy5sZW5ndGhcIlxuICAgICAgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbVwiPlxuICAgICAgPGgyPnt7IHRvY0NvbmZpZz8ub3ZlcnZpZXc/LnN0dWR5TWF0ZXJpYWxzPy5kaXNwbGF5TmFtZSB9fTwvaDI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItMVwiICpuZ0Zvcj1cImxldCBzdHVkeWl0ZW0gb2YgY29udGVudD8uc3R1ZHlNYXRlcmlhbHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTFcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIFtyb3V0ZXJMaW5rXT1cIicvYXBwL3RvYy8nICsgc3R1ZHlpdGVtLmlkZW50aWZpZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZS1ib3R0b20gbWF0LXN1YmhlYWRpbmctMVwiPnt7IHN0dWR5aXRlbS5uYW1lIH19PC9wPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQgKm5nSWY9XCJcbiAgICAgICAgdG9jQ29uZmlnPy5vdmVydmlldz8ucGxheWdyb3VuZFJlc291cmNlcz8uZW5hYmxlZCAmJiBjb250ZW50Py5wbGF5Z3JvdW5kUmVzb3VyY2VzPy5sZW5ndGhcbiAgICAgIFwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW1cIj5cbiAgICAgIDxoMj57eyB0b2NDb25maWc/Lm92ZXJ2aWV3Py5wbGF5Z3JvdW5kUmVzb3VyY2VzPy5kaXNwbGF5TmFtZSB9fTwvaDI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItMVwiICpuZ0Zvcj1cImxldCBwbGF5Z3JvdW5kUmVzb3VyY2Ugb2YgY29udGVudD8ucGxheWdyb3VuZFJlc291cmNlc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWxpZ24tYm90dG9tXCI+d2ViX2Fzc2V0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGEgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0XCIgW3JvdXRlckxpbmtdPVwiJy9hcHAvdG9jLycgKyBwbGF5Z3JvdW5kUmVzb3VyY2UuaWRlbnRpZmllclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlLWJvdHRvbSBtYXQtc3ViaGVhZGluZy0xXCI+e3sgcGxheWdyb3VuZFJlc291cmNlLm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LmtBcnRpZmFjdHM/LmVuYWJsZWQgJiYgY29udGVudD8ua0FydGlmYWN0cz8ubGVuZ3RoXCIgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbVwiPlxuICAgICAgPGgyPnt7IHRvY0NvbmZpZz8ub3ZlcnZpZXc/LmtBcnRpZmFjdHM/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0xXCIgKm5nRm9yPVwibGV0IGtBcnRpZmFjdCBvZiBjb250ZW50Py5rQXJ0aWZhY3RzXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0xXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhbGlnbi1ib3R0b21cIj53ZWJfYXNzZXQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YSBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHRcIiBbcm91dGVyTGlua109XCInL2FwcC90b2MvJyArIGtBcnRpZmFjdC5pZGVudGlmaWVyXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUtYm90dG9tIG1hdC1zdWJoZWFkaW5nLTFcIj57eyBrQXJ0aWZhY3QubmFtZSB9fTwvcD5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gICAgPG1hdC1jYXJkICpuZ0lmPVwiXG4gICAgICAgIHRvY0NvbmZpZz8ub3ZlcnZpZXc/LmVxdWl2YWxlbnRDZXJ0aWZpY2F0aW9ucz8uZW5hYmxlZCAmJlxuICAgICAgICBjb250ZW50Py5lcXVpdmFsZW50Q2VydGlmaWNhdGlvbnM/Lmxlbmd0aFxuICAgICAgXCIgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbVwiPlxuICAgICAgPGgyPnt7IHRvY0NvbmZpZz8ub3ZlcnZpZXc/LmVxdWl2YWxlbnRDZXJ0aWZpY2F0aW9ucz8uZGlzcGxheU5hbWUgfX08L2gyPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1iLTFcIiAqbmdGb3I9XCJsZXQgZXF1aXZhbGVudENlcnRpZmljYXRpb24gb2YgY29udGVudD8uZXF1aXZhbGVudENlcnRpZmljYXRpb25zXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0xXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhbGlnbi1ib3R0b21cIj53ZWJfYXNzZXQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YSBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHRcIiBbcm91dGVyTGlua109XCInL2FwcC90b2MvJyArIGVxdWl2YWxlbnRDZXJ0aWZpY2F0aW9uLmlkZW50aWZpZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZS1ib3R0b20gbWF0LXN1YmhlYWRpbmctMVwiPnt7IGVxdWl2YWxlbnRDZXJ0aWZpY2F0aW9uLm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cIlxuICAgICAgICB0b2NDb25maWc/Lm92ZXJ2aWV3Py5zb2Z0d2FyZVJlcXVpcmVtZW50cz8uZW5hYmxlZCAmJiBjb250ZW50Py5zb2Z0d2FyZVJlcXVpcmVtZW50cz8ubGVuZ3RoXG4gICAgICBcIiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8uc29mdHdhcmVSZXF1aXJlbWVudHM/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0xXCIgKm5nRm9yPVwibGV0IHNvZnR3YXJlUmVxdWlyZW1lbnQgb2YgY29udGVudD8uc29mdHdhcmVSZXF1aXJlbWVudHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTFcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIFtocmVmXT1cInNvZnR3YXJlUmVxdWlyZW1lbnQudXJsXCIgdGFyZ2V0PVwiYmxhbmtcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZS1ib3R0b20gbWF0LXN1YmhlYWRpbmctMVwiPnt7IHNvZnR3YXJlUmVxdWlyZW1lbnQudGl0bGUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDwhLS0gU2tpbGxzIC0tPlxuICAgIDxtYXQtY2FyZCAqbmdJZj1cInRvY0NvbmZpZz8ub3ZlcnZpZXc/LnNraWxscz8uZW5hYmxlZCAmJiBjb250ZW50Py5za2lsbHM/Lmxlbmd0aFwiXG4gICAgICBjbGFzcz1cInVuaXQtbWV0YS1pdGVtIG1hdC1hcHAtYmFja2dyb3VuZFwiPlxuICAgICAgPGgyPnt7IHRvY0NvbmZpZz8ub3ZlcnZpZXc/LnNraWxscz8uZGlzcGxheU5hbWUgfX08L2gyPlxuICAgICAgPG1hdC1jaGlwLWxpc3Q+XG4gICAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgc2tpbGwgb2YgY29udGVudD8uc2tpbGxzXCI+e3sgc2tpbGwubmFtZSB9fTwvbWF0LWNoaXA+XG4gICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgPC9tYXQtY2FyZD5cbiAgICA8IS0tIFJlcXVpcmVtZW50cyAtLT5cbiAgICA8bWF0LWNhcmQgKm5nSWY9XCJ0b2NDb25maWc/Lm92ZXJ2aWV3Py5wcmVSZXF1aXNpdGVzPy5lbmFibGVkICYmIGNvbnRlbnQ/LnByZVJlcXVpc2l0ZXNcIiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCI+XG4gICAgICA8aDI+e3sgdG9jQ29uZmlnPy5vdmVydmlldz8ucHJlUmVxdWlzaXRlcz8uZGlzcGxheU5hbWUgfX08L2gyPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5wcmVSZXF1aXNpdGVzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4tdG9wLXNcIiAqbmdJZj1cImNvbnRlbnQ/LnNvZnR3YXJlUmVxdWlyZW1lbnRzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJtYXQtaDMgbWFyZ2luLWJvdHRvbS14c1wiID5Tb2Z0d2FyZSBSZXF1aXJlbWVudHM8L2gzPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlcXVpcmVtZW50IG9mIGNvbnRlbnQ/LnNvZnR3YXJlUmVxdWlyZW1lbnRzXCI+XG4gICAgICAgICAgICA8YSAqbmdJZj1cInJlcXVpcmVtZW50LnVybFwiIGNsYXNzPVwibWFyZ2luLXJpZ2h0LXNcIiBtYXQtc3Ryb2tlZC1idXR0b24gdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwicmVxdWlyZW1lbnQudXJsXCI+XG4gICAgICAgICAgICAgIHt7IHJlcXVpcmVtZW50LnRpdGxlIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJtYXJnaW4tcmlnaHQtc1wiICpuZ0lmPVwiIXJlcXVpcmVtZW50Py51cmxcIj57eyByZXF1aXJlbWVudC50aXRsZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuXG4gICAgPCEtLSBUcmFpbmluZyAoTEh1YikgLS0+XG4gICAgPG1hdC1jYXJkICpuZ0lmPVwidHJhaW5pbmdMSHViRW5hYmxlZCAmJiB0cmFpbmluZ0xIdWJDb3VudCQgfCBhc3luYyBhcyB0cmFpbmluZ0xIdWJDb3VudFwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW1cIj5cbiAgICAgIDxoMiA+VHJhaW5pbmdzPC9oMj5cbiAgICAgIDxoNCBjbGFzcz1cIm1hdC1oNFwiPlxuICAgICAgICA8bmctY29udGFpbmVyPnt7IHRyYWluaW5nTEh1YkNvdW50IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgaTE4bj1cInggdHJhaW5pbmdzIGF2YWlsYWJsZVwiICpuZ0lmPVwidHJhaW5pbmdMSHViQ291bnQgPiAxXCI+XG4gICAgICAgICAgdHJhaW5pbmdzIGF2YWlsYWJsZTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGkxOG49XCIxIHRyYWluaW5nIGF2YWlsYWJsZVwiICpuZ0lmPVwidHJhaW5pbmdMSHViQ291bnQgPT09IDFcIj5cbiAgICAgICAgICB0cmFpbmluZyBhdmFpbGFibGU8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaDQ+XG4gICAgICA8ZGl2PlxuICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8IS0tIFJlbGF0ZWQgVG9waWNzIC0tPlxuICAgIDxtYXQtY2FyZCBjbGFzcz1cInVuaXQtbWV0YS1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/Lm92ZXJ2aWV3Py50b3BpY3M/LmVuYWJsZWQgJiYgY29udGVudD8udG9waWNzPy5sZW5ndGhcIj5cbiAgICAgIDxoMj57eyB0b2NDb25maWc/Lm92ZXJ2aWV3Py50b3BpY3M/LmRpc3BsYXlOYW1lIH19PC9oMj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWJldHdlZW4gZmxleC13cmFwcGVkXCI+XG4gICAgICAgICAgPGEgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9waWMtYnV0dG9uIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRvcGljIG9mIGNvbnRlbnQ/LnRvcGljcyB8IHBpcGVMaW1pdFRvOiAodmlld01vcmVSZWxhdGVkVG9waWNzID8gMjQgOiA2KVwiIFt0aXRsZV09XCJ0b3BpYz8ubmFtZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCInL2FwcC9jb25jZXB0LWdyYXBoLycgKyB0b3BpYy5pZGVudGlmaWVyXCI+XG4gICAgICAgICAgICB7eyB0b3BpYz8ubmFtZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py50b3BpY3M/Lmxlbmd0aCA+IDZcIiBjbGFzcz1cInRleHQtcmlnaHQgbWFyZ2luLXRvcC14c1wiPlxuICAgICAgICAgIDxhIG1hdC1idXR0b24gKGNsaWNrKT1cInZpZXdNb3JlUmVsYXRlZFRvcGljcyA9ICF2aWV3TW9yZVJlbGF0ZWRUb3BpY3NcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXZpZXdNb3JlUmVsYXRlZFRvcGljc1wiID5WaWV3IE1vcmU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInZpZXdNb3JlUmVsYXRlZFRvcGljc1wiID5WaWV3IExlc3M8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDwhLS0gQXV0aG9ycyBvbiBzbWFsbCBzY3JlZW4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImJsb2NrIHNtOmhpZGRlbiBtYXJnaW4tYm90dG9tLW1cIiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzPy5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgIGF1dGhvcnM6IGNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzLFxuICAgICAgICAgIHRpdGxlOiAnQVVUSE9SJ1xuICAgICAgICB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENvbnRhY3RzIG9uIHNtYWxsIHNjcmVlbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgc206aGlkZGVuIG1hcmdpbi1ib3R0b20tbVwiICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckNvbnRhY3RzPy5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgIGF1dGhvcnM6IGNvbnRlbnQ/LmNyZWF0b3JDb250YWN0cyxcbiAgICAgICAgICB0aXRsZTogJ0NPTlRBQ1QnXG4gICAgICAgIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4tYm90dG9tLW1cIiAqbmdJZj1cIm9iaktleXMoY29udGVudFBhcmVudHMpLmxlbmd0aFwiPlxuICAgICAgPG1hdC1jYXJkPlxuICAgICAgICA8aDIgPlRoaXMgY29udGVudCBpcyBwYXJ0IG9mPC9oMj5cbiAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICA8bWF0LWFjY29yZGlvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIG9iaktleXMoY29udGVudFBhcmVudHMpXCI+XG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgIHt7IGtleSB9fVxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1iLTFcIiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBjb250ZW50UGFyZW50c1trZXldXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFsaWduLWJvdHRvbVwiPndlYl9hc3NldDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0XCIgW3JvdXRlckxpbmtdPVwiXG4gICAgICAgICAgICAgICAgICBjb250ZW50LnN0YXR1cyAhPT0gJ0xpdmUnXG4gICAgICAgICAgICAgICAgICAgID8gJy9hdXRob3InICsgJy90b2MvJyArIGNvbnRlbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICA6ICcvYXBwJyArICcvdG9jLycgKyBjb250ZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUtYm90dG9tIG1hdC1zdWJoZWFkaW5nLTFcIj57eyBjb250ZW50Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIEF0IGEgZ2xhbmNlIHNlY3Rpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJpbmZvLXNlY3Rpb25cIj5cbiAgICA8d3Mtd2lkZ2V0LXBsYXllci1icmllZiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCIgW2NvbnRlbnRdPVwiY29udGVudFwiIFtoYXNUb2NTdHJ1Y3R1cmVdPVwiaGFzVG9jU3RydWN0dXJlXCJcbiAgICAgIFt0b2NTdHJ1Y3R1cmVdPVwidG9jU3RydWN0dXJlXCI+XG4gICAgPC93cy13aWRnZXQtcGxheWVyLWJyaWVmPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XG4gIDxtYXQtY2FyZD5cbiAgICA8aDIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0FVVEhPUidcIj5BdXRob3JzPC9oMj5cbiAgICA8aDIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0NPTlRBQ1QnXCI+Q3VyYXRvci9Db250YWN0PC9oMj5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhdXRob3Igb2YgYXV0aG9yc1wiIGNsYXNzPVwiYXV0aG9yXCI+XG4gICAgICA8d3Mtd2lkZ2V0LXVzZXItaW1hZ2UgY2xhc3M9XCJhdXRob3ItaW1hZ2VcIiBbaW1hZ2VUeXBlXT1cIiduYW1lLWluaXRpYWwnXCIgW3VzZXJOYW1lXT1cImF1dGhvci5uYW1lIHx8ICcnXCJcbiAgICAgICAgW2VtYWlsXT1cImF1dGhvci5lbWFpbFwiPjwvd3Mtd2lkZ2V0LXVzZXItaW1hZ2U+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lkdGgtZXhwYW5kIGZsZXggZmxleC1taWRkbGUgZmxleC1iZXR3ZWVuXCI+XG4gICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZSB0ZXh0LW1kIGZvbnQtbm9ybWFsXCI+e3sgYXV0aG9yLm5hbWUgfX08L3A+XG4gICAgICAgIDx3cy13aWRnZXQtYnRuLW1haWwtdXNlciAqbmdJZj1cImFza0F1dGhvckVuYWJsZWRcIiBbd2lkZ2V0RGF0YV09XCJ7IGNvbnRlbnQ6IGNvbnRlbnQsIGVtYWlsczogW2F1dGhvci5lbWFpbF0gfVwiPlxuICAgICAgICA8L3dzLXdpZGdldC1idG4tbWFpbC11c2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWNhcmQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,48 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/router";
5
+ import * as i3 from "@angular/material/legacy-tooltip";
6
+ import * as i4 from "../../_collection/_common/attendance-card/attendance-card.component";
7
+ import * as i5 from "ng-circle-progress";
8
+ import * as i6 from "@ngx-translate/core";
9
+ export class AppTocSessionCardComponent {
10
+ constructor() {
11
+ this.session = null;
12
+ this.expandAll = false;
13
+ this.forPreview = false;
14
+ this.isEnabled = true;
15
+ this.isAllowed = true;
16
+ this.viewChildren = true;
17
+ }
18
+ ngOnInit() {
19
+ }
20
+ raiseTelemetry() { }
21
+ progressColor() {
22
+ return '#1D8923';
23
+ }
24
+ progressColor2() {
25
+ return '#f27d00';
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocSessionCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocSessionCardComponent, selector: "ws-app-toc-session-card", inputs: { session: "session", expandAll: "expandAll", rootId: "rootId", rootContentType: "rootContentType", forPreview: "forPreview", batchData: "batchData", config: "config" }, ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto mb-4\">\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\"\n [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\"\n (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ session?.title }}\n </p>\n\n <span class=\"content-type optional-span\" *ngIf=\"session?.optionalReading\">{{'apptocsessionscards.optional' | translate }} </span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n\n\n </div>\n <div class=\"mat-body-2 ws-mat-black60-text\">\n <div class=\"flex flex-1 flex-row\">\n <div class=\"flex margin-right-s capitalize\">{{session?.sessionType || ''}}</div>\n <div class=\"flex margin-right-s bullet-span\">{{session?.startDate | date: 'dd-MM-yyyy' }}</div>\n <div class=\"flex bullet-span\">{{session?.sessionDuration || '_'}}, {{session?.startTime || '_' }} -\n {{session?.endTime || '_'}}\n </div>\n </div>\n <!-- <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span> -->\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <ng-container *ngIf=\"!forPreview && session?.sessionId && session?.completionPercentage; else elseBlock\">\n <ng-container *ngIf=\"session?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\"\n [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\"\n [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n matTooltip=\"Completed\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n </ng-container>\n <ng-container *ngIf=\"session?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"session?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor2()\" [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" matTooltip=\"In progress\" [showZeroOuterStroke]=false\n [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\" [imageHeight]=\"24\"\n [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n </ng-container>\n\n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\" [percent]=\"0\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [outerStrokeColor]=\"'#808080'\" [innerStrokeColor]=\"'#808080'\" [animation]=\"true\"\n [space]=\"-3\" [showUnits]=\"false\" [animationDuration]=\"300\" [showTitle]=\"false\" [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\" [outerStrokeLinecap]=\"'butt'\" matTooltip=\"Not started\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\"\n [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n</div>\n<ng-container *ngIf=\"batchData?.enrolled\">\n <div *ngIf=\"session?.sessionHandouts?.length > 0\">\n <p class=\" font-bold mat-body-1 margin-bottom-xs ws-mat-black60-text\">{{'apptocsessionscards.sessionHandouts' | translate }}</p>\n <div class=\"flex flex-col flex-wrapped margin-bottom-s width-expand pr-0 w-100 sm:pr-4 sm:w-auto mb-4\">\n <ng-container *ngFor=\"let handout of session?.sessionHandouts\">\n <div class=\"\">\n <span class=\"mr-4\">{{handout.title}}</span>\n <a class=\"download-link\" target=\u201D_blank\u201D download href=\"{{handout.url}}\">{{'apptocsessionscards.download' | translate }}</a>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container>\n <ws-widget-attendance-card [session]=\"session\" [config]=\"config\"></ws-widget-attendance-card>\n</ng-container>", styles: ["@charset \"UTF-8\";.customicon{position:absolute;top:-.5em;right:0}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:8px}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.bullet-span:before{content:\"\\2022\";padding-right:12px}.download-link{opacity:1;color:#0074b6;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;line-height:20px;text-transform:uppercase}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.AttendanceCardComponent, selector: "ws-widget-attendance-card", inputs: ["session", "status", "config", "showInfo"] }, { kind: "component", type: i5.CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocSessionCardComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'ws-app-toc-session-card', template: "<div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto mb-4\">\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\"\n [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\"\n (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ session?.title }}\n </p>\n\n <span class=\"content-type optional-span\" *ngIf=\"session?.optionalReading\">{{'apptocsessionscards.optional' | translate }} </span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n\n\n </div>\n <div class=\"mat-body-2 ws-mat-black60-text\">\n <div class=\"flex flex-1 flex-row\">\n <div class=\"flex margin-right-s capitalize\">{{session?.sessionType || ''}}</div>\n <div class=\"flex margin-right-s bullet-span\">{{session?.startDate | date: 'dd-MM-yyyy' }}</div>\n <div class=\"flex bullet-span\">{{session?.sessionDuration || '_'}}, {{session?.startTime || '_' }} -\n {{session?.endTime || '_'}}\n </div>\n </div>\n <!-- <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span> -->\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <ng-container *ngIf=\"!forPreview && session?.sessionId && session?.completionPercentage; else elseBlock\">\n <ng-container *ngIf=\"session?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\"\n [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\"\n [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n matTooltip=\"Completed\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n </ng-container>\n <ng-container *ngIf=\"session?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"session?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor2()\" [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" matTooltip=\"In progress\" [showZeroOuterStroke]=false\n [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\" [imageHeight]=\"24\"\n [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n </ng-container>\n\n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\" [percent]=\"0\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [outerStrokeColor]=\"'#808080'\" [innerStrokeColor]=\"'#808080'\" [animation]=\"true\"\n [space]=\"-3\" [showUnits]=\"false\" [animationDuration]=\"300\" [showTitle]=\"false\" [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\" [outerStrokeLinecap]=\"'butt'\" matTooltip=\"Not started\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\"\n [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n</div>\n<ng-container *ngIf=\"batchData?.enrolled\">\n <div *ngIf=\"session?.sessionHandouts?.length > 0\">\n <p class=\" font-bold mat-body-1 margin-bottom-xs ws-mat-black60-text\">{{'apptocsessionscards.sessionHandouts' | translate }}</p>\n <div class=\"flex flex-col flex-wrapped margin-bottom-s width-expand pr-0 w-100 sm:pr-4 sm:w-auto mb-4\">\n <ng-container *ngFor=\"let handout of session?.sessionHandouts\">\n <div class=\"\">\n <span class=\"mr-4\">{{handout.title}}</span>\n <a class=\"download-link\" target=\u201D_blank\u201D download href=\"{{handout.url}}\">{{'apptocsessionscards.download' | translate }}</a>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container>\n <ws-widget-attendance-card [session]=\"session\" [config]=\"config\"></ws-widget-attendance-card>\n</ng-container>", styles: ["@charset \"UTF-8\";.customicon{position:absolute;top:-.5em;right:0}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:8px}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.bullet-span:before{content:\"\\2022\";padding-right:12px}.download-link{opacity:1;color:#0074b6;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;line-height:20px;text-transform:uppercase}\n"] }]
33
+ }], ctorParameters: function () { return []; }, propDecorators: { session: [{
34
+ type: Input
35
+ }], expandAll: [{
36
+ type: Input
37
+ }], rootId: [{
38
+ type: Input
39
+ }], rootContentType: [{
40
+ type: Input
41
+ }], forPreview: [{
42
+ type: Input
43
+ }], batchData: [{
44
+ type: Input
45
+ }], config: [{
46
+ type: Input
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1zZXNzaW9uLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1zZXNzaW9uLWNhcmQvYXBwLXRvYy1zZXNzaW9uLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1zZXNzaW9uLWNhcmQvYXBwLXRvYy1zZXNzaW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7O0FBT3hELE1BQU0sT0FBTywwQkFBMEI7SUFhckM7UUFaUyxZQUFPLEdBQVEsSUFBSSxDQUFBO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFHakIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUczQixjQUFTLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUE7SUFHSCxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBQ0QsY0FBYyxLQUFLLENBQUM7SUFDYixhQUFhO1FBQ2xCLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDTSxjQUFjO1FBQ25CLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7K0dBdkJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlQQ1B2QyxtekxBa0ZlOzs0RkQzRUYsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjswRUFLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLWFwcC10b2Mtc2Vzc2lvbi1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC10b2Mtc2Vzc2lvbi1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1zZXNzaW9uLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwVG9jU2Vzc2lvbkNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZXNzaW9uOiBhbnkgPSBudWxsXG4gIEBJbnB1dCgpIGV4cGFuZEFsbCA9IGZhbHNlXG4gIEBJbnB1dCgpIHJvb3RJZCE6IHN0cmluZ1xuICBASW5wdXQoKSByb290Q29udGVudFR5cGUhOiBzdHJpbmdcbiAgQElucHV0KCkgZm9yUHJldmlldyA9IGZhbHNlXG4gIEBJbnB1dCgpIGJhdGNoRGF0YSE6IGFueVxuICBASW5wdXQoKSBjb25maWchOiBzdHJpbmdcbiAgaXNFbmFibGVkID0gdHJ1ZVxuICBpc0FsbG93ZWQgPSB0cnVlXG4gIHZpZXdDaGlsZHJlbiA9IHRydWVcbiAgcmVzb3VyY2VMaW5rOiBhbnlcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG4gIHJhaXNlVGVsZW1ldHJ5KCkgeyB9XG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcjMUQ4OTIzJ1xuICB9XG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yMigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnI2YyN2QwMCdcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvIG1iLTRcIj5cbiAgICA8YSBbY2xhc3MuZGlzYWJsZWRdPVwiKGZvclByZXZpZXcgfHwgIWlzRW5hYmxlZCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIihpc0FsbG93ZWQgJiYgIWZvclByZXZpZXcgJiYgIWlzRW5hYmxlZCkgPyByZXNvdXJjZUxpbmsudXJsIDogbnVsbFwiXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCIoaXNBbGxvd2VkICYmICFmb3JQcmV2aWV3ICYmICFpc0VuYWJsZWQpICA/IHJlc291cmNlTGluay5xdWVyeVBhcmFtcyA6IG51bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgXCIgW25nQ2xhc3NdPVwieydjdXJzb3ItcG9pbnRlcic6ICFpc0VuYWJsZWR9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuOyByYWlzZVRlbGVtZXRyeSgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm1hcmdpbi1yaWdodC14cyByYWRpb2J0biB0aW1lLWljb25cIj5yYWRpb19idXR0b25fdW5jaGVja2VkIDwvbWF0LWljb24+IC0tPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZXNzaW9uPy50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudC10eXBlIG9wdGlvbmFsLXNwYW5cIiAqbmdJZj1cInNlc3Npb24/Lm9wdGlvbmFsUmVhZGluZ1wiPnt7J2FwcHRvY3Nlc3Npb25zY2FyZHMub3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIGNvbnRlbnQtdHlwZVwiPnt7IGNvbnRlbnQ/LmlkZW50aWZpZXIgfX08L3NwYW4+IC0tPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1ib2R5LTIgd3MtbWF0LWJsYWNrNjAtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYXJnaW4tcmlnaHQtcyBjYXBpdGFsaXplXCI+e3tzZXNzaW9uPy5zZXNzaW9uVHlwZSB8fCAnJ319PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1hcmdpbi1yaWdodC1zIGJ1bGxldC1zcGFuXCI+e3tzZXNzaW9uPy5zdGFydERhdGUgfCBkYXRlOiAnZGQtTU0teXl5eScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYnVsbGV0LXNwYW5cIj57e3Nlc3Npb24/LnNlc3Npb25EdXJhdGlvbiB8fCAnXyd9fSwge3tzZXNzaW9uPy5zdGFydFRpbWUgfHwgJ18nIH19IC1cbiAgICAgICAgICAgICAgICAgICAgICB7e3Nlc3Npb24/LmVuZFRpbWUgfHwgJ18nfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIndzLW1hdC1ibGFjazYwLXRleHRcIj57eyAoY29udGVudD8uZHVyYXRpb24gfHwgMTIwKXwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgc206anVzdGlmeS1lbmRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JQcmV2aWV3ICYmIHNlc3Npb24/LnNlc3Npb25JZCAmJiBzZXNzaW9uPy5jb21wbGV0aW9uUGVyY2VudGFnZTsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXNzaW9uPy5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCIxMDBcIiBbcmFkaXVzXT1cIjEyXCIgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLCAwLCAwLCAwLjE2KSdcIiBbYW5pbWF0aW9uXT1cInRydWVcIiBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCIgW2JhY2tncm91bmRTdHJva2VXaWR0aF09XCIzXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNvbXBsZXRlZFwiIFtzaG93WmVyb091dGVyU3Ryb2tlXT1mYWxzZSBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbc3RhcnRGcm9tWmVyb109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCIgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxuICAgICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2Vzc2lvbj8uY29tcGxldGlvblN0YXR1cyA8IDJcIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCJzZXNzaW9uPy5jb21wbGV0aW9uUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIiBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCIgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiXG4gICAgICAgICAgICAgICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cInByb2dyZXNzQ29sb3IyKClcIiBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLCAwLCAwLCAwLjE2KSdcIiBbYW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRTdHJva2VXaWR0aF09XCIzXCIgbWF0VG9vbHRpcD1cIkluIHByb2dyZXNzXCIgW3Nob3daZXJvT3V0ZXJTdHJva2VdPWZhbHNlXG4gICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiIFtzdGFydEZyb21aZXJvXT1cImZhbHNlXCIgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIiBbaW1hZ2VIZWlnaHRdPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICAgICAgPC9jaXJjbGUtcHJvZ3Jlc3M+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCIwXCIgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCInIzgwODA4MCdcIiBbaW5uZXJTdHJva2VDb2xvcl09XCInIzgwODA4MCdcIiBbYW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzcGFjZV09XCItM1wiIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiIG1hdFRvb2x0aXA9XCJOb3Qgc3RhcnRlZFwiIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiIFtpbWFnZUhlaWdodF09XCIyNFwiIFtpbWFnZVdpZHRoXT1cIjI0XCJcbiAgICAgICAgICAgICAgICBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIj48L2NpcmNsZS1wcm9ncmVzcz5cbiAgICAgICAgICAgIDwhLS0gPHA+bm8gZGF0YTwvcD4gLS0+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJiYXRjaERhdGE/LmVucm9sbGVkXCI+XG4gICAgPGRpdiAqbmdJZj1cInNlc3Npb24/LnNlc3Npb25IYW5kb3V0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICA8cCBjbGFzcz1cIiBmb250LWJvbGQgbWF0LWJvZHktMSBtYXJnaW4tYm90dG9tLXhzICB3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3snYXBwdG9jc2Vzc2lvbnNjYXJkcy5zZXNzaW9uSGFuZG91dHMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LXdyYXBwZWQgbWFyZ2luLWJvdHRvbS1zIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvIG1iLTRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhhbmRvdXQgb2Ygc2Vzc2lvbj8uc2Vzc2lvbkhhbmRvdXRzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTRcIj57e2hhbmRvdXQudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkb3dubG9hZC1saW5rXCIgdGFyZ2V0PeKAnV9ibGFua+KAnSBkb3dubG9hZCBocmVmPVwie3toYW5kb3V0LnVybH19XCI+e3snYXBwdG9jc2Vzc2lvbnNjYXJkcy5kb3dubG9hZCcgfCB0cmFuc2xhdGUgfX08L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXI+XG4gICAgPHdzLXdpZGdldC1hdHRlbmRhbmNlLWNhcmQgW3Nlc3Npb25dPVwic2Vzc2lvblwiIFtjb25maWddPVwiY29uZmlnXCI+PC93cy13aWRnZXQtYXR0ZW5kYW5jZS1jYXJkPlxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,47 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../app-toc-session-card/app-toc-session-card.component";
6
+ import * as i3 from "@ngx-translate/core";
7
+ export class AppTocSessionsComponent {
8
+ constructor() {
9
+ this.content = null;
10
+ this.forPreview = false;
11
+ this.config = null;
12
+ this.sessionList = [];
13
+ }
14
+ ngOnInit() {
15
+ if (this.batchData) {
16
+ // tslint:disable-next-line:max-line-length
17
+ if (this.batchData.content[0] && this.batchData.content[0].batchAttributes && this.batchData.content[0].batchAttributes.sessionDetails_v2 && this.batchData.content[0].batchAttributes.sessionDetails_v2.length > 0) {
18
+ this.sessionList = this.batchData.content[0].batchAttributes.sessionDetails_v2;
19
+ this.sessionList = this.sessionList.sort((a, b) => {
20
+ const dateA = new Date(a.startDate);
21
+ const dateB = new Date(b.startDate);
22
+ if (moment(a.startDate).isSame(b.startDate)) {
23
+ const atime = moment(a.startTime, 'hh:mm A').format('HH');
24
+ const btime = moment(b.startTime, 'hh:mm A').format('HH');
25
+ return atime - btime;
26
+ }
27
+ return dateA - dateB;
28
+ });
29
+ }
30
+ }
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocSessionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocSessionsComponent, selector: "ws-app-app-toc-sessions", inputs: { batchData: "batchData", content: "content", forPreview: "forPreview", config: "config" }, ngImport: i0, template: "<div class=\"contents-container\">\n <div class=\"main-container\">\n <ng-container *ngIf=\"batchData?.content[0]?.batchAttributes?.sessionDetails_v2?.length > 0; else noChildren\">\n <div class=\"content-card padding-right-m padding-left-m padding-top-s padding-bottom-s margin-bottom-m\" *ngFor=\"let session of sessionList; trackBy: contentTrackBy\">\n <ws-app-toc-session-card [forPreview]=\"forPreview\" [rootId]=\"contextId\" [batchData]=\"batchData\" [config]=\"config\"\n [session]=\"session\"></ws-app-toc-session-card>\n </div>\n </ng-container>\n <ng-template #noChildren>\n <div>\n {{'apptocsessions.noSessionsAvailable' | translate }}\n </div>\n </ng-template>\n </div>\n </div>", styles: [".contents-container{display:flex;justify-content:space-between;flex-wrap:wrap;margin:16px 0 24px}.contents-container .main-container{width:100%;box-sizing:border-box}.contents-container .main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.contents-container .main-container .content-card{background:#fff;border-radius:8px;border:1px solid #F5F6FA;overflow:hidden;position:relative}.contents-container .main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.contents-container .main-container{width:100%;padding-right:0;margin-bottom:32px}}.contents-container .side-container{flex:1;min-width:250px}@media only screen and (max-width: 959px){.contents-container .side-container{width:100%}}.playgrounds-container{margin:0 0 24px}.playgrounds-container .plg-card{position:relative;margin-bottom:12px;margin-right:24px}.playgrounds-container .plg-card .plg-img{display:block;width:265px;height:150px}.playgrounds-container .plg-card .plg-overlay{position:absolute;bottom:0;padding:8px 12px;box-sizing:border-box;left:0;right:0;background:linear-gradient(90deg,#000000,transparent);color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AppTocSessionCardComponent, selector: "ws-app-toc-session-card", inputs: ["session", "expandAll", "rootId", "rootContentType", "forPreview", "batchData", "config"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocSessionsComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'ws-app-app-toc-sessions', template: "<div class=\"contents-container\">\n <div class=\"main-container\">\n <ng-container *ngIf=\"batchData?.content[0]?.batchAttributes?.sessionDetails_v2?.length > 0; else noChildren\">\n <div class=\"content-card padding-right-m padding-left-m padding-top-s padding-bottom-s margin-bottom-m\" *ngFor=\"let session of sessionList; trackBy: contentTrackBy\">\n <ws-app-toc-session-card [forPreview]=\"forPreview\" [rootId]=\"contextId\" [batchData]=\"batchData\" [config]=\"config\"\n [session]=\"session\"></ws-app-toc-session-card>\n </div>\n </ng-container>\n <ng-template #noChildren>\n <div>\n {{'apptocsessions.noSessionsAvailable' | translate }}\n </div>\n </ng-template>\n </div>\n </div>", styles: [".contents-container{display:flex;justify-content:space-between;flex-wrap:wrap;margin:16px 0 24px}.contents-container .main-container{width:100%;box-sizing:border-box}.contents-container .main-container .toc-section{display:flex;justify-content:space-between;padding-bottom:12px}.contents-container .main-container .content-card{background:#fff;border-radius:8px;border:1px solid #F5F6FA;overflow:hidden;position:relative}.contents-container .main-container .noChildren{color:#222!important}@media only screen and (max-width: 959px){.contents-container .main-container{width:100%;padding-right:0;margin-bottom:32px}}.contents-container .side-container{flex:1;min-width:250px}@media only screen and (max-width: 959px){.contents-container .side-container{width:100%}}.playgrounds-container{margin:0 0 24px}.playgrounds-container .plg-card{position:relative;margin-bottom:12px;margin-right:24px}.playgrounds-container .plg-card .plg-img{display:block;width:265px;height:150px}.playgrounds-container .plg-card .plg-overlay{position:absolute;bottom:0;padding:8px 12px;box-sizing:border-box;left:0;right:0;background:linear-gradient(90deg,#000000,transparent);color:#fff}\n"] }]
38
+ }], ctorParameters: function () { return []; }, propDecorators: { batchData: [{
39
+ type: Input
40
+ }], content: [{
41
+ type: Input
42
+ }], forPreview: [{
43
+ type: Input
44
+ }], config: [{
45
+ type: Input
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1zZXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9hcHAtdG9jLXNlc3Npb25zL2FwcC10b2Mtc2Vzc2lvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1zZXNzaW9ucy9hcHAtdG9jLXNlc3Npb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBRXhELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7Ozs7QUFPM0IsTUFBTSxPQUFPLHVCQUF1QjtJQU9sQztRQUxTLFlBQU8sR0FBOEIsSUFBSSxDQUFBO1FBQ3pDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFDbEIsV0FBTSxHQUFHLElBQUksQ0FBQTtRQUN0QixnQkFBVyxHQUFRLEVBQUUsQ0FBQTtJQUVMLENBQUM7SUFFakIsUUFBUTtRQUVOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQiwyQ0FBMkM7WUFDM0MsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQTtnQkFDOUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDMUQsTUFBTSxLQUFLLEdBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO29CQUN4QyxNQUFNLEtBQUssR0FBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7b0JBQ3hDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUMzQyxNQUFNLEtBQUssR0FBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQzlELE1BQU0sS0FBSyxHQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDOUQsT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFBO3FCQUNyQjtvQkFDRCxPQUFPLEtBQUssR0FBRyxLQUFLLENBQUE7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFBO2FBQ0g7U0FDRjtJQUNILENBQUM7K0dBM0JVLHVCQUF1QjttR0FBdkIsdUJBQXVCLG1LQ1RwQywrd0JBY1E7OzRGRExLLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSx5QkFBeUI7MEVBSzFCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtYXBwLXRvYy1zZXNzaW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLXNlc3Npb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1zZXNzaW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBUb2NTZXNzaW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJhdGNoRGF0YTogYW55XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSBmYWxzZVxuICBASW5wdXQoKSBjb25maWcgPSBudWxsXG4gIHNlc3Npb25MaXN0OiBhbnkgPSBbXVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBpZiAodGhpcy5iYXRjaERhdGEpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgIGlmICh0aGlzLmJhdGNoRGF0YS5jb250ZW50WzBdICYmIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnRbMF0uYmF0Y2hBdHRyaWJ1dGVzICYmIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnRbMF0uYmF0Y2hBdHRyaWJ1dGVzLnNlc3Npb25EZXRhaWxzX3YyICYmIHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnRbMF0uYmF0Y2hBdHRyaWJ1dGVzLnNlc3Npb25EZXRhaWxzX3YyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uTGlzdCA9IHRoaXMuYmF0Y2hEYXRhLmNvbnRlbnRbMF0uYmF0Y2hBdHRyaWJ1dGVzLnNlc3Npb25EZXRhaWxzX3YyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkxpc3QgPSB0aGlzLnNlc3Npb25MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0ZUE6IGFueSA9IG5ldyBEYXRlKGEuc3RhcnREYXRlKVxuICAgICAgICAgIGNvbnN0IGRhdGVCOiBhbnkgPSBuZXcgRGF0ZShiLnN0YXJ0RGF0ZSlcbiAgICAgICAgICBpZiAobW9tZW50KGEuc3RhcnREYXRlKS5pc1NhbWUoYi5zdGFydERhdGUpKSB7XG4gICAgICAgICAgICBjb25zdCBhdGltZTogYW55ID0gbW9tZW50KGEuc3RhcnRUaW1lLCAnaGg6bW0gQScpLmZvcm1hdCgnSEgnKVxuICAgICAgICAgICAgY29uc3QgYnRpbWU6IGFueSA9IG1vbWVudChiLnN0YXJ0VGltZSwgJ2hoOm1tIEEnKS5mb3JtYXQoJ0hIJylcbiAgICAgICAgICAgIHJldHVybiBhdGltZSAtIGJ0aW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRlQSAtIGRhdGVCXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGVudHMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYmF0Y2hEYXRhPy5jb250ZW50WzBdPy5iYXRjaEF0dHJpYnV0ZXM/LnNlc3Npb25EZXRhaWxzX3YyPy5sZW5ndGggPiAwOyBlbHNlIG5vQ2hpbGRyZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2FyZCBwYWRkaW5nLXJpZ2h0LW0gcGFkZGluZy1sZWZ0LW0gcGFkZGluZy10b3AtcyBwYWRkaW5nLWJvdHRvbS1zIG1hcmdpbi1ib3R0b20tbVwiICpuZ0Zvcj1cImxldCBzZXNzaW9uIG9mIHNlc3Npb25MaXN0OyB0cmFja0J5OiBjb250ZW50VHJhY2tCeVwiPlxuICAgICAgICAgICAgPHdzLWFwcC10b2Mtc2Vzc2lvbi1jYXJkIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIiBbcm9vdElkXT1cImNvbnRleHRJZFwiIFtiYXRjaERhdGFdPVwiYmF0Y2hEYXRhXCIgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICBbc2Vzc2lvbl09XCJzZXNzaW9uXCI+PC93cy1hcHAtdG9jLXNlc3Npb24tY2FyZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0NoaWxkcmVuPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHt7J2FwcHRvY3Nlc3Npb25zLm5vU2Vzc2lvbnNBdmFpbGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+Il19