@bizdoc/core 2.3.8 → 2.3.10

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 (388) hide show
  1. package/assets/system/hibob.svg +7 -7
  2. package/assets/themes/brown.min.css +2 -6
  3. package/assets/themes/dark.min.css +3 -7
  4. package/assets/themes/deep-purple-light-blue.min.css +2 -6
  5. package/assets/themes/deep-purple-teal.min.css +2 -6
  6. package/assets/themes/default.min.css +2 -6
  7. package/assets/themes/green.min.css +2 -6
  8. package/assets/themes/indigo.min.css +2 -6
  9. package/esm2022/lib/admin/admin-dismiss.service.mjs +3 -3
  10. package/esm2022/lib/admin/admin-menu.component.mjs +3 -3
  11. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +3 -3
  12. package/esm2022/lib/admin/architecture/designer-element.component.mjs +15 -15
  13. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +3 -3
  14. package/esm2022/lib/admin/architecture/designer.base.mjs +9 -9
  15. package/esm2022/lib/admin/architecture/designer.component.mjs +3 -3
  16. package/esm2022/lib/admin/architecture/elements/action.component.mjs +3 -3
  17. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +3 -3
  18. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  19. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  20. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +3 -3
  21. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  22. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
  23. package/esm2022/lib/admin/architecture/elements/control.component.mjs +3 -3
  24. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  25. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +3 -3
  26. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +3 -3
  27. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  28. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  29. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  30. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  31. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +3 -3
  32. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +3 -3
  33. package/esm2022/lib/admin/architecture/elements/form.component.mjs +3 -3
  34. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +3 -3
  35. package/esm2022/lib/admin/architecture/elements/job.component.mjs +3 -3
  36. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +3 -3
  37. package/esm2022/lib/admin/architecture/elements/node.component.mjs +3 -3
  38. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +3 -3
  39. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  40. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  41. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +3 -3
  42. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +3 -3
  43. package/esm2022/lib/admin/architecture/elements/report.component.mjs +3 -3
  44. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  45. package/esm2022/lib/admin/architecture/elements/role.component.mjs +3 -3
  46. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +3 -3
  47. package/esm2022/lib/admin/architecture/elements/source.component.mjs +3 -3
  48. package/esm2022/lib/admin/architecture/elements/state.component.mjs +3 -3
  49. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  50. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  51. package/esm2022/lib/admin/architecture/elements/type.component.mjs +3 -3
  52. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +3 -3
  53. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +3 -3
  54. package/esm2022/lib/admin/architecture/elements/view.component.mjs +3 -3
  55. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +3 -3
  56. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +3 -3
  57. package/esm2022/lib/admin/core/ace.input.mjs +3 -3
  58. package/esm2022/lib/admin/core/color-picker.input.mjs +3 -3
  59. package/esm2022/lib/admin/core/localized-string.component.mjs +3 -3
  60. package/esm2022/lib/admin/core/search.input.mjs +3 -3
  61. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +3 -3
  62. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +3 -3
  63. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  64. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +3 -3
  65. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +6 -6
  66. package/esm2022/lib/admin/form/designer/properties.component.mjs +3 -3
  67. package/esm2022/lib/admin/form/designer/section.component.mjs +3 -3
  68. package/esm2022/lib/admin/form/designer/settings.component.mjs +3 -3
  69. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -3
  70. package/esm2022/lib/admin/form/workflow/node.component.mjs +3 -3
  71. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +3 -3
  72. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +6 -6
  73. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  74. package/esm2022/lib/admin/patterns/patterns.component.mjs +3 -3
  75. package/esm2022/lib/admin/permissions/permissions.component.mjs +3 -3
  76. package/esm2022/lib/admin/positions/positions-popup.component.mjs +3 -3
  77. package/esm2022/lib/admin/positions/positions.component.mjs +6 -6
  78. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +3 -3
  79. package/esm2022/lib/admin/profiler/profiler.component.mjs +3 -3
  80. package/esm2022/lib/admin/system.service.mjs +3 -3
  81. package/esm2022/lib/admin/utility-wrapper.component.mjs +3 -3
  82. package/esm2022/lib/admin/utility.pane.component.mjs +3 -3
  83. package/esm2022/lib/app.component.mjs +6 -6
  84. package/esm2022/lib/bizdoc.module.mjs +4 -4
  85. package/esm2022/lib/browse/browse-items.component.mjs +6 -6
  86. package/esm2022/lib/browse/browse.mobile.component.mjs +3 -3
  87. package/esm2022/lib/browse/browse.pane.component.mjs +3 -3
  88. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +6 -6
  89. package/esm2022/lib/browse/filter/filter.component.mjs +3 -3
  90. package/esm2022/lib/browse/folders-menu.component.mjs +3 -3
  91. package/esm2022/lib/chat/chat-info.mjs +3 -3
  92. package/esm2022/lib/chat/chat.mobile.component.mjs +3 -3
  93. package/esm2022/lib/chat/chat.service.mjs +3 -3
  94. package/esm2022/lib/chat/contacts.component.mjs +6 -6
  95. package/esm2022/lib/chat/contacts.pane.component.mjs +3 -3
  96. package/esm2022/lib/chat/conversation.component.mjs +3 -3
  97. package/esm2022/lib/chat/conversation.pane.component.mjs +6 -5
  98. package/esm2022/lib/compose/action/action-picker.component.mjs +3 -3
  99. package/esm2022/lib/compose/action/action.base.mjs +2 -2
  100. package/esm2022/lib/compose/action/action.dialog.mjs +3 -3
  101. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  102. package/esm2022/lib/compose/action/assign-action.component.mjs +6 -6
  103. package/esm2022/lib/compose/action/moveto-action.component.mjs +6 -6
  104. package/esm2022/lib/compose/action/return-action.component.mjs +3 -3
  105. package/esm2022/lib/compose/attachments/attachments.component.mjs +3 -3
  106. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +5 -5
  107. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +3 -3
  108. package/esm2022/lib/compose/box/box.component.mjs +3 -3
  109. package/esm2022/lib/compose/box/control.component.mjs +3 -3
  110. package/esm2022/lib/compose/box/row.component.mjs +3 -3
  111. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +3 -3
  112. package/esm2022/lib/compose/comments/comment.component.mjs +3 -3
  113. package/esm2022/lib/compose/comments/comments.component.mjs +3 -3
  114. package/esm2022/lib/compose/comments/comments.pane.component.mjs +6 -5
  115. package/esm2022/lib/compose/comments/edit-comment.component.mjs +3 -3
  116. package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
  117. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +6 -6
  118. package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
  119. package/esm2022/lib/compose/compose-resolve.service.mjs +6 -6
  120. package/esm2022/lib/compose/compose.mobile.component.mjs +3 -3
  121. package/esm2022/lib/compose/compose.pane.component.mjs +3 -3
  122. package/esm2022/lib/compose/copy/copy.dialog.mjs +3 -3
  123. package/esm2022/lib/compose/dismiss.service.mjs +3 -3
  124. package/esm2022/lib/compose/document-resolver.service.mjs +3 -3
  125. package/esm2022/lib/compose/document.component.mjs +3 -3
  126. package/esm2022/lib/compose/document.mobile.component.mjs +3 -3
  127. package/esm2022/lib/compose/document.pane.component.mjs +3 -3
  128. package/esm2022/lib/compose/events/events.component.mjs +3 -3
  129. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  130. package/esm2022/lib/compose/form.component.mjs +3 -3
  131. package/esm2022/lib/compose/new-menu.component.mjs +3 -3
  132. package/esm2022/lib/compose/privilage.directive.mjs +6 -6
  133. package/esm2022/lib/compose/recipient-resolver.service.mjs +3 -3
  134. package/esm2022/lib/compose/state.component.mjs +3 -3
  135. package/esm2022/lib/compose/tag/tags.component.mjs +3 -3
  136. package/esm2022/lib/compose/trace/flow.component.mjs +3 -3
  137. package/esm2022/lib/compose/trace/people.component.mjs +3 -3
  138. package/esm2022/lib/compose/trace/trace.base.mjs +3 -3
  139. package/esm2022/lib/compose/trace/trace.component.mjs +3 -3
  140. package/esm2022/lib/compose/trace/trace.pane.component.mjs +3 -3
  141. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +3 -3
  142. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  143. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +3 -3
  144. package/esm2022/lib/core/account.service.mjs +3 -3
  145. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  146. package/esm2022/lib/core/avatar/avatar.component.mjs +3 -3
  147. package/esm2022/lib/core/checkbox.mjs +3 -3
  148. package/esm2022/lib/core/component-factory-resolver.mjs +3 -3
  149. package/esm2022/lib/core/datasource.service.mjs +3 -3
  150. package/esm2022/lib/core/fields/address.designer.mjs +3 -3
  151. package/esm2022/lib/core/fields/address.field.mjs +3 -3
  152. package/esm2022/lib/core/fields/autocomplete.field.mjs +6 -6
  153. package/esm2022/lib/core/fields/checkbox.designer.mjs +3 -3
  154. package/esm2022/lib/core/fields/checkbox.field.mjs +3 -3
  155. package/esm2022/lib/core/fields/checklist.designer.mjs +3 -3
  156. package/esm2022/lib/core/fields/checklist.field.mjs +3 -3
  157. package/esm2022/lib/core/fields/date-range.designer.mjs +3 -3
  158. package/esm2022/lib/core/fields/date-range.field.mjs +3 -3
  159. package/esm2022/lib/core/fields/date.designer.mjs +3 -3
  160. package/esm2022/lib/core/fields/date.field.mjs +3 -3
  161. package/esm2022/lib/core/fields/expression.field.mjs +6 -6
  162. package/esm2022/lib/core/fields/file.designer.mjs +3 -3
  163. package/esm2022/lib/core/fields/file.field.mjs +3 -3
  164. package/esm2022/lib/core/fields/html.designer.mjs +3 -3
  165. package/esm2022/lib/core/fields/html.field.mjs +3 -3
  166. package/esm2022/lib/core/fields/input.designer.mjs +3 -3
  167. package/esm2022/lib/core/fields/input.field.mjs +3 -3
  168. package/esm2022/lib/core/fields/localized-string.field.mjs +6 -6
  169. package/esm2022/lib/core/fields/numeric.designer.mjs +3 -3
  170. package/esm2022/lib/core/fields/numeric.field.mjs +3 -3
  171. package/esm2022/lib/core/fields/options.base.mjs +6 -6
  172. package/esm2022/lib/core/fields/options.component.mjs +3 -3
  173. package/esm2022/lib/core/fields/radio-button.designer.mjs +3 -3
  174. package/esm2022/lib/core/fields/radio-button.field.mjs +3 -3
  175. package/esm2022/lib/core/fields/select.designer.mjs +3 -3
  176. package/esm2022/lib/core/fields/select.field.mjs +3 -3
  177. package/esm2022/lib/core/fields/signature.designer.mjs +3 -3
  178. package/esm2022/lib/core/fields/signature.field.mjs +3 -3
  179. package/esm2022/lib/core/fields/switch.field.mjs +3 -3
  180. package/esm2022/lib/core/fields/tags.designer.mjs +3 -3
  181. package/esm2022/lib/core/fields/tags.field.mjs +5 -5
  182. package/esm2022/lib/core/fields/textarea.designer.mjs +3 -3
  183. package/esm2022/lib/core/fields/textarea.field.mjs +3 -3
  184. package/esm2022/lib/core/fields/time.designer.mjs +3 -3
  185. package/esm2022/lib/core/fields/time.field.mjs +3 -3
  186. package/esm2022/lib/core/fields/timespan.field.mjs +6 -6
  187. package/esm2022/lib/core/fields/yesno.designer.mjs +3 -3
  188. package/esm2022/lib/core/fields/yesno.field.mjs +3 -3
  189. package/esm2022/lib/core/guide/guide.component.mjs +5 -5
  190. package/esm2022/lib/core/guide/guide.service.mjs +3 -3
  191. package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
  192. package/esm2022/lib/core/http.interceptor.mjs +3 -3
  193. package/esm2022/lib/core/hub.service.mjs +3 -3
  194. package/esm2022/lib/core/identity/identity.component.mjs +3 -3
  195. package/esm2022/lib/core/info/attachment-info.service.mjs +3 -3
  196. package/esm2022/lib/core/info/document-info.service.mjs +3 -3
  197. package/esm2022/lib/core/info/location-info.component.mjs +3 -3
  198. package/esm2022/lib/core/info/map-info.mjs +3 -3
  199. package/esm2022/lib/core/inputs/address.input.mjs +3 -3
  200. package/esm2022/lib/core/inputs/auto-complete.input.mjs +3 -3
  201. package/esm2022/lib/core/inputs/combination-picker-body.mjs +3 -3
  202. package/esm2022/lib/core/inputs/combination-picker.mjs +3 -3
  203. package/esm2022/lib/core/inputs/combination-pool.mjs +3 -3
  204. package/esm2022/lib/core/inputs/file.input.mjs +3 -3
  205. package/esm2022/lib/core/inputs/select.input.mjs +3 -3
  206. package/esm2022/lib/core/inputs/signature.input.mjs +3 -3
  207. package/esm2022/lib/core/inputs/time-picker.mjs +3 -3
  208. package/esm2022/lib/core/inputs/timespan.input.mjs +3 -3
  209. package/esm2022/lib/core/layout.component.mjs +3 -3
  210. package/esm2022/lib/core/lottie-animation.mjs +3 -3
  211. package/esm2022/lib/core/mailbox.service.mjs +3 -3
  212. package/esm2022/lib/core/none.component.mjs +3 -3
  213. package/esm2022/lib/core/pipes/action.pipe.mjs +3 -3
  214. package/esm2022/lib/core/pipes/calendar.pipe.mjs +3 -3
  215. package/esm2022/lib/core/pipes/date-format.pipe.mjs +3 -3
  216. package/esm2022/lib/core/pipes/daterange.pipe.mjs +6 -6
  217. package/esm2022/lib/core/pipes/difference.pipe.mjs +3 -3
  218. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +3 -3
  219. package/esm2022/lib/core/pipes/duration.pipe.mjs +3 -3
  220. package/esm2022/lib/core/pipes/form.pipe.mjs +3 -3
  221. package/esm2022/lib/core/pipes/join.pipe.mjs +3 -3
  222. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +3 -3
  223. package/esm2022/lib/core/pipes/role.pipe.mjs +3 -3
  224. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  225. package/esm2022/lib/core/pipes/sort.pipe.mjs +6 -6
  226. package/esm2022/lib/core/pipes/state.pipe.mjs +3 -3
  227. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +6 -6
  228. package/esm2022/lib/core/pipes/translate.pipe.mjs +9 -9
  229. package/esm2022/lib/core/pipes/type-value.pipe.mjs +3 -3
  230. package/esm2022/lib/core/pipes/user-name.pipe.mjs +3 -3
  231. package/esm2022/lib/core/popup/popup.component.mjs +3 -3
  232. package/esm2022/lib/core/popup/popup.service.mjs +3 -3
  233. package/esm2022/lib/core/popup/tooltip.directive.mjs +6 -6
  234. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  235. package/esm2022/lib/core/prompt/mask/mask.component.mjs +3 -3
  236. package/esm2022/lib/core/prompt.service.mjs +3 -3
  237. package/esm2022/lib/core/router.mjs +6 -6
  238. package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
  239. package/esm2022/lib/core/session.service.mjs +3 -3
  240. package/esm2022/lib/core/slots/router.directive.mjs +3 -3
  241. package/esm2022/lib/core/slots/router.service.mjs +3 -3
  242. package/esm2022/lib/core/slots/slots.component.mjs +6 -6
  243. package/esm2022/lib/core/tagging/documents.component.mjs +3 -3
  244. package/esm2022/lib/core/tagging/edit-input.component.mjs +3 -3
  245. package/esm2022/lib/core/tagging/emoji.component.mjs +3 -3
  246. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +3 -3
  247. package/esm2022/lib/core/tagging/tagging.component-base.mjs +3 -3
  248. package/esm2022/lib/core/tagging/tagging.directive.mjs +3 -3
  249. package/esm2022/lib/core/tagging/tagging.pipe.mjs +3 -3
  250. package/esm2022/lib/core/tagging/users.component.mjs +3 -3
  251. package/esm2022/lib/core/translate.service.mjs +3 -3
  252. package/esm2022/lib/core/window-title.service.mjs +3 -3
  253. package/esm2022/lib/cube/accum/accum.component.mjs +3 -3
  254. package/esm2022/lib/cube/chart/chart.component.mjs +3 -3
  255. package/esm2022/lib/cube/cube-info.service.mjs +3 -3
  256. package/esm2022/lib/cube/cube-menu.component.mjs +3 -3
  257. package/esm2022/lib/cube/cube-view.component.mjs +3 -3
  258. package/esm2022/lib/cube/cube.service.mjs +3 -3
  259. package/esm2022/lib/cube/explore/document-item.component.mjs +3 -3
  260. package/esm2022/lib/cube/explore/explore-item.component.mjs +3 -3
  261. package/esm2022/lib/cube/explore/explore-items.component.mjs +3 -3
  262. package/esm2022/lib/cube/explore/explore.pane.component.mjs +3 -3
  263. package/esm2022/lib/cube/explore/item-resolver.service.mjs +6 -6
  264. package/esm2022/lib/cube/explore/item.pane.component.mjs +3 -3
  265. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  266. package/esm2022/lib/cube/filter/filter.component.mjs +3 -3
  267. package/esm2022/lib/cube/grid/grid.component.mjs +3 -3
  268. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +3 -3
  269. package/esm2022/lib/cube/matrix/matrix.base.mjs +5 -5
  270. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  271. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  272. package/esm2022/lib/cube/matrix/popup.component.mjs +5 -5
  273. package/esm2022/lib/cube/matrix/table.component.mjs +3 -3
  274. package/esm2022/lib/cube/parallel/parallel.component.mjs +6 -5
  275. package/esm2022/lib/cube/pivot/pivot.component.mjs +3 -3
  276. package/esm2022/lib/cube/sum/sum.component.mjs +3 -3
  277. package/esm2022/lib/cube/view-base.mjs +3 -3
  278. package/esm2022/lib/cube/view.mobile.component.mjs +3 -3
  279. package/esm2022/lib/cube/view.pane.component.mjs +5 -5
  280. package/esm2022/lib/dashboard/actions/actions.widget.mjs +3 -3
  281. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -4
  282. package/esm2022/lib/dashboard/cube/compare.widget.mjs +3 -3
  283. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  284. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  285. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  286. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +3 -3
  287. package/esm2022/lib/dashboard/cube/documents.widget.mjs +3 -3
  288. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  289. package/esm2022/lib/dashboard/dashboard.component.mjs +3 -3
  290. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +3 -3
  291. package/esm2022/lib/dashboard/recents/recents.widget.mjs +3 -3
  292. package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
  293. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  294. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  295. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +3 -3
  296. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +3 -3
  297. package/esm2022/lib/dashboard/widget-item.component.mjs +3 -3
  298. package/esm2022/lib/designer.module.mjs +4 -4
  299. package/esm2022/lib/desktop.module.mjs +4 -4
  300. package/esm2022/lib/home/about/about.dialog.mjs +3 -3
  301. package/esm2022/lib/home/home-base.component.mjs +5 -5
  302. package/esm2022/lib/home/home.desktop.component.mjs +3 -3
  303. package/esm2022/lib/home/home.mobile.component.mjs +4 -4
  304. package/esm2022/lib/home/notifications/notifications.component.mjs +3 -3
  305. package/esm2022/lib/home/options/options.component.mjs +3 -3
  306. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  307. package/esm2022/lib/home/sign/sign.component.mjs +3 -3
  308. package/esm2022/lib/home/tools.component.mjs +3 -3
  309. package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
  310. package/esm2022/lib/mobile.module.mjs +4 -4
  311. package/esm2022/lib/modules/chart.module.mjs +4 -4
  312. package/esm2022/lib/modules/circular-gauge.module.mjs +4 -4
  313. package/esm2022/lib/modules/datepicker.intl.mjs +3 -3
  314. package/esm2022/lib/modules/dayjs.module.mjs +4 -4
  315. package/esm2022/lib/modules/diagram.module.mjs +4 -4
  316. package/esm2022/lib/modules/gantt.module.mjs +4 -4
  317. package/esm2022/lib/modules/grid.module.mjs +4 -4
  318. package/esm2022/lib/modules/linear-gauge.module.mjs +4 -4
  319. package/esm2022/lib/modules/material.module.mjs +4 -4
  320. package/esm2022/lib/modules/paginator.intl.mjs +3 -3
  321. package/esm2022/lib/modules/pivot.module.mjs +4 -4
  322. package/esm2022/lib/modules/schedule.module.mjs +4 -4
  323. package/esm2022/lib/modules/spreadsheet.module.mjs +4 -4
  324. package/esm2022/lib/modules/stepper.intl.mjs +3 -3
  325. package/esm2022/lib/modules/texteditor.module.mjs +4 -4
  326. package/esm2022/lib/notifications/filter.component.mjs +3 -3
  327. package/esm2022/lib/notifications/notifications-table.component.mjs +3 -3
  328. package/esm2022/lib/notifications/notifications.mobile.component.mjs +3 -3
  329. package/esm2022/lib/notifications/notifications.pane.component.mjs +3 -3
  330. package/esm2022/lib/notifications/notifications.service.mjs +3 -3
  331. package/esm2022/lib/notifications/types/commented.notification.mjs +3 -3
  332. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  333. package/esm2022/lib/notifications/types/escalated.notification.mjs +3 -3
  334. package/esm2022/lib/notifications/types/invite.notification.mjs +3 -3
  335. package/esm2022/lib/notifications/types/liked.notification.mjs +3 -3
  336. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +3 -3
  337. package/esm2022/lib/notifications/types/notification-base.mjs +3 -3
  338. package/esm2022/lib/notifications/types/nudge.notification.mjs +3 -3
  339. package/esm2022/lib/notifications/types/state-changed.notification.mjs +3 -3
  340. package/esm2022/lib/notifications/types/tagged.notification.mjs +3 -3
  341. package/esm2022/lib/notifications/types/text.notification.mjs +3 -3
  342. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  343. package/esm2022/lib/options/options.component.mjs +3 -3
  344. package/esm2022/lib/options/options.service.mjs +3 -3
  345. package/esm2022/lib/reports/arguments-component.mjs +3 -3
  346. package/esm2022/lib/reports/cube/documents.component.mjs +3 -3
  347. package/esm2022/lib/reports/cube/grid-documents.component.mjs +3 -3
  348. package/esm2022/lib/reports/cube/role-performance.component.mjs +3 -3
  349. package/esm2022/lib/reports/cube/table-documents.component.mjs +3 -3
  350. package/esm2022/lib/reports/cube/usage-args.component.mjs +3 -3
  351. package/esm2022/lib/reports/cube/usage-base.mjs +3 -3
  352. package/esm2022/lib/reports/cube/usage-chart.component.mjs +3 -3
  353. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +3 -3
  354. package/esm2022/lib/reports/cube/usage.component.mjs +3 -3
  355. package/esm2022/lib/reports/report-viewer.component.mjs +3 -3
  356. package/esm2022/lib/reports/report.mobile.component.mjs +3 -3
  357. package/esm2022/lib/reports/report.pane.component.mjs +3 -3
  358. package/esm2022/lib/reports/reports-menu.component.mjs +3 -3
  359. package/esm2022/lib/reports/substitution/substitution.component.mjs +3 -3
  360. package/esm2022/lib/reports/table/table-view.component.mjs +3 -3
  361. package/esm2022/lib/reports/tasks/tasks.component.mjs +3 -3
  362. package/esm2022/lib/scheduler/schedule.component.mjs +3 -3
  363. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  364. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +3 -3
  365. package/esm2022/lib/search/cube.component.mjs +3 -3
  366. package/esm2022/lib/search/document.component.mjs +3 -3
  367. package/esm2022/lib/search/guide.component.mjs +3 -3
  368. package/esm2022/lib/search/path.component.mjs +3 -3
  369. package/esm2022/lib/search/search.service.mjs +6 -5
  370. package/esm2022/lib/shared.module.mjs +4 -4
  371. package/esm2022/lib/system.module.mjs +4 -4
  372. package/esm2022/lib/views/cube/chart.component.mjs +3 -3
  373. package/esm2022/lib/views/cube/cube-base.mjs +3 -3
  374. package/esm2022/lib/views/cube/explore.component.mjs +3 -3
  375. package/esm2022/lib/views/cube/matrix.component.mjs +3 -3
  376. package/esm2022/lib/views/cube/parallel.component.mjs +3 -3
  377. package/esm2022/lib/views/cube/pivot.component.mjs +3 -3
  378. package/esm2022/lib/views/cube/sum.component.mjs +3 -3
  379. package/esm2022/lib/views/cube/view.component.mjs +3 -3
  380. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +3 -3
  381. package/esm2022/lib/views/view-item.component.mjs +3 -3
  382. package/esm2022/lib/views/views.component.mjs +3 -3
  383. package/esm2022/lib/views/views.mobile.component.mjs +3 -3
  384. package/esm2022/lib/views/views.pane.component.mjs +3 -3
  385. package/fesm2022/bizdoc-core.mjs +1256 -1255
  386. package/fesm2022/bizdoc-core.mjs.map +1 -1
  387. package/package.json +12 -12
  388. package/assets/themes/xslt.min.css +0 -1
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { Subject, filter, firstValueFrom } from 'rxjs';
3
- import { takeUntil } from 'rxjs/operators';
2
+ import { Subject, firstValueFrom } from 'rxjs';
3
+ import { takeUntil, filter } from 'rxjs/operators';
4
4
  import { ActionDialog } from '../../compose/action/action.dialog';
