@sunbird-cb/toc 0.0.9 → 0.0.11

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 -55
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +272 -248
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1202 -1148
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
  79. package/esm2022/lib/_collection-api.mjs +57 -57
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
  82. package/esm2022/lib/_models/common.model.mjs +2 -2
  83. package/esm2022/lib/_models/error.model.mjs +2 -2
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
  85. package/esm2022/lib/_services/rating.service.mjs +89 -89
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
  88. package/esm2022/lib/_services/widget-content.model.mjs +247 -247
  89. package/esm2022/lib/_services/widget-content.service.mjs +594 -594
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -499
  92. package/esm2022/lib/collection.config.mjs +161 -161
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -38
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -2
  120. package/esm2022/lib/models/card-content.model.mjs +13 -13
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
  123. package/esm2022/lib/models/goal.model.mjs +2 -2
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -8
  125. package/esm2022/lib/models/playlist.model.mjs +2 -2
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
  127. package/esm2022/lib/models/rating.model.mjs +2 -2
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -21
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
  140. package/esm2022/lib/services/access-control.service.mjs +56 -56
  141. package/esm2022/lib/services/action.service.mjs +23 -23
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +333 -313
  143. package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
  144. package/esm2022/lib/services/certificate.service.mjs +69 -69
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
  146. package/esm2022/lib/services/editor.service.mjs +34 -34
  147. package/esm2022/lib/services/load-check.service.mjs +21 -21
  148. package/esm2022/lib/services/loader.service.mjs +33 -33
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
  150. package/esm2022/lib/services/netcore.service.mjs +56 -56
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -31
  152. package/esm2022/lib/services/otp.service.mjs +43 -43
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -43
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
  156. package/esm2022/lib/services/timer.service.mjs +23 -23
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -71
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -55
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -64
  160. package/esm2022/lib/services/viewer-util.service.mjs +599 -590
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
  163. package/esm2022/public-api.mjs +73 -71
  164. package/esm2022/sunbird-cb-toc.mjs +4 -4
  165. package/fesm2022/sunbird-cb-toc.mjs +24942 -24771
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  167. package/index.d.ts +6 -5
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
  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 -31
  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 -15
  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 -20
  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 -22
  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 -15
  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 -22
  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 -22
  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 -9
  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 -11
  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 -12
  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 -18
  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 -14
  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 -11
  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 -17
  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 -14
  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 -199
  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 -16
  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 -10
  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 -38
  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 -19
  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 -11
  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 -183
  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 -41
  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 -54
  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 -47
  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 +57 -49
  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 +186 -171
  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 -8
  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 -16
  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 -40
  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 -21
  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 -45
  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 -10
  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 -10
  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 -128
  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 -51
  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 -29
  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 -9
  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 -7
  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 -7
  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 -28
  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 -24
  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 -14
  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 -9
  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 -12
  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 -10
  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 -22
  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 -8
  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 -18
  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 -8
  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 +16 -15
  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 -35
  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 -19
  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 -14
  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 -13
  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 -11
  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 -11
  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 -15
  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 -10
  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 -16
  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 -11
  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 -34
  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 -17
  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 -15
  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 -15
  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 -21
  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 -12
  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 -21
  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 -9
  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 -47
  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 -14
  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 -22
  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 -19
  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 -15
  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 -25
  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 -21
  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 -18
  323. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  324. package/lib/_collection-api.d.ts +35 -34
  325. package/lib/_collection-api.d.ts.map +1 -0
  326. package/lib/_constants/widget-content.constants.d.ts +8 -7
  327. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  328. package/lib/_directives/tooltip.directive.d.ts +18 -17
  329. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  330. package/lib/_models/common.model.d.ts +4 -3
  331. package/lib/_models/common.model.d.ts.map +1 -0
  332. package/lib/_models/error.model.d.ts +6 -5
  333. package/lib/_models/error.model.d.ts.map +1 -0
  334. package/lib/_pipes/highlight.pipe.d.ts +11 -10
  335. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  336. package/lib/_services/rating.service.d.ts +19 -18
  337. package/lib/_services/rating.service.d.ts.map +1 -0
  338. package/lib/_services/samuhik-charcha.service.d.ts +14 -13
  339. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  340. package/lib/_services/viewer-route-util.d.ts +9 -8
  341. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  342. package/lib/_services/widget-content.model.d.ts +516 -515
  343. package/lib/_services/widget-content.model.d.ts.map +1 -0
  344. package/lib/_services/widget-content.service.d.ts +102 -101
  345. package/lib/_services/widget-content.service.d.ts.map +1 -0
  346. package/lib/_shared/translate-loader.factory.d.ts +8 -7
  347. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  348. package/lib/app-toc-lib.module.d.ts +89 -88
  349. package/lib/app-toc-lib.module.d.ts.map +1 -0
  350. package/lib/collection.config.d.ts +160 -159
  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 -17
  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 -225
  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 -78
  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 -22
  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 -31
  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 -47
  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 -14
  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 -21
  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 -314
  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 +415 -408
  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 -47
  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 -22
  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 -14
  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 -149
  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 -42
  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 -27
  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 -15
  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 -195
  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 -44
  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 -54
  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 -18
  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 -43
  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 -20
  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 -13
  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 -152
  401. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  402. package/lib/models/app-toc.model.d.ts +85 -84
  403. package/lib/models/app-toc.model.d.ts.map +1 -0
  404. package/lib/models/auto-complete.model.d.ts +28 -27
  405. package/lib/models/auto-complete.model.d.ts.map +1 -0
  406. package/lib/models/card-content.model.d.ts +20 -19
  407. package/lib/models/card-content.model.d.ts.map +1 -0
  408. package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
  409. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  410. package/lib/models/discussion-forum.model.d.ts +41 -40
  411. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  412. package/lib/models/goal.model.d.ts +23 -22
  413. package/lib/models/goal.model.d.ts.map +1 -0
  414. package/lib/models/meta-tag.model.d.ts +7 -6
  415. package/lib/models/meta-tag.model.d.ts.map +1 -0
  416. package/lib/models/playlist.model.d.ts +24 -23
  417. package/lib/models/playlist.model.d.ts.map +1 -0
  418. package/lib/models/profile-revamp.model.d.ts +15 -14
  419. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  420. package/lib/models/rating.model.d.ts +18 -17
  421. package/lib/models/rating.model.d.ts.map +1 -0
  422. package/lib/models/user-profile.model.d.ts +38 -37
  423. package/lib/models/user-profile.model.d.ts.map +1 -0
  424. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
  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 -12
  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 -16
  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 -12
  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 -16
  433. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  434. package/lib/resolvers/config-resolver.service.d.ts +12 -11
  435. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  436. package/lib/resolvers/profile-resolver.service.d.ts +12 -11
  437. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  438. package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
  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 -19
  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 -8
  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 -8
  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 -29
  447. package/lib/services/access-control.service.d.ts.map +1 -0
  448. package/lib/services/action.service.d.ts +10 -9
  449. package/lib/services/action.service.d.ts.map +1 -0
  450. package/lib/services/app-toc-v2.service.d.ts +17 -16
  451. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  452. package/lib/services/app-toc.service.d.ts +241 -235
  453. package/lib/services/app-toc.service.d.ts.map +1 -0
  454. package/lib/services/certificate.service.d.ts +43 -42
  455. package/lib/services/certificate.service.d.ts.map +1 -0
  456. package/lib/services/discuss-utils.service.d.ts +34 -33
  457. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  458. package/lib/services/editor.service.d.ts +18 -17
  459. package/lib/services/editor.service.d.ts.map +1 -0
  460. package/lib/services/load-check.service.d.ts +9 -8
  461. package/lib/services/load-check.service.d.ts.map +1 -0
  462. package/lib/services/loader.service.d.ts +17 -16
  463. package/lib/services/loader.service.d.ts.map +1 -0
  464. package/lib/services/mobile-apps.service.d.ts +39 -38
  465. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  466. package/lib/services/netcore.service.d.ts +34 -33
  467. package/lib/services/netcore.service.d.ts.map +1 -0
  468. package/lib/services/nps-grid.service.d.ts +16 -15
  469. package/lib/services/nps-grid.service.d.ts.map +1 -0
  470. package/lib/services/otp.service.d.ts +21 -20
  471. package/lib/services/otp.service.d.ts.map +1 -0
  472. package/lib/services/profile-v2.service.d.ts +21 -20
  473. package/lib/services/profile-v2.service.d.ts.map +1 -0
  474. package/lib/services/reset-ratings.service.d.ts +9 -8
  475. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  476. package/lib/services/resource-download-helper.service.d.ts +30 -29
  477. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  478. package/lib/services/timer.service.d.ts +10 -9
  479. package/lib/services/timer.service.d.ts.map +1 -0
  480. package/lib/services/title-tag.service.d.ts +22 -21
  481. package/lib/services/title-tag.service.d.ts.map +1 -0
  482. package/lib/services/user-profile.service.d.ts +25 -24
  483. package/lib/services/user-profile.service.d.ts.map +1 -0
  484. package/lib/services/viewer-data.service.d.ts +59 -58
  485. package/lib/services/viewer-data.service.d.ts.map +1 -0
  486. package/lib/services/viewer-util.service.d.ts +77 -76
  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 -56
  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 -32
  491. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  492. package/package.json +1 -1
  493. package/public-api.d.ts +59 -56
  494. package/public-api.d.ts.map +1 -0
  495. package/sunbird-cb-toc.d.ts.map +1 -0
