@naniteninja/dashboard-components-lib 1.0.1 → 1.0.3

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 (304) hide show
  1. package/fesm2022/naniteninja-dashboard-components-lib.mjs +179 -189
  2. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
  3. package/index.d.ts +1669 -3
  4. package/package.json +25 -29
  5. package/src/lib/shared-styles/common/theme.scss +3 -3
  6. package/esm2022/lib/components/auto-delegation/animations.mjs +0 -20
  7. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +0 -106
  8. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +0 -6
  9. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +0 -7
  10. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +0 -2
  11. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +0 -2
  12. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +0 -2
  13. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +0 -2
  14. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +0 -37
  15. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +0 -98
  16. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +0 -23
  17. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +0 -2
  18. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +0 -2
  19. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +0 -40
  20. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +0 -275
  21. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +0 -89
  22. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +0 -40
  23. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +0 -6
  24. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +0 -6
  25. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +0 -10
  26. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +0 -7
  27. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +0 -8
  28. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +0 -2
  29. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +0 -2
  30. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +0 -2
  31. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +0 -2
  32. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +0 -2
  33. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +0 -2
  34. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +0 -2
  35. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +0 -2
  36. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +0 -2
  37. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +0 -30
  38. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +0 -7
  39. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +0 -2
  40. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +0 -2
  41. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +0 -2
  42. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +0 -2
  43. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +0 -2
  44. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +0 -80
  45. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +0 -144
  46. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +0 -211
  47. package/esm2022/lib/components/chat/chat.component.mjs +0 -307
  48. package/esm2022/lib/components/chat/chat.component.module.mjs +0 -85
  49. package/esm2022/lib/components/chat/chat.service.mjs +0 -63
  50. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +0 -6
  51. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +0 -77
  52. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +0 -41
  53. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +0 -2
  54. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +0 -2
  55. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +0 -2
  56. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +0 -2
  57. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +0 -2
  58. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +0 -2
  59. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +0 -2
  60. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +0 -7
  61. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +0 -21
  62. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +0 -2
  63. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +0 -143
  64. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +0 -18
  65. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +0 -6
  66. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +0 -2
  67. package/esm2022/lib/components/client-home/client-home.component.mjs +0 -123
  68. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +0 -9
  69. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +0 -2
  70. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +0 -2
  71. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +0 -2
  72. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +0 -2
  73. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +0 -30
  74. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +0 -6
  75. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +0 -6
  76. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +0 -6
  77. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +0 -6
  78. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +0 -10
  79. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +0 -10
  80. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +0 -10
  81. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +0 -60
  82. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +0 -33
  83. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +0 -300
  84. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +0 -6
  85. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +0 -6
  86. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +0 -8
  87. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +0 -2
  88. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +0 -2
  89. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +0 -2
  90. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +0 -2
  91. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +0 -2
  92. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +0 -81
  93. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +0 -8
  94. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +0 -4
  95. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +0 -3
  96. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +0 -43
  97. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +0 -113
  98. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +0 -11
  99. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +0 -27
  100. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +0 -19
  101. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +0 -21
  102. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +0 -170
  103. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +0 -11
  104. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +0 -7
  105. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +0 -2
  106. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +0 -15
  107. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +0 -146
  108. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +0 -2
  109. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +0 -2
  110. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +0 -2
  111. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +0 -2
  112. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +0 -2
  113. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +0 -21
  114. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +0 -15
  115. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +0 -2
  116. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +0 -54
  117. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +0 -58
  118. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +0 -19
  119. package/esm2022/lib/components/profile-card/profile-card.component.mjs +0 -35
  120. package/esm2022/lib/components/profile-card/profile-card.module.mjs +0 -19
  121. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +0 -2
  122. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +0 -2
  123. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +0 -2
  124. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +0 -2
  125. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +0 -2
  126. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +0 -2
  127. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +0 -2
  128. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +0 -2
  129. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.lookup.mjs +0 -18
  130. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +0 -67
  131. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +0 -11
  132. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +0 -277
  133. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +0 -235
  134. package/esm2022/lib/enums/direction.enum.mjs +0 -6
  135. package/esm2022/lib/enums/form-field-type.mjs +0 -30
  136. package/esm2022/lib/enums/local-storage-keys.enum.mjs +0 -5
  137. package/esm2022/lib/enums/status-types.mjs +0 -8
  138. package/esm2022/lib/model/select-option-template.mjs +0 -2
  139. package/esm2022/lib/operations/operations.mjs +0 -19
  140. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +0 -49
  141. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +0 -17
  142. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +0 -31
  143. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +0 -28
  144. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +0 -59
  145. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +0 -22
  146. package/esm2022/lib/pipes/initials/initials.pipe.mjs +0 -25
  147. package/esm2022/lib/pipes/round/round.pipe.mjs +0 -17
  148. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +0 -25
  149. package/esm2022/lib/services/abstract-cache.service.mjs +0 -10
  150. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +0 -38
  151. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +0 -95
  152. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +0 -14
  153. package/esm2022/lib/shared/shared.module.mjs +0 -23
  154. package/esm2022/naniteninja-dashboard-components-lib.mjs +0 -5
  155. package/esm2022/public-api.mjs +0 -122
  156. package/lib/components/auto-delegation/animations.d.ts +0 -1
  157. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +0 -29
  158. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +0 -4
  159. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +0 -5
  160. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +0 -31
  161. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +0 -6
  162. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +0 -8
  163. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +0 -17
  164. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +0 -12
  165. package/lib/components/calendar/agenda/agenda.component.d.ts +0 -22
  166. package/lib/components/calendar/agenda/agenda.module.d.ts +0 -12
  167. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +0 -7
  168. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +0 -9
  169. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +0 -19
  170. package/lib/components/calendar/components/event-form/event-form.component.d.ts +0 -67
  171. package/lib/components/calendar/components/event-form/event-form.module.d.ts +0 -20
  172. package/lib/components/calendar/components/event-info/event-info.component.d.ts +0 -24
  173. package/lib/components/calendar/enums/calendar.account.enum.d.ts +0 -4
  174. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +0 -4
  175. package/lib/components/calendar/enums/event-type.enum.d.ts +0 -8
  176. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +0 -5
  177. package/lib/components/calendar/enums/recurring.type.enum.d.ts +0 -6
  178. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +0 -14
  179. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +0 -5
  180. package/lib/components/calendar/interfaces/event.form.interface.d.ts +0 -22
  181. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +0 -10
  182. package/lib/components/calendar/interfaces/event.interface.d.ts +0 -33
  183. package/lib/components/calendar/interfaces/event.time.interface.d.ts +0 -4
  184. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +0 -16
  185. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +0 -14
  186. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +0 -16
  187. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +0 -2
  188. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +0 -5
  189. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +0 -10
  190. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +0 -5
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +0 -26
  192. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +0 -13
  193. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +0 -6
  194. package/lib/components/calendar/scheduler/mock-schedule.d.ts +0 -9
  195. package/lib/components/calendar/scheduler/scheduler.component.d.ts +0 -36
  196. package/lib/components/calendar/services/calendar-utils.service.d.ts +0 -39
  197. package/lib/components/chat/chat.component.d.ts +0 -70
  198. package/lib/components/chat/chat.component.module.d.ts +0 -22
  199. package/lib/components/chat/chat.service.d.ts +0 -15
  200. package/lib/components/chat/enums/sender-types.enum.d.ts +0 -4
  201. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +0 -25
  202. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +0 -15
  203. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +0 -7
  204. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +0 -5
  205. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +0 -16
  206. package/lib/components/chat/interfaces/date-messages.interface.d.ts +0 -6
  207. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +0 -6
  208. package/lib/components/chat/interfaces/message.interface.d.ts +0 -11
  209. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +0 -5
  210. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +0 -5
  211. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +0 -9
  212. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +0 -4
  213. package/lib/components/circle-progress/circle-progress.component.d.ts +0 -31
  214. package/lib/components/circle-progress/circle-progress.module.d.ts +0 -8
  215. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +0 -4
  216. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +0 -29
  217. package/lib/components/client-home/client-home.component.d.ts +0 -44
  218. package/lib/components/client-home/enums/client-home-component.enum.d.ts +0 -7
  219. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +0 -7
  220. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +0 -45
  221. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +0 -5
  222. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +0 -9
  223. package/lib/components/client-home/lookup/client-home.config.d.ts +0 -2
  224. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +0 -2
  225. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +0 -2
  226. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +0 -2
  227. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +0 -2
  228. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +0 -2
  229. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +0 -2
  230. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +0 -2
  231. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +0 -10
  232. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +0 -10
  233. package/lib/components/client-match-overview/client-match-overview.component.d.ts +0 -55
  234. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +0 -4
  235. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +0 -4
  236. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +0 -6
  237. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +0 -19
  238. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +0 -8
  239. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +0 -7
  240. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +0 -10
  241. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +0 -11
  242. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +0 -7
  243. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +0 -5
  244. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +0 -2
  245. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +0 -2
  246. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +0 -11
  247. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +0 -29
  248. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +0 -2
  249. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +0 -2
  250. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +0 -2
  251. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +0 -2
  252. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +0 -73
  253. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +0 -9
  254. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +0 -5
  255. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +0 -29
  256. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +0 -2
  257. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +0 -48
  258. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +0 -5
  259. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +0 -5
  260. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +0 -26
  261. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +0 -8
  262. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +0 -24
  263. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +0 -9
  264. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +0 -13
  265. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +0 -6
  266. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +0 -2
  267. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +0 -23
  268. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +0 -8
  269. package/lib/components/profile-card/profile-card.component.d.ts +0 -11
  270. package/lib/components/profile-card/profile-card.module.d.ts +0 -9
  271. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +0 -10
  272. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +0 -11
  273. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +0 -11
  274. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +0 -10
  275. package/lib/components/spider-chart/interfaces/config.interface.d.ts +0 -19
  276. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +0 -7
  277. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +0 -4
  278. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +0 -6
  279. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +0 -2
  280. package/lib/components/spider-chart/lookup/default-spider-config.lookup.d.ts +0 -2
  281. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +0 -2
  282. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +0 -8
  283. package/lib/components/spider-chart/spider-chart.component.d.ts +0 -52
  284. package/lib/enums/direction.enum.d.ts +0 -4
  285. package/lib/enums/form-field-type.d.ts +0 -28
  286. package/lib/enums/local-storage-keys.enum.d.ts +0 -3
  287. package/lib/enums/status-types.d.ts +0 -6
  288. package/lib/model/select-option-template.d.ts +0 -5
  289. package/lib/operations/operations.d.ts +0 -19
  290. package/lib/pipes/array-sort/array.sort.pipe.d.ts +0 -7
  291. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +0 -7
  292. package/lib/pipes/date-localization/date-localization.pipe.d.ts +0 -8
  293. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +0 -11
  294. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +0 -13
  295. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +0 -8
  296. package/lib/pipes/initials/initials.pipe.d.ts +0 -7
  297. package/lib/pipes/round/round.pipe.d.ts +0 -7
  298. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +0 -8
  299. package/lib/services/abstract-cache.service.d.ts +0 -9
  300. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +0 -14
  301. package/lib/shared/shared/message-modal/message-modal.component.d.ts +0 -29
  302. package/lib/shared/shared/status-icon/status-icon.component.d.ts +0 -7
  303. package/lib/shared/shared.module.d.ts +0 -13
  304. package/public-api.d.ts +0 -121