5
5
  import dayjs from 'dayjs';
6
6
  import * as i0 from "@angular/core";
@@ -303,10 +303,10 @@ export class ExpandedItemComponent {
303
303
  this._destroy.complete();
304
304
  this._typingTask && clearTimeout(this._typingTask);
305
305
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: i1.PromptService }, { token: i2.ChatInfo }, { token: i3.AccountService }, { token: i4.MailboxService }, { token: i5.SessionService }, { token: i6.Directionality }, { token: i7.MatDialog }, { token: i8.TranslateService }, { token: i9.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div class=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <mat-chip-set *ngIf=\"model.tags\">\r\n <mat-chip *ngFor=\"let tag of model.tags\">{{tag}}</mat-chip>\r\n </mat-chip-set>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i11.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i12.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i15.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i16.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i17.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i18.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i19.TranslatePipe, name: "translate" }, { kind: "pipe", type: i20.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i21.StatePipe, name: "state" }] }); }
306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: i1.PromptService }, { token: i2.ChatInfo }, { token: i3.AccountService }, { token: i4.MailboxService }, { token: i5.SessionService }, { token: i6.Directionality }, { token: i7.MatDialog }, { token: i8.TranslateService }, { token: i9.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
307
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div class=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <mat-chip-set *ngIf=\"model.tags\">\r\n <mat-chip *ngFor=\"let tag of model.tags\">{{tag}}</mat-chip>\r\n </mat-chip-set>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i11.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i12.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i15.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i16.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i17.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i18.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i19.TranslatePipe, name: "translate" }, { kind: "pipe", type: i20.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i21.StatePipe, name: "state" }] }); }
308
308
  }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ExpandedItemComponent, decorators: [{
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ExpandedItemComponent, decorators: [{
310
310
  type: Component,
311
311
  args: [{ selector: 'bizdoc-expanded-item', template: "<div class=\"summary\" *ngIf=\"model.summary\" [innerHTML]=\"model.summary\">\r\n</div>\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n <ng-container *ngFor=\"let a of actions\">\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" *ngIf=\"a.icon\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n &nbsp;\r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n &nbsp;\r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>&nbsp;\r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div class=\"center center\">\r\n <span class=\"mat-small\" *ngIf=\"typing\">{{'SomeoneTyping'|translate}}</span>\r\n <div *ngIf=\"model.comments.length\" class=\"mat-small\">\r\n <span *ngIf=\"!newComments; else newcomments\">{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n </div>\r\n </div>\r\n <mat-chip-set *ngIf=\"model.tags\">\r\n <mat-chip *ngFor=\"let tag of model.tags\">{{tag}}</mat-chip>\r\n </mat-chip-set>\r\n</div>\r\n<ng-template #newcomments>\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:-moz-fit-content;max-width:fit-content}\n"] }]
312
312
  }], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.ChatInfo }, { type: i3.AccountService }, { type: i4.MailboxService }, { type: i5.SessionService }, { type: i6.Directionality }, { type: i7.MatDialog }, { type: i8.TranslateService }, { type: i9.HubService }], propDecorators: { model: [{
@@ -314,4 +314,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
314
314
  }], sent: [{
315
315
  type: Output
316
316
  }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9leHBhbmRlZC1pdGVtL2V4cGFuZGVkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZXhwYW5kZWQtaXRlbS9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0MsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPcEQsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUFvQixHQUFrQixFQUM1QixLQUFlLEVBQ2YsU0FBeUIsRUFDekIsUUFBd0IsRUFDeEIsUUFBd0IsRUFDeEIsSUFBb0IsRUFDcEIsT0FBa0IsRUFDbEIsVUFBNEIsRUFDNUIsVUFBc0I7UUFSWixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFuQmIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBVWpELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBVWhELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDdkYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ25FO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNPLEtBQUssQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1SSxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLFlBQVksRUFBRTtZQUNoQixNQUFNLFlBQVksR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksT0FBTyxFQUFFO2dCQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFDbkUsU0FBUyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9ELElBQUksTUFBTTtvQkFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUNsRyxNQUFNLEVBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDOztvQkFFL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDcEo7aUJBQ0ksSUFBSSxTQUFTLEVBQUU7Z0JBQ2xCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUN4RixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQzNKO2lCQUNJO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFDN0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUNyQyxJQUFJLEVBQ0osSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ2Y7U0FDRjthQUNJLElBQUksT0FBTyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUN2QyxJQUFJLE1BQU07d0JBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFDbkYsTUFBTSxFQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs7d0JBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDckM7O29CQUVDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDckMsSUFBSSxNQUFNOzRCQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUM5RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzs0QkFFcEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDaEQsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDbkMsSUFBSSxNQUFNO29CQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDbkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7O29CQUV4RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUM3RyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNuRTtpQkFDSTtnQkFDSCxJQUFJLE1BQU07b0JBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7O29CQUVuRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzVGO1NBQ0Y7YUFDSSxJQUFJLElBQUk7WUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNkLElBQUksUUFBUSxFQUFFO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUM5RSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtnQkFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3ZELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLE1BQU0sRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0U7aUJBQ0k7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEU7U0FDRjthQUNJLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSTtvQkFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUM3SDtvQkFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZTt3QkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUNsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLEVBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFDMUIsSUFBSSxDQUFDLENBQUM7O3dCQUVSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUMzQixJQUFJLENBQUMsQ0FBQztpQkFDWDthQUNGO2lCQUNJO2dCQUNILElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlO29CQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDOztvQkFFekgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM3RDtTQUNGO0lBQ0gsQ0FBQztJQUNPLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQXNCO1FBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekIsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BDLE9BQU8sQ0FDTCxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUk7Z0JBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQjtRQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNPLFFBQVEsQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBWTtRQUM1QixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNO0lBQ0UsS0FBSyxDQUFDLFFBQVE7UUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxSCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQyxTQUFTO1FBQ1QsSUFBSSxRQUFRLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuRCxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ08sU0FBUztRQUNmLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pILENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixVQUFVO1FBQ1YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDMUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZO1FBQ25GLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6RSxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5RyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5RTtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7U0FHSztJQUNMLElBQUksQ0FBQyxDQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFJLENBQUMsQ0FBQyxNQUFzQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRSxNQUFNO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNPLGtCQUFrQixDQUFDLE1BQWdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNEOzs7T0FHRztJQUNILElBQUksQ0FBQyxNQUFjO1FBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFxQjtZQUM3QixNQUFNO1lBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBSTtZQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDM0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3BFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7d0JBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEVBQ3hFLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7d0JBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDdEMsSUFBSSxNQUFNOzRCQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDOzs0QkFFbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQzt3QkFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztvQkFDckIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTt3QkFDWixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDdkIsQ0FBQztpQkFDRixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0ssZUFBZSxDQUFDLFFBQWlDLEVBQUUsSUFBaUIsRUFBRSxPQUFlO1FBQzNGLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUMvQyxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQztvQkFDSixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVCOztZQUNFLFFBQVEsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDNUIsS0FBSyxHQUFHO29CQUNOO3dCQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO3FCQUNQO2dCQUNILEtBQUssR0FBRztvQkFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1I7b0JBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQTFUVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixtSEN4QmxDLHd6REFzQ0E7OzJGRGRhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxzQkFBc0I7NlNBS3ZCLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxJQUFJO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlY2lwaWVudE1vZGVsLCBIZWFkZXJNb2RlbCwgQWN0aW9uLCBVc2VySW5mbywgR2VuZGVyIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNYWlsYm94U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9jb21wb3NlL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcblxyXG5jb25zdCBSRUZSRVNIX1RJTUUgPSAzMDAwMCwgVFlQSU5HX0hJTlRfVElNRSA9IDE1MDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1leHBhbmRlZC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHBhbmRlZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbW9kZWw6IFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgYWN0aW9ucz86IEFjdGlvbltdO1xyXG4gIG5ld0NvbW1lbnRzPzogbnVtYmVyO1xyXG4gIHR5cGluZz86IGJvb2xlYW47XHJcbiAgbm90ZTogc3RyaW5nO1xyXG4gIHNlbmRlcj86IHN0cmluZztcclxuICBhd2FpdGluZz86IHN0cmluZztcclxuICBtb2RlOiAnd29ya2luZycgfCAnZG9uZScgfCAnZmFpbGVkJyB8IG51bGw7XHJcbiAgcHJpdmF0ZSBfdHlwaW5nVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSBfcmVmcmVzaFRhc2s6IE5vZGVKUy5UaW1lb3V0O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhdDogQ2hhdEluZm8sXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnaW5nOiBIdWJTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLmNvbW1lbnQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmIChlLmlkID09PSB0aGlzLm1vZGVsLmlkICYmIChlLm1vZGVsLmJ5SWQgfHwgZS5tb2RlbC51c2VySWQpICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5fY29tbWVudHMoKTtcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChlLm1vZGVsLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0NvbW1lbnRlZCcsIHUuZ2VuZGVyLCB1Lm5hbWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLnVwZGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgaWYgKGUubW9kZWwuaWQgPT09IHRoaXMubW9kZWwuaWQpIHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgKGUudXNlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkgJiYgdGhpcy5fYWNjb3VudHMuZ2V0KGUudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ01haWxWZXJzaW9uVXBkYXRlJywgdGhpcy5tb2RlbC5udW1iZXIsIHUubmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21haWxib3guY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGUgPT5cclxuICAgICAgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQpICYmXHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKSk7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudFR5cGluZyQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGZpbHRlcihlID0+IGUuaWQgPT09IHRoaXMubW9kZWwuZG9jdW1lbnRJZCkpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgdGhpcy50eXBpbmcgPSB0cnVlO1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fdHlwaW5nVGFzayk7XHJcbiAgICAgIHRoaXMuX3R5cGluZ1Rhc2sgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHlwaW5nID0gZmFsc2UsIFRZUElOR19ISU5UX1RJTUUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICB0aGlzLl9yZWZyZXNoVGFzayA9IHNldEludGVydmFsKCgpID0+IHRoaXMuX3JlZnJlc2goKSwgUkVGUkVTSF9USU1FKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZSgpIHtcclxuICAgIGNvbnN0IHsgb3duZXJJZCwgb3duZXJCeUlkLCBpc3N1ZWQsIHN1YnN0aXR1dGVJZCwgcmVjZWl2ZWQsIHJlcGxpZWQsIGxvZywgaWQsIG5vdGUsIGJ5SWQsIGFjdGlvbiwgZXNjYWxhdGVkLCBvcmlnaW5JZCwgZHJhZnQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBsZXQgdGFyZ2V0OiBzdHJpbmc7XHJcbiAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3RhcmdldChpZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3Vic3RpdHV0ZUlkKSB7XHJcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChzdWJzdGl0dXRlSWQpKTtcclxuICAgICAgaWYgKHJlcGxpZWQpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZXBsaWVkKSxcclxuICAgICAgICAgIGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFjdGlvbiksXHJcbiAgICAgICAgICBhZGplY3RpdmUgPSAoYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnWW91U3Vic3RpdHV0ZUFjdGlvblRha2VuVG8nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCBhZGplY3RpdmUsXHJcbiAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW4nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCBhZGplY3RpdmUsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGVzY2FsYXRlZCkge1xyXG4gICAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IG9yaWdpbklkKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0VzY2FsYXRlZEZyb20nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aGlzLl9kdXJhdGlvbihlc2NhbGF0aW9uLmR1cmF0aW9uKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjZWl2ZWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nTm90ZScsIHN1YnN0aXR1dGluZy5nZW5kZXIsXHJcbiAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLFxyXG4gICAgICAgICAgdGltZSxcclxuICAgICAgICAgIG5vdGUgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXBsaWVkKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlcGxpZWQpO1xyXG4gICAgICBpZiAoYnlJZCkge1xyXG4gICAgICAgIGlmIChieUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdVRvJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSxcclxuICAgICAgICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5WW91JywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSxcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9hY2NvdW50cy5nZXQoYnlJZCkuc3Vic2NyaWJlKHUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnknLCB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh1KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB1LmdlbmRlciksIHRpbWUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpIHtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdBY3Rpb25UYWtlblRvJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlcixcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uVG8nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vdGUpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5vdGU7XHJcbiAgICBlbHNlIGlmIChvcmlnaW5JZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IG9yaWdpbklkKTtcclxuICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gb3JpZ2luLmFjdGlvbiksXHJcbiAgICAgICAgYWRqZWN0aXZlID0gYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGU7XHJcbiAgICAgIGlmICgob3JpZ2luLmJ5SWQgfHwgb3JpZ2luLnVzZXJJZCkgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5WW91JywgYWRqZWN0aXZlKTtcclxuICAgICAgZWxzZSBpZiAob3JpZ2luLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIGNvbnN0IGJ5ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi5ieUlkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlCeScsIGFkamVjdGl2ZSwgYnkubmFtZSwgd2hvLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKCB0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5JywgYWRqZWN0aXZlLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkICYmICFkcmFmdCkge1xyXG4gICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhpc3N1ZWQpO1xyXG4gICAgICBpZiAob3duZXJCeUlkKSB7XHJcbiAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3duZXJCeUlkKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZUJ5JywgYnkuZ2VuZGVyLFxyXG4gICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KGJ5KSxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgICB0aW1lKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlWW91QnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3RhcmdldChpZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5vcmlnaW5JZCA9PT0gaWQpO1xyXG4gICAgaWYgKG9yaWdpbi5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwob3JpZ2luLm1hcChyID0+IHIudXNlcklkKSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmpvaW4oXHJcbiAgICAgICAgdXNlcnMubWFwKHUgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hY3Rpb25OYW1lKG5hbWU6IHN0cmluZywgZ2VuZGVyOiBHZW5kZXIgfCAneW91Jykge1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIG5hbWU7XHJcbiAgICBpZiAoZ2VuZGVyID09PSAneW91Jykge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcjtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnlvdU1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ueW91RmVtYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgICAgYWN0aW9uLnlvdSkgfHwgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ucGFzdE1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICAgIGFjdGlvbi5wYXN0KSB8fFxyXG4gICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zyb21Ob3coZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRheWpzKGRhdGUpLmZyb21Ob3coKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2R1cmF0aW9uKHRpbWU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIGRheWpzLmR1cmF0aW9uKHRpbWUsICdzJykuaHVtYW5pemUoKTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgJiYgYWN0aW9ucy5sZW5ndGggPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maWx0ZXIoYSA9PiBhY3Rpb25zLmluZGV4T2YoYS5uYW1lKSA+IC0xKSA6IG51bGw7XHJcbiAgICBjb25zdCB7IHNlbmRlcklkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgLy8gc2VuZGVyXHJcbiAgICBpZiAoc2VuZGVySWQgJiYgKHNlbmRlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNlbmRlcklkKSk7XHJcbiAgICAgIHRoaXMuc2VuZGVyID0gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQod2hvKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbW1lbnRzKCk7XHJcbiAgICB0aGlzLl9ub3RlKCk7XHJcbiAgICB0aGlzLl9hd2FpdGluZygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21tZW50cygpIHtcclxuICAgIGNvbnN0IHsgdmlld2VkLCBjb21tZW50cyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMubmV3Q29tbWVudHMgPSB2aWV3ZWQgP1xyXG4gICAgICBjb21tZW50cy5maWx0ZXIoYyA9PiBjLnRpbWUgPiB2aWV3ZWQgJiYgKGMuYnlJZCB8fCBjLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKS5sZW5ndGggfHwgbnVsbCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9hd2FpdGluZygpIHtcclxuICAgIC8vYXdhaXRpbmdcclxuICAgIGxldCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkuXHJcbiAgICAgIHNvcnQoKHIwLCByMSkgPT4gcjAucmVjZWl2ZWQgPiByMS5yZWNlaXZlZCA/IDEgOiAtMSkuXHJcbiAgICAgIG1hcChyID0+IHIudXNlcklkKTtcclxuICAgIHJlY2lwaWVudHMgPSByZWNpcGllbnRzLmZpbHRlcigociwgaSkgPT4gcmVjaXBpZW50cy5pbmRleE9mKHIpID09PSBpKTsgLyogdW5pcXVlICovXHJcbiAgICBpZiAocmVjaXBpZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmluZGV4T2YodGhpcy5fc2Vzc2lvbi51c2VySWQpIDwgMCB8fCByZWNpcGllbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBjb25zdCB1c2VycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldEFsbChyZWNpcGllbnRzLmZpbHRlcihyID0+IHIgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSkpO1xyXG4gICAgICAgIGNvbnN0IG5hbWVzID0gdXNlcnMubWFwKHAgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQocCkpO1xyXG4gICAgICAgIHJlY2lwaWVudHMuaW5kZXhPZih0aGlzLl9zZXNzaW9uLnVzZXJJZCkgPiAtMSAmJlxyXG4gICAgICAgICAgbmFtZXMucHVzaCh0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3Vyc2VsZicpKTtcclxuICAgICAgICB0aGlzLmF3YWl0aW5nID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQXdhaXRpbmcnLCB0aGlzLl90cmFuc2xhdGUuam9pbihuYW1lcykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIENoYXRcclxuICAgICAqIEBwYXJhbSBlXHJcbiAgICAgKi9cclxuICBjaGF0KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkYXRhLWluZm8nKTtcclxuICAgIHVzZXJJZCAmJlxyXG4gICAgICB0aGlzLl9jaGF0Lm9wZW4odXNlcklkKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZm9ybWF0VXNlckVsZW1lbnQocGVyc29uOiBVc2VySW5mbykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoYXQuZm9ybWF0KHBlcnNvbik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBhY3Rpb25cclxuICAgKi9cclxuICBzZW5kKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IGlkLCBudW1iZXIsIHZlcnNpb24sIGZvcm1JZCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGNvbnN0IGRhdGE6IEFjdGlvbkRpYWxvZ0RhdGEgPSB7XHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXRlbTogdGhpcy5tb2RlbFxyXG4gICAgfTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKEFjdGlvbkRpYWxvZywge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2Rpci52YWx1ZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXJncyA9PiB7XHJcbiAgICAgIGlmIChhcmdzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlID0gJ3dvcmtpbmcnO1xyXG4gICAgICAgIHRoaXMuX21haWxib3guc2VuZChpZCwgdmVyc2lvbiwgZm9ybUlkLCBudWxsLCBhY3Rpb24sIGFyZ3MpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiBhc3luYyByID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFjdGlvbiksXHJcbiAgICAgICAgICAgICAgYWRqZWN0aXZlID0gY2FjdGlvbi5hZGplY3RpdmUgfHwgY2FjdGlvbi50aXRsZTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgdGhpcy5fdGFyZ2V0KGlkKTtcclxuICAgICAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnU2VudFRvJywgbnVtYmVyLCBhZGplY3RpdmUudG9Mb3dlckNhc2UoKSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50JywgbnVtYmVyLCBhZGplY3RpdmUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VudC5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSAnZG9uZSc7XHJcbiAgICAgICAgICB9LCBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVJlc3BvbnNlKGUsIHRoaXMubW9kZWwsICdTZW5kRXJyJyk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdmYWlsZWQnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKiBAcGFyYW0gbWVzc2FnZSByZXNvdXJjZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2hhbmRsZVJlc3BvbnNlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSwgaXRlbTogSGVhZGVyTW9kZWwsIG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgaWYgKHJlc3BvbnNlLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdQb3NpdGlvbkVycm9yJylcclxuICAgICAgc3dpdGNoIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1VzZXJEZW5pZWRHZW9FcnInKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignR2VvRXJyJyk7XHJcbiAgICAgIH1cclxuICAgIGVsc2Ugc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDk6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1ZlcnNpb25FcnInLCBpdGVtLm51bWJlcik7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSByZXNwb25zZS5lcnJvciAvKiBzZXJpYWxpemVkIG1vZGVsICovIGFzIFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIG9iaik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgNDA2OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yU3RyaW5nKHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcihtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3JlZnJlc2hUYXNrKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fdHlwaW5nVGFzayAmJiBjbGVhclRpbWVvdXQodGhpcy5fdHlwaW5nVGFzayk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdW1tYXJ5XCIgKm5nSWY9XCJtb2RlbC5zdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtb2RlbC5zdW1tYXJ5XCI+XHJcbjwvZGl2PlxyXG48ZGl2PlxyXG4gIDxiaXpkb2MtYXR0YWNobWVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtYXR0YWNobWVudHM+XHJcbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgYWN0aW9uc1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbmQoYS5uYW1lKVwiIFtiaXpkb2NUb29sdGlwXT1cImEudGl0bGVcIiAqbmdJZj1cImEuaWNvblwiIGNsYXNzPVwidG9vbFwiPlxyXG4gICAgICA8bWF0LWljb24+e3thLmljb259fTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsIHJvd1wiPlxyXG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XHJcbiAgICAmbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwidGltZVwiIFtiaXpkb2NUb29sdGlwXT1cIm1vZGVsLnJlY2VpdmVkIHwgYW1DYWxlbmRhclwiPnt7bW9kZWwucmVjZWl2ZWQgfCBhbVRpbWVBZ299fTwvc3Bhbj5cclxuICAgICZuYnNwO1xyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJzZW5kZXIgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImF3YWl0aW5nIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtc21hbGxcIiAqbmdJZj1cInR5cGluZ1wiPnt7J1NvbWVvbmVUeXBpbmcnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgPGRpdiAqbmdJZj1cIm1vZGVsLmNvbW1lbnRzLmxlbmd0aFwiIGNsYXNzPVwibWF0LXNtYWxsXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIW5ld0NvbW1lbnRzOyBlbHNlIG5ld2NvbW1lbnRzXCI+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWNoaXAtc2V0ICpuZ0lmPVwibW9kZWwudGFnc1wiPlxyXG4gICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCB0YWcgb2YgbW9kZWwudGFnc1wiPnt7dGFnfX08L21hdC1jaGlwPlxyXG4gIDwvbWF0LWNoaXAtc2V0PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNuZXdjb21tZW50cz5cclxuICA8c3BhbiBbaW5uZXJIVE1MXT1cIidOZXdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCA6IG5ld0NvbW1lbnRzIHwgc2FuaXRpemVIdG1sXCI+PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9leHBhbmRlZC1pdGVtL2V4cGFuZGVkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZXhwYW5kZWQtaXRlbS9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPcEQsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUFvQixHQUFrQixFQUM1QixLQUFlLEVBQ2YsU0FBeUIsRUFDekIsUUFBd0IsRUFDeEIsUUFBd0IsRUFDeEIsSUFBb0IsRUFDcEIsT0FBa0IsRUFDbEIsVUFBNEIsRUFDNUIsVUFBc0I7UUFSWixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFn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QUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1I7b0JBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQTFUVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixtSEN4QmxDLHd6REFzQ0E7OzJGRGRhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxzQkFBc0I7NlNBS3ZCLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxJQUFJO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlY2lwaWVudE1vZGVsLCBIZWFkZXJNb2RlbCwgQWN0aW9uLCBVc2VySW5mbywgR2VuZGVyIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNYWlsYm94U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25EaWFsb2csIEFjdGlvbkRpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9jb21wb3NlL2FjdGlvbi9hY3Rpb24uZGlhbG9nJztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi8uLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcblxyXG5jb25zdCBSRUZSRVNIX1RJTUUgPSAzMDAwMCwgVFlQSU5HX0hJTlRfVElNRSA9IDE1MDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1leHBhbmRlZC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHBhbmRlZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbW9kZWw6IFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgYWN0aW9ucz86IEFjdGlvbltdO1xyXG4gIG5ld0NvbW1lbnRzPzogbnVtYmVyO1xyXG4gIHR5cGluZz86IGJvb2xlYW47XHJcbiAgbm90ZTogc3RyaW5nO1xyXG4gIHNlbmRlcj86IHN0cmluZztcclxuICBhd2FpdGluZz86IHN0cmluZztcclxuICBtb2RlOiAnd29ya2luZycgfCAnZG9uZScgfCAnZmFpbGVkJyB8IG51bGw7XHJcbiAgcHJpdmF0ZSBfdHlwaW5nVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSBfcmVmcmVzaFRhc2s6IE5vZGVKUy5UaW1lb3V0O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhdDogQ2hhdEluZm8sXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnaW5nOiBIdWJTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLmNvbW1lbnQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmIChlLmlkID09PSB0aGlzLm1vZGVsLmlkICYmIChlLm1vZGVsLmJ5SWQgfHwgZS5tb2RlbC51c2VySWQpICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkge1xyXG4gICAgICAgICAgdGhpcy5fY29tbWVudHMoKTtcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChlLm1vZGVsLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ0NvbW1lbnRlZCcsIHUuZ2VuZGVyLCB1Lm5hbWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLnVwZGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgaWYgKGUubW9kZWwuaWQgPT09IHRoaXMubW9kZWwuaWQpIHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgKGUudXNlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkgJiYgdGhpcy5fYWNjb3VudHMuZ2V0KGUudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ01haWxWZXJzaW9uVXBkYXRlJywgdGhpcy5tb2RlbC5udW1iZXIsIHUubmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX21haWxib3guY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGUgPT5cclxuICAgICAgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQpICYmXHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKSk7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudFR5cGluZyQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSksIGZpbHRlcihlID0+IGUuaWQgPT09IHRoaXMubW9kZWwuZG9jdW1lbnRJZCkpLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgdGhpcy50eXBpbmcgPSB0cnVlO1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fdHlwaW5nVGFzayk7XHJcbiAgICAgIHRoaXMuX3R5cGluZ1Rhc2sgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMudHlwaW5nID0gZmFsc2UsIFRZUElOR19ISU5UX1RJTUUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICB0aGlzLl9yZWZyZXNoVGFzayA9IHNldEludGVydmFsKCgpID0+IHRoaXMuX3JlZnJlc2goKSwgUkVGUkVTSF9USU1FKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZSgpIHtcclxuICAgIGNvbnN0IHsgb3duZXJJZCwgb3duZXJCeUlkLCBpc3N1ZWQsIHN1YnN0aXR1dGVJZCwgcmVjZWl2ZWQsIHJlcGxpZWQsIGxvZywgaWQsIG5vdGUsIGJ5SWQsIGFjdGlvbiwgZXNjYWxhdGVkLCBvcmlnaW5JZCwgZHJhZnQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBsZXQgdGFyZ2V0OiBzdHJpbmc7XHJcbiAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3RhcmdldChpZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3Vic3RpdHV0ZUlkKSB7XHJcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChzdWJzdGl0dXRlSWQpKTtcclxuICAgICAgaWYgKHJlcGxpZWQpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZXBsaWVkKSxcclxuICAgICAgICAgIGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFjdGlvbiksXHJcbiAgICAgICAgICBhZGplY3RpdmUgPSAoYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnWW91U3Vic3RpdHV0ZUFjdGlvblRha2VuVG8nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCBhZGplY3RpdmUsXHJcbiAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW4nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCBhZGplY3RpdmUsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGVzY2FsYXRlZCkge1xyXG4gICAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IG9yaWdpbklkKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0VzY2FsYXRlZEZyb20nLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLCB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aGlzLl9kdXJhdGlvbihlc2NhbGF0aW9uLmR1cmF0aW9uKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjZWl2ZWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nTm90ZScsIHN1YnN0aXR1dGluZy5nZW5kZXIsXHJcbiAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLFxyXG4gICAgICAgICAgdGltZSxcclxuICAgICAgICAgIG5vdGUgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXBsaWVkKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlcGxpZWQpO1xyXG4gICAgICBpZiAoYnlJZCkge1xyXG4gICAgICAgIGlmIChieUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdVRvJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSxcclxuICAgICAgICAgICAgICB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5WW91JywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSxcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9hY2NvdW50cy5nZXQoYnlJZCkuc3Vic2NyaWJlKHUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnknLCB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh1KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB1LmdlbmRlciksIHRpbWUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpIHtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdBY3Rpb25UYWtlblRvJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlcixcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uVG8nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sICd5b3UnKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vdGUpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5vdGU7XHJcbiAgICBlbHNlIGlmIChvcmlnaW5JZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IG9yaWdpbklkKTtcclxuICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gb3JpZ2luLmFjdGlvbiksXHJcbiAgICAgICAgYWRqZWN0aXZlID0gYWN0aW9uLmFkamVjdGl2ZSB8fCBhY3Rpb24ucGFzdCB8fCBhY3Rpb24udGl0bGU7XHJcbiAgICAgIGlmICgob3JpZ2luLmJ5SWQgfHwgb3JpZ2luLnVzZXJJZCkgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5WW91JywgYWRqZWN0aXZlKTtcclxuICAgICAgZWxzZSBpZiAob3JpZ2luLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIGNvbnN0IGJ5ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi5ieUlkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlCeScsIGFkamVjdGl2ZSwgYnkubmFtZSwgd2hvLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKCB0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5JywgYWRqZWN0aXZlLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkICYmICFkcmFmdCkge1xyXG4gICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhpc3N1ZWQpO1xyXG4gICAgICBpZiAob3duZXJCeUlkKSB7XHJcbiAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3duZXJCeUlkKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZUJ5JywgYnkuZ2VuZGVyLFxyXG4gICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KGJ5KSxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgICB0aW1lKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlWW91QnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3RhcmdldChpZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5vcmlnaW5JZCA9PT0gaWQpO1xyXG4gICAgaWYgKG9yaWdpbi5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwob3JpZ2luLm1hcChyID0+IHIudXNlcklkKSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmpvaW4oXHJcbiAgICAgICAgdXNlcnMubWFwKHUgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hY3Rpb25OYW1lKG5hbWU6IHN0cmluZywgZ2VuZGVyOiBHZW5kZXIgfCAneW91Jykge1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIG5hbWU7XHJcbiAgICBpZiAoZ2VuZGVyID09PSAneW91Jykge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcjtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICAoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnlvdU1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ueW91RmVtYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgICAgYWN0aW9uLnlvdSkgfHwgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ucGFzdE1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICAgIGFjdGlvbi5wYXN0KSB8fFxyXG4gICAgICBhY3Rpb24udGl0bGUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zyb21Ob3coZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRheWpzKGRhdGUpLmZyb21Ob3coKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2R1cmF0aW9uKHRpbWU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIGRheWpzLmR1cmF0aW9uKHRpbWUsICdzJykuaHVtYW5pemUoKTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnMgJiYgYWN0aW9ucy5sZW5ndGggPyB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maWx0ZXIoYSA9PiBhY3Rpb25zLmluZGV4T2YoYS5uYW1lKSA+IC0xKSA6IG51bGw7XHJcbiAgICBjb25zdCB7IHNlbmRlcklkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgLy8gc2VuZGVyXHJcbiAgICBpZiAoc2VuZGVySWQgJiYgKHNlbmRlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNlbmRlcklkKSk7XHJcbiAgICAgIHRoaXMuc2VuZGVyID0gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQod2hvKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbW1lbnRzKCk7XHJcbiAgICB0aGlzLl9ub3RlKCk7XHJcbiAgICB0aGlzLl9hd2FpdGluZygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21tZW50cygpIHtcclxuICAgIGNvbnN0IHsgdmlld2VkLCBjb21tZW50cyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMubmV3Q29tbWVudHMgPSB2aWV3ZWQgP1xyXG4gICAgICBjb21tZW50cy5maWx0ZXIoYyA9PiBjLnRpbWUgPiB2aWV3ZWQgJiYgKGMuYnlJZCB8fCBjLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKS5sZW5ndGggfHwgbnVsbCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9hd2FpdGluZygpIHtcclxuICAgIC8vYXdhaXRpbmdcclxuICAgIGxldCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIucGVuZGluZyAmJiAhci5lc3RpbWF0ZSkuXHJcbiAgICAgIHNvcnQoKHIwLCByMSkgPT4gcjAucmVjZWl2ZWQgPiByMS5yZWNlaXZlZCA/IDEgOiAtMSkuXHJcbiAgICAgIG1hcChyID0+IHIudXNlcklkKTtcclxuICAgIHJlY2lwaWVudHMgPSByZWNpcGllbnRzLmZpbHRlcigociwgaSkgPT4gcmVjaXBpZW50cy5pbmRleE9mKHIpID09PSBpKTsgLyogdW5pcXVlICovXHJcbiAgICBpZiAocmVjaXBpZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmluZGV4T2YodGhpcy5fc2Vzc2lvbi51c2VySWQpIDwgMCB8fCByZWNpcGllbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBjb25zdCB1c2VycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldEFsbChyZWNpcGllbnRzLmZpbHRlcihyID0+IHIgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSkpO1xyXG4gICAgICAgIGNvbnN0IG5hbWVzID0gdXNlcnMubWFwKHAgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQocCkpO1xyXG4gICAgICAgIHJlY2lwaWVudHMuaW5kZXhPZih0aGlzLl9zZXNzaW9uLnVzZXJJZCkgPiAtMSAmJlxyXG4gICAgICAgICAgbmFtZXMucHVzaCh0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3Vyc2VsZicpKTtcclxuICAgICAgICB0aGlzLmF3YWl0aW5nID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQXdhaXRpbmcnLCB0aGlzLl90cmFuc2xhdGUuam9pbihuYW1lcykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIENoYXRcclxuICAgICAqIEBwYXJhbSBlXHJcbiAgICAgKi9cclxuICBjaGF0KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkYXRhLWluZm8nKTtcclxuICAgIHVzZXJJZCAmJlxyXG4gICAgICB0aGlzLl9jaGF0Lm9wZW4odXNlcklkKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZm9ybWF0VXNlckVsZW1lbnQocGVyc29uOiBVc2VySW5mbykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoYXQuZm9ybWF0KHBlcnNvbik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBhY3Rpb25cclxuICAgKi9cclxuICBzZW5kKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IGlkLCBudW1iZXIsIHZlcnNpb24sIGZvcm1JZCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGNvbnN0IGRhdGE6IEFjdGlvbkRpYWxvZ0RhdGEgPSB7XHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXRlbTogdGhpcy5tb2RlbFxyXG4gICAgfTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKEFjdGlvbkRpYWxvZywge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2Rpci52YWx1ZVxyXG4gICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXJncyA9PiB7XHJcbiAgICAgIGlmIChhcmdzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlID0gJ3dvcmtpbmcnO1xyXG4gICAgICAgIHRoaXMuX21haWxib3guc2VuZChpZCwgdmVyc2lvbiwgZm9ybUlkLCBudWxsLCBhY3Rpb24sIGFyZ3MpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiBhc3luYyByID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IGFjdGlvbiksXHJcbiAgICAgICAgICAgICAgYWRqZWN0aXZlID0gY2FjdGlvbi5hZGplY3RpdmUgfHwgY2FjdGlvbi50aXRsZTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgdGhpcy5fdGFyZ2V0KGlkKTtcclxuICAgICAgICAgICAgaWYgKHRhcmdldClcclxuICAgICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnU2VudFRvJywgbnVtYmVyLCBhZGplY3RpdmUudG9Mb3dlckNhc2UoKSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50JywgbnVtYmVyLCBhZGplY3RpdmUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VudC5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSAnZG9uZSc7XHJcbiAgICAgICAgICB9LCBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVJlc3BvbnNlKGUsIHRoaXMubW9kZWwsICdTZW5kRXJyJyk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdmYWlsZWQnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKiBAcGFyYW0gbWVzc2FnZSByZXNvdXJjZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2hhbmRsZVJlc3BvbnNlKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSwgaXRlbTogSGVhZGVyTW9kZWwsIG1lc3NhZ2U6IHN0cmluZykge1xyXG4gICAgaWYgKHJlc3BvbnNlLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdQb3NpdGlvbkVycm9yJylcclxuICAgICAgc3dpdGNoIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1VzZXJEZW5pZWRHZW9FcnInKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignR2VvRXJyJyk7XHJcbiAgICAgIH1cclxuICAgIGVsc2Ugc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDk6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1ZlcnNpb25FcnInLCBpdGVtLm51bWJlcik7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSByZXNwb25zZS5lcnJvciAvKiBzZXJpYWxpemVkIG1vZGVsICovIGFzIFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIG9iaik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgNDA2OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yU3RyaW5nKHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcihtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuX3JlZnJlc2hUYXNrKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fdHlwaW5nVGFzayAmJiBjbGVhclRpbWVvdXQodGhpcy5fdHlwaW5nVGFzayk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzdW1tYXJ5XCIgKm5nSWY9XCJtb2RlbC5zdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtb2RlbC5zdW1tYXJ5XCI+XHJcbjwvZGl2PlxyXG48ZGl2PlxyXG4gIDxiaXpkb2MtYXR0YWNobWVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtYXR0YWNobWVudHM+XHJcbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgYWN0aW9uc1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbmQoYS5uYW1lKVwiIFtiaXpkb2NUb29sdGlwXT1cImEudGl0bGVcIiAqbmdJZj1cImEuaWNvblwiIGNsYXNzPVwidG9vbFwiPlxyXG4gICAgICA8bWF0LWljb24+e3thLmljb259fTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsIHJvd1wiPlxyXG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XHJcbiAgICAmbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwidGltZVwiIFtiaXpkb2NUb29sdGlwXT1cIm1vZGVsLnJlY2VpdmVkIHwgYW1DYWxlbmRhclwiPnt7bW9kZWwucmVjZWl2ZWQgfCBhbVRpbWVBZ299fTwvc3Bhbj5cclxuICAgICZuYnNwO1xyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJzZW5kZXIgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImF3YWl0aW5nIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtc21hbGxcIiAqbmdJZj1cInR5cGluZ1wiPnt7J1NvbWVvbmVUeXBpbmcnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgPGRpdiAqbmdJZj1cIm1vZGVsLmNvbW1lbnRzLmxlbmd0aFwiIGNsYXNzPVwibWF0LXNtYWxsXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIW5ld0NvbW1lbnRzOyBlbHNlIG5ld2NvbW1lbnRzXCI+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWNoaXAtc2V0ICpuZ0lmPVwibW9kZWwudGFnc1wiPlxyXG4gICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCB0YWcgb2YgbW9kZWwudGFnc1wiPnt7dGFnfX08L21hdC1jaGlwPlxyXG4gIDwvbWF0LWNoaXAtc2V0PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNuZXdjb21tZW50cz5cclxuICA8c3BhbiBbaW5uZXJIVE1MXT1cIidOZXdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCA6IG5ld0NvbW1lbnRzIHwgc2FuaXRpemVIdG1sXCI+PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -133,10 +133,10 @@ export class BrowseFilterComponent {
133
133
  this._destroy.next();
134
134
  this._destroy.complete();
135
135
  }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowseFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i0.ChangeDetectorRef }, { token: i3.MailboxService }, { token: i4.AccountService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipListbox, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n <mat-chip-option color=\"accent\" *ngFor=\"let tag of tags\">\r\n {{tag}}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BrowseFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i0.ChangeDetectorRef }, { token: i3.MailboxService }, { token: i4.AccountService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipListbox, descendants: true, static: true }, { propertyName: "contains", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "sender", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n <mat-chip-option color=\"accent\" *ngFor=\"let tag of tags\">\r\n {{tag}}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
138
138
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BrowseFilterComponent, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BrowseFilterComponent, decorators: [{
140
140
  type: Component,
141
141
  args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"!exclude || exclude.indexOf('contains') < 0\">\r\n <input matInput formControlName=\"contains\" autocomplete=\"off\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n <button *ngIf=\"form.value.contains\" matSuffix mat-icon-button aria-label=\"\" (click)=\"form.get('contains').setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"senderId\" #sender/>\r\n <mat-autocomplete #senders [displayWith]=\"displayFn\" (optionSelected)=\"senderSelected($event)\">\r\n <!--<mat-option [value]=\"null\">\r\n {{ 'All' | translate }}\r\n </mat-option>-->\r\n <mat-option *ngFor=\"let u of senders$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button matSuffix mat-icon-button *ngIf=\"senderId.value\" (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let s of states\" [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n <mat-option *ngFor=\"let f of forms\" [value]=\"f.name\">{{f.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n <mat-chip-option color=\"accent\" *ngFor=\"let tag of tags\">\r\n {{tag}}\r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n <bizdoc-cube-filter *ngIf=\"filters\" class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n</form>\r\n", styles: ["form{padding:8px}.cube-filter ::ng-deep form{padding:0}\n"] }]
142
142
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i0.ChangeDetectorRef }, { type: i3.MailboxService }, { type: i4.AccountService }, { type: undefined, decorators: [{
@@ -36,10 +36,10 @@ export class FoldersMenuComponent {
36
36
  this._mailbox.move(item.id, folder.name).subscribe();
37
37
  }
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FoldersMenuComponent, deps: [{ token: i1.SessionService }, { token: i2.MailboxService }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: { collapsed: "collapsed" }, outputs: { change: "change" }, ngImport: i0, template: "<mat-nav-list id=\"folders\" cdkDropList cdkDropListSortingDisabled (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListConnectedTo=\"browse-table\" [cdkDropListEnterPredicate]=\"canDrop\">\r\n <mat-list-item [slotRouterLink]=\"['mailbox/f/:type=flagged']\" slotRouterLinkActive=\"active\" (click)=\"change.emit()\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"'Flagged'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">star_border</mat-icon>\r\n <span matListItemTitle>{{'Flagged'|translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item *ngFor=\"let f of folders\" [attr.data-help]=\"'folder-'+f.name\" (click)=\"change.emit()\"\r\n [attr.aria-label]=\"f.title\" [slotRouterLink]=\"['mailbox/f', f.name]\" slotRouterLinkActive=\"active\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon}}</mat-icon>\r\n <span matListItemTitle class=\"folder-title\">\r\n <span>\r\n {{f.title}}\r\n </span>\r\n <span *ngIf=\"f.count\">\r\n {{f.count}}\r\n </span>\r\n </span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [".folder-title{display:flex!important;flex-direction:row}.folder-title :first-child{flex:1 auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: i5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "directive", type: i9.SlotRouterDirective, selector: "[slotRouterLink]", inputs: ["slotRouterLink", "slotRouterLinkActive", "slotRouterLinkDisabled", "slotRouterLinkPolicy", "slotRouterLinkOptions"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], animations: [] }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FoldersMenuComponent, deps: [{ token: i1.SessionService }, { token: i2.MailboxService }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: { collapsed: "collapsed" }, outputs: { change: "change" }, ngImport: i0, template: "<mat-nav-list id=\"folders\" cdkDropList cdkDropListSortingDisabled (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListConnectedTo=\"browse-table\" [cdkDropListEnterPredicate]=\"canDrop\">\r\n <mat-list-item [slotRouterLink]=\"['mailbox/f/:type=flagged']\" slotRouterLinkActive=\"active\" (click)=\"change.emit()\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"'Flagged'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">star_border</mat-icon>\r\n <span matListItemTitle>{{'Flagged'|translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item *ngFor=\"let f of folders\" [attr.data-help]=\"'folder-'+f.name\" (click)=\"change.emit()\"\r\n [attr.aria-label]=\"f.title\" [slotRouterLink]=\"['mailbox/f', f.name]\" slotRouterLinkActive=\"active\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon}}</mat-icon>\r\n <span matListItemTitle class=\"folder-title\">\r\n <span>\r\n {{f.title}}\r\n </span>\r\n <span *ngIf=\"f.count\">\r\n {{f.count}}\r\n </span>\r\n </span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [".folder-title{display:flex!important;flex-direction:row}.folder-title :first-child{flex:1 auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: i5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "directive", type: i9.SlotRouterDirective, selector: "[slotRouterLink]", inputs: ["slotRouterLink", "slotRouterLinkActive", "slotRouterLinkDisabled", "slotRouterLinkPolicy", "slotRouterLinkOptions"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], animations: [] }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FoldersMenuComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FoldersMenuComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ selector: 'bizdoc-folders-menu', animations: [], template: "<mat-nav-list id=\"folders\" cdkDropList cdkDropListSortingDisabled (cdkDropListDropped)=\"drop($event)\"\r\n cdkDropListConnectedTo=\"browse-table\" [cdkDropListEnterPredicate]=\"canDrop\">\r\n <mat-list-item [slotRouterLink]=\"['mailbox/f/:type=flagged']\" slotRouterLinkActive=\"active\" (click)=\"change.emit()\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"'Flagged'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">star_border</mat-icon>\r\n <span matListItemTitle>{{'Flagged'|translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item *ngFor=\"let f of folders\" [attr.data-help]=\"'folder-'+f.name\" (click)=\"change.emit()\"\r\n [attr.aria-label]=\"f.title\" [slotRouterLink]=\"['mailbox/f', f.name]\" slotRouterLinkActive=\"active\">\r\n <mat-icon matListItemIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon}}</mat-icon>\r\n <span matListItemTitle class=\"folder-title\">\r\n <span>\r\n {{f.title}}\r\n </span>\r\n <span *ngIf=\"f.count\">\r\n {{f.count}}\r\n </span>\r\n </span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [".folder-title{display:flex!important;flex-direction:row}.folder-title :first-child{flex:1 auto}\n"] }]
45
45
  }], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.MailboxService }], propDecorators: { collapsed: [{
@@ -55,10 +55,10 @@ export class ChatInfo {
55
55
  this._router.navigate(['contacts/c', contact.id]);
56
56
  }
57
57
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatInfo, deps: [{ token: BIZDOC_CONFIG }, { token: i1.RouterImpl }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatInfo, providedIn: 'root' }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatInfo, deps: [{ token: BIZDOC_CONFIG }, { token: i1.RouterImpl }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
59
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatInfo, providedIn: 'root' }); }
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatInfo, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatInfo, decorators: [{
62
62
  type: Injectable,
63
63
  args: [{ providedIn: 'root' }]
64
64
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -11,10 +11,10 @@ export class ChatMobileComponent {
11
11
  this.contact = contact;
12
12
  this.contactChange.emit(contact);
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ChatMobileComponent, selector: "bizdoc-chat", inputs: { contact: "contact" }, outputs: { contactChange: "contactChange" }, ngImport: i0, template: "<ng-container *ngIf=\"contact; else contacts\">\r\n <bizdoc-chat-conversation [contact]=\"contact\" class=\"flex\"></bizdoc-chat-conversation>\r\n</ng-container>\r\n<ng-template #contacts>\r\n <bizdoc-contacts (selected)=\"selected($event)\"></bizdoc-contacts>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:300px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ConversationComponent, selector: "bizdoc-chat-conversation", inputs: ["contact"] }, { kind: "component", type: i3.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ChatMobileComponent, selector: "bizdoc-chat", inputs: { contact: "contact" }, outputs: { contactChange: "contactChange" }, ngImport: i0, template: "<ng-container *ngIf=\"contact; else contacts\">\r\n <bizdoc-chat-conversation [contact]=\"contact\" class=\"flex\"></bizdoc-chat-conversation>\r\n</ng-container>\r\n<ng-template #contacts>\r\n <bizdoc-contacts (selected)=\"selected($event)\"></bizdoc-contacts>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:300px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ConversationComponent, selector: "bizdoc-chat-conversation", inputs: ["contact"] }, { kind: "component", type: i3.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatMobileComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatMobileComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'bizdoc-chat', template: "<ng-container *ngIf=\"contact; else contacts\">\r\n <bizdoc-chat-conversation [contact]=\"contact\" class=\"flex\"></bizdoc-chat-conversation>\r\n</ng-container>\r\n<ng-template #contacts>\r\n <bizdoc-contacts (selected)=\"selected($event)\"></bizdoc-contacts>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:300px}\n"] }]
20
20
  }], propDecorators: { contact: [{
@@ -112,10 +112,10 @@ export class ChatService {
112
112
  });
113
113
  }));
