@bizdoc/core 3.2.10 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +52 -6
  3. package/assets/themes/deep-purple-light-blue.min.css +1 -1
  4. package/assets/themes/deep-purple-teal.min.css +1 -1
  5. package/assets/themes/default.min.css +52 -8
  6. package/assets/themes/green.min.css +1 -1
  7. package/assets/themes/indigo-amber.min.css +1 -1
  8. package/assets/themes/indigo.min.css +1 -1
  9. package/fesm2022/bizdoc-core.mjs +2129 -1873
  10. package/fesm2022/bizdoc-core.mjs.map +1 -1
  11. package/lib/admin/admin-menu.component.d.ts +1 -3
  12. package/lib/admin/architecture/designer.base.d.ts +3 -3
  13. package/lib/admin/architecture/elements/form.component.d.ts +1 -1
  14. package/lib/compose/form-ref.d.ts +1 -0
  15. package/lib/compose/trace/trace.base.d.ts +1 -1
  16. package/lib/core/base.d.ts +5 -0
  17. package/lib/core/fields/options.base.d.ts +2 -2
  18. package/lib/core/inputs/combination-picker-body.d.ts +0 -2
  19. package/lib/core/inputs/combination-picker.d.ts +1 -1
  20. package/lib/core/session.service.d.ts +2 -2
  21. package/lib/core/tagging/tagging.component-base.d.ts +1 -1
  22. package/lib/core/translate.service.d.ts +2 -2
  23. package/lib/cube/cube.service.d.ts +1 -1
  24. package/lib/cube/matrix/matrix.base.d.ts +1 -1
  25. package/lib/cube/view-base.d.ts +1 -1
  26. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
  27. package/lib/home/home-base.component.d.ts +1 -1
  28. package/lib/home/home.desktop.component.d.ts +5 -3
  29. package/lib/notifications/types/notification-base.d.ts +1 -1
  30. package/lib/reports/cube/usage-base.d.ts +1 -1
  31. package/lib/views/cube/cube-base.d.ts +1 -1
  32. package/package.json +31 -33
  33. package/esm2022/bizdoc-core.mjs +0 -5
  34. package/esm2022/lib/admin/admin-dismiss.service.mjs +0 -28
  35. package/esm2022/lib/admin/admin-menu.component.mjs +0 -24
  36. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +0 -93
  37. package/esm2022/lib/admin/architecture/declarations.mjs +0 -79
  38. package/esm2022/lib/admin/architecture/designer-element.component.mjs +0 -270
  39. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +0 -96
  40. package/esm2022/lib/admin/architecture/designer.base.mjs +0 -136
  41. package/esm2022/lib/admin/architecture/designer.component.mjs +0 -396
  42. package/esm2022/lib/admin/architecture/elements/action.component.mjs +0 -43
  43. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +0 -50
  44. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +0 -49
  45. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +0 -29
  46. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +0 -35
  47. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +0 -49
  48. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +0 -66
  49. package/esm2022/lib/admin/architecture/elements/control.component.mjs +0 -21
  50. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +0 -32
  51. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +0 -34
  52. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +0 -254
  53. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +0 -40
  54. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +0 -34
  55. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +0 -40
  56. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +0 -35
  57. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +0 -56
  58. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +0 -126
  59. package/esm2022/lib/admin/architecture/elements/form.component.mjs +0 -156
  60. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +0 -53
  61. package/esm2022/lib/admin/architecture/elements/job.component.mjs +0 -57
  62. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +0 -98
  63. package/esm2022/lib/admin/architecture/elements/node.component.mjs +0 -18
  64. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +0 -38
  65. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +0 -32
  66. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +0 -34
  67. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +0 -40
  68. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +0 -18
  69. package/esm2022/lib/admin/architecture/elements/report.component.mjs +0 -29
  70. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +0 -33
  71. package/esm2022/lib/admin/architecture/elements/role.component.mjs +0 -43
  72. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +0 -18
  73. package/esm2022/lib/admin/architecture/elements/source.component.mjs +0 -25
  74. package/esm2022/lib/admin/architecture/elements/state.component.mjs +0 -44
  75. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +0 -38
  76. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +0 -39
  77. package/esm2022/lib/admin/architecture/elements/type.component.mjs +0 -83
  78. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +0 -64
  79. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +0 -18
  80. package/esm2022/lib/admin/architecture/elements/view.component.mjs +0 -18
  81. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +0 -29
  82. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +0 -173
  83. package/esm2022/lib/admin/core/ace.input.mjs +0 -144
  84. package/esm2022/lib/admin/core/color-picker.input.mjs +0 -183
  85. package/esm2022/lib/admin/core/localized-string.component.mjs +0 -129
  86. package/esm2022/lib/admin/core/search.input.mjs +0 -52
  87. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +0 -573
  88. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +0 -537
  89. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +0 -39
  90. package/esm2022/lib/admin/document-trace/timeline.mjs +0 -2
  91. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +0 -125
  92. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +0 -270
  93. package/esm2022/lib/admin/form/designer/declarations.mjs +0 -2
  94. package/esm2022/lib/admin/form/designer/design-control.component.mjs +0 -41
  95. package/esm2022/lib/admin/form/designer/properties.component.mjs +0 -71
  96. package/esm2022/lib/admin/form/designer/section.component.mjs +0 -53
  97. package/esm2022/lib/admin/form/designer/settings.component.mjs +0 -51
  98. package/esm2022/lib/admin/form/form.resolve.service.mjs +0 -18
  99. package/esm2022/lib/admin/form/workflow/node-ref.mjs +0 -8
  100. package/esm2022/lib/admin/form/workflow/node.component.mjs +0 -156
  101. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +0 -88
  102. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +0 -586
  103. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +0 -160
  104. package/esm2022/lib/admin/patterns/patterns.component.mjs +0 -180
  105. package/esm2022/lib/admin/permissions/permissions.component.mjs +0 -98
  106. package/esm2022/lib/admin/positions/positions-popup.component.mjs +0 -75
  107. package/esm2022/lib/admin/positions/positions.component.mjs +0 -463
  108. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +0 -156
  109. package/esm2022/lib/admin/profiler/profiler.component.mjs +0 -284
  110. package/esm2022/lib/admin/system.service.mjs +0 -127
  111. package/esm2022/lib/admin/utility-ref.mjs +0 -39
  112. package/esm2022/lib/admin/utility-wrapper.component.mjs +0 -53
  113. package/esm2022/lib/admin/utility.pane.component.mjs +0 -48
  114. package/esm2022/lib/app.component.mjs +0 -73
  115. package/esm2022/lib/bizdoc.module.mjs +0 -110
  116. package/esm2022/lib/browse/browse-items.component.mjs +0 -496
  117. package/esm2022/lib/browse/browse.mobile.component.mjs +0 -102
  118. package/esm2022/lib/browse/browse.pane.component.mjs +0 -169
  119. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +0 -316
  120. package/esm2022/lib/browse/filter/filter.component.mjs +0 -140
  121. package/esm2022/lib/browse/folders-menu.component.mjs +0 -49
  122. package/esm2022/lib/chat/chat-info.mjs +0 -77
  123. package/esm2022/lib/chat/chat.mobile.component.mjs +0 -24
  124. package/esm2022/lib/chat/chat.service.mjs +0 -122
  125. package/esm2022/lib/chat/contacts.component.mjs +0 -107
  126. package/esm2022/lib/chat/contacts.pane.component.mjs +0 -26
  127. package/esm2022/lib/chat/conversation.component.mjs +0 -196
  128. package/esm2022/lib/chat/conversation.pane.component.mjs +0 -46
  129. package/esm2022/lib/compose/action/action-picker.component.mjs +0 -82
  130. package/esm2022/lib/compose/action/action-ref.mjs +0 -19
  131. package/esm2022/lib/compose/action/action.base.mjs +0 -50
  132. package/esm2022/lib/compose/action/action.dialog.mjs +0 -62
  133. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +0 -68
  134. package/esm2022/lib/compose/action/assign-action.component.mjs +0 -77
  135. package/esm2022/lib/compose/action/moveto-action.component.mjs +0 -90
  136. package/esm2022/lib/compose/action/return-action.component.mjs +0 -51
  137. package/esm2022/lib/compose/attachments/attachments.component.mjs +0 -130
  138. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +0 -157
  139. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +0 -25
  140. package/esm2022/lib/compose/box/box.component.mjs +0 -44
  141. package/esm2022/lib/compose/box/control.component.mjs +0 -50
  142. package/esm2022/lib/compose/box/row.component.mjs +0 -41
  143. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +0 -27
  144. package/esm2022/lib/compose/comments/comment.component.mjs +0 -188
  145. package/esm2022/lib/compose/comments/comments.component.mjs +0 -226
  146. package/esm2022/lib/compose/comments/comments.pane.component.mjs +0 -40
  147. package/esm2022/lib/compose/comments/edit-comment.component.mjs +0 -32
  148. package/esm2022/lib/compose/comments/edits.component.mjs +0 -30
  149. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +0 -64
  150. package/esm2022/lib/compose/comments/votes.component.mjs +0 -42
  151. package/esm2022/lib/compose/compose-resolve.service.mjs +0 -34
  152. package/esm2022/lib/compose/compose.mobile.component.mjs +0 -114
  153. package/esm2022/lib/compose/compose.pane.component.mjs +0 -202
  154. package/esm2022/lib/compose/copy/copy.dialog.mjs +0 -45
  155. package/esm2022/lib/compose/dismiss.service.mjs +0 -25
  156. package/esm2022/lib/compose/document-resolve.service.mjs +0 -33
  157. package/esm2022/lib/compose/document-resolver.service.mjs +0 -17
  158. package/esm2022/lib/compose/document.component.mjs +0 -48
  159. package/esm2022/lib/compose/document.mobile.component.mjs +0 -23
  160. package/esm2022/lib/compose/document.pane.component.mjs +0 -27
  161. package/esm2022/lib/compose/events/events.component.mjs +0 -29
  162. package/esm2022/lib/compose/form-ref.mjs +0 -43
  163. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +0 -57
  164. package/esm2022/lib/compose/form.component.mjs +0 -512
  165. package/esm2022/lib/compose/new-menu.component.mjs +0 -94
  166. package/esm2022/lib/compose/overlay.component.exp.mjs +0 -71
  167. package/esm2022/lib/compose/privilage.directive.mjs +0 -64
  168. package/esm2022/lib/compose/recipient-resolver.service.mjs +0 -18
  169. package/esm2022/lib/compose/state.component.mjs +0 -37
  170. package/esm2022/lib/compose/tag/tags.component.mjs +0 -89
  171. package/esm2022/lib/compose/trace/flow.component.mjs +0 -687
  172. package/esm2022/lib/compose/trace/people.component.mjs +0 -39
  173. package/esm2022/lib/compose/trace/trace.base.mjs +0 -79
  174. package/esm2022/lib/compose/trace/trace.component.mjs +0 -353
  175. package/esm2022/lib/compose/trace/trace.pane.component.mjs +0 -48
  176. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +0 -58
  177. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +0 -343
  178. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +0 -53
  179. package/esm2022/lib/core/account.service.mjs +0 -38
  180. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +0 -17
  181. package/esm2022/lib/core/animations.mjs +0 -168
  182. package/esm2022/lib/core/authentication.mjs +0 -4
  183. package/esm2022/lib/core/avatar/avatar.component.mjs +0 -111
  184. package/esm2022/lib/core/base.mjs +0 -2
  185. package/esm2022/lib/core/checkbox.mjs +0 -38
  186. package/esm2022/lib/core/colors.mjs +0 -322
  187. package/esm2022/lib/core/component-factory-resolver.mjs +0 -48
  188. package/esm2022/lib/core/configuration.mjs +0 -17
  189. package/esm2022/lib/core/datasource.service.mjs +0 -75
  190. package/esm2022/lib/core/decorators.mjs +0 -46
  191. package/esm2022/lib/core/document-factory.service.mjs +0 -156
  192. package/esm2022/lib/core/fields/address.designer.mjs +0 -39
  193. package/esm2022/lib/core/fields/address.field.mjs +0 -65
  194. package/esm2022/lib/core/fields/autocomplete.field.mjs +0 -136
  195. package/esm2022/lib/core/fields/axes-picker.designer.mjs +0 -59
  196. package/esm2022/lib/core/fields/axes-picker.field.mjs +0 -46
  197. package/esm2022/lib/core/fields/checkbox.designer.mjs +0 -38
  198. package/esm2022/lib/core/fields/checkbox.field.mjs +0 -35
  199. package/esm2022/lib/core/fields/checklist.designer.mjs +0 -98
  200. package/esm2022/lib/core/fields/checklist.field.mjs +0 -36
  201. package/esm2022/lib/core/fields/date-range.designer.mjs +0 -43
  202. package/esm2022/lib/core/fields/date-range.field.mjs +0 -46
  203. package/esm2022/lib/core/fields/date.designer.mjs +0 -40
  204. package/esm2022/lib/core/fields/date.field.mjs +0 -40
  205. package/esm2022/lib/core/fields/expression.field.mjs +0 -87
  206. package/esm2022/lib/core/fields/file.designer.mjs +0 -39
  207. package/esm2022/lib/core/fields/file.field.mjs +0 -35
  208. package/esm2022/lib/core/fields/html.designer.mjs +0 -61
  209. package/esm2022/lib/core/fields/html.field.mjs +0 -44
  210. package/esm2022/lib/core/fields/input.designer.mjs +0 -38
  211. package/esm2022/lib/core/fields/input.field.mjs +0 -54
  212. package/esm2022/lib/core/fields/localized-string.field.mjs +0 -49
  213. package/esm2022/lib/core/fields/numeric.designer.mjs +0 -72
  214. package/esm2022/lib/core/fields/numeric.field.mjs +0 -37
  215. package/esm2022/lib/core/fields/options.base.mjs +0 -41
  216. package/esm2022/lib/core/fields/options.component.mjs +0 -58
  217. package/esm2022/lib/core/fields/radio-button.designer.mjs +0 -39
  218. package/esm2022/lib/core/fields/radio-button.field.mjs +0 -33
  219. package/esm2022/lib/core/fields/select.designer.mjs +0 -104
  220. package/esm2022/lib/core/fields/select.field.mjs +0 -36
  221. package/esm2022/lib/core/fields/signature.designer.mjs +0 -37
  222. package/esm2022/lib/core/fields/signature.field.mjs +0 -52
  223. package/esm2022/lib/core/fields/switch.field.mjs +0 -35
  224. package/esm2022/lib/core/fields/tags.designer.mjs +0 -28
  225. package/esm2022/lib/core/fields/tags.field.mjs +0 -51
  226. package/esm2022/lib/core/fields/textarea.designer.mjs +0 -33
  227. package/esm2022/lib/core/fields/textarea.field.mjs +0 -37
  228. package/esm2022/lib/core/fields/time.designer.mjs +0 -41
  229. package/esm2022/lib/core/fields/time.field.mjs +0 -39
  230. package/esm2022/lib/core/fields/timespan.field.mjs +0 -82
  231. package/esm2022/lib/core/fields/yesno.designer.mjs +0 -52
  232. package/esm2022/lib/core/fields/yesno.field.mjs +0 -34
  233. package/esm2022/lib/core/firebase.service.mjs +0 -51
  234. package/esm2022/lib/core/functions.mjs +0 -225
  235. package/esm2022/lib/core/guide/guide.component.mjs +0 -220
  236. package/esm2022/lib/core/guide/guide.service.mjs +0 -124
  237. package/esm2022/lib/core/guide/help-tip.component.mjs +0 -52
  238. package/esm2022/lib/core/http.interceptor.mjs +0 -63
  239. package/esm2022/lib/core/hub.service.mjs +0 -117
  240. package/esm2022/lib/core/identity/identity.component.mjs +0 -66
  241. package/esm2022/lib/core/info/attachment-info.service.mjs +0 -53
  242. package/esm2022/lib/core/info/document-info.service.mjs +0 -21
  243. package/esm2022/lib/core/info/location-info.component.mjs +0 -60
  244. package/esm2022/lib/core/info/map-info.mjs +0 -42
  245. package/esm2022/lib/core/inputs/address.input.mjs +0 -203
  246. package/esm2022/lib/core/inputs/auto-complete.input.mjs +0 -273
  247. package/esm2022/lib/core/inputs/combination-picker-body.mjs +0 -171
  248. package/esm2022/lib/core/inputs/combination-picker.mjs +0 -285
  249. package/esm2022/lib/core/inputs/combination-pool.mjs +0 -105
  250. package/esm2022/lib/core/inputs/file.input.mjs +0 -432
  251. package/esm2022/lib/core/inputs/select.input.mjs +0 -254
  252. package/esm2022/lib/core/inputs/signature.input.mjs +0 -150
  253. package/esm2022/lib/core/inputs/time-picker.mjs +0 -195
  254. package/esm2022/lib/core/inputs/timespan.input.mjs +0 -180
  255. package/esm2022/lib/core/layout.component.mjs +0 -93
  256. package/esm2022/lib/core/lottie-animation.exp.mjs +0 -49
  257. package/esm2022/lib/core/mailbox.service.mjs +0 -445
  258. package/esm2022/lib/core/models.mjs +0 -25
  259. package/esm2022/lib/core/none.component.mjs +0 -37
  260. package/esm2022/lib/core/pipes/action.pipe.mjs +0 -25
  261. package/esm2022/lib/core/pipes/calendar.pipe.mjs +0 -72
  262. package/esm2022/lib/core/pipes/date-format.pipe.mjs +0 -19
  263. package/esm2022/lib/core/pipes/daterange.pipe.mjs +0 -62
  264. package/esm2022/lib/core/pipes/difference.pipe.mjs +0 -15
  265. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +0 -48
  266. package/esm2022/lib/core/pipes/duration.pipe.mjs +0 -19
  267. package/esm2022/lib/core/pipes/filter.pipe.mjs +0 -25
  268. package/esm2022/lib/core/pipes/form.pipe.mjs +0 -25
  269. package/esm2022/lib/core/pipes/join.pipe.mjs +0 -18
  270. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +0 -26
  271. package/esm2022/lib/core/pipes/role.pipe.mjs +0 -25
  272. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +0 -18
  273. package/esm2022/lib/core/pipes/sort.pipe.mjs +0 -42
  274. package/esm2022/lib/core/pipes/state.pipe.mjs +0 -25
  275. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +0 -51
  276. package/esm2022/lib/core/pipes/to-now.pipe.mjs +0 -66
  277. package/esm2022/lib/core/pipes/translate.pipe.mjs +0 -58
  278. package/esm2022/lib/core/pipes/type-value.pipe.mjs +0 -42
  279. package/esm2022/lib/core/pipes/user-name.pipe.mjs +0 -21
  280. package/esm2022/lib/core/popup/popup-ref.mjs +0 -20
  281. package/esm2022/lib/core/popup/popup.component.mjs +0 -36
  282. package/esm2022/lib/core/popup/popup.service.mjs +0 -158
  283. package/esm2022/lib/core/popup/tooltip.directive.mjs +0 -81
  284. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +0 -29
  285. package/esm2022/lib/core/prompt/mask/mask.component.mjs +0 -21
  286. package/esm2022/lib/core/prompt.service.mjs +0 -88
  287. package/esm2022/lib/core/router.mjs +0 -37
  288. package/esm2022/lib/core/save-changes.dialog.mjs +0 -18
  289. package/esm2022/lib/core/session.service.mjs +0 -291
  290. package/esm2022/lib/core/slots/pane-ref.mjs +0 -152
  291. package/esm2022/lib/core/slots/router.directive.mjs +0 -68
  292. package/esm2022/lib/core/slots/router.service.mjs +0 -40
  293. package/esm2022/lib/core/slots/slots.component.mjs +0 -1193
  294. package/esm2022/lib/core/sticky-toolbar.exp.mjs +0 -33
  295. package/esm2022/lib/core/tagging/documents.component.mjs +0 -25
  296. package/esm2022/lib/core/tagging/edit-input.component.mjs +0 -238
  297. package/esm2022/lib/core/tagging/emoji.component.mjs +0 -35
  298. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +0 -39
  299. package/esm2022/lib/core/tagging/tagging.component-base.mjs +0 -29
  300. package/esm2022/lib/core/tagging/tagging.directive.mjs +0 -136
  301. package/esm2022/lib/core/tagging/tagging.pipe.mjs +0 -72
  302. package/esm2022/lib/core/tagging/users.component.mjs +0 -32
  303. package/esm2022/lib/core/translate.service.mjs +0 -125
  304. package/esm2022/lib/core/translations.mjs +0 -1068
  305. package/esm2022/lib/core/virtual-tabs.component.exp.mjs +0 -84
  306. package/esm2022/lib/core/window-title.service.mjs +0 -65
  307. package/esm2022/lib/cube/accum/accum.component.mjs +0 -262
  308. package/esm2022/lib/cube/chart/chart.component.mjs +0 -345
  309. package/esm2022/lib/cube/cube-info.service.mjs +0 -103
  310. package/esm2022/lib/cube/cube-menu.component.mjs +0 -25
  311. package/esm2022/lib/cube/cube-view.component.mjs +0 -186
  312. package/esm2022/lib/cube/cube.service.mjs +0 -446
  313. package/esm2022/lib/cube/declarations.mjs +0 -2
  314. package/esm2022/lib/cube/explore/document-item.component.mjs +0 -38
  315. package/esm2022/lib/cube/explore/explore-item.component.mjs +0 -27
  316. package/esm2022/lib/cube/explore/explore-items.component.mjs +0 -193
  317. package/esm2022/lib/cube/explore/explore.pane.component.mjs +0 -78
  318. package/esm2022/lib/cube/explore/item-resolver.service.mjs +0 -30
  319. package/esm2022/lib/cube/explore/item.pane.component.mjs +0 -21
  320. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +0 -75
  321. package/esm2022/lib/cube/filter/filter.component.mjs +0 -137
  322. package/esm2022/lib/cube/grid/grid.component.mjs +0 -210
  323. package/esm2022/lib/cube/matrix/matrix.base.mjs +0 -124
  324. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +0 -67
  325. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +0 -78
  326. package/esm2022/lib/cube/matrix/popup.component.mjs +0 -70
  327. package/esm2022/lib/cube/matrix/table.component.mjs +0 -512
  328. package/esm2022/lib/cube/parallel/item.mjs +0 -40
  329. package/esm2022/lib/cube/parallel/parallel.component.mjs +0 -162
  330. package/esm2022/lib/cube/pivot/pivot.component.mjs +0 -564
  331. package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +0 -382
  332. package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +0 -19
  333. package/esm2022/lib/cube/sum/sum.component.mjs +0 -403
  334. package/esm2022/lib/cube/view-base.mjs +0 -74
  335. package/esm2022/lib/cube/view.mobile.component.mjs +0 -121
  336. package/esm2022/lib/cube/view.pane.component.mjs +0 -99
  337. package/esm2022/lib/dashboard/actions/actions.widget.mjs +0 -127
  338. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +0 -151
  339. package/esm2022/lib/dashboard/cube/compare.widget.mjs +0 -216
  340. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +0 -117
  341. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +0 -50
  342. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +0 -146
  343. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +0 -85
  344. package/esm2022/lib/dashboard/cube/documents.widget.mjs +0 -66
  345. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +0 -61
  346. package/esm2022/lib/dashboard/dashboard.component.mjs +0 -67
  347. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +0 -18
  348. package/esm2022/lib/dashboard/recents/recents.widget.mjs +0 -98
  349. package/esm2022/lib/dashboard/score/activity.widget.mjs +0 -177
  350. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +0 -215
  351. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +0 -251
  352. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +0 -59
  353. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +0 -222
  354. package/esm2022/lib/dashboard/widget-item.component.mjs +0 -91
  355. package/esm2022/lib/dashboard/widget-ref.mjs +0 -18
  356. package/esm2022/lib/designer.module.mjs +0 -106
  357. package/esm2022/lib/desktop.module.mjs +0 -140
  358. package/esm2022/lib/home/about/about.dialog.mjs +0 -25
  359. package/esm2022/lib/home/home-base.component.mjs +0 -92
  360. package/esm2022/lib/home/home.desktop.component.mjs +0 -286
  361. package/esm2022/lib/home/home.mobile.component.mjs +0 -131
  362. package/esm2022/lib/home/notifications/notifications.component.mjs +0 -64
  363. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +0 -37
  364. package/esm2022/lib/home/sign/sign.component.mjs +0 -56
  365. package/esm2022/lib/impersonate/impersonate.component.mjs +0 -77
  366. package/esm2022/lib/mobile.module.mjs +0 -63
  367. package/esm2022/lib/modules/chart.module.mjs +0 -44
  368. package/esm2022/lib/modules/circular-gauge.module.mjs +0 -20
  369. package/esm2022/lib/modules/date.adapter.mjs +0 -23
  370. package/esm2022/lib/modules/datepicker.intl.mjs +0 -41
  371. package/esm2022/lib/modules/dayjs.module.mjs +0 -43
  372. package/esm2022/lib/modules/diagram.module.mjs +0 -43
  373. package/esm2022/lib/modules/gantt.module.mjs +0 -22
  374. package/esm2022/lib/modules/grid.module.mjs +0 -26
  375. package/esm2022/lib/modules/linear-gauge.module.mjs +0 -17
  376. package/esm2022/lib/modules/material.module.mjs +0 -182
  377. package/esm2022/lib/modules/paginator.intl.mjs +0 -21
  378. package/esm2022/lib/modules/pivot.module.mjs +0 -24
  379. package/esm2022/lib/modules/schedule.module.mjs +0 -24
  380. package/esm2022/lib/modules/spreadsheet.module.mjs +0 -28
  381. package/esm2022/lib/modules/stepper.intl.mjs +0 -17
  382. package/esm2022/lib/modules/texteditor.module.mjs +0 -26
  383. package/esm2022/lib/notifications/filter.component.mjs +0 -24
  384. package/esm2022/lib/notifications/notifications-table.component.mjs +0 -105
  385. package/esm2022/lib/notifications/notifications.component-base.mjs +0 -50
  386. package/esm2022/lib/notifications/notifications.mobile.component.mjs +0 -20
  387. package/esm2022/lib/notifications/notifications.pane.component.mjs +0 -21
  388. package/esm2022/lib/notifications/notifications.service.mjs +0 -78
  389. package/esm2022/lib/notifications/types/commented.notification.mjs +0 -60
  390. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +0 -58
  391. package/esm2022/lib/notifications/types/escalated.notification.mjs +0 -33
  392. package/esm2022/lib/notifications/types/invite.notification.mjs +0 -45
  393. package/esm2022/lib/notifications/types/liked.notification.mjs +0 -58
  394. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +0 -31
  395. package/esm2022/lib/notifications/types/notification-base.mjs +0 -40
  396. package/esm2022/lib/notifications/types/nudge.notification.mjs +0 -31
  397. package/esm2022/lib/notifications/types/state-changed.notification.mjs +0 -30
  398. package/esm2022/lib/notifications/types/tagged.notification.mjs +0 -43
  399. package/esm2022/lib/notifications/types/text.notification.mjs +0 -23
  400. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +0 -36
  401. package/esm2022/lib/options/options.component.mjs +0 -308
  402. package/esm2022/lib/options/options.desktop.component.mjs +0 -26
  403. package/esm2022/lib/options/options.mobile.component.mjs +0 -23
  404. package/esm2022/lib/reports/arguments-component.mjs +0 -81
  405. package/esm2022/lib/reports/cube/documents.component.mjs +0 -38
  406. package/esm2022/lib/reports/cube/grid-documents.component.mjs +0 -72
  407. package/esm2022/lib/reports/cube/performance-hilo.component.mjs +0 -260
  408. package/esm2022/lib/reports/cube/performance-wind.component.mjs +0 -269
  409. package/esm2022/lib/reports/cube/table-documents.component.mjs +0 -57
  410. package/esm2022/lib/reports/cube/usage-args.component.mjs +0 -62
  411. package/esm2022/lib/reports/cube/usage-base.mjs +0 -79
  412. package/esm2022/lib/reports/cube/usage-chart.component.mjs +0 -354
  413. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +0 -257
  414. package/esm2022/lib/reports/cube/usage.component.mjs +0 -40
  415. package/esm2022/lib/reports/report-ref.mjs +0 -38
  416. package/esm2022/lib/reports/report-viewer.component.mjs +0 -156
  417. package/esm2022/lib/reports/report.mobile.component.mjs +0 -127
  418. package/esm2022/lib/reports/report.pane.component.mjs +0 -109
  419. package/esm2022/lib/reports/reports-menu.component.mjs +0 -24
  420. package/esm2022/lib/reports/substitution/substitution.component.mjs +0 -39
  421. package/esm2022/lib/reports/table/table-view.component.mjs +0 -40
  422. package/esm2022/lib/reports/tasks/tasks.component.mjs +0 -95
  423. package/esm2022/lib/routes.desktop.mjs +0 -209
  424. package/esm2022/lib/routes.mobile.mjs +0 -84
  425. package/esm2022/lib/scheduler/schedule.component.mjs +0 -164
  426. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +0 -37
  427. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +0 -50
  428. package/esm2022/lib/search/cube.component.mjs +0 -47
  429. package/esm2022/lib/search/declarations.mjs +0 -7
  430. package/esm2022/lib/search/document.component.mjs +0 -41
  431. package/esm2022/lib/search/guide.component.mjs +0 -28
  432. package/esm2022/lib/search/path.component.mjs +0 -44
  433. package/esm2022/lib/search/search.service.mjs +0 -155
  434. package/esm2022/lib/shared.module.mjs +0 -622
  435. package/esm2022/lib/system.module.mjs +0 -562
  436. package/esm2022/lib/views/cube/chart.component.mjs +0 -74
  437. package/esm2022/lib/views/cube/cube-base.mjs +0 -101
  438. package/esm2022/lib/views/cube/explore.component.mjs +0 -85
  439. package/esm2022/lib/views/cube/matrix.component.mjs +0 -101
  440. package/esm2022/lib/views/cube/parallel.component.mjs +0 -53
  441. package/esm2022/lib/views/cube/pivot.component.mjs +0 -50
  442. package/esm2022/lib/views/cube/sum.component.mjs +0 -66
  443. package/esm2022/lib/views/cube/view.component.mjs +0 -101
  444. package/esm2022/lib/views/document-view-ref.mjs +0 -27
  445. package/esm2022/lib/views/timeline/timeline.component.mjs +0 -329
  446. package/esm2022/lib/views/view-item.component.mjs +0 -68
  447. package/esm2022/lib/views/views.component.mjs +0 -32
  448. package/esm2022/lib/views/views.mobile.component.mjs +0 -21
  449. package/esm2022/lib/views/views.pane.component.mjs +0 -29
  450. package/esm2022/public-api.mjs +0 -182