@@ -1,307 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, Renderer2, ViewChild, } from '@angular/core';
2
- import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import 'emoji-picker-element';
4
- import { first } from 'rxjs';
5
- import { LibMessageModalComponent } from '../../shared/shared/message-modal/message-modal.component';
6
- import { PopupModalService } from '@naniteninja/ionic-lib';
7
- import { ChatService } from './chat.service';
8
- import { SenderTypes } from './enums/sender-types.enum';
9
- import { SendMessageType } from './interfaces/type-send-message.enum';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common";
12
- import * as i2 from "@naniteninja/ionic-lib";
13
- import * as i3 from "@angular/forms";
14
- import * as i4 from "./gif-selector/gif-selector.component";
15
- import * as i5 from "ngx-infinite-scroll";
16
- import * as i6 from "@ngx-translate/core";
17
- export class ChatComponent {
18
- constructor() {
19
- this.default = false;
20
- this.responseTime = '05h 04m 35s';
21
- // whether gifs as a message should be allowed or not
22
- this.includeGifMessage = true;
23
- // whether timestamp styles should be allowed or not
24
- this.includeTime = true;
25
- // max length for textarea input
26
- this.maxLength = 100;
27
- this.enableGifPicker = false;
28
- // send message emitter
29
- this.sendMessage = new EventEmitter();
30
- // scroller-up event to get older messages
31
- this.getMessages = new EventEmitter();
32
- this.disabled = false;
33
- this.cdr = inject(ChangeDetectorRef);
34
- this.elementRef = inject(ElementRef);
35
- this.popupModalService = inject(PopupModalService);
36
- this.chatService = inject(ChatService);
37
- this.renderer = inject(Renderer2);
38
- this.scrollThreshold = 200;
39
- this.messages = [];
40
- this.textControl = new FormControl('');
41
- this.base64Image = null;
42
- this.emojiVisibility = false;
43
- this.gifVisibility = false;
44
- this.isAtStartChat = false;
45
- this.emojiPickerOpened = false;
46
- this.pos = '';
47
- this.throttle = 0;
48
- this.distance = 0;
49
- this.ModalComponent = LibMessageModalComponent;
50
- this.documentClickListener = null;
51
- }
52
- // Pre-filled input value
53
- set inputValue(value) {
54
- if (value) {
55
- this.textControl.setValue(value);
56
- }
57
- }
58
- // interface for messages to groupm them in dates
59
- set dateMessages(value) {
60
- this.messages = this.chatService.transformMessages(value);
61
- }
62
- ngOnInit() {
63
- if (!this.prospectJoinDate) {
64
- this.prospectJoinDate = null;
65
- }
66
- this.chatService.isLongPressForSendImmediately().subscribe({
67
- next: (res) => {
68
- this.longPressEnabled = res;
69
- },
70
- });
71
- if (this.disabled) {
72
- this.textControl.disable();
73
- }
74
- }
75
- ngOnDestroy() {
76
- this.removeEmojiPickerClickListener();
77
- }
78
- ngAfterViewInit() {
79
- if (this.emojiPickerConfig?.style) {
80
- if (this.emojiPickerRef?.nativeElement) {
81
- const style = document.createElement('style');
82
- style.textContent = this.emojiPickerConfig.style;
83
- this.emojiPickerRef.nativeElement.shadowRoot.appendChild(style);
84
- }
85
- }
86
- this.scrollToBottom();
87
- }
88
- ngOnChanges(changes) {
89
- if (!this.scrollableContainer)
90
- return;
91
- const container = this.scrollableContainer.nativeElement;
92
- const scrollTop = container.scrollTop;
93
- const scrollHeight = container.scrollHeight;
94
- const clientHeight = container.clientHeight;
95
- if (!(scrollTop < scrollHeight - clientHeight - this.scrollThreshold)) {
96
- setTimeout(() => {
97
- this.scrollToBottom();
98
- }, 200);
99
- }
100
- }
101
- onScrollChats() {
102
- this.getMessages.emit(true);
103
- }
104
- handleScrollNewMessage() {
105
- setTimeout(() => {
106
- if (!this.isAtStartChat)
107
- this.scrollToBottom();
108
- }, 200);
109
- }
110
- onScrollMessages(event) {
111
- const container = this.scrollableContainer.nativeElement;
112
- const scrollTop = container.scrollTop;
113
- const scrollHeight = container.scrollHeight;
114
- const clientHeight = container.clientHeight;
115
- this.isAtStartChat = scrollTop < scrollHeight - clientHeight - this.scrollThreshold;
116
- }
117
- scrollToBottom() {
118
- const container = this.scrollableContainer.nativeElement;
119
- container.scrollTop = container.scrollHeight;
120
- }
121
- onEmojiclick(event) {
122
- const emoji = event.detail.unicode;
123
- if (this.chatInput.inputFieldRef) {
124
- const textAreaElement = this.chatInput.inputFieldRef.nativeElement;
125
- const start = textAreaElement.selectionStart ?? 0;
126
- const end = textAreaElement.selectionEnd ?? 0;
127
- const currentText = this.textControl.value || '';
128
- const newText = currentText.slice(0, start) + emoji + currentText.slice(end);
129
- this.textControl.setValue(newText);
130
- // Reposiciona el cursor después del emoji
131
- setTimeout(() => {
132
- textAreaElement.focus(); // Asegura que el textarea recupere el foco
133
- textAreaElement.setSelectionRange(start + emoji.length, start + emoji.length);
134
- });
135
- }
136
- }
137
- handleEmojiPickerClick() {
138
- if (this.default) {
139
- return;
140
- }
141
- this.emojiPickerOpened = true;
142
- if (this.gifVisibility) {
143
- this.gifVisibility = !this.gifVisibility;
144
- }
145
- this.emojiVisibility = !this.emojiVisibility;
146
- if (this.gifVisibility || this.emojiVisibility) {
147
- this.setupEmojiPickerClickListener();
148
- }
149
- }
150
- handleGifPickerClick() {
151
- if (this.emojiVisibility) {
152
- this.emojiVisibility = !this.emojiVisibility;
153
- }
154
- this.gifVisibility = !this.gifVisibility;
155
- if (this.gifVisibility || this.emojiVisibility) {
156
- this.setupEmojiPickerClickListener();
157
- }
158
- }
159
- onGifClick(url) {
160
- if (this.default) {
161
- return;
162
- }
163
- const newMessage = {
164
- sender: SenderTypes.USER,
165
- timestamp: new Date(),
166
- message: '',
167
- attachments: [
168
- {
169
- type: 'gif',
170
- url,
171
- },
172
- ],
173
- };
174
- this.pendingMessage = newMessage;
175
- this.onSendMessageModal();
176
- }
177
- onSendMessageModal() {
178
- const modalData = {
179
- data: {
180
- responseTime: this.responseTime,
181
- },
182
- };
183
- this.popupModalService
184
- .show(this.ModalComponent, modalData)
185
- .afterClose.pipe(first())
186
- .subscribe((data) => {
187
- this.pendingMessage.sendOptions = {
188
- type: data.type,
189
- arrivalDate: data.arrivalDate,
190
- };
191
- this.longPressEnabled = data.longPressEnabled;
192
- this.onSend();
193
- });
194
- this.popupModalService.setValues({ customClass: 'message-modal-container' });
195
- }
196
- onSendText() {
197
- this.savePendingMessage();
198
- this.onSendMessageModal();
199
- }
200
- savePendingMessage() {
201
- const message = this.textControl.value.trim();
202
- if (message.trim()) {
203
- const newMessage = {
204
- sender: SenderTypes.USER,
205
- timestamp: new Date(),
206
- message: message,
207
- attachments: [],
208
- };
209
- this.pendingMessage = newMessage;
210
- }
211
- }
212
- onSend() {
213
- this.gifVisibility = false;
214
- this.emojiVisibility = false;
215
- this.textControl.setValue('');
216
- this.handleScrollNewMessage();
217
- this.sendMessage.emit(this.pendingMessage);
218
- }
219
- onKeyDown(event) {
220
- if (event.key === 'Enter') {
221
- this.onSendText();
222
- }
223
- }
224
- onLongPress() {
225
- this.savePendingMessage();
226
- this.pendingMessage.sendOptions = {
227
- type: SendMessageType.INMEDIATELY,
228
- arrivalDate: new Date(),
229
- };
230
- this.onSend();
231
- }
232
- onBlurPickerSpace() {
233
- this.gifVisibility = false;
234
- this.emojiVisibility = false;
235
- this.cdr.markForCheck();
236
- this.removeEmojiPickerClickListener();
237
- }
238
- setupEmojiPickerClickListener() {
239
- if (this.documentClickListener)
240
- return;
241
- this.documentClickListener = this.renderer.listen('document', 'click', (event) => {
242
- if (!this.elementRef.nativeElement.contains(event.target)) {
243
- this.onBlurPickerSpace();
244
- }
245
- });
246
- }
247
- removeEmojiPickerClickListener() {
248
- if (this.documentClickListener) {
249
- this.documentClickListener();
250
- this.documentClickListener = null;
251
- }
252
- }
253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChatComponent, selector: "lib-chat", inputs: { default: "default", responseTime: "responseTime", inputValue: "inputValue", emojiPickerConfig: "emojiPickerConfig", includeGifMessage: "includeGifMessage", includeTime: "includeTime", dateMessages: "dateMessages", maxLength: "maxLength", enableGifPicker: "enableGifPicker", prospectJoinDate: "prospectJoinDate", disabled: "disabled" }, outputs: { sendMessage: "sendMessage", getMessages: "getMessages" }, providers: [
255
- {
256
- provide: NG_VALUE_ACCESSOR,
257
- useExisting: ChatComponent,
258
- multi: true,
259
- },
260
- ], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i5.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
261
- }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatComponent, decorators: [{
263
- type: Component,
264
- args: [{ selector: 'lib-chat', providers: [
265
- {
266
- provide: NG_VALUE_ACCESSOR,
267
- useExisting: ChatComponent,
268
- multi: true,
269
- },
270
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\n"] }]
271
- }], propDecorators: { default: [{
272
- type: Input
273
- }], responseTime: [{
274
- type: Input
275
- }], inputValue: [{
276
- type: Input
277
- }], emojiPickerConfig: [{
278
- type: Input
279
- }], includeGifMessage: [{
280
- type: Input
281
- }], includeTime: [{
282
- type: Input
283
- }], dateMessages: [{
284
- type: Input
285
- }], maxLength: [{
286
- type: Input
287
- }], enableGifPicker: [{
288
- type: Input
289
- }], prospectJoinDate: [{
290
- type: Input
291
- }], sendMessage: [{
292
- type: Output
293
- }], getMessages: [{
294
- type: Output
295
- }], disabled: [{
296
- type: Input
297
- }], emojiPickerRef: [{
298
- type: ViewChild,
299
- args: ['emojiPicker']
300
- }], scrollableContainer: [{
301
- type: ViewChild,
302
- args: ['scrollableContainer']
303
- }], chatInput: [{
304
- type: ViewChild,
305
- args: ['chatInput']
306
- }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY2hhdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDckcsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQWV0RSxNQUFNLE9BQU8sYUFBYTtJQWIxQjtRQWNXLFlBQU8sR0FBYSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxhQUFhLENBQUM7UUFTL0MscURBQXFEO1FBQzVDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUMzQyxvREFBb0Q7UUFDM0MsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFLckMsZ0NBQWdDO1FBQ3ZCLGNBQVMsR0FBVyxHQUFHLENBQUM7UUFFeEIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFJMUMsdUJBQXVCO1FBQ2IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ3JELDBDQUEwQztRQUNoQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFM0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU0zQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLG9CQUFlLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLGFBQVEsR0FBb0IsRUFBRSxDQUFDO1FBRS9CLGdCQUFXLEdBQXdCLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUVsQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsUUFBRyxHQUFXLEVBQUUsQ0FBQztRQUdqQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNKLG1CQUFjLEdBQUcsd0JBQXdCLENBQUM7UUFFbEQsMEJBQXFCLEdBQXdCLElBQUksQ0FBQztLQW9PM0Q7SUFoU0MseUJBQXlCO0lBQ3pCLElBQWEsVUFBVSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBT0QsaURBQWlEO0lBQ2pELElBQWEsWUFBWSxDQUFDLEtBQWlCO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBK0NELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1lBQzlCLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU87UUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUU1QyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsWUFBWSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN0RSxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWTtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDO1FBQ3pELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUM1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxHQUFHLFlBQVksR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUN0RixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7UUFDekQsU0FBUyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQy9DLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBa0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUNuRSxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUNsRCxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztZQUU5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDakQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbkMsMENBQTBDO1lBQzFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsMkNBQTJDO2dCQUNwRSxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFXO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQWE7WUFDM0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3hCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixPQUFPLEVBQUUsRUFBRTtZQUNYLFdBQVcsRUFBRTtnQkFDWDtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxHQUFHO2lCQUNKO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixNQUFNLFNBQVMsR0FBRztZQUNoQixJQUFJLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2hDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDO2FBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDeEIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUc7Z0JBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUIsQ0FBQztZQUVGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFFOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxVQUFVLEdBQWE7Z0JBQzNCLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSTtnQkFDeEIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNyQixPQUFPLEVBQUUsT0FBTztnQkFDaEIsV0FBVyxFQUFFLEVBQUU7YUFDaEIsQ0FBQztZQUVGLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHO1lBQ2hDLElBQUksRUFBRSxlQUFlLENBQUMsV0FBVztZQUNqQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDeEIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxxQkFBcUI7WUFBRSxPQUFPO1FBRXZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDdEYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7K0dBbFNVLGFBQWE7bUdBQWIsYUFBYSxrY0FYYjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxhQUFhO2dCQUMxQixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb1dDckNILGkyb0JBNExBOzs0RkRsSmEsYUFBYTtrQkFiekIsU0FBUzsrQkFDRSxVQUFVLGFBQ1Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxlQUFlOzRCQUMxQixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUVvQixjQUFjO3NCQUF2QyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1UsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDUixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAnZW1vamktcGlja2VyLWVsZW1lbnQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVtb2ppUGlja2VyQ29uZmlnIH0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XG5pbXBvcnQgeyBMaWJNZXNzYWdlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkL21lc3NhZ2UtbW9kYWwvbWVzc2FnZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRGaWVsZENvbXBvbmVudCwgUG9wdXBNb2RhbFNlcnZpY2UgfSBmcm9tICdAbmFuaXRlbmluamEvaW9uaWMtbGliJztcbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGF0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VuZGVyVHlwZXMgfSBmcm9tICcuL2VudW1zL3NlbmRlci10eXBlcy5lbnVtJztcbmltcG9ydCB7IElEYXRlTWVzc2FnZXMgfSBmcm9tICcuL2ludGVyZmFjZXMvZGF0ZS1tZXNzYWdlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSU1lc3NhZ2UgfSBmcm9tICcuL2ludGVyZmFjZXMvbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3R5cGUtc2VuZC1tZXNzYWdlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2hhdCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IENoYXRDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGVmYXVsdD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVzcG9uc2VUaW1lPzogc3RyaW5nID0gJzA1aCAwNG0gMzVzJztcbiAgLy8gUHJlLWZpbGxlZCBpbnB1dCB2YWx1ZVxuICBASW5wdXQoKSBzZXQgaW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnRleHRDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgLy8gQ29uZmlndXJhdGlvbiBvZiBlbW9qaVBpY2tlci4gTXVzdCBiZSBhZGRlZFxuICBASW5wdXQoKSBlbW9qaVBpY2tlckNvbmZpZzogRW1vamlQaWNrZXJDb25maWc7XG4gIC8vIHdoZXRoZXIgZ2lmcyBhcyBhIG1lc3NhZ2Ugc2hvdWxkIGJlIGFsbG93ZWQgb3Igbm90XG4gIEBJbnB1dCgpIGluY2x1ZGVHaWZNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgLy8gd2hldGhlciB0aW1lc3RhbXAgc3R5bGVzIHNob3VsZCBiZSBhbGxvd2VkIG9yIG5vdFxuICBASW5wdXQoKSBpbmNsdWRlVGltZTogYm9vbGVhbiA9IHRydWU7XG4gIC8vIGludGVyZmFjZSBmb3IgbWVzc2FnZXMgdG8gZ3JvdXBtIHRoZW0gaW4gZGF0ZXNcbiAgQElucHV0KCkgc2V0IGRhdGVNZXNzYWdlcyh2YWx1ZTogSU1lc3NhZ2VbXSkge1xuICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLmNoYXRTZXJ2aWNlLnRyYW5zZm9ybU1lc3NhZ2VzKHZhbHVlKTtcbiAgfVxuICAvLyBtYXggbGVuZ3RoIGZvciB0ZXh0YXJlYSBpbnB1dFxuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IDEwMDtcblxuICBASW5wdXQoKSBlbmFibGVHaWZQaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwcm9zcGVjdEpvaW5EYXRlOiBEYXRlO1xuXG4gIC8vIHNlbmQgbWVzc2FnZSBlbWl0dGVyXG4gIEBPdXRwdXQoKSBzZW5kTWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lc3NhZ2U+KCk7XG4gIC8vIHNjcm9sbGVyLXVwIGV2ZW50IHRvIGdldCBvbGRlciBtZXNzYWdlc1xuICBAT3V0cHV0KCkgZ2V0TWVzc2FnZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdlbW9qaVBpY2tlcicpIGVtb2ppUGlja2VyUmVmOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlQ29udGFpbmVyJykgc2Nyb2xsYWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY2hhdElucHV0JykgY2hhdElucHV0OiBJbnB1dEZpZWxkQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHBvcHVwTW9kYWxTZXJ2aWNlID0gaW5qZWN0KFBvcHVwTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjaGF0U2VydmljZSA9IGluamVjdChDaGF0U2VydmljZSk7XG4gIHByaXZhdGUgcGVuZGluZ01lc3NhZ2U6IElNZXNzYWdlIHwgbnVsbDtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gIHB1YmxpYyBzY3JvbGxUaHJlc2hvbGQgPSAyMDA7XG4gIHB1YmxpYyBtZXNzYWdlczogSURhdGVNZXNzYWdlc1tdID0gW107XG5cbiAgcHVibGljIHRleHRDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwdWJsaWMgYmFzZTY0SW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBlbW9qaVZpc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGdpZlZpc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQXRTdGFydENoYXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGVtb2ppUGlja2VyT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHBvczogc3RyaW5nID0gJyc7XG5cbiAgcHVibGljIGxvbmdQcmVzc0VuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyB0aHJvdHRsZSA9IDA7XG4gIHB1YmxpYyBkaXN0YW5jZSA9IDA7XG4gIHB1YmxpYyByZWFkb25seSBNb2RhbENvbXBvbmVudCA9IExpYk1lc3NhZ2VNb2RhbENvbXBvbmVudDtcblxuICBwcml2YXRlIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3NwZWN0Sm9pbkRhdGUpIHtcbiAgICAgIHRoaXMucHJvc3BlY3RKb2luRGF0ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jaGF0U2VydmljZS5pc0xvbmdQcmVzc0ZvclNlbmRJbW1lZGlhdGVseSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMubG9uZ1ByZXNzRW5hYmxlZCA9IHJlcztcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVFbW9qaVBpY2tlckNsaWNrTGlzdGVuZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbW9qaVBpY2tlckNvbmZpZz8uc3R5bGUpIHtcbiAgICAgIGlmICh0aGlzLmVtb2ppUGlja2VyUmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSB0aGlzLmVtb2ppUGlja2VyQ29uZmlnLnN0eWxlO1xuICAgICAgICB0aGlzLmVtb2ppUGlja2VyUmVmLm5hdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyKSByZXR1cm47XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5zY3JvbGxhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG5cbiAgICBpZiAoIShzY3JvbGxUb3AgPCBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSB0aGlzLnNjcm9sbFRocmVzaG9sZCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbENoYXRzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0TWVzc2FnZXMuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbE5ld01lc3NhZ2UoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNBdFN0YXJ0Q2hhdCkgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBvblNjcm9sbE1lc3NhZ2VzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gICAgdGhpcy5pc0F0U3RhcnRDaGF0ID0gc2Nyb2xsVG9wIDwgc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0IC0gdGhpcy5zY3JvbGxUaHJlc2hvbGQ7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnNjcm9sbGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBvbkVtb2ppY2xpY2soZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW1vamkgPSBldmVudC5kZXRhaWwudW5pY29kZTtcbiAgICBpZiAodGhpcy5jaGF0SW5wdXQuaW5wdXRGaWVsZFJlZikge1xuICAgICAgY29uc3QgdGV4dEFyZWFFbGVtZW50ID0gdGhpcy5jaGF0SW5wdXQuaW5wdXRGaWVsZFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3Qgc3RhcnQgPSB0ZXh0QXJlYUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPz8gMDtcbiAgICAgIGNvbnN0IGVuZCA9IHRleHRBcmVhRWxlbWVudC5zZWxlY3Rpb25FbmQgPz8gMDtcblxuICAgICAgY29uc3QgY3VycmVudFRleHQgPSB0aGlzLnRleHRDb250cm9sLnZhbHVlIHx8ICcnO1xuICAgICAgY29uc3QgbmV3VGV4dCA9IGN1cnJlbnRUZXh0LnNsaWNlKDAsIHN0YXJ0KSArIGVtb2ppICsgY3VycmVudFRleHQuc2xpY2UoZW5kKTtcblxuICAgICAgdGhpcy50ZXh0Q29udHJvbC5zZXRWYWx1ZShuZXdUZXh0KTtcblxuICAgICAgLy8gUmVwb3NpY2lvbmEgZWwgY3Vyc29yIGRlc3B1w6lzIGRlbCBlbW9qaVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRleHRBcmVhRWxlbWVudC5mb2N1cygpOyAvLyBBc2VndXJhIHF1ZSBlbCB0ZXh0YXJlYSByZWN1cGVyZSBlbCBmb2NvXG4gICAgICAgIHRleHRBcmVhRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCArIGVtb2ppLmxlbmd0aCwgc3RhcnQgKyBlbW9qaS5sZW5ndGgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUVtb2ppUGlja2VyQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZW1vamlQaWNrZXJPcGVuZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZ2lmVmlzaWJpbGl0eSkge1xuICAgICAgdGhpcy5naWZWaXNpYmlsaXR5ID0gIXRoaXMuZ2lmVmlzaWJpbGl0eTtcbiAgICB9XG4gICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSAhdGhpcy5lbW9qaVZpc2liaWxpdHk7XG5cbiAgICBpZiAodGhpcy5naWZWaXNpYmlsaXR5IHx8IHRoaXMuZW1vamlWaXNpYmlsaXR5KSB7XG4gICAgICB0aGlzLnNldHVwRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUdpZlBpY2tlckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVtb2ppVmlzaWJpbGl0eSkge1xuICAgICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSAhdGhpcy5lbW9qaVZpc2liaWxpdHk7XG4gICAgfVxuXG4gICAgdGhpcy5naWZWaXNpYmlsaXR5ID0gIXRoaXMuZ2lmVmlzaWJpbGl0eTtcblxuICAgIGlmICh0aGlzLmdpZlZpc2liaWxpdHkgfHwgdGhpcy5lbW9qaVZpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuc2V0dXBFbW9qaVBpY2tlckNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25HaWZDbGljayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3TWVzc2FnZTogSU1lc3NhZ2UgPSB7XG4gICAgICBzZW5kZXI6IFNlbmRlclR5cGVzLlVTRVIsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICAgIGF0dGFjaG1lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnZ2lmJyxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICB0aGlzLnBlbmRpbmdNZXNzYWdlID0gbmV3TWVzc2FnZTtcbiAgICB0aGlzLm9uU2VuZE1lc3NhZ2VNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VuZE1lc3NhZ2VNb2RhbCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbERhdGEgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJlc3BvbnNlVGltZTogdGhpcy5yZXNwb25zZVRpbWUsXG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5wb3B1cE1vZGFsU2VydmljZVxuICAgICAgLnNob3codGhpcy5Nb2RhbENvbXBvbmVudCwgbW9kYWxEYXRhKVxuICAgICAgLmFmdGVyQ2xvc2UucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnBlbmRpbmdNZXNzYWdlLnNlbmRPcHRpb25zID0ge1xuICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICBhcnJpdmFsRGF0ZTogZGF0YS5hcnJpdmFsRGF0ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmxvbmdQcmVzc0VuYWJsZWQgPSBkYXRhLmxvbmdQcmVzc0VuYWJsZWQ7XG5cbiAgICAgICAgdGhpcy5vblNlbmQoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMucG9wdXBNb2RhbFNlcnZpY2Uuc2V0VmFsdWVzKHsgY3VzdG9tQ2xhc3M6ICdtZXNzYWdlLW1vZGFsLWNvbnRhaW5lcicgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZW5kVGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVQZW5kaW5nTWVzc2FnZSgpO1xuICAgIHRoaXMub25TZW5kTWVzc2FnZU1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVBlbmRpbmdNZXNzYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRleHRDb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAobWVzc2FnZS50cmltKCkpIHtcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2U6IElNZXNzYWdlID0ge1xuICAgICAgICBzZW5kZXI6IFNlbmRlclR5cGVzLlVTRVIsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgYXR0YWNobWVudHM6IFtdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5wZW5kaW5nTWVzc2FnZSA9IG5ld01lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmdpZlZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLmVtb2ppVmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgIHRoaXMudGV4dENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuaGFuZGxlU2Nyb2xsTmV3TWVzc2FnZSgpO1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UuZW1pdCh0aGlzLnBlbmRpbmdNZXNzYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VuZFRleHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uTG9uZ1ByZXNzKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVBlbmRpbmdNZXNzYWdlKCk7XG4gICAgdGhpcy5wZW5kaW5nTWVzc2FnZS5zZW5kT3B0aW9ucyA9IHtcbiAgICAgIHR5cGU6IFNlbmRNZXNzYWdlVHlwZS5JTk1FRElBVEVMWSxcbiAgICAgIGFycml2YWxEYXRlOiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gICAgdGhpcy5vblNlbmQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25CbHVyUGlja2VyU3BhY2UoKTogdm9pZCB7XG4gICAgdGhpcy5naWZWaXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgdGhpcy5lbW9qaVZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLnJlbW92ZUVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEVtb2ppUGlja2VyQ2xpY2tMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHJldHVybjtcblxuICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIHRoaXMub25CbHVyUGlja2VyU3BhY2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRW1vamlQaWNrZXJDbGlja0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGF0LWNvbXBvbmVudFwiPlxuICA8ZGl2IGNsYXNzPVwiY2hhdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ28tYnV0dG9uXCIgKm5nSWY9XCJpc0F0U3RhcnRDaGF0XCIgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIj7ihpM8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRhdGVNZXNzYWdlc1wiXG4gICAgICAjc2Nyb2xsYWJsZUNvbnRhaW5lclxuICAgICAgaW5maW5pdGVTY3JvbGxcbiAgICAgIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cImRpc3RhbmNlXCJcbiAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cInRocm90dGxlXCJcbiAgICAgIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIlxuICAgICAgKHNjcm9sbGVkVXApPVwib25TY3JvbGxDaGF0cygpXCJcbiAgICAgIChzY3JvbGwpPVwib25TY3JvbGxNZXNzYWdlcygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtLWNvbnRhaW5lciBjaGF0LWl0ZW0tY29udGFpbmVyX2luaXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IHByb3NwZWN0Sm9pbkRhdGUgPyAocHJvc3BlY3RKb2luRGF0ZSB8IGRhdGU6ICdNTU0gZCwgSEg6bW0nKSA6ICctJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW0gaW5pdC1jaGF0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtaXRlbV90ZXh0XCI+e3sgJ0NIQVQuSU5JVElBTF9URVhUJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0ZU1lc3NhZ2Ugb2YgbWVzc2FnZXNcIlxuICAgICAgICBjbGFzcz1cImNoYXQtaXRlbS1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MuY2hhdC1pdGVtLWNvbnRhaW5lcl91c2VyXT1cImRhdGVNZXNzYWdlLm1lc3NhZ2Uuc2VuZGVyID09PSAndXNlcidcIlxuICAgICAgICBbY2xhc3MuY2hhdC1pdGVtLWNvbnRhaW5lcl9vdGhlcl09XCJkYXRlTWVzc2FnZS5tZXNzYWdlLnNlbmRlciA9PT0gJ290aGVyJ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLW1lc3NhZ2VcIiAqbmdJZj1cImRhdGVNZXNzYWdlLmlzRmlyc3RNZXNzYWdlICYmIGluY2x1ZGVUaW1lXCI+XG4gICAgICAgICAgPHNwYW4+e3sgZGF0ZU1lc3NhZ2UuZGF0ZSB8IGRhdGU6ICdNTU0gZCcgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtXCIgW2NsYXNzLnVzZXItY2hhdF09XCJkYXRlTWVzc2FnZS5tZXNzYWdlLnNlbmRlciA9PT0gJ3VzZXInXCIgW2NsYXNzLm90aGVyLWNoYXRdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5zZW5kZXIgPT09ICdvdGhlcidcIj5cbiAgICAgICAgICBAaWYgKGRhdGVNZXNzYWdlLm1lc3NhZ2UubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGF0LWl0ZW1fdGV4dFwiPnt7IGRhdGVNZXNzYWdlLm1lc3NhZ2UubWVzc2FnZSB9fTwvZGl2PlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGRhdGVNZXNzYWdlLm1lc3NhZ2UuYXR0YWNobWVudHNbMF0udXJsICE9PSAnJykge1xuICAgICAgICAgICAgPGltZyBjbGFzcz1cImNoYXQtaXRlbV9pbWFnZVwiIFtzcmNdPVwiZGF0ZU1lc3NhZ2UubWVzc2FnZS5hdHRhY2htZW50c1swXS51cmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1pdGVtX3RpbWVzdGFtcFwiICpuZ0lmPVwiaW5jbHVkZVRpbWVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVNZXNzYWdlLm1lc3NhZ2UudGltZXN0YW1wIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWdyYWRpZW50LWZhZGVcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGxpYkZvY3VzSW52YWxpZElucHV0ICpuZ0lmPVwidGV4dENvbnRyb2xcIiBjbGFzcz1cIm1lc3NhZ2Utc2VuZGVyXCI+XG4gICAgPGxpYi1pbnB1dC1maWVsZFxuICAgICAgI2NoYXRJbnB1dFxuICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRDb250cm9sXCJcbiAgICAgIFt2YWx1ZV09XCJuZXdUZXh0TWVzc2FnZVwiXG4gICAgICBbbGFiZWxdPVwiXCJcbiAgICAgIFt0ZXh0YXJlYV09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VuZCBNZXNzYWdlIHRvIENsaWVudCBQcm9zcGVjdFwiXG4gICAgICAoa2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgPlxuICAgIDwvbGliLWlucHV0LWZpZWxkPlxuICAgIDxkaXYgY2xhc3M9XCJjaGF0LWJ1dHRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZW5kXCIgbGliTG9uZ1ByZXNzIFtsb25nUHJlc3NFbmFibGVkXT1cImxvbmdQcmVzc0VuYWJsZWRcIiAoc2hvcnRQcmVzcyk9XCJvblNlbmRUZXh0KClcIiAobG9uZ1ByZXNzKT1cIm9uTG9uZ1ByZXNzKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMyAyMlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfNzQ4XzMzODcpXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE0LjYzMTEgMTcuMDU0NUwxOC4zMjI5IDUuODU5OTZDMTguNjkyIDQuNzc4NjcgMTcuNjQ2IDMuNjk3MzggMTYuNjAwMSA0LjA3OTAxTDUuNzcwOTIgNy44OTUzM0M0LjU0MDMzIDguMzQwNTYgNC41NDAzMyAxMC4xMjE1IDUuODMyNDQgMTAuNTAzMkw5LjQ2MjY2IDExLjUyMDhDMTAuMjYyNSAxMS43NzUzIDEwLjkzOTQgMTIuNDExMyAxMS4xMjM5IDEzLjIzODFMMTIuMTA4NCAxNi45OTA4QzEyLjQ3NzYgMTguMzI2NiAxNC4yMDA0IDE4LjMyNjYgMTQuNjMxMSAxNy4wNTQ1WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF83NDhfMzM4N1wiIHg9XCIwLjg1NTUzXCIgeT1cIjAuMDAwNzMyNDIyXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgPGZlT2Zmc2V0IC8+XG4gICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwib3V0XCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDAuMDk2MTUzOCAwIDAgMCAwIDAuNTkzMjY5IDAgMCAwIDEgMFwiIC8+XG4gICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNzQ4XzMzODdcIiAvPlxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF8zMzg3XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGliLXBvcHVwIGN1c3RvbUNsYXNzPVwibWVzc2FnZS1tb2RhbC1jb250YWluZXJcIiBbaXNPcGVuXT1cInRvZ2dsZU1lc3NhZ2VNb2RhbFwiIFttb2RhbENvbXBvbmVudF09XCJNb2RhbENvbXBvbmVudFwiIFttb2RhbENvbXBvbmVudERhdGFdPVwieyBtb2RhbDoge30gfVwiPiA8L2xpYi1wb3B1cD5cbiAgICAgIDxkaXZcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZW1vamktcGlja2VyLXRyaWdnZXInOiB0cnVlLCBhY3RpdmU6IGVtb2ppVmlzaWJpbGl0eSB9XCJcbiAgICAgICAgW25hbWVdPVwiZW1vamlQaWNrZXJDb25maWc/LnBpY2tlckljb24gPyAnJyA6ICdib2R5LW91dGxpbmUnXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZUVtb2ppUGlja2VyQ2xpY2soKVwiXG4gICAgICAgIFtzcmNdPVwiZW1vamlQaWNrZXJDb25maWc/LnBpY2tlckljb25cIlxuICAgICAgICBjbGFzcz1cImVtb2ppXCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgb3ZlcmZsb3c9XCJhdXRvXCI+XG4gICAgICAgICAgPGc+XG4gICAgICAgICAgICA8bWFzayBpZD1cInBhdGgtMS1vdXRzaWRlLTFfNDIyXzM0MTRcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCItMC43MjU1MVwiIHk9XCItMC43MTM3NzZcIiBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNNS4xMzA1NyAwLjI4NjIyNEM3LjgxMjUzIDAuMjg2MjI0IDkuOTg2NjUgMi41MzM3MyA5Ljk4NjY1IDUuMzA2MjNDOS45ODY2NSA4LjA3ODIzIDcuODEyMDUgMTAuMzI1MiA1LjEzMDU3IDEwLjMyNTJDMi40NDg2MSAxMC4zMjU3IDAuMjc0NDkgOC4wNzgyMyAwLjI3NDQ5IDUuMzA2MjNDMC4yNzQ0OSAyLjUzMzczIDIuNDQ4NjEgMC4yODYyMjQgNS4xMzA1NyAwLjI4NjIyNFpNNS4xMzA1NyAxLjAzOTA4QzQuNTg0NzYgMS4wMzI5NiA0LjA0MzIgMS4xMzg4IDMuNTM3MjMgMS4zNTA0OUMzLjAzMTI2IDEuNTYyMTggMi41NzA5MiAxLjg3NTUgMi4xODI4NyAyLjI3MjMzQzEuNzk0ODIgMi42NjkxNSAxLjQ4Njc1IDMuMTQxNiAxLjI3NjUgMy42NjIzM0MxLjA2NjI1IDQuMTgzMDUgMC45NTc5OSA0Ljc0MTcyIDAuOTU3OTkgNS4zMDU5OEMwLjk1Nzk5IDUuODcwMjUgMS4wNjYyNSA2LjQyODkxIDEuMjc2NSA2Ljk0OTY0QzEuNDg2NzUgNy40NzAzNiAxLjc5NDgyIDcuOTQyODEgMi4xODI4NyA4LjMzOTY0QzIuNTcwOTIgOC43MzY0NiAzLjAzMTI2IDkuMDQ5NzkgMy41MzcyMyA5LjI2MTQ3QzQuMDQzMiA5LjQ3MzE2IDQuNTg0NzYgOS41NzkwMSA1LjEzMDU3IDkuNTcyODlDNi4yMTc1MiA5LjU2MDcgNy4yNTU5NCA5LjEwNTc5IDguMDIwMzkgOC4zMDY5MUM4Ljc4NDg1IDcuNTA4MDQgOS4yMTM2MiA2LjQyOTY5IDkuMjEzNjIgNS4zMDU5OEM5LjIxMzYyIDQuMTgyMjggOC43ODQ4NSAzLjEwMzkzIDguMDIwMzkgMi4zMDUwNUM3LjI1NTk0IDEuNTA2MTggNi4yMTc1MiAxLjA1MTI2IDUuMTMwNTcgMS4wMzkwOFpNMy40MTI4MyA2LjcwMzAyQzMuNjE3MTggNi45NzE5MyAzLjg3ODAzIDcuMTg5MjUgNC4xNzU2MyA3LjMzODU1QzQuNDczMjMgNy40ODc4NSA0Ljc5OTc4IDcuNTY1MjIgNS4xMzA1NyA3LjU2NDc5QzUuNDYxIDcuNTY1MiA1Ljc4NzIxIDcuNDg3OTggNi4wODQ1MyA3LjMzODk1QzYuMzgxODYgNy4xODk5MiA2LjY0MjUzIDYuOTcyOTggNi44NDY4NSA2LjcwNDUzQzYuODc2NSA2LjY2NTc0IDYuOTEzMjUgNi42MzMzNyA2Ljk1NSA2LjYwOTI2QzYuOTk2NzUgNi41ODUxNSA3LjA0MjY4IDYuNTY5NzggNy4wOTAxOCA2LjU2NDAzQzcuMTM3NjcgNi41NTgyNyA3LjE4NTggNi41NjIyNCA3LjIzMTgxIDYuNTc1NzFDNy4yNzc4MiA2LjU4OTE5IDcuMzIwODIgNi42MTE5IDcuMzU4MzQgNi42NDI1NEM3LjM5NTg2IDYuNjczMTkgNy40MjcxNyA2LjcxMTE4IDcuNDUwNDkgNi43NTQzNEM3LjQ3MzgxIDYuNzk3NSA3LjQ4ODY4IDYuODQ0OTggNy40OTQyNSA2Ljg5NDA4QzcuNDk5ODIgNi45NDMxOCA3LjQ5NTk4IDYuOTkyOTMgNy40ODI5NCA3LjA0MDVDNy40Njk5MSA3LjA4ODA2IDcuNDQ3OTUgNy4xMzI1MSA3LjQxODMgNy4xNzEzQzcuMTQ1ODIgNy41Mjg5NyA2Ljc5ODMzIDcuODE4IDYuNDAyMDIgOC4wMTY1OEM2LjAwNTcyIDguMjE1MTYgNS41NzA5NyA4LjMxODEgNS4xMzA1NyA4LjMxNzY0QzQuNjg5NTMgOC4zMTgwOCA0LjI1NDE2IDguMjE0ODQgMy44NTc0IDguMDE1NzJDMy40NjA2NCA3LjgxNjYgMy4xMTI4NyA3LjUyNjgxIDIuODQwNDIgNy4xNjgyOEMyLjgxMDgzIDcuMTI5NDMgMi43ODg5NCA3LjA4NDkzIDIuNzc1OTkgNy4wMzczM0MyLjc2MzA0IDYuOTg5NzMgMi43NTkyOSA2LjkzOTk2IDIuNzY0OTUgNi44OTA4NkMyLjc3MDYxIDYuODQxNzYgMi43ODU1NiA2Ljc5NDMgMi44MDg5NyA2Ljc1MTE3QzIuODMyMzcgNi43MDgwNSAyLjg2Mzc2IDYuNjcwMTEgMi45MDEzNSA2LjYzOTUzQzIuOTM4OTMgNi42MDg5NSAyLjk4MTk4IDYuNTg2MzIgMy4wMjgwMiA2LjU3MjkzQzMuMDc0MDcgNi41NTk1NSAzLjEyMjIxIDYuNTU1NjcgMy4xNjk3MSA2LjU2MTUyQzMuMjE3MjEgNi41NjczNyAzLjI2MzEyIDYuNTgyODMgMy4zMDQ4NCA2LjYwNzAyQzMuMzQ2NTUgNi42MzEyMiAzLjM4MzI1IDYuNjYzNjcgMy40MTI4MyA2LjcwMjUyVjYuNzAzMDJaTTMuNjc0MDQgMy42NzUwNkMzLjc1NTE1IDMuNjcyNjggMy44MzU4OSAzLjY4NzE1IDMuOTExNSAzLjcxNzZDMy45ODcxMSAzLjc0ODA1IDQuMDU2MDQgMy43OTM4NiA0LjExNDIyIDMuODUyMzNDNC4xNzI0MSAzLjkxMDggNC4yMTg2NiAzLjk4MDczIDQuMjUwMjQgNC4wNThDNC4yODE4MiA0LjEzNTI3IDQuMjk4MDkgNC4yMTgzIDQuMjk4MDkgNC4zMDIxOEM0LjI5ODA5IDQuMzg2MDYgNC4yODE4MiA0LjQ2OTA5IDQuMjUwMjQgNC41NDYzNkM0LjIxODY2IDQuNjIzNjMgNC4xNzI0MSA0LjY5MzU2IDQuMTE0MjIgNC43NTIwM0M0LjA1NjA0IDQuODEwNSAzLjk4NzExIDQuODU2MzEgMy45MTE1IDQuODg2NzZDMy44MzU4OSA0LjkxNzIxIDMuNzU1MTUgNC45MzE2OCAzLjY3NDA0IDQuOTI5MzFDMy41MTYxMiA0LjkyNDY5IDMuMzY2MTYgNC44NTY1OSAzLjI1NjA0IDQuNzM5NDhDMy4xNDU5MiA0LjYyMjM4IDMuMDg0MzEgNC40NjU1IDMuMDg0MzEgNC4zMDIxOEMzLjA4NDMxIDQuMTM4ODYgMy4xNDU5MiAzLjk4MTk4IDMuMjU2MDQgMy44NjQ4OEMzLjM2NjE2IDMuNzQ3NzcgMy41MTYxMiAzLjY3OTY4IDMuNjc0MDQgMy42NzUwNlpNNi41ODcxIDMuNjc1MDZDNi42NjgyMSAzLjY3MjY4IDYuNzQ4OTYgMy42ODcxNSA2LjgyNDU3IDMuNzE3NkM2LjkwMDE4IDMuNzQ4MDUgNi45NjkxMSAzLjc5Mzg2IDcuMDI3MjkgMy44NTIzM0M3LjA4NTQ3IDMuOTEwOCA3LjEzMTcyIDMuOTgwNzMgNy4xNjMzIDQuMDU4QzcuMTk0ODggNC4xMzUyNyA3LjIxMTE2IDQuMjE4MyA3LjIxMTE2IDQuMzAyMThDNy4yMTExNiA0LjM4NjA2IDcuMTk0ODggNC40NjkwOSA3LjE2MzMgNC41NDYzNkM3LjEzMTcyIDQuNjIzNjMgNy4wODU0NyA0LjY5MzU2IDcuMDI3MjkgNC43NTIwM0M2Ljk2OTExIDQuODEwNSA2LjkwMDE4IDQuODU2MzEgNi44MjQ1NyA0Ljg4Njc2QzYuNzQ4OTYgNC45MTcyMSA2LjY2ODIxIDQuOTMxNjggNi41ODcxIDQuOTI5MzFDNi40MjkxOCA0LjkyNDY5IDYuMjc5MjMgNC44NTY1OSA2LjE2OTExIDQuNzM5NDhDNi4wNTg5OCA0LjYyMjM4IDUuOTk3MzggNC40NjU1IDUuOTk3MzggNC4zMDIxOEM1Ljk5NzM4IDQuMTM4ODYgNi4wNTg5OCAzLjk4MTk4IDYuMTY5MTEgMy44NjQ4OEM2LjI3OTIzIDMuNzQ3NzcgNi40MjkxOCAzLjY3OTY4IDYuNTg3MSAzLjY3NTA2WlwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L21hc2s+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBfbmdjb250ZW50LW5nLWM0MzM2MzY4OTE9XCJcIlxuICAgICAgICAgICAgICBkPVwiTTUuMTMwNTcgMC4yODYyMjRDNy44MTI1MyAwLjI4NjIyNCA5Ljk4NjY1IDIuNTMzNzMgOS45ODY2NSA1LjMwNjIzQzkuOTg2NjUgOC4wNzgyMyA3LjgxMjA1IDEwLjMyNTIgNS4xMzA1NyAxMC4zMjUyQzIuNDQ4NjEgMTAuMzI1NyAwLjI3NDQ5IDguMDc4MjMgMC4yNzQ0OSA1LjMwNjIzQzAuMjc0NDkgMi41MzM3MyAyLjQ0ODYxIDAuMjg2MjI0IDUuMTMwNTcgMC4yODYyMjRaTTUuMTMwNTcgMS4wMzkwOEM0LjU4NDc2IDEuMDMyOTYgNC4wNDMyIDEuMTM4OCAzLjUzNzIzIDEuMzUwNDlDMy4wMzEyNiAxLjU2MjE4IDIuNTcwOTIgMS44NzU1IDIuMTgyODcgMi4yNzIzM0MxLjc5NDgyIDIuNjY5MTUgMS40ODY3NSAzLjE0MTYgMS4yNzY1IDMuNjYyMzNDMS4wNjYyNSA0LjE4MzA1IDAuOTU3OTkgNC43NDE3MiAwLjk1Nzk5IDUuMzA1OThDMC45NTc5OSA1Ljg3MDI1IDEuMDY2MjUgNi40Mjg5MSAxLjI3NjUgNi45NDk2NEMxLjQ4Njc1IDcuNDcwMzYgMS43OTQ4MiA3Ljk0MjgxIDIuMTgyODcgOC4zMzk2NEMyLjU3MDkyIDguNzM2NDYgMy4wMzEyNiA5LjA0OTc5IDMuNTM3MjMgOS4yNjE0N0M0LjA0MzIgOS40NzMxNiA0LjU4NDc2IDkuNTc5MDEgNS4xMzA1NyA5LjU3Mjg5QzYuMjE3NTIgOS41NjA3IDcuMjU1OTQgOS4xMDU3OSA4LjAyMDM5IDguMzA2OTFDOC43ODQ4NSA3LjUwODA0IDkuMjEzNjIgNi40Mjk2OSA5LjIxMzYyIDUuMzA1OThDOS4yMTM2MiA0LjE4MjI4IDguNzg0ODUgMy4xMDM5MyA4LjAyMDM5IDIuMzA1MDVDNy4yNTU5NCAxLjUwNjE4IDYuMjE3NTIgMS4wNTEyNiA1LjEzMDU3IDEuMDM5MDhaTTMuNDEyODMgNi43MDMwMkMzLjYxNzE4IDYuOTcxOTMgMy44NzgwMyA3LjE4OTI1IDQuMTc1NjMgNy4zMzg1NUM0LjQ3MzIzIDcuNDg3ODUgNC43OTk3OCA3LjU2NTIyIDUuMTMwNTcgNy41NjQ3OUM1LjQ2MSA3LjU2NTIgNS43ODcyMSA3LjQ4Nzk4IDYuMDg0NTMgNy4zMzg5NUM2LjM4MTg2IDcuMTg5OTIgNi42NDI1MyA2Ljk3Mjk4IDYuODQ2ODUgNi43MDQ1M0M2Ljg3NjUgNi42NjU3NCA2LjkxMzI1IDYuNjMzMzcgNi45NTUgNi42MDkyNkM2Ljk5Njc1IDYuNTg1MTUgNy4wNDI2OCA2LjU2OTc4IDcuMDkwMTggNi41NjQwM0M3LjEzNzY3IDYuNTU4MjcgNy4xODU4IDYuNTYyMjQgNy4yMzE4MSA2LjU3NTcxQzcuMjc3ODIgNi41ODkxOSA3LjMyMDgyIDYuNjExOSA3LjM1ODM0IDYuNjQyNTRDNy4zOTU4NiA2LjY3MzE5IDcuNDI3MTcgNi43MTExOCA3LjQ1MDQ5IDYuNzU0MzRDNy40NzM4MSA2Ljc5NzUgNy40ODg2OCA2Ljg0NDk4IDcuNDk0MjUgNi44OTQwOEM3LjQ5OTgyIDYuOTQzMTggNy40OTU5OCA2Ljk5MjkzIDcuNDgyOTQgNy4wNDA1QzcuNDY5OTEgNy4wODgwNiA3LjQ0Nzk1IDcuMTMyNTEgNy40MTgzIDcuMTcxM0M3LjE0NTgyIDcuNTI4OTcgNi43OTgzMyA3LjgxOCA2LjQwMjAyIDguMDE2NThDNi4wMDU3MiA4LjIxNTE2IDUuNTcwOTcgOC4zMTgxIDUuMTMwNTcgOC4zMTc2NEM0LjY4OTUzIDguMzE4MDggNC4yNTQxNiA4LjIxNDg0IDMuODU3NCA4LjAxNTcyQzMuNDYwNjQgNy44MTY2IDMuMTEyODcgNy41MjY4MSAyLjg0MDQyIDcuMTY4MjhDMi44MTA4MyA3LjEyOTQzIDIuNzg4OTQgNy4wODQ5MyAyLjc3NTk5IDcuMDM3MzNDMi43NjMwNCA2Ljk4OTczIDIuNzU5MjkgNi45Mzk5NiAyLjc2NDk1IDYuODkwODZDMi43NzA2MSA2Ljg0MTc2IDIuNzg1NTYgNi43OTQzIDIuODA4OTcgNi43NTExN0MyLjgzMjM3IDYuNzA4MDUgMi44NjM3NiA2LjY3MDExIDIuOTAxMzUgNi42Mzk1M0MyLjkzODkzIDYuNjA4OTUgMi45ODE5OCA2LjU4NjMyIDMuMDI4MDIgNi41NzI5M0MzLjA3NDA3IDYuNTU5NTUgMy4xMjIyMSA2LjU1NTY3IDMuMTY5NzEgNi41NjE1MkMzLjIxNzIxIDYuNTY3MzcgMy4yNjMxMiA2LjU4MjgzIDMuMzA0ODQgNi42MDcwMkMzLjM0NjU1IDYuNjMxMjIgMy4zODMyNSA2LjY2MzY3IDMuNDEyODMgNi43MDI1MlY2LjcwMzAyWk0zLjY3NDA0IDMuNjc1MDZDMy43NTUxNSAzLjY3MjY4IDMuODM1ODkgMy42ODcxNSAzLjkxMTUgMy43MTc2QzMuOTg3MTEgMy43NDgwNSA0LjA1NjA0IDMuNzkzODYgNC4xMTQyMiAzLjg1MjMzQzQuMTcyNDEgMy45MTA4IDQuMjE4NjYgMy45ODA3MyA0LjI1MDI0IDQuMDU4QzQuMjgxODIgNC4xMzUyNyA0LjI5ODA5IDQuMjE4MyA0LjI5ODA5IDQuMzAyMThDNC4yOTgwOSA0LjM4NjA2IDQuMjgxODIgNC40NjkwOSA0LjI1MDI0IDQuNTQ2MzZDNC4yMTg2NiA0LjYyMzYzIDQuMTcyNDEgNC42OTM1NiA0LjExNDIyIDQuNzUyMDNDNC4wNTYwNCA0LjgxMDUgMy45ODcxMSA0Ljg1NjMxIDMuOTExNSA0Ljg4Njc2QzMuODM1ODkgNC45MTcyMSAzLjc1NTE1IDQuOTMxNjggMy42NzQwNCA0LjkyOTMxQzMuNTE2MTIgNC45MjQ2OSAzLjM2NjE2IDQuODU2NTkgMy4yNTYwNCA0LjczOTQ4QzMuMTQ1OTIgNC42MjIzOCAzLjA4NDMxIDQuNDY1NSAzLjA4NDMxIDQuMzAyMThDMy4wODQzMSA0LjEzODg2IDMuMTQ1OTIgMy45ODE5OCAzLjI1NjA0IDMuODY0ODhDMy4zNjYxNiAzLjc0Nzc3IDMuNTE2MTIgMy42Nzk2OCAzLjY3NDA0IDMuNjc1MDZaTTYuNTg3MSAzLjY3NTA2QzYuNjY4MjEgMy42NzI2OCA2Ljc0ODk2IDMuNjg3MTUgNi44MjQ1NyAzLjcxNzZDNi45MDAxOCAzLjc0ODA1IDYuOTY5MTEgMy43OTM4NiA3LjAyNzI5IDMuODUyMzNDNy4wODU0NyAzLjkxMDggNy4xMzE3MiAzLjk4MDczIDcuMTYzMyA0LjA1OEM3LjE5NDg4IDQuMTM1MjcgNy4yMTExNiA0LjIxODMgNy4yMTExNiA0LjMwMjE4QzcuMjExMTYgNC4zODYwNiA3LjE5NDg4IDQuNDY5MDkgNy4xNjMzIDQuNTQ2MzZDNy4xMzE3MiA0LjYyMzYzIDcuMDg1NDcgNC42OTM1NiA3LjAyNzI5IDQuNzUyMDNDNi45NjkxMSA0LjgxMDUgNi45MDAxOCA0Ljg1NjMxIDYuODI0NTcgNC44ODY3NkM2Ljc0ODk2IDQuOTE3MjEgNi42NjgyMSA0LjkzMTY4IDYuNTg3MSA0LjkyOTMxQzYuNDI5MTggNC45MjQ2OSA2LjI3OTIzIDQuODU2NTkgNi4xNjkxMSA0LjczOTQ4QzYuMDU4OTggNC42MjIzOCA1Ljk5NzM4IDQuNDY1NSA1Ljk5NzM4IDQuMzAyMThDNS45OTczOCA0LjEzODg2IDYuMDU4OTggMy45ODE5OCA2LjE2OTExIDMuODY0ODhDNi4yNzkyMyAzLjc0Nzc3IDYuNDI5MTggMy42Nzk2OCA2LjU4NzEgMy42NzUwNlpcIlxuICAgICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgX25nY29udGVudC1uZy1jNDMzNjM2ODkxPVwiXCJcbiAgICAgICAgICAgICAgZD1cIk01LjEzMDU3IDAuMjg2MjI0QzcuODEyNTMgMC4yODYyMjQgOS45ODY2NSAyLjUzMzczIDkuOTg2NjUgNS4zMDYyM0M5Ljk4NjY1IDguMDc4MjMgNy44MTIwNSAxMC4zMjUyIDUuMTMwNTcgMTAuMzI1MkMyLjQ0ODYxIDEwLjMyNTcgMC4yNzQ0OSA4LjA3ODIzIDAuMjc0NDkgNS4zMDYyM0MwLjI3NDQ5IDIuNTMzNzMgMi40NDg2MSAwLjI4NjIyNCA1LjEzMDU3IDAuMjg2MjI0Wk01LjEzMDU3IDEuMDM5MDhDNC41ODQ3NiAxLjAzMjk2IDQuMDQzMiAxLjEzODggMy41MzcyMyAxLjM1MDQ5QzMuMDMxMjYgMS41NjIxOCAyLjU3MDkyIDEuODc1NSAyLjE4Mjg3IDIuMjcyMzNDMS43OTQ4MiAyLjY2OTE1IDEuNDg2NzUgMy4xNDE2IDEuMjc2NSAzLjY2MjMzQzEuMDY2MjUgNC4xODMwNSAwLjk1Nzk5IDQuNzQxNzIgMC45NTc5OSA1LjMwNTk4QzAuOTU3OTkgNS44NzAyNSAxLjA2NjI1IDYuNDI4OTEgMS4yNzY1IDYuOTQ5NjRDMS40ODY3NSA3LjQ3MDM2IDEuNzk0ODIgNy45NDI4MSAyLjE4Mjg3IDguMzM5NjRDMi41NzA5MiA4LjczNjQ2IDMuMDMxMjYgOS4wNDk3OSAzLjUzNzIzIDkuMjYxNDdDNC4wNDMyIDkuNDczMTYgNC41ODQ3NiA5LjU3OTAxIDUuMTMwNTcgOS41NzI4OUM2LjIxNzUyIDkuNTYwNyA3LjI1NTk0IDkuMTA1NzkgOC4wMjAzOSA4LjMwNjkxQzguNzg0ODUgNy41MDgwNCA5LjIxMzYyIDYuNDI5NjkgOS4yMTM2MiA1LjMwNTk4QzkuMjEzNjIgNC4xODIyOCA4Ljc4NDg1IDMuMTAzOTMgOC4wMjAzOSAyLjMwNTA1QzcuMjU1OTQgMS41MDYxOCA2LjIxNzUyIDEuMDUxMjYgNS4xMzA1NyAxLjAzOTA4Wk0zLjQxMjgzIDYuNzAzMDJDMy42MTcxOCA2Ljk3MTkzIDMuODc4MDMgNy4xODkyNSA0LjE3NTYzIDcuMzM4NTVDNC40NzMyMyA3LjQ4Nzg1IDQuNzk5NzggNy41NjUyMiA1LjEzMDU3IDcuNTY0NzlDNS40NjEgNy41NjUyIDUuNzg3MjEgNy40ODc5OCA2LjA4NDUzIDcuMzM4OTVDNi4zODE4NiA3LjE4OTkyIDYuNjQyNTMgNi45NzI5OCA2Ljg0Njg1IDYuNzA0NTNDNi44NzY1IDYuNjY1NzQgNi45MTMyNSA2LjYzMzM3IDYuOTU1IDYuNjA5MjZDNi45OTY3NSA2LjU4NTE1IDcuMDQyNjggNi41Njk3OCA3LjA5MDE4IDYuNTY0MDNDNy4xMzc2NyA2LjU1ODI3IDcuMTg1OCA2LjU2MjI0IDcuMjMxODEgNi41NzU3MUM3LjI3NzgyIDYuNTg5MTkgNy4zMjA4MiA2LjYxMTkgNy4zNTgzNCA2LjY0MjU0QzcuMzk1ODYgNi42NzMxOSA3LjQyNzE3IDYuNzExMTggNy40NTA0OSA2Ljc1NDM0QzcuNDczODEgNi43OTc1IDcuNDg4NjggNi44NDQ5OCA3LjQ5NDI1IDYuODk0MDhDNy40OTk4MiA2Ljk0MzE4IDcuNDk1OTggNi45OTI5MyA3LjQ4Mjk0IDcuMDQwNUM3LjQ2OTkxIDcuMDg4MDYgNy40NDc5NSA3LjEzMjUxIDcuNDE4MyA3LjE3MTNDNy4xNDU4MiA3LjUyODk3IDYuNzk4MzMgNy44MTggNi40MDIwMiA4LjAxNjU4QzYuMDA1NzIgOC4yMTUxNiA1LjU3MDk3IDguMzE4MSA1LjEzMDU3IDguMzE3NjRDNC42ODk1MyA4LjMxODA4IDQuMjU0MTYgOC4yMTQ4NCAzLjg1NzQgOC4wMTU3MkMzLjQ2MDY0IDcuODE2NiAzLjExMjg3IDcuNTI2ODEgMi44NDA0MiA3LjE2ODI4QzIuODEwODMgNy4xMjk0MyAyLjc4ODk0IDcuMDg0OTMgMi43NzU5OSA3LjAzNzMzQzIuNzYzMDQgNi45ODk3MyAyLjc1OTI5IDYuOTM5OTYgMi43NjQ5NSA2Ljg5MDg2QzIuNzcwNjEgNi44NDE3NiAyLjc4NTU2IDYuNzk0MyAyLjgwODk3IDYuNzUxMTdDMi44MzIzNyA2LjcwODA1IDIuODYzNzYgNi42NzAxMSAyLjkwMTM1IDYuNjM5NTNDMi45Mzg5MyA2LjYwODk1IDIuOTgxOTggNi41ODYzMiAzLjAyODAyIDYuNTcyOTNDMy4wNzQwNyA2LjU1OTU1IDMuMTIyMjEgNi41NTU2NyAzLjE2OTcxIDYuNTYxNTJDMy4yMTcyMSA2LjU2NzM3IDMuMjYzMTIgNi41ODI4MyAzLjMwNDg0IDYuNjA3MDJDMy4zNDY1NSA2LjYzMTIyIDMuMzgzMjUgNi42NjM2NyAzLjQxMjgzIDYuNzAyNTJWNi43MDMwMlpNMy42NzQwNCAzLjY3NTA2QzMuNzU1MTUgMy42NzI2OCAzLjgzNTg5IDMuNjg3MTUgMy45MTE1IDMuNzE3NkMzLjk4NzExIDMuNzQ4MDUgNC4wNTYwNCAzLjc5Mzg2IDQuMTE0MjIgMy44NTIzM0M0LjE3MjQxIDMuOTEwOCA0LjIxODY2IDMuOTgwNzMgNC4yNTAyNCA0LjA1OEM0LjI4MTgyIDQuMTM1MjcgNC4yOTgwOSA0LjIxODMgNC4yOTgwOSA0LjMwMjE4QzQuMjk4MDkgNC4zODYwNiA0LjI4MTgyIDQuNDY5MDkgNC4yNTAyNCA0LjU0NjM2QzQuMjE4NjYgNC42MjM2MyA0LjE3MjQxIDQuNjkzNTYgNC4xMTQyMiA0Ljc1MjAzQzQuMDU2MDQgNC44MTA1IDMuOTg3MTEgNC44NTYzMSAzLjkxMTUgNC44ODY3NkMzLjgzNTg5IDQuOTE3MjEgMy43NTUxNSA0LjkzMTY4IDMuNjc0MDQgNC45MjkzMUMzLjUxNjEyIDQuOTI0NjkgMy4zNjYxNiA0Ljg1NjU5IDMuMjU2MDQgNC43Mzk0OEMzLjE0NTkyIDQuNjIyMzggMy4wODQzMSA0LjQ2NTUgMy4wODQzMSA0LjMwMjE4QzMuMDg0MzEgNC4xMzg4NiAzLjE0NTkyIDMuOTgxOTggMy4yNTYwNCAzLjg2NDg4QzMuMzY2MTYgMy43NDc3NyAzLjUxNjEyIDMuNjc5NjggMy42NzQwNCAzLjY3NTA2Wk02LjU4NzEgMy42NzUwNkM2LjY2ODIxIDMuNjcyNjggNi43NDg5NiAzLjY4NzE1IDYuODI0NTcgMy43MTc2QzYuOTAwMTggMy43NDgwNSA2Ljk2OTExIDMuNzkzODYgNy4wMjcyOSAzLjg1MjMzQzcuMDg1NDcgMy45MTA4IDcuMTMxNzIgMy45ODA3MyA3LjE2MzMgNC4wNThDNy4xOTQ4OCA0LjEzNTI3IDcuMjExMTYgNC4yMTgzIDcuMjExMTYgNC4zMDIxOEM3LjIxMTE2IDQuMzg2MDYgNy4xOTQ4OCA0LjQ2OTA5IDcuMTYzMyA0LjU0NjM2QzcuMTMxNzIgNC42MjM2MyA3LjA4NTQ3IDQuNjkzNTYgNy4wMjcyOSA0Ljc1MjAzQzYuOTY5MTEgNC44MTA1IDYuOTAwMTggNC44NTYzMSA2LjgyNDU3IDQuODg2NzZDNi43NDg5NiA0LjkxNzIxIDYuNjY4MjEgNC45MzE2OCA2LjU4NzEgNC45MjkzMUM2LjQyOTE4IDQuOTI0NjkgNi4yNzkyMyA0Ljg1NjU5IDYuMTY5MTEgNC43Mzk0OEM2LjA1ODk4IDQuNjIyMzggNS45OTczOCA0LjQ2NTUgNS45OTczOCA0LjMwMjE4QzUuOTk3MzggNC4xMzg4NiA2LjA1ODk4IDMuOTgxOTggNi4xNjkxMSAzLjg2NDg4QzYuMjc5MjMgMy43NDc3NyA2LjQyOTE4IDMuNjc5NjggNi41ODcxIDMuNjc1MDZaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwidXJsKCNwYWludDBfbGluZWFyXzc0OF8zMzg3KVwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMC40OTI1MzVcIlxuICAgICAgICAgICAgICBtYXNrPVwidXJsKCNwYXRoLTEtb3V0c2lkZS0xXzQyMl8zNDE0KVwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8ZGVmcyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzc0OF83Njg1XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgIDxmZU9mZnNldCAvPlxuICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiIC8+XG4gICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiIC8+XG4gICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAwLjA5NjE1MzggMCAwIDAgMCAwLjU5MzI2OSAwIDAgMCAxIDBcIiAvPlxuICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93Xzc0OF83Njg1XCIgLz5cbiAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwicGFpbnQwX2xpbmVhcl83NDhfNzY4NVwiIHgxPVwiMTQuMTUwOVwiIHkxPVwiMy40MzM3MlwiIHgyPVwiMC45OTI3OTlcIiB5Mj1cIjI2Ljc3MTVcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRTNDNzJcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjM4NDYxNVwiIHN0b3AtY29sb3I9XCIjRkZCNUU5XCIgLz5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFM0M3MlwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGVuYWJsZUdpZlBpY2tlcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2lmc1wiIChjbGljayk9XCJoYW5kbGVHaWZQaWNrZXJDbGljaygpXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnaWZzXCIgKm5nSWY9XCJpbmNsdWRlR2lmTWVzc2FnZVwiIChjbGljayk9XCJoYW5kbGVHaWZQaWNrZXJDbGljaygpXCI+XG4gICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDExIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTcuMDU1IDEwLjk5OTVINC44OTlDMy4yNTM1IDEwLjk5OTUgMi40MzA1IDEwLjk5OTUgMS44NTkgMTAuNjAwNUMxLjY5Njk0IDEwLjQ4NzMgMS41NTE2NyAxMC4zNTE4IDEuNDI3NSAxMC4xOThDMSA5LjY2NTAxIDEgOC44OTgwMSAxIDcuMzYzMDFWNi4wOTA1MUMxIDQuNjA5MDEgMSAzLjg2ODAxIDEuMjM2NSAzLjI3NjUxQzEuNjE3IDIuMzI1MDEgMi40MjE1IDEuNTc1MDEgMy40NDE1IDEuMjIwMDFDNC4wNzUgMC45OTk1MTIgNC44NyAwLjk5OTUxMiA2LjQ1ODUgMC45OTk1MTJDNy4zNjY1IDAuOTk5NTEyIDcuODIgMC45OTk1MTIgOC4xODI1IDEuMTI1NTFDOC43NjU1IDEuMzI4NTEgOS4yMjUgMS43NTcwMSA5LjQ0MjUgMi4zMDA1MUM5LjU3NzUgMi42Mzg1MSA5LjU3NzUgMy4wNjIwMSA5LjU3NzUgMy45MDg1MVY0Ljk5OTUxXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjc1XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0xIDUuOTk5NTFDMSA1LjA3OTUxIDEuNzUzIDQuMzMzMDEgMi42ODIgNC4zMzMwMUMzLjAxOCA0LjMzMzAxIDMuNDE0IDQuMzkxMDEgMy43NDA1IDQuMzA0NTFDMy44ODI4MSA0LjI2NzM2IDQuMDEyNzggNC4xOTMyOCA0LjExNzI2IDQuMDg5NzZDNC4yMjE3NCAzLjk4NjI0IDQuMjk3MDMgMy44NTY5NyA0LjMzNTUgMy43MTUwMUM0LjQyMjUgMy4zOTE1MSA0LjM2NCAyLjk5OTAxIDQuMzY0IDIuNjY2MDFDNC4zNjQgMS43NDYwMSA1LjExNyAwLjk5OTUxMiA2LjA0NSAwLjk5OTUxMk02LjA0NiA4Ljk5OTUxSDcuMzA3NU00LjgzMyA2LjkyNDUxQzQuNzcgNi41MjQ1MSA0LjY5MjUgNi41MjQwMSA0LjAyOCA2LjQ5OTUxSDMuNTIzQzMuMjQ0NSA2LjQ5OTUxIDMuMDE4NSA2LjcyMzUxIDMuMDE4NSA2Ljk5OTUxVjguNDk5NTFDMy4wMTg1IDguNzc1NTEgMy4yNDQ1IDguOTk5NTEgMy41MjM1IDguOTk5NTFINC40MzE1QzQuNjI2NSA4Ljk5OTUxIDQuODMzIDguODQzMDEgNC44MzMgOC42NDk1MVY4LjA5OTUxQzQuODMzIDguMDQ0NTEgNC43NzY1IDcuOTQ3NTEgNC43MjEgNy45NDc1MUg0LjE1OU02LjA0NiA2LjQ5OTUxSDYuNjc2NU02LjY3NjUgNi40OTk1MUg3LjMwNzVNNi42NzY1IDYuNDk5NTFWOC45MzcwMU0xMC4yNTA1IDYuNDk5NTFIOC45ODlDOC43MTA1IDYuNDk5NTEgOC40ODQ1IDYuNzIzNTEgOC40ODQ1IDYuOTk5NTFWNy43NDk1MU04LjQ4NDUgNy43NDk1MVY4Ljk5OTUxTTguNDg0NSA3Ljc0OTUxSDkuNzQ2XCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJ1cmwoI3BhaW50MF9saW5lYXJfNzQ4XzMzODcpXCJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjc1XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8ZGVmcyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfNzQ4Xzc2ODVcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgICAgPGZlT2Zmc2V0IC8+XG4gICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjJcIiAvPlxuICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDAuMDk2MTUzOCAwIDAgMCAwIDAuNTkzMjY5IDAgMCAwIDEgMFwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIC8+XG4gICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd183NDhfNzY4NVwiIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50MF9saW5lYXJfNzQ4Xzc2ODVcIiB4MT1cIjE0LjE1MDlcIiB5MT1cIjMuNDMzNzJcIiB4Mj1cIjAuOTkyNzk5XCIgeTI9XCIyNi43NzE1XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRTNDNzJcIiAvPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAuMzg0NjE1XCIgc3RvcC1jb2xvcj1cIiNGRkI1RTlcIiAvPlxuICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzc0OF8zMzg3XCIgeDE9XCIxOC41MTM0XCIgeTE9XCIyLjgxMDk3XCIgeDI9XCIwLjE2Mjc3M1wiIHkyPVwiMzUuMzU1NlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkUzQzcyXCIgLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjM4NDYxNVwiIHN0b3AtY29sb3I9XCIjRkZCNUU5XCIgLz5cbiAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImVtb2ppLXBpY2tlci1zcGFjZVwiIFtuZ1N0eWxlXT1cInsgJ3otaW5kZXgnOiAhKGdpZlZpc2liaWxpdHkgfHwgZW1vamlWaXNpYmlsaXR5KSA/IC0xIDogMTEgfVwiIChibHVyKT1cIm9uQmx1clBpY2tlclNwYWNlKClcIj5cbiAgICAgIEBpZiAoZ2lmVmlzaWJpbGl0eSAmJiBlbmFibGVHaWZQaWNrZXIpIHtcbiAgICAgICAgPGxpYi1naWYtc2VsZWN0b3IgKHNlbGVjdEdpZik9XCJvbkdpZkNsaWNrKCRldmVudClcIj48L2xpYi1naWYtc2VsZWN0b3I+XG4gICAgICB9XG4gICAgICBAaWYgKGVtb2ppUGlja2VyT3BlbmVkKSB7XG4gICAgICAgIDxlbW9qaS1waWNrZXIgI2Vtb2ppUGlja2VyIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogZW1vamlWaXNpYmlsaXR5ID8gJycgOiAnbm9uZScgfVwiIGVtb2ppLXZlcnNpb249XCIxNS4wXCIgKGVtb2ppLWNsaWNrKT1cIm9uRW1vamljbGljaygkZXZlbnQpXCI+PC9lbW9qaS1waWNrZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19