@@ -1,139 +1,139 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@sunbird-cb/utils-v2";
4
- import * as i2 from "@angular/router";
5
- import * as i3 from "../../../_services/widget-content.service";
6
- import * as i4 from "@angular/common";
7
- import * as i5 from "../display-content-type/display-content-type.component";
8
- import * as i6 from "@angular/material/divider";
9
- import * as i7 from "@angular/material/legacy-chips";
10
- import * as i8 from "@angular/material/icon";
11
- import * as i9 from "@angular/material/legacy-card";
12
- import * as i10 from "../user-image/user-image.component";
13
- import * as i11 from "@angular/material/legacy-button";
14
- import * as i12 from "../mark-as-complete/mark-as-complete.component";
15
- import * as i13 from "@ngx-translate/core";
16
- export class PlayerBriefComponent {
17
- constructor(configSvc, utilitySvc, router, widgetContentSvc, langtranslations) {
18
- this.configSvc = configSvc;
19
- this.utilitySvc = utilitySvc;
20
- this.router = router;
21
- this.widgetContentSvc = widgetContentSvc;
22
- this.langtranslations = langtranslations;
23
- this.content = null;
24
- this.hasTocStructure = false;
25
- this.tocStructure = null;
26
- this.isPreviewMode = false;
27
- this.forPreview = false;
28
- this.askAuthorEnabled = false;
29
- this.tocConfig = null;
30
- this.showMoreGlance = false;
31
- this.isDownloadableDesktop = false;
32
- this.isDownloadableIos = false;
33
- this.isDownloadableAndroid = false;
34
- }
35
- ngOnInit() {
36
- this.getTocConfig();
37
- if (this.configSvc.restrictedFeatures) {
38
- this.isDownloadableIos = this.configSvc.restrictedFeatures.has('iosDownload');
39
- this.isDownloadableAndroid = this.configSvc.restrictedFeatures.has('androidDownload');
40
- this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
41
- }
42
- }
43
- get isDownloadable() {
44
- if (this.configSvc.instanceConfig &&
45
- this.configSvc.instanceConfig.isDownloadableSource &&
46
- this.configSvc.instanceConfig.isDownloadableAndroidResource &&
47
- this.content &&
48
- this.content.sourceName &&
49
- this.configSvc.instanceConfig.isDownloadableIosResource &&
50
- Object.keys(this.configSvc.instanceConfig.isDownloadableSource).includes(this.content.sourceName.toLowerCase())) {
51
- const sourceShortName = this.content.sourceName || '';
52
- // tslint:disable-next-line:max-line-length
53
- if (!this.utilitySvc.isMobile &&
54
- !this.isDownloadableDesktop &&
55
- this.configSvc.instanceConfig.isDownloadableSource[sourceShortName.toLowerCase()].includes(this.content.resourceType.toLowerCase())) {
56
- return true;
57
- }
58
- if (this.utilitySvc.isIos &&
59
- !this.isDownloadableIos &&
60
- // tslint:disable-next-line: ter-computed-property-spacing
61
- this.configSvc.instanceConfig.isDownloadableIosResource[sourceShortName.toLowerCase()
62
- // tslint:disable-next-line: ter-computed-property-spacing
63
- ].includes(this.content.resourceType.toLowerCase())) {
64
- return true;
65
- }
66
- if (this.utilitySvc.isAndroid &&
67
- !this.isDownloadableAndroid &&
68
- // tslint:disable-next-line: ter-computed-property-spacing
69
- this.configSvc.instanceConfig.isDownloadableAndroidResource[sourceShortName.toLowerCase()
70
- // tslint:disable-next-line: ter-computed-property-spacing
71
- ].includes(this.content.resourceType.toLowerCase())) {
72
- return true;
73
- }
74
- return false;
75
- }
76
- return false;
77
- }
78
- goToContent(id) {
79
- this.router.navigate([`/app/toc/${id}/overview`]);
80
- }
81
- getViewCount(content) {
82
- if (content && this.configSvc.rootOrg && content.viewCount) {
83
- return content.viewCount[this.configSvc.rootOrg];
84
- }
85
- return 0;
86
- }
87
- getTocConfig() {
88
- const url = `${this.configSvc.sitePath}/feature/toc.json`;
89
- this.widgetContentSvc.fetchConfig(url).subscribe(data => {
90
- this.tocConfig = data;
91
- this.widgetContentSvc.updateTocConfig(data);
92
- });
93
- }
94
- download() {
95
- if (this.content && !this.forPreview) {
96
- const link = document.createElement('a');
97
- link.download = this.content.name;
98
- link.target = '_self';
99
- // Construct the URI
100
- link.href = this.content.artifactUrl || '';
101
- document.body.appendChild(link);
102
- link.click();
103
- // Cleanup the DOM
104
- document.body.removeChild(link);
105
- }
106
- // delete link;
107
- }
108
- parseJsonData(s) {
109
- try {
110
- const parsedString = JSON.parse(s);
111
- return parsedString;
112
- }
113
- catch {
114
- return [];
115
- }
116
- }
117
- translateLabels(label, type) {
118
- return this.langtranslations.translateLabel(label, type, '');
119
- }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, deps: [{ token: i1.ConfigurationsService }, { token: i1.UtilityService }, { token: i2.Router }, { token: i3.WidgetContentService }, { token: i1.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PlayerBriefComponent, selector: "ws-widget-player-brief", inputs: { content: "content", hasTocStructure: "hasTocStructure", tocStructure: "tocStructure", isPreviewMode: "isPreviewMode", forPreview: "forPreview", askAuthorEnabled: "askAuthorEnabled" }, ngImport: i0, template: "<div class=\"md:px-2\">\r\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\r\n <ng-container *ngIf=\"content && isDownloadable\">\r\n <mat-card class=\"mb-4\">\r\n <button mat-button color=\"primary\" (click)=\"download()\">\r\n <mat-icon>cloud_download</mat-icon>\r\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\r\n </button>\r\n </mat-card>\r\n </ng-container>\r\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\r\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\r\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type>\r\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\r\n {{ content?.resourceType }}\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.complexityLevel }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.duration | pipeDurationTransform: 'hms' }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\r\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\r\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ getViewCount(content) | pipeCountTransform }}\r\n <ng-container *ngIf=\"content?.uniqueLearners\">\r\n ({{ content?.uniqueLearners | pipeCountTransform }}\r\n <ng-container >Unique)</ng-container>\r\n </ng-container>\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.sourceShortName }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\r\n <!-- Structure -->\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\r\n <div class=\"ws-mat-accent-text width-expand\">\r\n <h3 *ngIf=\"tocStructure?.course > 0\">\r\n <ng-container>{{ tocStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\r\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.video > 0\">\r\n <ng-container>{{ tocStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\r\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\r\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\r\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\r\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\r\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\r\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\r\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\r\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\r\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\r\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.other > 0\">\r\n <ng-container>{{ tocStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\r\n </h3>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.lastUpdatedOn | date }}\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"showMoreGlance\">\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.expiryDate | date }}\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.learningMode }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.region }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.locale | uppercase }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\r\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\r\n </span>\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.keywords?.join(', ') }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\r\n <ng-container *ngFor=\"let item of content?.collections\">\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\r\n <mat-chip-list>\r\n <mat-chip>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\r\n item.name }} </a>\r\n </ng-container>\r\n </h3>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n <div class=\"text-right mt-2\">\r\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\r\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\r\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\r\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\r\n </button>\r\n </div>\r\n </mat-card>\r\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\r\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\r\n </ws-widget-user-content-rating> -->\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorContacts,\r\n title: 'CONTACT'\r\n }\">\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <mat-card>\r\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\r\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\r\n <mat-divider></mat-divider>\r\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\r\n [email]=\"author.email\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\r\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\r\n </ws-widget-btn-mail-user>\r\n </div>\r\n </div>\r\n </mat-card>\r\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DisplayContentTypeComponent, selector: "ws-widget-display-content-type", inputs: ["displayContentType"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.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: i7.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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i10.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i11.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MarkAsCompleteComponent, selector: "ws-widget-mark-as-complete", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i1.PipeCountTransformPipe, name: "pipeCountTransform" }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
122
- }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, decorators: [{
124
- type: Component,
125
- args: [{ selector: 'ws-widget-player-brief', template: "<div class=\"md:px-2\">\r\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\r\n <ng-container *ngIf=\"content && isDownloadable\">\r\n <mat-card class=\"mb-4\">\r\n <button mat-button color=\"primary\" (click)=\"download()\">\r\n <mat-icon>cloud_download</mat-icon>\r\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\r\n </button>\r\n </mat-card>\r\n </ng-container>\r\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\r\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\r\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type>\r\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\r\n {{ content?.resourceType }}\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.complexityLevel }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.duration | pipeDurationTransform: 'hms' }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\r\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\r\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ getViewCount(content) | pipeCountTransform }}\r\n <ng-container *ngIf=\"content?.uniqueLearners\">\r\n ({{ content?.uniqueLearners | pipeCountTransform }}\r\n <ng-container >Unique)</ng-container>\r\n </ng-container>\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.sourceShortName }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\r\n <!-- Structure -->\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\r\n <div class=\"ws-mat-accent-text width-expand\">\r\n <h3 *ngIf=\"tocStructure?.course > 0\">\r\n <ng-container>{{ tocStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\r\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.video > 0\">\r\n <ng-container>{{ tocStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\r\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\r\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\r\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\r\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\r\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\r\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\r\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\r\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\r\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\r\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.other > 0\">\r\n <ng-container>{{ tocStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\r\n </h3>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.lastUpdatedOn | date }}\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"showMoreGlance\">\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.expiryDate | date }}\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.learningMode }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.region }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.locale | uppercase }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\r\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\r\n </span>\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.keywords?.join(', ') }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\r\n <ng-container *ngFor=\"let item of content?.collections\">\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\r\n <mat-chip-list>\r\n <mat-chip>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\r\n item.name }} </a>\r\n </ng-container>\r\n </h3>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n <div class=\"text-right mt-2\">\r\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\r\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\r\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\r\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\r\n </button>\r\n </div>\r\n </mat-card>\r\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\r\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\r\n </ws-widget-user-content-rating> -->\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorContacts,\r\n title: 'CONTACT'\r\n }\">\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <mat-card>\r\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\r\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\r\n <mat-divider></mat-divider>\r\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\r\n [email]=\"author.email\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\r\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\r\n </ws-widget-btn-mail-user>\r\n </div>\r\n </div>\r\n </mat-card>\r\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .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"] }]
126
- }], ctorParameters: function () { return [{ type: i1.ConfigurationsService }, { type: i1.UtilityService }, { type: i2.Router }, { type: i3.WidgetContentService }, { type: i1.MultilingualTranslationsService }]; }, propDecorators: { content: [{
127
- type: Input
128
- }], hasTocStructure: [{
129
- type: Input
130
- }], tocStructure: [{
131
- type: Input
132
- }], isPreviewMode: [{
133
- type: Input
134
- }], forPreview: [{
135
- type: Input
136
- }], askAuthorEnabled: [{
137
- type: Input
138
- }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWJyaWVmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL3BsYXllci1icmllZi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vcGxheWVyLWJyaWVmL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBV3hELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CLFlBQ1MsU0FBZ0MsRUFDL0IsVUFBMEIsRUFDMUIsTUFBYyxFQUNkLGdCQUFzQyxFQUN0QyxnQkFBaUQ7UUFKbEQsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQW5CM0QsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFFekMsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFFdkIsaUJBQVksR0FBUSxJQUFJLENBQUE7UUFFeEIsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUVsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFRLElBQUksQ0FBQTtRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVF0QiwwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQTtJQUh6QixDQUFDO0lBS0wsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsNkJBQTZCO1lBQzNELElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QjtZQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FDdEMsRUFDRDtZQUNBLE1BQU0sZUFBZSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtZQUM3RCwyQ0FBMkM7WUFDM0MsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUN4QyxFQUNEO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztnQkFDckIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUN2QiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUNyRCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUN6RCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQWtDO1FBQzdDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDakQ7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsbUJBQW1CLENBQUE7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFFckIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFBO1lBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUVaLGtCQUFrQjtZQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztRQUVELGVBQWU7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUk7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sWUFBWSxDQUFBO1NBQ3BCO1FBQUMsTUFBTTtZQUNOLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7K0dBcElVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdRQ1hqQyxnd2dCQTJQYzs7NEZEaFBELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSx3QkFBd0I7K09BTWxDLE9BQU87c0JBRE4sS0FBSztnQkFHTixlQUFlO3NCQURkLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xyXG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtcGxheWVyLWJyaWVmJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGxheWVyLWJyaWVmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYXllckJyaWVmQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXHJcbiAgQElucHV0KClcclxuICBoYXNUb2NTdHJ1Y3R1cmUgPSBmYWxzZVxyXG4gIEBJbnB1dCgpXHJcbiAgdG9jU3RydWN0dXJlOiBhbnkgPSBudWxsXHJcbiAgQElucHV0KClcclxuICBpc1ByZXZpZXdNb2RlID0gZmFsc2VcclxuICBASW5wdXQoKVxyXG4gIGZvclByZXZpZXcgPSBmYWxzZVxyXG4gIEBJbnB1dCgpXHJcbiAgYXNrQXV0aG9yRW5hYmxlZCA9IGZhbHNlXHJcbiAgdG9jQ29uZmlnOiBhbnkgPSBudWxsXHJcblxyXG4gIHNob3dNb3JlR2xhbmNlID0gZmFsc2VcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVN2YzogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3RyYW5zbGF0aW9uczogTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSxcclxuICApIHsgfVxyXG4gIGlzRG93bmxvYWRhYmxlRGVza3RvcCA9IGZhbHNlXHJcbiAgaXNEb3dubG9hZGFibGVJb3MgPSBmYWxzZVxyXG4gIGlzRG93bmxvYWRhYmxlQW5kcm9pZCA9IGZhbHNlXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRUb2NDb25maWcoKVxyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlSW9zID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnaW9zRG93bmxvYWQnKVxyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlQW5kcm9pZCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2FuZHJvaWREb3dubG9hZCcpXHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVEZXNrdG9wID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnZG93bmxvYWRSZXF1ZXN0JylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc0Rvd25sb2FkYWJsZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcgJiZcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UgJiZcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVBbmRyb2lkUmVzb3VyY2UgJiZcclxuICAgICAgdGhpcy5jb250ZW50ICYmXHJcbiAgICAgIHRoaXMuY29udGVudC5zb3VyY2VOYW1lICYmXHJcbiAgICAgIHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnLmlzRG93bmxvYWRhYmxlSW9zUmVzb3VyY2UgJiZcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UpLmluY2x1ZGVzKFxyXG4gICAgICAgIHRoaXMuY29udGVudC5zb3VyY2VOYW1lLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBjb25zdCBzb3VyY2VTaG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuY29udGVudC5zb3VyY2VOYW1lIHx8ICcnXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLnV0aWxpdHlTdmMuaXNNb2JpbGUgJiZcclxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZURlc2t0b3AgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZVNvdXJjZVtzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKV0uaW5jbHVkZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnV0aWxpdHlTdmMuaXNJb3MgJiZcclxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZUlvcyAmJlxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUlvc1Jlc291cmNlW1xyXG4gICAgICAgICAgc291cmNlU2hvcnROYW1lLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICBdLmluY2x1ZGVzKHRoaXMuY29udGVudC5yZXNvdXJjZVR5cGUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzQW5kcm9pZCAmJlxyXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlQW5kcm9pZCAmJlxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZVtcclxuICAgICAgICAgIHNvdXJjZVNob3J0TmFtZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHRlci1jb21wdXRlZC1wcm9wZXJ0eS1zcGFjaW5nXHJcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGdvVG9Db250ZW50KGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2FwcC90b2MvJHtpZH0vb3ZlcnZpZXdgXSlcclxuICB9XHJcbiAgZ2V0Vmlld0NvdW50KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwpIHtcclxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuY29uZmlnU3ZjLnJvb3RPcmcgJiYgY29udGVudC52aWV3Q291bnQpIHtcclxuICAgICAgcmV0dXJuIGNvbnRlbnQudmlld0NvdW50W3RoaXMuY29uZmlnU3ZjLnJvb3RPcmddXHJcbiAgICB9XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuICBnZXRUb2NDb25maWcoKSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZ1N2Yy5zaXRlUGF0aH0vZmVhdHVyZS90b2MuanNvbmBcclxuICAgIHRoaXMud2lkZ2V0Q29udGVudFN2Yy5mZXRjaENvbmZpZyh1cmwpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy50b2NDb25maWcgPSBkYXRhXHJcbiAgICAgIHRoaXMud2lkZ2V0Q29udGVudFN2Yy51cGRhdGVUb2NDb25maWcoZGF0YSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxyXG4gICAgICBsaW5rLnRhcmdldCA9ICdfc2VsZidcclxuXHJcbiAgICAgIC8vIENvbnN0cnVjdCB0aGUgVVJJXHJcbiAgICAgIGxpbmsuaHJlZiA9IHRoaXMuY29udGVudC5hcnRpZmFjdFVybCB8fCAnJ1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspXHJcbiAgICAgIGxpbmsuY2xpY2soKVxyXG5cclxuICAgICAgLy8gQ2xlYW51cCB0aGUgRE9NXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcclxuICAgIH1cclxuXHJcbiAgICAvLyBkZWxldGUgbGluaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXJzZUpzb25EYXRhKHM6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyc2VkU3RyaW5nID0gSlNPTi5wYXJzZShzKVxyXG4gICAgICByZXR1cm4gcGFyc2VkU3RyaW5nXHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIFtdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVMYWJlbHMobGFiZWw6IHN0cmluZywgdHlwZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndHJhbnNsYXRpb25zLnRyYW5zbGF0ZUxhYmVsKGxhYmVsLCB0eXBlLCAnJylcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1kOnB4LTJcIj5cclxuICA8d3Mtd2lkZ2V0LW1hcmstYXMtY29tcGxldGUgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtjb250ZW50XT1cImNvbnRlbnRcIj48L3dzLXdpZGdldC1tYXJrLWFzLWNvbXBsZXRlPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50ICYmIGlzRG93bmxvYWRhYmxlXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0yXCI+e3sgJ2FwcHRvY2hvbWUuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwid3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kLW9uLWRheSB3cy1tYXQtcHJpbWFyeS1ib3JkZXItdG9wLWJvbGRlciBpbmZvLWNvbnRhaW5lclwiPlxyXG4gICAgPGgyID57eyAnYXBwdG9jaG9tZS5hdEdsYW5jZScgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSAhPT0gY29udGVudFR5cGVzLlJFU09VUkNFXCJcclxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCIgW2Rpc3BsYXlDb250ZW50VHlwZV09XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cclxuICAgICAgPC93cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gY29udGVudFR5cGVzLlJFU09VUkNFXCJcclxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCI+XHJcbiAgICAgICAge3sgY29udGVudD8ucmVzb3VyY2VUeXBlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZGlzcGxheUNvbnRlbnRUeXBlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5lbmFibGVkICYmIGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbCB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5lbmFibGVkICYmIGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmR1cmF0aW9uPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/LmR1cmF0aW9uIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8aDMgKm5nSWY9XCJjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5wYWlkQ29udGVudCcgfCB0cmFuc2xhdGV9fTwvaDM+XHJcbiAgICAgIDxoMyAqbmdJZj1cIiFjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5mcmVlJyB8IHRyYW5zbGF0ZX19PC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZW5hYmxlZCAmJiBjb250ZW50Py52aWV3Q291bnQgJiYgY29uZmlnU3ZjPy5yb290T3JnXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy52aWV3Q291bnQ/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAge3sgZ2V0Vmlld0NvdW50KGNvbnRlbnQpIHwgcGlwZUNvdW50VHJhbnNmb3JtIH19XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LnVuaXF1ZUxlYXJuZXJzXCI+XHJcbiAgICAgICAgICAoe3sgY29udGVudD8udW5pcXVlTGVhcm5lcnMgfCBwaXBlQ291bnRUcmFuc2Zvcm0gfX1cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgPlVuaXF1ZSk8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZW5hYmxlZCAmJiBjb250ZW50Py52aWV3Q291bnQgJiYgY29uZmlnU3ZjPy5yb290T3JnXCI+XHJcbiAgICA8L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZW5hYmxlZCAmJiBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWVcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICB7eyBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWUgfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZW5hYmxlZCAmJiBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWVcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPCEtLSBTdHJ1Y3R1cmUgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcclxuICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uc3RydWN0dXJlPy5lbmFibGVkICYmIGhhc1RvY1N0cnVjdHVyZSAmJiBjb250ZW50Py5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zdHJ1Y3R1cmU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LmNvdXJzZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZTEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmNvdXJzZSA+IDFcIiA+IHt7J2FwcHRvY2hvbWUuY291cnNlczEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZScgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8udmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnZpZGVvID09PSAxXCIgPiB7eydhcHB0b2Nob21lLnZpZGVvJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IHt7J2FwcHRvY2hvbWUudmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cclxuICAgICAgICAgICAge3sncGxheWVyYnJpZWYuaW50ZXJhY3RpdmVWaWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA+IDFcIiA+XHJcbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ueW91dHViZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ueW91dHViZSA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYueW91dHViZVZpZGVvJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy55b3V0dWJlID4gMVwiID4ge3sncGxheWVyYnJpZWYueW91dHViZVZpZGVvcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUucGRmJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPiAxXCIgPiB7eydhcHB0b2Nob21lLnBkZnMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5wb2RjYXN0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi5wb2RjYXN0JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID4gMVwiID4ge3sncGxheWVyYnJpZWYucG9kY2FzdHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi53ZWJNb2R1bGUnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLndlYk1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViUGFnZSA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy53ZWJQYWdlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2UnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2VzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucXVpeiB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYucXVpeicgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLnF1aXp6ZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmFzc2Vzc21lbnQnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAxXCIgPiB7eydhcHB0b2Nob21lLmFzc2Vzc21lbnRzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/Lm90aGVyID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/Lm90aGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW0nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/Lm90aGVyID4gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW1zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zdHJ1Y3R1cmU/LmVuYWJsZWQgJiYgaGFzVG9jU3RydWN0dXJlICYmIGNvbnRlbnQ/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubGFzdFVwZGF0ZWRPbj8uZW5hYmxlZCAmJiBjb250ZW50Py5sYXN0VXBkYXRlZE9uXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sYXN0VXBkYXRlZE9uPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/Lmxhc3RVcGRhdGVkT24gfCBkYXRlIH19XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TW9yZUdsYW5jZVwiPlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubGFzdFVwZGF0ZWRPbj8uZW5hYmxlZCAmJiBjb250ZW50Py5sYXN0VXBkYXRlZE9uXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZW5hYmxlZCAmJiBjb250ZW50Py5leHBpcnlEYXRlICYmIGNvbnRlbnQ/LmV4cGlyeURhdGU/LnN0YXJ0c1dpdGgoJzIwJylcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgICAge3sgY29udGVudD8uZXhwaXJ5RGF0ZSB8IGRhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZW5hYmxlZCAmJiBjb250ZW50Py5leHBpcnlEYXRlICYmIGNvbnRlbnQ/LmV4cGlyeURhdGU/LnN0YXJ0c1dpdGgoJzIwJylcIj5cclxuICAgICAgPC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmxlYXJuaW5nTW9kZT8uZW5hYmxlZCAmJiBjb250ZW50Py5sZWFybmluZ01vZGVcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8ubGVhcm5pbmdNb2RlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICB7eyBjb250ZW50Py5sZWFybmluZ01vZGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmxlYXJuaW5nTW9kZT8uZW5hYmxlZCAmJiBjb250ZW50Py5sZWFybmluZ01vZGVcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ucmVnaW9uPy5lbmFibGVkICYmIGNvbnRlbnQ/LnJlZ2lvbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgICAge3sgY29udGVudD8ucmVnaW9uIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5yZWdpb24/LmVuYWJsZWQgJiYgY29udGVudD8ucmVnaW9uPy5sZW5ndGhcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sb2NhbGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmxvY2FsZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIlxyXG4gICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmhhc1RyYW5zbGF0aW9ucz8uZW5hYmxlZCAmJiAoY29udGVudD8uaGFzVHJhbnNsYXRpb25zPy5sZW5ndGggfHwgY29udGVudD8uaXNUcmFuc2xhdGlvbk9mPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmRpc3BsYXlOYW1lfX08L2gzPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZ29Ub0NvbnRlbnQodHJhbnM/LmlkZW50aWZpZXIpXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zIG9mIGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucyB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2ZcIj57eyB0cmFucy5sb2NhbGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uaGFzVHJhbnNsYXRpb25zPy5lbmFibGVkICYmIChjb250ZW50Py5oYXNUcmFuc2xhdGlvbnM/Lmxlbmd0aCB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2Y/Lmxlbmd0aClcIj5cclxuICAgICAgPC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5lbmFibGVkICYmIGNvbnRlbnQ/LmtleXdvcmRzPy5sZW5ndGhcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7dG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5kaXNwbGF5TmFtZX19PC9oMz5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICB7eyBjb250ZW50Py5rZXl3b3Jkcz8uam9pbignLCAnKSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ua2V5d29yZHM/LmVuYWJsZWQgJiYgY29udGVudD8ua2V5d29yZHM/Lmxlbmd0aFwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uY29sbGVjdGlvbnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcclxuICAgICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmN1cmF0ZWRJbktCPy5lbmFibGVkICYmIGl0ZW0uY29udGVudFR5cGUgPT09ICdLbm93bGVkZ2UgQm9hcmQnICYmIGl0ZW0uc3RhdHVzID09PSAnTGl2ZSdcIj5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3t0b2NDb25maWc/LmF0QUdsYW5jZT8uY3VyYXRlZEluS0I/LmRpc3BsYXlOYW1lfX08L2gzPlxyXG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgICAgIDxtYXQtY2hpcD5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50VHlwZSA9PT0gJ0tub3dsZWRnZSBCb2FyZCcgJiYgaXRlbS5zdGF0dXMgPT09ICdMaXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCInL2FwcC90b2MvJyArIGl0ZW0uaWRlbnRpZmllciArICcvb3ZlcnZpZXc/cHJpbWFyeUNhdGVnb3J5PScrIGl0ZW0ucHJpbWFyeUNhdGVnb3J5IFwiPiB7e1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSB9fSA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IG10LTJcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93TW9yZUdsYW5jZSA9ICFzaG93TW9yZUdsYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyAhc2hvd01vcmVHbGFuY2UgPyAnYXJyb3dfZHJvcF9kb3duJyA6ICdhcnJvd19kcm9wX3VwJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93TW9yZUdsYW5jZVwiPnt7J3BsYXllcmJyaWVmLnNob3dNb3JlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd0xlc3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1jYXJkPlxyXG4gIDwhLS0gPHdzLXdpZGdldC11c2VyLWNvbnRlbnQtcmF0aW5nIGNsYXNzPVwibWItNCBibG9ja1wiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtjb250ZW50SWRdPVwiY29udGVudD8uaWRlbnRpZmllclwiXHJcbiAgICBbaXNEaXNhYmxlZF09XCJpc1ByZXZpZXdNb2RlXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiPlxyXG4gIDwvd3Mtd2lkZ2V0LXVzZXItY29udGVudC1yYXRpbmc+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJoaWRkZW4gc206YmxvY2sgbWFyZ2luLWJvdHRvbS1tXCIgKm5nSWY9XCJjb250ZW50Py5jcmVhdG9yRGV0YWlscz8ubGVuZ3RoXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yRGV0YWlscyxcclxuICAgICAgICB0aXRsZTogJ0FVVEhPUidcclxuICAgICAgfVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpibG9jayBtYXJnaW4tYm90dG9tLW1cIiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JDb250YWN0cz8ubGVuZ3RoXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yQ29udGFjdHMsXHJcbiAgICAgICAgdGl0bGU6ICdDT05UQUNUJ1xyXG4gICAgICB9XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XHJcbiAgPG1hdC1jYXJkPlxyXG4gICAgPGgyICpuZ0lmPVwidGl0bGUgPT09ICdBVVRIT1InXCI+e3sncGxheWVyYnJpZWYuYXV0aG9ycycgfCB0cmFuc2xhdGV9fTwvaDI+XHJcbiAgICA8aDIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0NPTlRBQ1QnXCI+e3sncGxheWVyYnJpZWYuY3VyYXRvcmNvbnRhY3QnIHwgdHJhbnNsYXRlfX08L2gyPlxyXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhdXRob3Igb2YgcGFyc2VKc29uRGF0YShhdXRob3JzKVwiIGNsYXNzPVwiYXV0aG9yXCI+XHJcbiAgICAgIDx3cy13aWRnZXQtdXNlci1pbWFnZSBjbGFzcz1cImF1dGhvci1pbWFnZVwiIFtpbWFnZVR5cGVdPVwiJ25hbWUtaW5pdGlhbCdcIiBbdXNlck5hbWVdPVwiYXV0aG9yLm5hbWUgfHwgJydcIlxyXG4gICAgICAgIFtlbWFpbF09XCJhdXRob3IuZW1haWxcIj48L3dzLXdpZGdldC11c2VyLWltYWdlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2lkdGgtZXhwYW5kIGZsZXggZmxleC1taWRkbGUgZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwibWFyZ2luLXJlbW92ZVwiPnt7IGF1dGhvci5uYW1lIH19PC9oMz5cclxuICAgICAgICA8d3Mtd2lkZ2V0LWJ0bi1tYWlsLXVzZXIgKm5nSWY9XCJhc2tBdXRob3JFbmFibGVkXCIgW3dpZGdldERhdGFdPVwieyBjb250ZW50OiBjb250ZW50LCBlbWFpbHM6IFthdXRob3IuZW1haWxdIH1cIj5cclxuICAgICAgICA8L3dzLXdpZGdldC1idG4tbWFpbC11c2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@sunbird-cb/utils-v2";
4
+ import * as i2 from "@angular/router";
5
+ import * as i3 from "../../../_services/widget-content.service";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "../display-content-type/display-content-type.component";
8
+ import * as i6 from "@angular/material/divider";
9
+ import * as i7 from "@angular/material/legacy-chips";
10
+ import * as i8 from "@angular/material/icon";
11
+ import * as i9 from "@angular/material/legacy-card";
12
+ import * as i10 from "../user-image/user-image.component";
13
+ import * as i11 from "@angular/material/legacy-button";
14
+ import * as i12 from "../mark-as-complete/mark-as-complete.component";
15
+ import * as i13 from "@ngx-translate/core";
16
+ export class PlayerBriefComponent {
17
+ constructor(configSvc, utilitySvc, router, widgetContentSvc, langtranslations) {
18
+ this.configSvc = configSvc;
19
+ this.utilitySvc = utilitySvc;
20
+ this.router = router;
21
+ this.widgetContentSvc = widgetContentSvc;
22
+ this.langtranslations = langtranslations;
23
+ this.content = null;
24
+ this.hasTocStructure = false;
25
+ this.tocStructure = null;
26
+ this.isPreviewMode = false;
27
+ this.forPreview = false;
28
+ this.askAuthorEnabled = false;
29
+ this.tocConfig = null;
30
+ this.showMoreGlance = false;
31
+ this.isDownloadableDesktop = false;
32
+ this.isDownloadableIos = false;
33
+ this.isDownloadableAndroid = false;
34
+ }
35
+ ngOnInit() {
36
+ this.getTocConfig();
37
+ if (this.configSvc.restrictedFeatures) {
38
+ this.isDownloadableIos = this.configSvc.restrictedFeatures.has('iosDownload');
39
+ this.isDownloadableAndroid = this.configSvc.restrictedFeatures.has('androidDownload');
40
+ this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
41
+ }
42
+ }
43
+ get isDownloadable() {
44
+ if (this.configSvc.instanceConfig &&
45
+ this.configSvc.instanceConfig.isDownloadableSource &&
46
+ this.configSvc.instanceConfig.isDownloadableAndroidResource &&
47
+ this.content &&
48
+ this.content.sourceName &&
49
+ this.configSvc.instanceConfig.isDownloadableIosResource &&
50
+ Object.keys(this.configSvc.instanceConfig.isDownloadableSource).includes(this.content.sourceName.toLowerCase())) {
51
+ const sourceShortName = this.content.sourceName || '';
52
+ // tslint:disable-next-line:max-line-length
53
+ if (!this.utilitySvc.isMobile &&
54
+ !this.isDownloadableDesktop &&
55
+ this.configSvc.instanceConfig.isDownloadableSource[sourceShortName.toLowerCase()].includes(this.content.resourceType.toLowerCase())) {
56
+ return true;
57
+ }
58
+ if (this.utilitySvc.isIos &&
59
+ !this.isDownloadableIos &&
60
+ // tslint:disable-next-line: ter-computed-property-spacing
61
+ this.configSvc.instanceConfig.isDownloadableIosResource[sourceShortName.toLowerCase()
62
+ // tslint:disable-next-line: ter-computed-property-spacing
63
+ ].includes(this.content.resourceType.toLowerCase())) {
64
+ return true;
65
+ }
66
+ if (this.utilitySvc.isAndroid &&
67
+ !this.isDownloadableAndroid &&
68
+ // tslint:disable-next-line: ter-computed-property-spacing
69
+ this.configSvc.instanceConfig.isDownloadableAndroidResource[sourceShortName.toLowerCase()
70
+ // tslint:disable-next-line: ter-computed-property-spacing
71
+ ].includes(this.content.resourceType.toLowerCase())) {
72
+ return true;
73
+ }
74
+ return false;
75
+ }
76
+ return false;
77
+ }
78
+ goToContent(id) {
79
+ this.router.navigate([`/app/toc/${id}/overview`]);
80
+ }
81
+ getViewCount(content) {
82
+ if (content && this.configSvc.rootOrg && content.viewCount) {
83
+ return content.viewCount[this.configSvc.rootOrg];
84
+ }
85
+ return 0;
86
+ }
87
+ getTocConfig() {
88
+ const url = `${this.configSvc.sitePath}/feature/toc.json`;
89
+ this.widgetContentSvc.fetchConfig(url).subscribe(data => {
90
+ this.tocConfig = data;
91
+ this.widgetContentSvc.updateTocConfig(data);
92
+ });
93
+ }
94
+ download() {
95
+ if (this.content && !this.forPreview) {
96
+ const link = document.createElement('a');
97
+ link.download = this.content.name;
98
+ link.target = '_self';
99
+ // Construct the URI
100
+ link.href = this.content.artifactUrl || '';
101
+ document.body.appendChild(link);
102
+ link.click();
103
+ // Cleanup the DOM
104
+ document.body.removeChild(link);
105
+ }
106
+ // delete link;
107
+ }
108
+ parseJsonData(s) {
109
+ try {
110
+ const parsedString = JSON.parse(s);
111
+ return parsedString;
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ }
117
+ translateLabels(label, type) {
118
+ return this.langtranslations.translateLabel(label, type, '');
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, deps: [{ token: i1.ConfigurationsService }, { token: i1.UtilityService }, { token: i2.Router }, { token: i3.WidgetContentService }, { token: i1.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PlayerBriefComponent, selector: "ws-widget-player-brief", inputs: { content: "content", hasTocStructure: "hasTocStructure", tocStructure: "tocStructure", isPreviewMode: "isPreviewMode", forPreview: "forPreview", askAuthorEnabled: "askAuthorEnabled" }, ngImport: i0, template: "<div class=\"md:px-2\">\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\n <ng-container *ngIf=\"content && isDownloadable\">\n <mat-card class=\"mb-4\">\n <button mat-button color=\"primary\" (click)=\"download()\">\n <mat-icon>cloud_download</mat-icon>\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\n </button>\n </mat-card>\n </ng-container>\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type>\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\n {{ content?.resourceType }}\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.complexityLevel }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.duration | pipeDurationTransform: 'hms' }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ getViewCount(content) | pipeCountTransform }}\n <ng-container *ngIf=\"content?.uniqueLearners\">\n ({{ content?.uniqueLearners | pipeCountTransform }}\n <ng-container >Unique)</ng-container>\n </ng-container>\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.sourceShortName }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\n <!-- Structure -->\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\n <div class=\"ws-mat-accent-text width-expand\">\n <h3 *ngIf=\"tocStructure?.course > 0\">\n <ng-container>{{ tocStructure?.course }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.video > 0\">\n <ng-container>{{ tocStructure?.video }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.other > 0\">\n <ng-container>{{ tocStructure?.other }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\n </h3>\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.lastUpdatedOn | date }}\n </h3>\n </div>\n <ng-container *ngIf=\"showMoreGlance\">\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.expiryDate | date }}\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.learningMode }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.region }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.locale | uppercase }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\n </span>\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.keywords?.join(', ') }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\n <ng-container *ngFor=\"let item of content?.collections\">\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\n <mat-chip-list>\n <mat-chip>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\n item.name }} </a>\n </ng-container>\n </h3>\n </mat-chip>\n </mat-chip-list>\n </div>\n </ng-container>\n <mat-divider></mat-divider>\n </ng-container>\n <div class=\"text-right mt-2\">\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\n </button>\n </div>\n </mat-card>\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\n </ws-widget-user-content-rating> -->\n <div class=\"hidden sm:block 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 <div class=\"hidden sm:block 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>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of parseJsonData(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 <h3 class=\"margin-remove\">{{ author.name }}</h3>\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>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DisplayContentTypeComponent, selector: "ws-widget-display-content-type", inputs: ["displayContentType"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.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: i7.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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i10.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i11.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i12.MarkAsCompleteComponent, selector: "ws-widget-mark-as-complete", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i1.PipeCountTransformPipe, name: "pipeCountTransform" }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: 'ws-widget-player-brief', template: "<div class=\"md:px-2\">\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\n <ng-container *ngIf=\"content && isDownloadable\">\n <mat-card class=\"mb-4\">\n <button mat-button color=\"primary\" (click)=\"download()\">\n <mat-icon>cloud_download</mat-icon>\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\n </button>\n </mat-card>\n </ng-container>\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type>\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\n {{ content?.resourceType }}\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.complexityLevel }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.duration | pipeDurationTransform: 'hms' }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ getViewCount(content) | pipeCountTransform }}\n <ng-container *ngIf=\"content?.uniqueLearners\">\n ({{ content?.uniqueLearners | pipeCountTransform }}\n <ng-container >Unique)</ng-container>\n </ng-container>\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.sourceShortName }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\n <!-- Structure -->\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\n <div class=\"ws-mat-accent-text width-expand\">\n <h3 *ngIf=\"tocStructure?.course > 0\">\n <ng-container>{{ tocStructure?.course }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.video > 0\">\n <ng-container>{{ tocStructure?.video }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.other > 0\">\n <ng-container>{{ tocStructure?.other }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\n </h3>\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.lastUpdatedOn | date }}\n </h3>\n </div>\n <ng-container *ngIf=\"showMoreGlance\">\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.expiryDate | date }}\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.learningMode }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.region }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.locale | uppercase }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\n </span>\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.keywords?.join(', ') }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\n <ng-container *ngFor=\"let item of content?.collections\">\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\n <mat-chip-list>\n <mat-chip>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\n item.name }} </a>\n </ng-container>\n </h3>\n </mat-chip>\n </mat-chip-list>\n </div>\n </ng-container>\n <mat-divider></mat-divider>\n </ng-container>\n <div class=\"text-right mt-2\">\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\n </button>\n </div>\n </mat-card>\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\n </ws-widget-user-content-rating> -->\n <div class=\"hidden sm:block 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 <div class=\"hidden sm:block 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>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of parseJsonData(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 <h3 class=\"margin-remove\">{{ author.name }}</h3>\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>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .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"] }]
126
+ }], ctorParameters: function () { return [{ type: i1.ConfigurationsService }, { type: i1.UtilityService }, { type: i2.Router }, { type: i3.WidgetContentService }, { type: i1.MultilingualTranslationsService }]; }, propDecorators: { content: [{
127
+ type: Input
128
+ }], hasTocStructure: [{
129
+ type: Input
130
+ }], tocStructure: [{
131
+ type: Input
132
+ }], isPreviewMode: [{
133
+ type: Input
134
+ }], forPreview: [{
135
+ type: Input
136
+ }], askAuthorEnabled: [{
137
+ type: Input
138
+ }] } });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWJyaWVmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL3BsYXllci1icmllZi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vcGxheWVyLWJyaWVmL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBV3hELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CLFlBQ1MsU0FBZ0MsRUFDL0IsVUFBMEIsRUFDMUIsTUFBYyxFQUNkLGdCQUFzQyxFQUN0QyxnQkFBaUQ7UUFKbEQsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQW5CM0QsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFFekMsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFFdkIsaUJBQVksR0FBUSxJQUFJLENBQUE7UUFFeEIsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUVsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFRLElBQUksQ0FBQTtRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVF0QiwwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQTtJQUh6QixDQUFDO0lBS0wsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsNkJBQTZCO1lBQzNELElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QjtZQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FDdEMsRUFDRDtZQUNBLE1BQU0sZUFBZSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtZQUM3RCwyQ0FBMkM7WUFDM0MsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUN4QyxFQUNEO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztnQkFDckIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUN2QiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUNyRCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUN6RCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQWtDO1FBQzdDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDakQ7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsbUJBQW1CLENBQUE7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFFckIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFBO1lBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUVaLGtCQUFrQjtZQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztRQUVELGVBQWU7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUk7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sWUFBWSxDQUFBO1NBQ3BCO1FBQUMsTUFBTTtZQUNOLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7K0dBcElVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdRQ1hqQywwd2ZBMlBjOzs0RkRoUEQsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QjsrT0FNbEMsT0FBTztzQkFETixLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtcGxheWVyLWJyaWVmJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYXllci1icmllZi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQbGF5ZXJCcmllZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpXG4gIGhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXG4gIEBJbnB1dCgpXG4gIHRvY1N0cnVjdHVyZTogYW55ID0gbnVsbFxuICBASW5wdXQoKVxuICBpc1ByZXZpZXdNb2RlID0gZmFsc2VcbiAgQElucHV0KClcbiAgZm9yUHJldmlldyA9IGZhbHNlXG4gIEBJbnB1dCgpXG4gIGFza0F1dGhvckVuYWJsZWQgPSBmYWxzZVxuICB0b2NDb25maWc6IGFueSA9IG51bGxcblxuICBzaG93TW9yZUdsYW5jZSA9IGZhbHNlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxpdHlTdmM6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd0cmFuc2xhdGlvbnM6IE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsXG4gICkgeyB9XG4gIGlzRG93bmxvYWRhYmxlRGVza3RvcCA9IGZhbHNlXG4gIGlzRG93bmxvYWRhYmxlSW9zID0gZmFsc2VcbiAgaXNEb3dubG9hZGFibGVBbmRyb2lkID0gZmFsc2VcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFRvY0NvbmZpZygpXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xuICAgICAgdGhpcy5pc0Rvd25sb2FkYWJsZUlvcyA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2lvc0Rvd25sb2FkJylcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVBbmRyb2lkID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYW5kcm9pZERvd25sb2FkJylcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVEZXNrdG9wID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnZG93bmxvYWRSZXF1ZXN0JylcbiAgICB9XG4gIH1cblxuICBnZXQgaXNEb3dubG9hZGFibGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcgJiZcbiAgICAgIHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnLmlzRG93bmxvYWRhYmxlU291cmNlICYmXG4gICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZSAmJlxuICAgICAgdGhpcy5jb250ZW50ICYmXG4gICAgICB0aGlzLmNvbnRlbnQuc291cmNlTmFtZSAmJlxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVJb3NSZXNvdXJjZSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UpLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLmNvbnRlbnQuc291cmNlTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3Qgc291cmNlU2hvcnROYW1lOiBzdHJpbmcgPSB0aGlzLmNvbnRlbnQuc291cmNlTmFtZSB8fCAnJ1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy51dGlsaXR5U3ZjLmlzTW9iaWxlICYmXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCAmJlxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZVNvdXJjZVtzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKV0uaW5jbHVkZXMoXG4gICAgICAgICAgdGhpcy5jb250ZW50LnJlc291cmNlVHlwZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzSW9zICYmXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlSW9zICYmXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVJb3NSZXNvdXJjZVtcbiAgICAgICAgICBzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzQW5kcm9pZCAmJlxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZUFuZHJvaWQgJiZcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0ZXItY29tcHV0ZWQtcHJvcGVydHktc3BhY2luZ1xuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZVtcbiAgICAgICAgICBzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdvVG9Db250ZW50KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9hcHAvdG9jLyR7aWR9L292ZXJ2aWV3YF0pXG4gIH1cbiAgZ2V0Vmlld0NvdW50KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwpIHtcbiAgICBpZiAoY29udGVudCAmJiB0aGlzLmNvbmZpZ1N2Yy5yb290T3JnICYmIGNvbnRlbnQudmlld0NvdW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC52aWV3Q291bnRbdGhpcy5jb25maWdTdmMucm9vdE9yZ11cbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuICBnZXRUb2NDb25maWcoKSB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWdTdmMuc2l0ZVBhdGh9L2ZlYXR1cmUvdG9jLmpzb25gXG4gICAgdGhpcy53aWRnZXRDb250ZW50U3ZjLmZldGNoQ29uZmlnKHVybCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy50b2NDb25maWcgPSBkYXRhXG4gICAgICB0aGlzLndpZGdldENvbnRlbnRTdmMudXBkYXRlVG9jQ29uZmlnKGRhdGEpXG4gICAgfSlcbiAgfVxuXG4gIGRvd25sb2FkKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5kb3dubG9hZCA9IHRoaXMuY29udGVudC5uYW1lXG4gICAgICBsaW5rLnRhcmdldCA9ICdfc2VsZidcblxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBVUklcbiAgICAgIGxpbmsuaHJlZiA9IHRoaXMuY29udGVudC5hcnRpZmFjdFVybCB8fCAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIC8vIENsZWFudXAgdGhlIERPTVxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIH1cblxuICAgIC8vIGRlbGV0ZSBsaW5rO1xuICB9XG5cbiAgcHVibGljIHBhcnNlSnNvbkRhdGEoczogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZFN0cmluZyA9IEpTT04ucGFyc2UocylcbiAgICAgIHJldHVybiBwYXJzZWRTdHJpbmdcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZUxhYmVscyhsYWJlbDogc3RyaW5nLCB0eXBlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndHJhbnNsYXRpb25zLnRyYW5zbGF0ZUxhYmVsKGxhYmVsLCB0eXBlLCAnJylcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1kOnB4LTJcIj5cbiAgPHdzLXdpZGdldC1tYXJrLWFzLWNvbXBsZXRlIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIiBbY29udGVudF09XCJjb250ZW50XCI+PC93cy13aWRnZXQtbWFyay1hcy1jb21wbGV0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQgJiYgaXNEb3dubG9hZGFibGVcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYi00XCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImRvd25sb2FkKClcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0yXCI+e3sgJ2FwcHRvY2hvbWUuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxtYXQtY2FyZCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LWxpdGUtYmFja2dyb3VuZC1vbi1kYXkgd3MtbWF0LXByaW1hcnktYm9yZGVyLXRvcC1ib2xkZXIgaW5mby1jb250YWluZXJcIj5cbiAgICA8aDIgPnt7ICdhcHB0b2Nob21lLmF0R2xhbmNlJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5kaXNwbGF5Q29udGVudFR5cGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgPHdzLXdpZGdldC1kaXNwbGF5LWNvbnRlbnQtdHlwZSAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlICE9PSBjb250ZW50VHlwZXMuUkVTT1VSQ0VcIlxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCIgW2Rpc3BsYXlDb250ZW50VHlwZV09XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cbiAgICAgIDwvd3Mtd2lkZ2V0LWRpc3BsYXktY29udGVudC10eXBlPlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlID09PSBjb250ZW50VHlwZXMuUkVTT1VSQ0VcIlxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCI+XG4gICAgICAgIHt7IGNvbnRlbnQ/LnJlc291cmNlVHlwZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb21wbGV4aXR5TGV2ZWw/LmVuYWJsZWQgJiYgY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAge3sgY29udGVudD8uY29tcGxleGl0eUxldmVsIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb21wbGV4aXR5TGV2ZWw/LmVuYWJsZWQgJiYgY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+PC9tYXQtZGl2aWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj5cbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5kdXJhdGlvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgIHt7IGNvbnRlbnQ/LmR1cmF0aW9uIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fVxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb3N0Py5lbmFibGVkXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29zdD8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgKm5nSWY9XCJjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5wYWlkQ29udGVudCcgfCB0cmFuc2xhdGV9fTwvaDM+XG4gICAgICA8aDMgKm5nSWY9XCIhY29udGVudD8uZXhjbHVzaXZlQ29udGVudFwiIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPnt7J2FwcHRvY2hvbWUuZnJlZScgfCB0cmFuc2xhdGV9fTwvaDM+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy52aWV3Q291bnQ/LmVuYWJsZWQgJiYgY29udGVudD8udmlld0NvdW50ICYmIGNvbmZpZ1N2Yz8ucm9vdE9yZ1wiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgIHt7IGdldFZpZXdDb3VudChjb250ZW50KSB8IHBpcGVDb3VudFRyYW5zZm9ybSB9fVxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8udW5pcXVlTGVhcm5lcnNcIj5cbiAgICAgICAgICAoe3sgY29udGVudD8udW5pcXVlTGVhcm5lcnMgfCBwaXBlQ291bnRUcmFuc2Zvcm0gfX1cbiAgICAgICAgICA8bmctY29udGFpbmVyID5VbmlxdWUpPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8udmlld0NvdW50Py5lbmFibGVkICYmIGNvbnRlbnQ/LnZpZXdDb3VudCAmJiBjb25maWdTdmM/LnJvb3RPcmdcIj5cbiAgICA8L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zb3VyY2VTaG9ydE5hbWU/LmVuYWJsZWQgJiYgY29udGVudD8uc291cmNlU2hvcnROYW1lXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uc291cmNlU2hvcnROYW1lPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAge3sgY29udGVudD8uc291cmNlU2hvcnROYW1lIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zb3VyY2VTaG9ydE5hbWU/LmVuYWJsZWQgJiYgY29udGVudD8uc291cmNlU2hvcnROYW1lXCI+PC9tYXQtZGl2aWRlcj5cbiAgICA8IS0tIFN0cnVjdHVyZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZW5hYmxlZCAmJiBoYXNUb2NTdHJ1Y3R1cmUgJiYgY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmNvdXJzZSA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8uY291cnNlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZTEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5jb3Vyc2UgPiAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZXMxJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUubW9kdWxlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS52aWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnZpZGVvID4gMVwiID4ge3snYXBwdG9jaG9tZS52aWRlb3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW8nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ueW91dHViZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPT09IDFcIiA+IHt7J3BsYXllcmJyaWVmLnlvdXR1YmVWaWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPiAxXCIgPiB7eydwbGF5ZXJicmllZi55b3V0dWJlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucGRmID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5wZGYgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUucGRmJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucGRmID4gMVwiID4ge3snYXBwdG9jaG9tZS5wZGZzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucG9kY2FzdCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnBvZGNhc3QgPT09IDFcIiA+IHt7J3BsYXllcmJyaWVmLnBvZGNhc3QnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID4gMVwiID4ge3sncGxheWVyYnJpZWYucG9kY2FzdHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYud2ViTW9kdWxlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4ge3sncGxheWVyYnJpZWYud2ViTW9kdWxlcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2UnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID4gMVwiID4ge3snYXBwdG9jaG9tZS53ZWJQYWdlcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LnF1aXogfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5xdWl6ID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi5xdWl6JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLnF1aXp6ZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50ID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5hc3Nlc3NtZW50JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDFcIiA+IHt7J2FwcHRvY2hvbWUuYXNzZXNzbWVudHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ub3RoZXIgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW0nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IHt7J2FwcHRvY2hvbWUub3RoZXJJdGVtcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZW5hYmxlZCAmJiBoYXNUb2NTdHJ1Y3R1cmUgJiYgY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmxhc3RVcGRhdGVkT24/LmVuYWJsZWQgJiYgY29udGVudD8ubGFzdFVwZGF0ZWRPblwiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmxhc3RVcGRhdGVkT24/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICB7eyBjb250ZW50Py5sYXN0VXBkYXRlZE9uIHwgZGF0ZSB9fVxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd01vcmVHbGFuY2VcIj5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sYXN0VXBkYXRlZE9uPy5lbmFibGVkICYmIGNvbnRlbnQ/Lmxhc3RVcGRhdGVkT25cIj48L21hdC1kaXZpZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiXG4gICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmV4cGlyeURhdGU/LmVuYWJsZWQgJiYgY29udGVudD8uZXhwaXJ5RGF0ZSAmJiBjb250ZW50Py5leHBpcnlEYXRlPy5zdGFydHNXaXRoKCcyMCcpXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5leHBpcnlEYXRlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmV4cGlyeURhdGUgfCBkYXRlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5leHBpcnlEYXRlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmV4cGlyeURhdGUgJiYgY29udGVudD8uZXhwaXJ5RGF0ZT8uc3RhcnRzV2l0aCgnMjAnKVwiPlxuICAgICAgPC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmVuYWJsZWQgJiYgY29udGVudD8ubGVhcm5pbmdNb2RlXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAge3sgY29udGVudD8ubGVhcm5pbmdNb2RlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmVuYWJsZWQgJiYgY29udGVudD8ubGVhcm5pbmdNb2RlXCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5yZWdpb24/LmVuYWJsZWQgJiYgY29udGVudD8ucmVnaW9uPy5sZW5ndGhcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAgICB7eyBjb250ZW50Py5yZWdpb24gfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZW5hYmxlZCAmJiBjb250ZW50Py5yZWdpb24/Lmxlbmd0aFwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmxvY2FsZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uaGFzVHJhbnNsYXRpb25zPy5lbmFibGVkICYmIChjb250ZW50Py5oYXNUcmFuc2xhdGlvbnM/Lmxlbmd0aCB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2Y/Lmxlbmd0aClcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmRpc3BsYXlOYW1lfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJnb1RvQ29udGVudCh0cmFucz8uaWRlbnRpZmllcilcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zIG9mIGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucyB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2ZcIj57eyB0cmFucy5sb2NhbGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmVuYWJsZWQgJiYgKGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucz8ubGVuZ3RoIHx8IGNvbnRlbnQ/LmlzVHJhbnNsYXRpb25PZj8ubGVuZ3RoKVwiPlxuICAgICAgPC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5rZXl3b3Jkcz8uZW5hYmxlZCAmJiBjb250ZW50Py5rZXl3b3Jkcz8ubGVuZ3RoXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3t0b2NDb25maWc/LmF0QUdsYW5jZT8ua2V5d29yZHM/LmRpc3BsYXlOYW1lfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAge3sgY29udGVudD8ua2V5d29yZHM/LmpvaW4oJywgJykgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5lbmFibGVkICYmIGNvbnRlbnQ/LmtleXdvcmRzPy5sZW5ndGhcIj48L21hdC1kaXZpZGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5jb2xsZWN0aW9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jdXJhdGVkSW5LQj8uZW5hYmxlZCAmJiBpdGVtLmNvbnRlbnRUeXBlID09PSAnS25vd2xlZGdlIEJvYXJkJyAmJiBpdGVtLnN0YXR1cyA9PT0gJ0xpdmUnXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5jdXJhdGVkSW5LQj8uZGlzcGxheU5hbWV9fTwvaDM+XG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXA+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50VHlwZSA9PT0gJ0tub3dsZWRnZSBCb2FyZCcgJiYgaXRlbS5zdGF0dXMgPT09ICdMaXZlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJy9hcHAvdG9jLycgKyBpdGVtLmlkZW50aWZpZXIgKyAnL292ZXJ2aWV3P3ByaW1hcnlDYXRlZ29yeT0nKyBpdGVtLnByaW1hcnlDYXRlZ29yeSBcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lIH19IDwvYT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXQtMlwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93TW9yZUdsYW5jZSA9ICFzaG93TW9yZUdsYW5jZVwiPlxuICAgICAgICA8bWF0LWljb24+e3sgIXNob3dNb3JlR2xhbmNlID8gJ2Fycm93X2Ryb3BfZG93bicgOiAnYXJyb3dfZHJvcF91cCcgfX08L21hdC1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd01vcmUnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd0xlc3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkPlxuICA8IS0tIDx3cy13aWRnZXQtdXNlci1jb250ZW50LXJhdGluZyBjbGFzcz1cIm1iLTQgYmxvY2tcIiAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIlxuICAgIFtpc0Rpc2FibGVkXT1cImlzUHJldmlld01vZGVcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCI+XG4gIDwvd3Mtd2lkZ2V0LXVzZXItY29udGVudC1yYXRpbmc+IC0tPlxuICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrIG1hcmdpbi1ib3R0b20tbVwiICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckRldGFpbHM/Lmxlbmd0aFwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yRGV0YWlscyxcbiAgICAgICAgdGl0bGU6ICdBVVRIT1InXG4gICAgICB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrIG1hcmdpbi1ib3R0b20tbVwiICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckNvbnRhY3RzPy5sZW5ndGhcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgYXV0aG9yczogY29udGVudD8uY3JlYXRvckNvbnRhY3RzLFxuICAgICAgICB0aXRsZTogJ0NPTlRBQ1QnXG4gICAgICB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3JlYXRvcnMgbGV0LWF1dGhvcnM9XCJhdXRob3JzXCIgbGV0LXRpdGxlPVwidGl0bGVcIj5cbiAgPG1hdC1jYXJkPlxuICAgIDxoMiAqbmdJZj1cInRpdGxlID09PSAnQVVUSE9SJ1wiPnt7J3BsYXllcmJyaWVmLmF1dGhvcnMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgIDxoMiAqbmdJZj1cInRpdGxlID09PSAnQ09OVEFDVCdcIj57eydwbGF5ZXJicmllZi5jdXJhdG9yY29udGFjdCcgfCB0cmFuc2xhdGV9fTwvaDI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYXV0aG9yIG9mIHBhcnNlSnNvbkRhdGEoYXV0aG9ycylcIiBjbGFzcz1cImF1dGhvclwiPlxuICAgICAgPHdzLXdpZGdldC11c2VyLWltYWdlIGNsYXNzPVwiYXV0aG9yLWltYWdlXCIgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiIFt1c2VyTmFtZV09XCJhdXRob3IubmFtZSB8fCAnJ1wiXG4gICAgICAgIFtlbWFpbF09XCJhdXRob3IuZW1haWxcIj48L3dzLXdpZGdldC11c2VyLWltYWdlPlxuICAgICAgPGRpdiBjbGFzcz1cIndpZHRoLWV4cGFuZCBmbGV4IGZsZXgtbWlkZGxlIGZsZXgtYmV0d2VlblwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlXCI+e3sgYXV0aG9yLm5hbWUgfX08L2gzPlxuICAgICAgICA8d3Mtd2lkZ2V0LWJ0bi1tYWlsLXVzZXIgKm5nSWY9XCJhc2tBdXRob3JFbmFibGVkXCIgW3dpZGdldERhdGFdPVwieyBjb250ZW50OiBjb250ZW50LCBlbWFpbHM6IFthdXRob3IuZW1haWxdIH1cIj5cbiAgICAgICAgPC93cy13aWRnZXQtYnRuLW1haWwtdXNlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkPlxuPC9uZy10ZW1wbGF0ZT4iXX0=