114
114
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: i2.HubService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatService, providedIn: 'root' }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: i2.HubService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatService, providedIn: 'root' }); }
117
117
  }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ChatService, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ChatService, decorators: [{
119
119
  type: Injectable,
120
120
  args: [{ providedIn: 'root' }]
121
121
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.HubService }, { type: i3.SessionService }] });
@@ -38,10 +38,10 @@ export class HtmlSimplePipe {
38
38
  else
39
39
  return value.replace(HTML_EXP, '');
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HtmlSimplePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
42
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: HtmlSimplePipe, name: "htmlToText" }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HtmlSimplePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
42
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: HtmlSimplePipe, name: "htmlToText" }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HtmlSimplePipe, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HtmlSimplePipe, decorators: [{
45
45
  type: Pipe,
46
46
  args: [{ name: 'htmlToText' }]
47
47
  }] });
@@ -93,10 +93,10 @@ export class ContactsComponent {
93
93
  this._destroy.next();
94
94
  this._destroy.complete();
95
95
  }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ContactsComponent, deps: [{ token: i1.ChatService }, { token: i2.PromptService }, { token: i3.SessionService }, { token: i4.AccountService }, { token: i0.ChangeDetectorRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matListItemTitle>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matListItemLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matListItemLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\" >\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}.mat-mdc-nav-list{flex:1 1 auto;overflow:auto}.mat-mdc-nav-list .mat-mdc-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}.mat-mdc-nav-list .mat-mdc-list-item .watermark{width:16px;height:16px;font-size:16px}.mat-mdc-nav-list .mat-mdc-list-item .tool{opacity:0}.mat-mdc-nav-list .mat-mdc-list-item:hover .tool{opacity:1}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i9.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i9.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i9.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i12.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i13.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i16.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i16.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i16.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i17.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { kind: "directive", type: i18.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i19.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i20.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: HtmlSimplePipe, name: "htmlToText" }, { kind: "pipe", type: i21.TranslatePipe, name: "translate" }, { kind: "pipe", type: i22.FilterPipe, name: "filter" }, { kind: "pipe", type: i22.ArraySortPipe, name: "sort" }] }); }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContactsComponent, deps: [{ token: i1.ChatService }, { token: i2.PromptService }, { token: i3.SessionService }, { token: i4.AccountService }, { token: i0.ChangeDetectorRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matListItemTitle>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matListItemLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matListItemLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\" >\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}.mat-mdc-nav-list{flex:1 1 auto;overflow:auto}.mat-mdc-nav-list .mat-mdc-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}.mat-mdc-nav-list .mat-mdc-list-item .watermark{width:16px;height:16px;font-size:16px}.mat-mdc-nav-list .mat-mdc-list-item .tool{opacity:0}.mat-mdc-nav-list .mat-mdc-list-item:hover .tool{opacity:1}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i9.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i9.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i9.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i12.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i13.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i16.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i16.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i16.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i17.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { kind: "directive", type: i18.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i19.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i20.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: HtmlSimplePipe, name: "htmlToText" }, { kind: "pipe", type: i21.TranslatePipe, name: "translate" }, { kind: "pipe", type: i22.FilterPipe, name: "filter" }, { kind: "pipe", type: i22.ArraySortPipe, name: "sort" }] }); }
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ContactsComponent, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContactsComponent, decorators: [{
100
100
  type: Component,
101
101
  args: [{ selector: 'bizdoc-contacts', template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matListItemTitle>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matListItemLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matListItemLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\" >\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}.mat-mdc-nav-list{flex:1 1 auto;overflow:auto}.mat-mdc-nav-list .mat-mdc-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}.mat-mdc-nav-list .mat-mdc-list-item .watermark{width:16px;height:16px;font-size:16px}.mat-mdc-nav-list .mat-mdc-list-item .tool{opacity:0}.mat-mdc-nav-list .mat-mdc-list-item:hover .tool{opacity:1}\n"] }]
102
102
  }], ctorParameters: () => [{ type: i1.ChatService }, { type: i2.PromptService }, { type: i3.SessionService }, { type: i4.AccountService }, { type: i0.ChangeDetectorRef }, { type: i5.HubService }], propDecorators: { selected: [{
@@ -14,10 +14,10 @@ export class ContactsPaneComponent {
14
14
  pathMode: 'relative'
15
15
  });
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ContactsPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.PanesRouter }], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ContactsPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`, isInline: true, dependencies: [{ kind: "component", type: i4.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContactsPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.PanesRouter }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ContactsPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`, isInline: true, dependencies: [{ kind: "component", type: i4.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ContactsPaneComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContactsPaneComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{
23
23
  template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`,
@@ -174,10 +174,10 @@ export class ConversationComponent {
174
174
  this._input.text && this._input.text.length &&
175
175
  window.localStorage.setItem(this.contact.id, this._input.text);
176
176
  }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ConversationComponent, deps: [{ token: BIZDOC_CONFIG }, { token: i1.ChatService }, { token: i2.HubService }, { token: i3.TranslateService }, { token: i4.AccountService }, { token: i5.PromptService }, { token: i0.ViewContainerRef }, { token: i6.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ConversationComponent, selector: "bizdoc-chat-conversation", inputs: { contact: "contact" }, viewQueries: [{ propertyName: "_input", first: true, predicate: EditInputComponent, descendants: true, static: true }, { propertyName: "conversationElement", first: true, predicate: ["conversation"], descendants: true, read: ElementRef, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: i10.EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }, { kind: "component", type: i11.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "directive", type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i14.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i15.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.TaggingPipe, name: "taggingHtml" }] }); }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ConversationComponent, deps: [{ token: BIZDOC_CONFIG }, { token: i1.ChatService }, { token: i2.HubService }, { token: i3.TranslateService }, { token: i4.AccountService }, { token: i5.PromptService }, { token: i0.ViewContainerRef }, { token: i6.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ConversationComponent, selector: "bizdoc-chat-conversation", inputs: { contact: "contact" }, viewQueries: [{ propertyName: "_input", first: true, predicate: EditInputComponent, descendants: true, static: true }, { propertyName: "conversationElement", first: true, predicate: ["conversation"], descendants: true, read: ElementRef, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "component", type: i10.EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }, { kind: "component", type: i11.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { kind: "directive", type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i14.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i15.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.TaggingPipe, name: "taggingHtml" }] }); }
179
179
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ConversationComponent, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ConversationComponent, decorators: [{
181
181
  type: Component,
182
182
  args: [{ selector: 'bizdoc-chat-conversation', template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"] }]
183
183
  }], ctorParameters: () => [{ type: undefined, decorators: [{