@@ -1,316 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { Subject, firstValueFrom } from 'rxjs';
3
- import { takeUntil, filter } from 'rxjs/operators';
4
- import { ActionDialog } from '../../compose/action/action.dialog';
5
- import dayjs from 'dayjs';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../core/prompt.service";
8
- import * as i2 from "../../chat/chat-info";
9
- import * as i3 from "../../core/account.service";
10
- import * as i4 from "../../core/mailbox.service";
11
- import * as i5 from "../../core/session.service";
12
- import * as i6 from "@angular/cdk/bidi";
13
- import * as i7 from "@angular/material/dialog";
14
- import * as i8 from "../../core/translate.service";
15
- import * as i9 from "../../core/hub.service";
16
- import * as i10 from "@angular/material/chips";
17
- import * as i11 from "@angular/material/button";
18
- import * as i12 from "@angular/material/icon";
19
- import * as i13 from "../../compose/attachments/attachments.component";
20
- import * as i14 from "../../compose/events/events.component";
21
- import * as i15 from "../../core/popup/tooltip.directive";
22
- import * as i16 from "../../core/pipes/calendar.pipe";
23
- import * as i17 from "../../core/pipes/time-ago.pipe";
24
- import * as i18 from "../../core/pipes/translate.pipe";
25
- import * as i19 from "../../core/pipes/sanitize-html.pipe";
26
- import * as i20 from "../../core/pipes/state.pipe";
27
- const REFRESH_TIME = 30000, TYPING_HINT_TIME = 1500;
28
- export class ExpandedItemComponent {
29
- constructor(_sb, _chat, _accounts, _mailbox, _session, _dir, _dialog, _translate, _messaging) {
30
- this._sb = _sb;
31
- this._chat = _chat;
32
- this._accounts = _accounts;
33
- this._mailbox = _mailbox;
34
- this._session = _session;
35
- this._dir = _dir;
36
- this._dialog = _dialog;
37
- this._translate = _translate;
38
- this._messaging = _messaging;
39
- this.sent = new EventEmitter();
40
- this._destroy = new Subject();
41
- }
42
- ngOnInit() {
43
- this._messaging.comment$.pipe(takeUntil(this._destroy)).
44
- subscribe(e => {
45
- if (e.id === this.model.id && (e.model.byId || e.model.userId) !== this._session.userId) {
46
- this._comments();
47
- this._accounts.get(e.model.userId).subscribe(u => this._sb.toastString(this._translate.personalize('Commented', u.gender, u.name)));
48
- }
49
- });
50
- this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(e => {
51
- if (e.model.id === this.model.id) {
52
- this._refresh();
53
- (e.userId !== this._session.userId) && this._accounts.get(e.userId).subscribe(u => this._sb.toast('MailVersionUpdate', this.model.number, u.name));
54
- }
55
- });
56
- this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(e => (e.id === this.model.id) &&
57
- this._refresh());
58
- this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter(e => e.id === this.model.documentId)).subscribe(() => {
59
- this.typing = true;
60
- clearTimeout(this._typingTask);
61
- this._typingTask = setTimeout(() => this.typing = false, TYPING_HINT_TIME);
62
- });
63
- this._refresh();
64
- this._refreshTask = setInterval(() => this._refresh(), REFRESH_TIME);
65
- }
66
- async _note() {
67
- const { ownerId, ownerById, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId, draft } = this.model;
68
- let target;
69
- if (action)
70
- target = await this._target(id);
71
- if (substituteId) {
72
- const substituting = await firstValueFrom(this._accounts.get(substituteId));
73
- if (replied) {
74
- const time = this._fromNow(replied), aaction = this._session.profile.actions.find(a => a.name === action), adjective = (aaction.adjective || aaction.title).toLowerCase();
75
- if (target)
76
- this.note = this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, adjective, target, this._formatUserElement(substituting), time);
77
- else
78
- this.note = this._translate.personalize('YouSubstituteActionTaken', substituting.gender, adjective, this._formatUserElement(substituting), time);
79
- }
80
- else if (escalated) {
81
- const escalation = log.find(l => l.type === 'Escalation' && l.recipientId === originId);
82
- this.note = this._translate.personalize('EscalatedFrom', substituting.gender, this._formatUserElement(substituting), this._duration(escalation.duration));
83
- }
84
- else {
85
- const time = this._fromNow(received);
86
- this.note = this._translate.personalize('SubstitutingNote', substituting.gender, this._formatUserElement(substituting), time, note || '');
87
- }
88
- }
89
- else if (replied) {
90
- const time = this._fromNow(replied);
91
- if (byId) {
92
- if (byId === this._session.profile.byId) {
93
- if (target)
94
- this.note = this._translate.get('ActionTakenByYouTo', this._actionName(action, 'you'), target, this._session.profile.name, time);
95
- else
96
- this.note = this._translate.get('ActionTakenByYou', this._actionName(action, 'you'), this._session.profile.name, time);
97
- }
98
- else
99
- this._accounts.get(byId).subscribe(u => {
100
- if (target)
101
- this.note = this._translate.get('YouTakenActionByTo', this._formatUserElement(u), this._actionName(action, u.gender), target, time);
102
- else
103
- this.note = this._translate.get('YouTakenActionBy', this._formatUserElement(u), this._actionName(action, u.gender), time);
104
- });
105
- }
106
- else if (this._session.profile.byId) {
107
- if (target)
108
- this.note = this._translate.personalize('ActionTakenTo', this._session.profile.gender, this._session.profile.name, this._actionName(action, this._session.profile.gender), target, time);
109
- else
110
- this.note = this._translate.personalize('ActionTaken', this._session.profile.gender, this._session.profile.name, this._actionName(action, this._session.profile.gender), time);
111
- }
112
- else {
113
- if (target)
114
- this.note = this._translate.get('YouTakenActionTo', this._actionName(action, 'you'), target, time);
115
- else
116
- this.note = this._translate.get('YouTakenAction', this._actionName(action, 'you'), time);
117
- }
118
- }
119
- else if (note)
120
- this.note = note;
121
- else if (originId) {
122
- const origin = this.model.recipients.find(r => r.id === originId);
123
- const action = this._session.profile.actions.find(a => a.name === origin.action), adjective = action.adjective || action.past || action.title;
124
- if ((origin.byId || origin.userId) === this._session.userId)
125
- this.note = this._translate.get('ActionByYou', adjective);
126
- else if (origin.byId) {
127
- const who = await firstValueFrom(this._accounts.get(origin.userId));
128
- const by = await firstValueFrom(this._accounts.get(origin.byId));
129
- this.note = this._translate.get('ActionByBy', adjective, by.name, who.name);
130
- }
131
- else {
132
- const who = await firstValueFrom(this._accounts.get(origin.userId));
133
- this.note = this._translate.get('ActionBy', adjective, who.name);
134
- }
135
- }
136
- else if (ownerId === this._session.userId && !draft) {
137
- const time = this._fromNow(issued);
138
- if (ownerById) {
139
- if (ownerById === this._session.profile.byId)
140
- this.note = this._translate.personalize('YouSubmittedNoteBy', this._session.profile.byGender, this._session.profile.name, time);
141
- else {
142
- const by = await firstValueFrom(this._accounts.get(ownerById));
143
- if (this._session.isImpersonating)
144
- this.note = this._translate.personalize('SubmittedNoteBy', by.gender, this._formatUserElement(by), this._session.profile.name, time);
145
- else
146
- this.note = this._translate.personalize('SubmittedNoteYouBy', by.gender, this._formatUserElement(by), time);
147
- }
148
- }
149
- else {
150
- if (this._session.isImpersonating)
151
- this.note = this._translate.personalize('SubmittedNote', this._session.profile.gender, this._session.profile.name, time);
152
- else
153
- this.note = this._translate.get('YouSubmittedNote', time);
154
- }
155
- }
156
- }
157
- async _target(id) {
158
- const origin = this.model.recipients.filter(r => r.originId === id);
159
- if (origin.length) {
160
- const users = await firstValueFrom(this._accounts.getAll(origin.map(r => r.userId)));
161
- return this._translate.join(users.map(u => this._formatUserElement(u)));
162
- }
163
- return undefined;
164
- }
165
- _actionName(name, gender) {
166
- const action = this._session.profile.actions.find(a => a.name === name);
167
- if (!action)
168
- return name;
169
- if (gender === 'you') {
170
- const gender = this._session.gender;
171
- return ((gender === 'Male' ? (action.youMale || action.you) :
172
- gender === 'Female' ? (action.youFemale || action.you) :
173
- action.you) || action.past ||
174
- action.title).toLowerCase();
175
- }
176
- return ((gender === 'Male' ? (action.pastMale || action.past) :
177
- gender === 'Female' ? (action.pastFemale || action.past) :
178
- action.past) ||
179
- action.title).toLowerCase();
180
- }
181
- _fromNow(date) {
182
- return dayjs(date).fromNow();
183
- }
184
- _duration(time) {
185
- return dayjs.duration(time, 's').humanize();
186
- }
187
- /** */
188
- async _refresh() {
189
- const { actions } = this.model;
190
- this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : undefined;
191
- const { senderId } = this.model;
192
- // sender
193
- if (senderId && (senderId !== this._session.userId)) {
194
- const who = await firstValueFrom(this._accounts.get(senderId));
195
- this.sender = this._formatUserElement(who);
196
- }
197
- this._comments();
198
- this._note();
199
- this._awaiting();
200
- }
201
- _comments() {
202
- const { viewed, comments } = this.model;
203
- this.newComments = viewed ?
204
- comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length || undefined : undefined;
205
- }
206
- async _awaiting() {
207
- //awaiting
208
- let recipients = this.model.recipients.filter(r => r.pending && !r.estimate).
209
- sort((r0, r1) => r0.received > r1.received ? 1 : -1).
210
- map(r => r.userId);
211
- recipients = recipients.filter((r, i) => recipients.indexOf(r) === i); /* unique */
212
- if (recipients.length > 0) {
213
- if (recipients.indexOf(this._session.userId) < 0 || recipients.length > 1) {
214
- const users = await firstValueFrom(this._accounts.getAll(recipients.filter(r => r !== this._session.userId)));
215
- const names = users.map(p => this._formatUserElement(p));
216
- recipients.indexOf(this._session.userId) > -1 &&
217
- names.push(this._translate.get('Yourself'));
218
- this.awaiting = this._translate.get('Awaiting', this._translate.join(names));
219
- }
220
- }
221
- }
222
- /**
223
- * Chat
224
- * @param e
225
- */
226
- chat(e) {
227
- const userId = e.target.getAttribute('data-info');
228
- userId &&
229
- this._chat.open(userId);
230
- }
231
- _formatUserElement(person) {
232
- return this._chat.format(person);
233
- }
234
- /**
235
- *
236
- * @param action
237
- */
238
- send(action) {
239
- const { id, number, version, formId } = this.model;
240
- const data = {
241
- action,
242
- item: this.model
243
- };
244
- this._dialog.open(ActionDialog, {
245
- data,
246
- direction: this._dir.value
247
- }).afterClosed().subscribe(args => {
248
- if (args) {
249
- this.mode = 'working';
250
- this._mailbox.send(id, version, formId, null, action, args).subscribe({
251
- next: async (r) => {
252
- const caction = this._session.profile.actions.find(a => a.name === action), adjective = caction.adjective || caction.title;
253
- const target = await this._target(id);
254
- if (target)
255
- this._sb.toast('SentTo', number, adjective.toLowerCase(), target);
256
- else
257
- this._sb.toast('Sent', number, adjective.toLowerCase());
258
- this.sent.emit(this.model);
259
- this.mode = 'done';
260
- }, error: e => {
261
- this._handleResponse(e, this.model, 'SendErr');
262
- this.mode = 'failed';
263
- }
264
- });
265
- }
266
- });
267
- }
268
- /**
269
- *
270
- * @param response
271
- * @param item
272
- * @param message resource
273
- */
274
- _handleResponse(response, item, message) {
275
- if (response.constructor.name === 'PositionError')
276
- switch (response.code) {
277
- case 1:
278
- this._sb.error('UserDeniedGeoErr');
279
- break;
280
- default:
281
- this._sb.error('GeoErr');
282
- }
283
- else
284
- switch (response.status) {
285
- case 409:
286
- {
287
- this._sb.error('VersionErr', item.number);
288
- const obj = response.error /* serialized model */;
289
- Object.assign(item, obj);
290
- break;
291
- }
292
- case 406:
293
- this._sb.errorString(response.error);
294
- break;
295
- default:
296
- this._sb.error(message);
297
- }
298
- }
299
- ngOnDestroy() {
300
- clearInterval(this._refreshTask);
301
- this._destroy.next();
302
- this._destroy.complete();
303
- this._typingTask && clearTimeout(this._typingTask);
304
- }
305
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", 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 }); }
306
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "@if (model.summary) {\r\n <div class=\"summary\" [innerHTML]=\"model.summary\">\r\n </div>\r\n}\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 @for (a of actions; track a) {\r\n @if (a.icon) {\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n }\r\n }\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 @if (typing) {\r\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\r\n }\r\n @if (model.comments.length) {\r\n <div class=\"mat-small\">\r\n @if (!newComments) {\r\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n } @else {\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (model.tags) {\r\n <mat-chip-set>\r\n @for (tag of model.tags; track tag) {\r\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;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:fit-content}\n"], dependencies: [{ kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i14.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i16.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i17.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }, { kind: "pipe", type: i19.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i20.StatePipe, name: "state" }] }); }
307
- }
308
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ExpandedItemComponent, decorators: [{
309
- type: Component,
310
- args: [{ selector: 'bizdoc-expanded-item', template: "@if (model.summary) {\r\n <div class=\"summary\" [innerHTML]=\"model.summary\">\r\n </div>\r\n}\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 @for (a of actions; track a) {\r\n @if (a.icon) {\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n }\r\n }\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 @if (typing) {\r\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\r\n }\r\n @if (model.comments.length) {\r\n <div class=\"mat-small\">\r\n @if (!newComments) {\r\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n } @else {\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (model.tags) {\r\n <mat-chip-set>\r\n @for (tag of model.tags; track tag) {\r\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;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:fit-content}\n"] }]
311
- }], 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: [{
312
- type: Input
313
- }], sent: [{
314
- type: Output
315
- }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2V4cGFuZGVkLWl0ZW0vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2V4cGFuZGVkLWl0ZW0vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUW5ELE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0sb0NBQW9DLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPcEQsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUFvQixHQUFrQixFQUM1QixLQUFlLEVBQ2YsU0FBeUIsRUFDekIsUUFBd0IsRUFDeEIsUUFBd0IsRUFDeEIsSUFBb0IsRUFDcEIsT0FBa0IsRUFDbEIsVUFBNEIsRUFDNUIsVUFBc0I7UUFSWixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFuQmIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBVWpELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBVWhELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4RixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ08sS0FBSyxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVJLElBQUksTUFBMEIsQ0FBQztRQUMvQixJQUFJLE1BQU07WUFDUixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM1RSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUUsRUFDckUsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pFLElBQUksTUFBTTtvQkFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUNsRyxNQUFNLEVBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDOztvQkFFL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckosQ0FBQztpQkFDSSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFXLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQztZQUM5SixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUM3RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQ3JDLElBQUksRUFDSixJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7YUFDSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxNQUFNO3dCQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFPLEVBQUUsS0FBSyxDQUFDLEVBQ3BGLE1BQU0sRUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7O3dCQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTyxFQUFFLEtBQUssQ0FBQyxFQUN2RixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7O29CQUVDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDckMsSUFBSSxNQUFNOzRCQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUM5RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzs0QkFFckQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUNJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksTUFBTTtvQkFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQ25GLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOztvQkFFekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFDN0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckUsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksTUFBTTtvQkFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzs7b0JBRXBHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUYsQ0FBQztRQUNILENBQUM7YUFDSSxJQUFJLElBQUk7WUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNkLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUUsQ0FBQztZQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFFLEVBQy9FLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDdkQsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQzthQUNJLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUk7b0JBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDN0gsQ0FBQztvQkFDSixNQUFNLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZTt3QkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUNsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLEVBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFDMUIsSUFBSSxDQUFDLENBQUM7O3dCQUVSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUMzQixJQUFJLENBQUMsQ0FBQztnQkFDWixDQUFDO1lBQ0gsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlO29CQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDOztvQkFFekgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDTyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFZLEVBQUUsTUFBa0M7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QixJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQyxPQUFPLENBQ0wsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJO2dCQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNPLFFBQVEsQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBWTtRQUM1QixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNO0lBQ0UsS0FBSyxDQUFDLFFBQVE7UUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvSCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQyxTQUFTO1FBQ1QsSUFBSSxRQUFRLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNPLFNBQVM7UUFDZixNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN6QixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzSCxDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVM7UUFDckIsVUFBVTtRQUNWLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQzFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUNuRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlHLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7U0FHSztJQUNMLElBQUksQ0FBQyxDQUFhO1FBQ2hCLE1BQU0sTUFBTSxHQUFJLENBQUMsQ0FBQyxNQUFzQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRSxNQUFNO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNPLGtCQUFrQixDQUFDLE1BQWdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNEOzs7T0FHRztJQUNILElBQUksQ0FBQyxNQUFjO1FBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFxQjtZQUM3QixNQUFNO1lBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBSTtZQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDM0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDcEUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRTt3QkFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUUsRUFDekUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLE1BQU07NEJBQ1IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7OzRCQUVsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO29CQUNyQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO29CQUN2QixDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FBQyxRQUFpQyxFQUFFLElBQWlCLEVBQUUsT0FBZTtRQUMzRixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGVBQWU7WUFDL0MsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQztvQkFDSixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7O1lBQ0UsUUFBUSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLEtBQUssR0FBRztvQkFDTixDQUFDO3dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0ExVFUscUJBQXFCO2tHQUFyQixxQkFBcUIsbUhDeEJsQyxrNURBbURBOzsyRkQzQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjs2U0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEhlYWRlck1vZGVsLCBBY3Rpb24sIFVzZXJJbmZvLCBHZW5kZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRpYWxvZywgQWN0aW9uRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYWN0aW9uL2FjdGlvbi5kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuXHJcbmNvbnN0IFJFRlJFU0hfVElNRSA9IDMwMDAwLCBUWVBJTkdfSElOVF9USU1FID0gMTUwMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWV4cGFuZGVkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBhY3Rpb25zPzogQWN0aW9uW107XHJcbiAgbmV3Q29tbWVudHM/OiBudW1iZXI7XHJcbiAgdHlwaW5nPzogYm9vbGVhbjtcclxuICBub3RlOiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nO1xyXG4gIGF3YWl0aW5nPzogc3RyaW5nO1xyXG4gIG1vZGU6ICd3b3JraW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgbnVsbDtcclxuICBwcml2YXRlIF90eXBpbmdUYXNrOiBOb2RlSlMuVGltZW91dDtcclxuICBwcml2YXRlIF9yZWZyZXNoVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQgJiYgKGUubW9kZWwuYnlJZCB8fCBlLm1vZGVsLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9jb21tZW50cygpO1xyXG4gICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KGUubW9kZWwudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi50b2FzdFN0cmluZyh0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0NvbW1lbnRlZCcsIHUuZ2VuZGVyLCB1Lm5hbWUpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGlmIChlLm1vZGVsLmlkID09PSB0aGlzLm1vZGVsLmlkKSB7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xyXG4gICAgICAgIChlLnVzZXJJZCAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpICYmIHRoaXMuX2FjY291bnRzLmdldChlLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdNYWlsVmVyc2lvblVwZGF0ZScsIHRoaXMubW9kZWwubnVtYmVyLCB1Lm5hbWUpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+XHJcbiAgICAgIChlLmlkID09PSB0aGlzLm1vZGVsLmlkKSAmJlxyXG4gICAgICB0aGlzLl9yZWZyZXNoKCkpO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLmNvbW1lbnRUeXBpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBmaWx0ZXIoZSA9PiBlLmlkID09PSB0aGlzLm1vZGVsLmRvY3VtZW50SWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnR5cGluZyA9IHRydWU7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGFzayA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy50eXBpbmcgPSBmYWxzZSwgVFlQSU5HX0hJTlRfVElNRSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIHRoaXMuX3JlZnJlc2hUYXNrID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVmcmVzaCgpLCBSRUZSRVNIX1RJTUUpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKCkge1xyXG4gICAgY29uc3QgeyBvd25lcklkLCBvd25lckJ5SWQsIGlzc3VlZCwgc3Vic3RpdHV0ZUlkLCByZWNlaXZlZCwgcmVwbGllZCwgbG9nLCBpZCwgbm90ZSwgYnlJZCwgYWN0aW9uLCBlc2NhbGF0ZWQsIG9yaWdpbklkLCBkcmFmdCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGxldCB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChhY3Rpb24pIFxyXG4gICAgICB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgaWYgKHN1YnN0aXR1dGVJZCkge1xyXG4gICAgICBjb25zdCBzdWJzdGl0dXRpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQoc3Vic3RpdHV0ZUlkKSk7XHJcbiAgICAgIGlmIChyZXBsaWVkKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVwbGllZCksXHJcbiAgICAgICAgICBhYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSEsXHJcbiAgICAgICAgICBhZGplY3RpdmUgPSAoYWFjdGlvbi5hZGplY3RpdmUgfHwgYWFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW5UbycsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSxcclxuICAgICAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGVBY3Rpb25UYWtlbicsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSwgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXNjYWxhdGVkKSB7XHJcbiAgICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnRXNjYWxhdGVkRnJvbScsIHN1YnN0aXR1dGluZy5nZW5kZXIsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRoaXMuX2R1cmF0aW9uKGVzY2FsYXRpb24hLmR1cmF0aW9uISkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2VpdmVkKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ05vdGUnLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLFxyXG4gICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSxcclxuICAgICAgICAgIHRpbWUsXHJcbiAgICAgICAgICBub3RlIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVwbGllZCkge1xyXG4gICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZXBsaWVkKTtcclxuICAgICAgaWYgKGJ5SWQpIHtcclxuICAgICAgICBpZiAoYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpIHtcclxuICAgICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3VUbycsIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uISwgJ3lvdScpLFxyXG4gICAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3UnLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsICd5b3UnKSxcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9hY2NvdW50cy5nZXQoYnlJZCkuc3Vic2NyaWJlKHUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCB1LmdlbmRlciksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvbkJ5JywgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsIHUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuVG8nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uISwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciksIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvblRvJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCAneW91JyksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsICd5b3UnKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vdGUpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5vdGU7XHJcbiAgICBlbHNlIGlmIChvcmlnaW5JZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IG9yaWdpbklkKSE7XHJcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG9yaWdpbi5hY3Rpb24pISxcclxuICAgICAgICBhZGplY3RpdmUgPSBhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZTtcclxuICAgICAgaWYgKChvcmlnaW4uYnlJZCB8fCBvcmlnaW4udXNlcklkKSA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlZb3UnLCBhZGplY3RpdmUpO1xyXG4gICAgICBlbHNlIGlmIChvcmlnaW4uYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLmJ5SWQpKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oIHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnknLCBhZGplY3RpdmUsIHdoby5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgJiYgIWRyYWZ0KSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KGlzc3VlZCEpO1xyXG4gICAgICBpZiAob3duZXJCeUlkKSB7XHJcbiAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3duZXJCeUlkKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZUJ5JywgYnkuZ2VuZGVyLFxyXG4gICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KGJ5KSxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgICB0aW1lKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlWW91QnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3RhcmdldChpZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5vcmlnaW5JZCA9PT0gaWQpO1xyXG4gICAgaWYgKG9yaWdpbi5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwob3JpZ2luLm1hcChyID0+IHIudXNlcklkKSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmpvaW4oXHJcbiAgICAgICAgdXNlcnMubWFwKHUgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWN0aW9uTmFtZShuYW1lOiBzdHJpbmcsIGdlbmRlcjogR2VuZGVyIHwgdW5kZWZpbmVkIHwgJ3lvdScpIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgaWYgKCFhY3Rpb24pIHJldHVybiBuYW1lO1xyXG4gICAgaWYgKGdlbmRlciA9PT0gJ3lvdScpIHtcclxuICAgICAgY29uc3QgZ2VuZGVyID0gdGhpcy5fc2Vzc2lvbi5nZW5kZXI7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi55b3VNYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnlvdUZlbWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICAgIGFjdGlvbi55b3UpIHx8IGFjdGlvbi5wYXN0IHx8XHJcbiAgICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICgoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnBhc3RGZW1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgICBhY3Rpb24ucGFzdCkgfHxcclxuICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9mcm9tTm93KGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXlqcyhkYXRlKS5mcm9tTm93KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kdXJhdGlvbih0aW1lOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBkYXlqcy5kdXJhdGlvbih0aW1lLCAncycpLmh1bWFuaXplKCk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3JlZnJlc2goKSB7XHJcbiAgICBjb25zdCB7IGFjdGlvbnMgfSA9IHRoaXMubW9kZWw7XHJcbiAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zICYmIGFjdGlvbnMubGVuZ3RoID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmlsdGVyKGEgPT4gYWN0aW9ucy5pbmRleE9mKGEubmFtZSkgPiAtMSkgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB7IHNlbmRlcklkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgLy8gc2VuZGVyXHJcbiAgICBpZiAoc2VuZGVySWQgJiYgKHNlbmRlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNlbmRlcklkKSk7XHJcbiAgICAgIHRoaXMuc2VuZGVyID0gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQod2hvKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbW1lbnRzKCk7XHJcbiAgICB0aGlzLl9ub3RlKCk7XHJcbiAgICB0aGlzLl9hd2FpdGluZygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21tZW50cygpIHtcclxuICAgIGNvbnN0IHsgdmlld2VkLCBjb21tZW50cyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMubmV3Q29tbWVudHMgPSB2aWV3ZWQgP1xyXG4gICAgICBjb21tZW50cy5maWx0ZXIoYyA9PiBjLnRpbWUgPiB2aWV3ZWQgJiYgKGMuYnlJZCB8fCBjLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKS5sZW5ndGggfHwgdW5kZWZpbmVkIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfYXdhaXRpbmcoKSB7XHJcbiAgICAvL2F3YWl0aW5nXHJcbiAgICBsZXQgcmVjaXBpZW50cyA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maWx0ZXIociA9PiByLnBlbmRpbmcgJiYgIXIuZXN0aW1hdGUpLlxyXG4gICAgICBzb3J0KChyMCwgcjEpID0+IHIwLnJlY2VpdmVkID4gcjEucmVjZWl2ZWQgPyAxIDogLTEpLlxyXG4gICAgICBtYXAociA9PiByLnVzZXJJZCk7XHJcbiAgICByZWNpcGllbnRzID0gcmVjaXBpZW50cy5maWx0ZXIoKHIsIGkpID0+IHJlY2lwaWVudHMuaW5kZXhPZihyKSA9PT0gaSk7IC8qIHVuaXF1ZSAqL1xyXG4gICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAocmVjaXBpZW50cy5pbmRleE9mKHRoaXMuX3Nlc3Npb24udXNlcklkKSA8IDAgfHwgcmVjaXBpZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwocmVjaXBpZW50cy5maWx0ZXIociA9PiByICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpKTtcclxuICAgICAgICBjb25zdCBuYW1lcyA9IHVzZXJzLm1hcChwID0+IHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHApKTtcclxuICAgICAgICByZWNpcGllbnRzLmluZGV4T2YodGhpcy5fc2Vzc2lvbi51c2VySWQpID4gLTEgJiZcclxuICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5fdHJhbnNsYXRlLmdldCgnWW91cnNlbGYnKSk7XHJcbiAgICAgICAgdGhpcy5hd2FpdGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0F3YWl0aW5nJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4obmFtZXMpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAgKiBDaGF0XHJcbiAgICAgKiBAcGFyYW0gZVxyXG4gICAgICovXHJcbiAgY2hhdChlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB1c2VySWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnZGF0YS1pbmZvJyk7XHJcbiAgICB1c2VySWQgJiZcclxuICAgICAgdGhpcy5fY2hhdC5vcGVuKHVzZXJJZCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zvcm1hdFVzZXJFbGVtZW50KHBlcnNvbjogVXNlckluZm8pIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGF0LmZvcm1hdChwZXJzb24pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYWN0aW9uXHJcbiAgICovXHJcbiAgc2VuZChhY3Rpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgeyBpZCwgbnVtYmVyLCB2ZXJzaW9uLCBmb3JtSWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBjb25zdCBkYXRhOiBBY3Rpb25EaWFsb2dEYXRhID0ge1xyXG4gICAgICBhY3Rpb24sXHJcbiAgICAgIGl0ZW06IHRoaXMubW9kZWxcclxuICAgIH07XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihBY3Rpb25EaWFsb2csIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWVcclxuICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFyZ3MgPT4ge1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIHRoaXMubW9kZSA9ICd3b3JraW5nJztcclxuICAgICAgICB0aGlzLl9tYWlsYm94LnNlbmQoaWQsIHZlcnNpb24sIGZvcm1JZCwgbnVsbCwgYWN0aW9uLCBhcmdzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogYXN5bmMgciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBhY3Rpb24pISxcclxuICAgICAgICAgICAgICBhZGplY3RpdmUgPSBjYWN0aW9uLmFkamVjdGl2ZSB8fCBjYWN0aW9uLnRpdGxlO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW50LmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdkb25lJztcclxuICAgICAgICAgIH0sIGVycm9yOiBlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVzcG9uc2UoZSwgdGhpcy5tb2RlbCwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHJlc291cmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBpdGVtOiBIZWFkZXJNb2RlbCwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwOTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIGl0ZW0ubnVtYmVyKTtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgb2JqKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVmcmVzaFRhc2spO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl90eXBpbmdUYXNrICYmIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlbC5zdW1tYXJ5KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN1bW1hcnlcIiBbaW5uZXJIVE1MXT1cIm1vZGVsLnN1bW1hcnlcIj5cclxuICA8L2Rpdj5cclxufVxyXG48ZGl2PlxyXG4gIDxiaXpkb2MtYXR0YWNobWVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtYXR0YWNobWVudHM+XHJcbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIEBmb3IgKGEgb2YgYWN0aW9uczsgdHJhY2sgYSkge1xyXG4gICAgQGlmIChhLmljb24pIHtcclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbmQoYS5uYW1lKVwiIFtiaXpkb2NUb29sdGlwXT1cImEudGl0bGVcIiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICA8bWF0LWljb24+e3thLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsIHJvd1wiPlxyXG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XHJcbiAgICAmbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwidGltZVwiIFtiaXpkb2NUb29sdGlwXT1cIm1vZGVsLnJlY2VpdmVkIHwgYW1DYWxlbmRhclwiPnt7bW9kZWwucmVjZWl2ZWQgfCBhbVRpbWVBZ299fTwvc3Bhbj5cclxuICAgICZuYnNwO1xyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJzZW5kZXIgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImF3YWl0aW5nIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgQGlmICh0eXBpbmcpIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtc21hbGxcIj57eydTb21lb25lVHlwaW5nJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBpZiAobW9kZWwuY29tbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc21hbGxcIj5cclxuICAgICAgICBAaWYgKCFuZXdDb21tZW50cykge1xyXG4gICAgICAgICAgPHNwYW4+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidOZXdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCA6IG5ld0NvbW1lbnRzIHwgc2FuaXRpemVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChtb2RlbC50YWdzKSB7XHJcbiAgICA8bWF0LWNoaXAtc2V0PlxyXG4gICAgICBAZm9yICh0YWcgb2YgbW9kZWwudGFnczsgdHJhY2sgdGFnKSB7XHJcbiAgICAgICAgPG1hdC1jaGlwIFtkaXNhYmxlZF09XCJ0cnVlXCI+e3t0YWd9fTwvbWF0LWNoaXA+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWNoaXAtc2V0PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,140 +0,0 @@
1
- import { Component, Output, EventEmitter, ViewChild, Input, ElementRef, Inject } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { debounceTime, takeUntil, switchMap, filter } from 'rxjs/operators';
4
- import { cleanup, isObject, isString } from '../../core/functions';
5
- import { AXIS_VALUE_PATTERN } from '../../cube/cube.service';
6
- import { BIZDOC_CONFIG } from '../../core/configuration';
7
- import { MatChipListbox } from '@angular/material/chips';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "../../core/session.service";
11
- import * as i3 from "../../core/mailbox.service";
12
- import * as i4 from "../../core/account.service";
13
- import * as i5 from "@angular/material/chips";
14
- import * as i6 from "@angular/material/autocomplete";
15
- import * as i7 from "@angular/material/core";
16
- import * as i8 from "@angular/material/form-field";
17
- import * as i9 from "@angular/material/select";
18
- import * as i10 from "@angular/material/button";
19
- import * as i11 from "@angular/material/input";
20
- import * as i12 from "@angular/material/icon";
21
- import * as i13 from "../../cube/filter/filter.component";
22
- import * as i14 from "@angular/common";
23
- import * as i15 from "../../core/pipes/translate.pipe";
24
- const FILTER_DEBOUNCE = 250;
25
- /** browse-filter component*/
26
- export class BrowseFilterComponent {
27
- /** browse-filter ctor */
28
- constructor(_fb, _session, _cd, _mailbox, _accounts, _config) {
29
- this._fb = _fb;
30
- this._session = _session;
31
- this._cd = _cd;
32
- this._mailbox = _mailbox;
33
- this._accounts = _accounts;
34
- this._config = _config;
35
- this.pattern = AXIS_VALUE_PATTERN;
36
- this.valuesChange = new EventEmitter();
37
- this.sendername = this._fb.control(null);
38
- this.form = this._fb.group({
39
- contains: this._fb.control(null),
40
- form: this._fb.control(null),
41
- state: this._fb.control(null),
42
- senderId: this._fb.control(null),
43
- tag: this._fb.control(null)
44
- });
45
- this.sources = {};
46
- this._destroy = new Subject();
47
- this.states = _session.profile.states;
48
- this.forms = _session.profile.forms;
49
- this.tags = _session.profile.options.tags;
50
- }
51
- ngOnInit() {
52
- if (this.folderId) {
53
- const folder = this._session.profile.folders.find(f => f.name === this.folderId);
54
- if (folder.filters)
55
- this.filters = folder.filters;
56
- }
57
- else if (this._config.folders && this._config.folders.axes) {
58
- const { axes, cube } = this._config.folders;
59
- this.filters = { axes, cube };
60
- }
61
- this.senders$ = this.sendername.valueChanges.
62
- pipe(takeUntil(this._destroy), debounceTime(250), filter((v) => isString(v)), switchMap((v) => this._mailbox.senders(v)));
63
- this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(FILTER_DEBOUNCE)).
64
- subscribe(v => this.valuesChange.emit(cleanup(v)));
65
- this.form.patchValue(this.values, { emitEvent: false });
66
- if (this.values.senderId)
67
- this._accounts.get(this.values.senderId).
68
- subscribe(u => this.sendername.setValue(u, { emitEvent: false }));
69
- this.chips.value = this.values.tag;
70
- }
71
- ngAfterViewInit() {
72
- this.focus();
73
- }
74
- displayValue(val) {
75
- return isObject(val) ? val.value : null;
76
- }
77
- change(axis, evt) {
78
- this.form.get(axis).setValue(evt.option.value.key);
79
- }
80
- clearSender() {
81
- this.sendername.reset(null);
82
- this.form.controls.senderId.reset(null);
83
- }
84
- axesChange(axes) {
85
- const value = { ...this.form.value, ...axes };
86
- cleanup(value);
87
- this.valuesChange.emit(value);
88
- }
89
- toggleTag(evt) {
90
- this.form.controls.tag.setValue(this.form.controls.tag.value !== evt.value ? evt.value : null);
91
- }
92
- displayFn(item) {
93
- return item ? item.name : undefined;
94
- }
95
- drop(evt) {
96
- evt.item.data;
97
- }
98
- senderSelected(e) {
99
- const info = e.option.value;
100
- this.form.patchValue({ senderId: info ? info.id : null });
101
- }
102
- focus() {
103
- if (this.containsEl)
104
- this.containsEl.nativeElement.focus();
105
- else if (this.senderEl)
106
- this.senderEl.nativeElement.focus();
107
- this._cd.detectChanges();
108
- }
109
- ngOnDestroy() {
110
- this._destroy.next();
111
- this._destroy.complete();
112
- }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", 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 }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", 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: "containsEl", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "senderEl", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column gap\" autocomplete=\"off\">\r\n @if (!exclude || exclude.indexOf('contains') < 0) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput formControlName=\"contains\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n @if (form.value.contains) {\r\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"sendername\" #sender />\r\n <mat-autocomplete #senders [displayWith]=\"displayValue\" (optionSelected)=\"senderSelected($event)\">\r\n @for (u of senders$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (sendername.value) {\r\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (s of states; track s) {\r\n <mat-option [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (f of forms; track f) {\r\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n @for (tag of tags; track tag) {\r\n <mat-chip-option color=\"accent\">\r\n {{tag}}\r\n </mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n @if (filters) {\r\n <bizdoc-cube-filter 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 }\r\n</form>\r\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ 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: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i5.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i6.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: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "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: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i11.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: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
115
- }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrowseFilterComponent, decorators: [{
117
- type: Component,
118
- args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column gap\" autocomplete=\"off\">\r\n @if (!exclude || exclude.indexOf('contains') < 0) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput formControlName=\"contains\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n @if (form.value.contains) {\r\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"sendername\" #sender />\r\n <mat-autocomplete #senders [displayWith]=\"displayValue\" (optionSelected)=\"senderSelected($event)\">\r\n @for (u of senders$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (sendername.value) {\r\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (s of states; track s) {\r\n <mat-option [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (f of forms; track f) {\r\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n @for (tag of tags; track tag) {\r\n <mat-chip-option color=\"accent\">\r\n {{tag}}\r\n </mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n @if (filters) {\r\n <bizdoc-cube-filter 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 }\r\n</form>\r\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"] }]
119
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i0.ChangeDetectorRef }, { type: i3.MailboxService }, { type: i4.AccountService }, { type: undefined, decorators: [{
120
- type: Inject,
121
- args: [BIZDOC_CONFIG]
122
- }] }], propDecorators: { values: [{
123
- type: Input
124
- }], folderId: [{
125
- type: Input
126
- }], exclude: [{
127
- type: Input
128
- }], valuesChange: [{
129
- type: Output
130
- }], chips: [{
131
- type: ViewChild,
132
- args: [MatChipListbox, { static: true }]
133
- }], containsEl: [{
134
- type: ViewChild,
135
- args: ['contains', { static: true, read: ElementRef }]
136
- }], senderEl: [{
137
- type: ViewChild,
138
- args: ['sender', { static: true, read: ElementRef }]
139
- }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9icm93c2UvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixTQUFTLEVBQTRCLEtBQUssRUFBRSxVQUFVLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyTCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUluRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9FLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQU81Qiw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLHFCQUFxQjtJQTJCaEMseUJBQXlCO0lBQ3pCLFlBQW9CLEdBQWdCLEVBQzFCLFFBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFNBQXlCLEVBQ0YsT0FBcUI7UUFMbEMsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixRQUFHLEdB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QUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBeEdVLHFCQUFxQix3S0FpQ3RCLGFBQWE7a0dBakNaLHFCQUFxQixzTkFzQnJCLGNBQWMsa0lBQ29CLFVBQVUsMkdBQ1osVUFBVSwyQ0MvQ3ZELGk2RUE2REE7OzJGRHRDYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0Usc0JBQXNCOzswQkFzQzdCLE1BQU07MkJBQUMsYUFBYTt5Q0EvQmQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNhLFlBQVk7c0JBQTlCLE1BQU07Z0JBaUJzQyxLQUFLO3NCQUFqRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2dCLFVBQVU7c0JBQXBFLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNBLFFBQVE7c0JBQWhFLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbnB1dCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHN3aXRjaE1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdGF0ZSwgRm9ybSwgVXNlckluZm8sIEF4ZXNNYXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGNsZWFudXAsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVhJU19WQUxVRV9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb25maWcsIEJJWkRPQ19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcExpc3Rib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcblxyXG5jb25zdCBGSUxURVJfREVCT1VOQ0UgPSAyNTA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1icm93c2UtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG4vKiogYnJvd3NlLWZpbHRlciBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQnJvd3NlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHBhdHRlcm4gPSBBWElTX1ZBTFVFX1BBVFRFUk47XHJcbiAgQElucHV0KCkgdmFsdWVzOiBCcm93c2VGaWx0ZXJBcmdzO1xyXG4gIEBJbnB1dCgpIGZvbGRlcklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxCcm93c2VGaWx0ZXJBcmdzPigpO1xyXG4gIHJlYWRvbmx5IHNlbmRlcm5hbWUgPSB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IFVzZXJJbmZvIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGNvbnRhaW5zOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxyXG4gICAgZm9ybTogdGhpcy5fZmIuY29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcclxuICAgIHN0YXRlOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxyXG4gICAgc2VuZGVySWQ6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXHJcbiAgICB0YWc6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbClcclxuICB9KTtcclxuICBmb3JtczogRm9ybVtdO1xyXG4gIHN0YXRlczogU3RhdGVbXTtcclxuICBzZW5kZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICB0YWdzPzogc3RyaW5nW107XHJcbiAgZmlsdGVyczoge1xyXG4gICAgY3ViZT86IHN0cmluZztcclxuICAgIGF4ZXM6IHN0cmluZ1tdO1xyXG4gIH07XHJcbiAgQFZpZXdDaGlsZChNYXRDaGlwTGlzdGJveCwgeyBzdGF0aWM6IHRydWUgfSkgY2hpcHM6IE1hdENoaXBMaXN0Ym94O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5zJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGFpbnNFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdzZW5kZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBzZW5kZXJFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICByZWFkb25seSBzb3VyY2VzOiB7IFtkYXRhdHlwZTogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IFtuYW1lOiBzdHJpbmddOiBhbnkgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBicm93c2UtZmlsdGVyIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEJpekRvY0NvbmZpZykge1xyXG4gICAgdGhpcy5zdGF0ZXMgPSBfc2Vzc2lvbi5wcm9maWxlLnN0YXRlcztcclxuICAgIHRoaXMuZm9ybXMgPSBfc2Vzc2lvbi5wcm9maWxlLmZvcm1zO1xyXG4gICAgdGhpcy50YWdzID0gX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLnRhZ3M7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9sZGVySWQpIHtcclxuICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5mb2xkZXJJZCkhO1xyXG4gICAgICBpZiAoZm9sZGVyLmZpbHRlcnMpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gZm9sZGVyLmZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl9jb25maWcuZm9sZGVycyAmJiB0aGlzLl9jb25maWcuZm9sZGVycy5heGVzKSB7XHJcbiAgICAgIGNvbnN0IHsgYXhlcywgY3ViZSB9ID0gdGhpcy5fY29uZmlnLmZvbGRlcnM7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgYXhlcywgY3ViZSB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZW5kZXJzJCA9IHRoaXMuc2VuZGVybmFtZS52YWx1ZUNoYW5nZXMuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsPGFueT4odGhpcy5fZGVzdHJveSksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgICAgZmlsdGVyKCh2OiBzdHJpbmcpID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHY6IHN0cmluZykgPT4gdGhpcy5fbWFpbGJveC5zZW5kZXJzKHYpKSk7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoRklMVEVSX0RFQk9VTkNFKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+XHJcbiAgICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdChjbGVhbnVwKHYpIGFzIEJyb3dzZUZpbHRlckFyZ3MpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzLnNlbmRlcklkKVxyXG4gICAgICB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy52YWx1ZXMuc2VuZGVySWQpLlxyXG4gICAgICAgIHN1YnNjcmliZSh1ID0+IHRoaXMuc2VuZGVybmFtZS5zZXRWYWx1ZSh1LCB7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xyXG4gICAgdGhpcy5jaGlwcy52YWx1ZSA9IHRoaXMudmFsdWVzLnRhZztcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuICBkaXNwbGF5VmFsdWUodmFsOiBhbnkpIHtcclxuICAgIHJldHVybiBpc09iamVjdCh2YWwpID8gdmFsLnZhbHVlIDogbnVsbDtcclxuICB9XHJcbiAgY2hhbmdlKGF4aXM6IHN0cmluZywgZXZ0OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KGF4aXMpIS5zZXRWYWx1ZShldnQub3B0aW9uLnZhbHVlLmtleSk7XHJcbiAgfVxyXG4gIGNsZWFyU2VuZGVyKCkge1xyXG4gICAgdGhpcy5zZW5kZXJuYW1lLnJlc2V0KG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnNlbmRlcklkLnJlc2V0KG51bGwpO1xyXG4gIH1cclxuICBheGVzQ2hhbmdlKGF4ZXM6IEF4ZXNNYXApIHtcclxuICAgIGNvbnN0IHZhbHVlID0geyAuLi50aGlzLmZvcm0udmFsdWUsIC4uLmF4ZXMgfTtcclxuICAgIGNsZWFudXAodmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh2YWx1ZSBhcyBCcm93c2VGaWx0ZXJBcmdzKTtcclxuICB9XHJcbiAgdG9nZ2xlVGFnKGV2dDogTWF0Q2hpcExpc3Rib3hDaGFuZ2UpIHtcclxuICAgIHRoaXMuZm9ybS5jb250cm9scy50YWcuc2V0VmFsdWUodGhpcy5mb3JtLmNvbnRyb2xzLnRhZy52YWx1ZSAhPT0gZXZ0LnZhbHVlID8gZXZ0LnZhbHVlIDogbnVsbCk7XHJcbiAgfVxyXG4gIGRpc3BsYXlGbihpdGVtOiBVc2VySW5mbyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZHJvcChldnQ6IENka0RyYWdEcm9wPHN0cmluZywgYW55Pikge1xyXG4gICAgZXZ0Lml0ZW0uZGF0YTtcclxuICB9XHJcbiAgc2VuZGVyU2VsZWN0ZWQoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgaW5mbyA9IGUub3B0aW9uLnZhbHVlIGFzIFVzZXJJbmZvO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzZW5kZXJJZDogaW5mbyA/IGluZm8uaWQgOiBudWxsIH0pO1xyXG4gIH1cclxuICBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmNvbnRhaW5zRWwpIHRoaXMuY29udGFpbnNFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICBlbHNlIGlmICh0aGlzLnNlbmRlckVsKSB0aGlzLnNlbmRlckVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlRmlsdGVyQXJncyB7XHJcbiAgZm9ybT86IHN0cmluZztcclxuICBmbGFnPzogYm9vbGVhbjtcclxuICBzdGF0ZT86IHN0cmluZztcclxuICBjb250YWlucz86IHN0cmluZztcclxuICBzZW5kZXJJZD86IHN0cmluZztcclxuICB0YWc/OiBzdHJpbmc7XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW4gZ2FwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgQGlmICghZXhjbHVkZSB8fCBleGNsdWRlLmluZGV4T2YoJ2NvbnRhaW5zJykgPCAwKSB7XHJcbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb250YWluc1wiIHBsYWNlaG9sZGVyPVwie3snQ29udGFpbnMnIHwgdHJhbnNsYXRlfX1cIiAjY29udGFpbnM+XHJcbiAgICBAaWYgKGZvcm0udmFsdWUuY29udGFpbnMpIHtcclxuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiXCIgKGNsaWNrKT1cImZvcm0uY29udHJvbHMuY29udGFpbnMuc2V0VmFsdWUobnVsbClcIj5cclxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgfVxyXG4gIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgW21hdEF1dG9jb21wbGV0ZV09XCJzZW5kZXJzXCIgW3BsYWNlaG9sZGVyXT1cIidTZW5kZXInIHwgdHJhbnNsYXRlXCIgW2Zvcm1Db250cm9sXT1cInNlbmRlcm5hbWVcIiAjc2VuZGVyIC8+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjc2VuZGVycyBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVZhbHVlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbmRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgQGZvciAodSBvZiBzZW5kZXJzJCB8IGFzeW5jOyB0cmFjayB1KSB7XHJcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ1XCI+XHJcbiAgICAgICAgPHNwYW4+e3t1Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICBAaWYgKHNlbmRlcm5hbWUudmFsdWUpIHtcclxuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZW5kZXIoKVwiPjxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTdGF0dXMnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uPlxyXG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgQGZvciAocyBvZiBzdGF0ZXM7IHRyYWNrIHMpIHtcclxuICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInMubmFtZVwiPlxyXG4gICAgICAgIHt7cy50aXRsZX19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInRm9ybScgfCB0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uPlxyXG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgQGZvciAoZiBvZiBmb3JtczsgdHJhY2sgZikge1xyXG4gICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZi5uYW1lXCI+e3tmLnRpdGxlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxtYXQtY2hpcC1saXN0Ym94IGlkPVwidGFnc1wiIChjaGFuZ2UpPVwidG9nZ2xlVGFnKCRldmVudClcIj5cclxuICAgIEBmb3IgKHRhZyBvZiB0YWdzOyB0cmFjayB0YWcpIHtcclxuICAgIDxtYXQtY2hpcC1vcHRpb24gY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAge3t0YWd9fVxyXG4gICAgPC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICB9XHJcbiAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gIEBpZiAoZmlsdGVycykge1xyXG4gIDxiaXpkb2MtY3ViZS1maWx0ZXIgY2xhc3M9XCJjdWJlLWZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY3ViZV09XCJmaWx0ZXJzLmN1YmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVdPVwiZmlsdGVycy5heGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtheGVzXT1cInZhbHVlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoYXhlc0NoYW5nZSk9XCJheGVzQ2hhbmdlKCRldmVudClcIj48L2JpemRvYy1jdWJlLWZpbHRlcj5cclxuICB9XHJcbjwvZm9ybT5cclxuIl19