@bizdoc/core 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/assets/themes/brown.min.css +8 -8
  2. package/assets/themes/dark.min.css +87 -1
  3. package/assets/themes/deep-purple-light-blue.min.css +8 -8
  4. package/assets/themes/deep-purple-teal.min.css +8 -8
  5. package/assets/themes/default.min.css +8 -8
  6. package/assets/themes/green.min.css +8 -8
  7. package/assets/themes/indigo.min.css +8 -8
  8. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  9. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  10. package/esm2020/lib/admin/architecture/cube-axes-filter.component.mjs +3 -3
  11. package/esm2020/lib/admin/architecture/designer-element.component.mjs +15 -15
  12. package/esm2020/lib/admin/architecture/designer-privileges.component.mjs +3 -3
  13. package/esm2020/lib/admin/architecture/designer.base.mjs +9 -9
  14. package/esm2020/lib/admin/architecture/designer.component.mjs +3 -3
  15. package/esm2020/lib/admin/architecture/elements/action.component.mjs +3 -3
  16. package/esm2020/lib/admin/architecture/elements/analysis-view.component.mjs +3 -3
  17. package/esm2020/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  18. package/esm2020/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  19. package/esm2020/lib/admin/architecture/elements/attribute.component.mjs +3 -3
  20. package/esm2020/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  21. package/esm2020/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
  22. package/esm2020/lib/admin/architecture/elements/control.component.mjs +3 -3
  23. package/esm2020/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  24. package/esm2020/lib/admin/architecture/elements/cube-view.component.mjs +3 -3
  25. package/esm2020/lib/admin/architecture/elements/cube.component.mjs +3 -3
  26. package/esm2020/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  27. package/esm2020/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  28. package/esm2020/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  29. package/esm2020/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  30. package/esm2020/lib/admin/architecture/elements/folder.component.mjs +3 -3
  31. package/esm2020/lib/admin/architecture/elements/form-invite.dialog.mjs +3 -3
  32. package/esm2020/lib/admin/architecture/elements/form.component.mjs +3 -3
  33. package/esm2020/lib/admin/architecture/elements/guide.component.mjs +3 -3
  34. package/esm2020/lib/admin/architecture/elements/matrix-view.component.mjs +3 -3
  35. package/esm2020/lib/admin/architecture/elements/node.component.mjs +3 -3
  36. package/esm2020/lib/admin/architecture/elements/parallel-view.component.mjs +3 -3
  37. package/esm2020/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  38. package/esm2020/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  39. package/esm2020/lib/admin/architecture/elements/pivot-view.component.mjs +3 -3
  40. package/esm2020/lib/admin/architecture/elements/policy.component.mjs +3 -3
  41. package/esm2020/lib/admin/architecture/elements/report.component.mjs +3 -3
  42. package/esm2020/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  43. package/esm2020/lib/admin/architecture/elements/role.component.mjs +3 -3
  44. package/esm2020/lib/admin/architecture/elements/rule.component.mjs +3 -3
  45. package/esm2020/lib/admin/architecture/elements/state.component.mjs +3 -3
  46. package/esm2020/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  47. package/esm2020/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  48. package/esm2020/lib/admin/architecture/elements/type.component.mjs +3 -3
  49. package/esm2020/lib/admin/architecture/elements/usage-report.component.mjs +3 -3
  50. package/esm2020/lib/admin/architecture/elements/utility.component.mjs +3 -3
  51. package/esm2020/lib/admin/architecture/elements/view.component.mjs +3 -3
  52. package/esm2020/lib/admin/architecture/elements/widget.component.mjs +3 -3
  53. package/esm2020/lib/admin/architecture/icon-picker.component.mjs +3 -3
  54. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  55. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  56. package/esm2020/lib/admin/core/localized-string.component.mjs +3 -3
  57. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  58. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +3 -3
  59. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +4 -4
  60. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  61. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +3 -3
  62. package/esm2020/lib/admin/form/designer/box-designer.component.mjs +6 -6
  63. package/esm2020/lib/admin/form/designer/properties.component.mjs +3 -3
  64. package/esm2020/lib/admin/form/designer/section.component.mjs +3 -3
  65. package/esm2020/lib/admin/form/designer/settings.component.mjs +3 -3
  66. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  67. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  68. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  69. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
  70. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  71. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  72. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  73. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  74. package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
  75. package/esm2020/lib/admin/profiler/outofoffice.component.mjs +3 -3
  76. package/esm2020/lib/admin/profiler/profiler.component.mjs +3 -3
  77. package/esm2020/lib/admin/system.service.mjs +3 -3
  78. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  79. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  80. package/esm2020/lib/app.component.mjs +6 -6
  81. package/esm2020/lib/bizdoc.module.mjs +4 -4
  82. package/esm2020/lib/browse/browse-items.component.mjs +3 -3
  83. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  84. package/esm2020/lib/browse/browse.pane.component.mjs +3 -3
  85. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  86. package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
  87. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  88. package/esm2020/lib/chat/chat-info.mjs +3 -3
  89. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  90. package/esm2020/lib/chat/chat.service.mjs +3 -3
  91. package/esm2020/lib/chat/contacts.component.mjs +7 -7
  92. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  93. package/esm2020/lib/chat/conversation.component.mjs +3 -3
  94. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  95. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  96. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  97. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  98. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  99. package/esm2020/lib/compose/action/moveto-action.component.mjs +3 -3
  100. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  101. package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
  102. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  103. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  104. package/esm2020/lib/compose/box/box.component.mjs +3 -3
  105. package/esm2020/lib/compose/box/control.component.mjs +3 -3
  106. package/esm2020/lib/compose/box/row.component.mjs +3 -3
  107. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  108. package/esm2020/lib/compose/comments/comment.component.mjs +3 -3
  109. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  110. package/esm2020/lib/compose/comments/comments.pane.component.mjs +3 -3
  111. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  112. package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
  113. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  114. package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
  115. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  116. package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
  117. package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
  118. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  119. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  120. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  121. package/esm2020/lib/compose/document.component.mjs +3 -3
  122. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  123. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  124. package/esm2020/lib/compose/events/events.component.mjs +3 -3
  125. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  126. package/esm2020/lib/compose/form.component.mjs +3 -3
  127. package/esm2020/lib/compose/new-menu.component.mjs +5 -5
  128. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  129. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  130. package/esm2020/lib/compose/state.component.mjs +3 -3
  131. package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
  132. package/esm2020/lib/compose/trace/flow.component.mjs +3 -3
  133. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  134. package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
  135. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  136. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  137. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  138. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  139. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
  140. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  141. package/esm2020/lib/core/account.service.mjs +3 -3
  142. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  143. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  144. package/esm2020/lib/core/checkbox.mjs +3 -3
  145. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  146. package/esm2020/lib/core/datasource.service.mjs +3 -3
  147. package/esm2020/lib/core/fields/address.designer.mjs +3 -3
  148. package/esm2020/lib/core/fields/address.field.mjs +3 -3
  149. package/esm2020/lib/core/fields/autocomplete.field.mjs +6 -6
  150. package/esm2020/lib/core/fields/checkbox.designer.mjs +3 -3
  151. package/esm2020/lib/core/fields/checkbox.field.mjs +3 -3
  152. package/esm2020/lib/core/fields/checklist.designer.mjs +3 -3
  153. package/esm2020/lib/core/fields/checklist.field.mjs +3 -3
  154. package/esm2020/lib/core/fields/date-range.designer.mjs +3 -3
  155. package/esm2020/lib/core/fields/date-range.field.mjs +3 -3
  156. package/esm2020/lib/core/fields/date.designer.mjs +3 -3
  157. package/esm2020/lib/core/fields/date.field.mjs +3 -3
  158. package/esm2020/lib/core/fields/expression.field.mjs +6 -6
  159. package/esm2020/lib/core/fields/file.designer.mjs +3 -3
  160. package/esm2020/lib/core/fields/file.field.mjs +3 -3
  161. package/esm2020/lib/core/fields/html.designer.mjs +3 -3
  162. package/esm2020/lib/core/fields/html.field.mjs +3 -3
  163. package/esm2020/lib/core/fields/input.designer.mjs +3 -3
  164. package/esm2020/lib/core/fields/input.field.mjs +3 -3
  165. package/esm2020/lib/core/fields/localized-string.field.mjs +6 -6
  166. package/esm2020/lib/core/fields/numeric.designer.mjs +3 -3
  167. package/esm2020/lib/core/fields/numeric.field.mjs +3 -3
  168. package/esm2020/lib/core/fields/options.base.mjs +6 -6
  169. package/esm2020/lib/core/fields/options.component.mjs +3 -3
  170. package/esm2020/lib/core/fields/radio-button.designer.mjs +3 -3
  171. package/esm2020/lib/core/fields/radio-button.field.mjs +3 -3
  172. package/esm2020/lib/core/fields/select.designer.mjs +3 -3
  173. package/esm2020/lib/core/fields/select.field.mjs +3 -3
  174. package/esm2020/lib/core/fields/signature.designer.mjs +3 -3
  175. package/esm2020/lib/core/fields/signature.field.mjs +3 -3
  176. package/esm2020/lib/core/fields/switch.field.mjs +3 -3
  177. package/esm2020/lib/core/fields/textarea.designer.mjs +3 -3
  178. package/esm2020/lib/core/fields/textarea.field.mjs +3 -3
  179. package/esm2020/lib/core/fields/time.designer.mjs +3 -3
  180. package/esm2020/lib/core/fields/time.field.mjs +3 -3
  181. package/esm2020/lib/core/fields/timespan.field.mjs +7 -7
  182. package/esm2020/lib/core/fields/yesno.designer.mjs +3 -3
  183. package/esm2020/lib/core/fields/yesno.field.mjs +3 -3
  184. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  185. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  186. package/esm2020/lib/core/guide/help-tip.component.mjs +3 -3
  187. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  188. package/esm2020/lib/core/hub.service.mjs +3 -3
  189. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  190. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  191. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  192. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  193. package/esm2020/lib/core/info/map-info.mjs +3 -3
  194. package/esm2020/lib/core/inputs/address.input.mjs +3 -3
  195. package/esm2020/lib/core/inputs/auto-complete.input.mjs +4 -4
  196. package/esm2020/lib/core/inputs/combination-picker-body.mjs +3 -3
  197. package/esm2020/lib/core/inputs/combination-picker.mjs +3 -3
  198. package/esm2020/lib/core/inputs/combination-pool.mjs +3 -3
  199. package/esm2020/lib/core/inputs/file.input.mjs +3 -3
  200. package/esm2020/lib/core/inputs/select.input.mjs +3 -3
  201. package/esm2020/lib/core/inputs/signature.input.mjs +3 -3
  202. package/esm2020/lib/core/inputs/time-picker.mjs +3 -3
  203. package/esm2020/lib/core/inputs/timespan.input.mjs +3 -3
  204. package/esm2020/lib/core/layout.component.mjs +3 -3
  205. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  206. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  207. package/esm2020/lib/core/none.component.mjs +3 -3
  208. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  209. package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
  210. package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
  211. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  212. package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
  213. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
  214. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  215. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  216. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  217. package/esm2020/lib/core/pipes/localized-string.pipe.mjs +3 -3
  218. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  219. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  220. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  221. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  222. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +6 -6
  223. package/esm2020/lib/core/pipes/translate.pipe.mjs +9 -9
  224. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  225. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  226. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  227. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  228. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  229. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  230. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  231. package/esm2020/lib/core/prompt.service.mjs +3 -3
  232. package/esm2020/lib/core/router.mjs +6 -6
  233. package/esm2020/lib/core/save-changes.dialog.mjs +3 -3
  234. package/esm2020/lib/core/session.service.mjs +3 -3
  235. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  236. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  237. package/esm2020/lib/core/slots/slots.component.mjs +3 -3
  238. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  239. package/esm2020/lib/core/tagging/edit-input.component.mjs +3 -3
  240. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  241. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  242. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  243. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  244. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  245. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  246. package/esm2020/lib/core/translate.service.mjs +3 -3
  247. package/esm2020/lib/core/window-title.service.mjs +3 -3
  248. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  249. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  250. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  251. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  252. package/esm2020/lib/cube/cube-view.component.mjs +3 -3
  253. package/esm2020/lib/cube/cube.service.mjs +3 -3
  254. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  255. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  256. package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
  257. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  258. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  259. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  260. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  261. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  262. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  263. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
  264. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  265. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  266. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  267. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  268. package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
  269. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  270. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  271. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  272. package/esm2020/lib/cube/view-base.mjs +3 -3
  273. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  274. package/esm2020/lib/cube/view.pane.component.mjs +3 -3
  275. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  276. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  277. package/esm2020/lib/dashboard/cube/compare.widget.mjs +3 -3
  278. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +5 -5
  279. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  280. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  281. package/esm2020/lib/dashboard/cube/document-state.widget.mjs +3 -3
  282. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  283. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  284. package/esm2020/lib/dashboard/dashboard.component.mjs +20 -6
  285. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  286. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  287. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  288. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  289. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  290. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
  291. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  292. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  293. package/esm2020/lib/designer.module.mjs +4 -4
  294. package/esm2020/lib/desktop.module.mjs +4 -4
  295. package/esm2020/lib/home/about/about.dialog.mjs +3 -3
  296. package/esm2020/lib/home/home-base.component.mjs +3 -3
  297. package/esm2020/lib/home/home.desktop.component.mjs +5 -5
  298. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  299. package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
  300. package/esm2020/lib/home/options/options.component.mjs +3 -3
  301. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  302. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  303. package/esm2020/lib/home/tools.component.mjs +3 -3
  304. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  305. package/esm2020/lib/mobile.module.mjs +4 -4
  306. package/esm2020/lib/modules/chart.module.mjs +4 -4
  307. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  308. package/esm2020/lib/modules/datepicker.intl.mjs +3 -3
  309. package/esm2020/lib/modules/dayjs.module.mjs +4 -4
  310. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  311. package/esm2020/lib/modules/gantt.module.mjs +4 -4
  312. package/esm2020/lib/modules/grid.module.mjs +4 -4
  313. package/esm2020/lib/modules/linear-gauge.module.mjs +17 -0
  314. package/esm2020/lib/modules/material.module.mjs +4 -4
  315. package/esm2020/lib/modules/paginator.intl.mjs +3 -3
  316. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  317. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  318. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  319. package/esm2020/lib/modules/stepper.intl.mjs +3 -3
  320. package/esm2020/lib/modules/texteditor.module.mjs +4 -4
  321. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  322. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  323. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  324. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  325. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  326. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  327. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  328. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  329. package/esm2020/lib/notifications/types/invite.notification.mjs +3 -3
  330. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  331. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  332. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  333. package/esm2020/lib/notifications/types/nudge.notification.mjs +3 -3
  334. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  335. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  336. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  337. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  338. package/esm2020/lib/options/options.component.mjs +3 -3
  339. package/esm2020/lib/options/options.service.mjs +3 -3
  340. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  341. package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
  342. package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
  343. package/esm2020/lib/reports/cube/role-performance.component.mjs +3 -3
  344. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  345. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  346. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  347. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  348. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  349. package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
  350. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  351. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  352. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  353. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  354. package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
  355. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  356. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  357. package/esm2020/lib/scheduler/schedule.component.mjs +3 -3
  358. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  359. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  360. package/esm2020/lib/search/cube.component.mjs +3 -3
  361. package/esm2020/lib/search/document.component.mjs +3 -3
  362. package/esm2020/lib/search/guide.component.mjs +3 -3
  363. package/esm2020/lib/search/path.component.mjs +3 -3
  364. package/esm2020/lib/search/search.service.mjs +3 -3
  365. package/esm2020/lib/shared.module.mjs +12 -5
  366. package/esm2020/lib/system.module.mjs +4 -4
  367. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  368. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  369. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  370. package/esm2020/lib/views/cube/matrix.component.mjs +3 -3
  371. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  372. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  373. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  374. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  375. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  376. package/esm2020/lib/views/view-item.component.mjs +3 -3
  377. package/esm2020/lib/views/views.component.mjs +3 -3
  378. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  379. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  380. package/fesm2015/bizdoc-core.mjs +1253 -1218
  381. package/fesm2015/bizdoc-core.mjs.map +1 -1
  382. package/fesm2020/bizdoc-core.mjs +1253 -1218
  383. package/fesm2020/bizdoc-core.mjs.map +1 -1
  384. package/lib/modules/linear-gauge.module.d.ts +7 -0
  385. package/lib/shared.module.d.ts +9 -8
  386. package/package.json +19 -19
@@ -110,9 +110,9 @@ export class AceInput {
110
110
  }
111
111
  }
112
112
  AceInput.nextId = 0;
113
- AceInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AceInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }, { token: i2.SystemService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
114
- AceInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: AceInput, selector: "bizdoc-ace-input", inputs: { params: "params", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: AceInput }], ngImport: i0, template: `<div></div>`, isInline: true, styles: [":host ::ng-deep textarea{position:unset}\n", ":host ::ng-deep .ace_scrollbar.ace_scrollbar-h{height:5px!important}\n", ":host ::ng-deep .ace_editor{min-height:50px}\n"] });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AceInput, decorators: [{
113
+ AceInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AceInput, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }, { token: i2.SystemService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
114
+ AceInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AceInput, selector: "bizdoc-ace-input", inputs: { params: "params", placeholder: "placeholder", required: "required", disabled: "disabled", value: "value" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: AceInput }], ngImport: i0, template: `<div></div>`, isInline: true, styles: [":host ::ng-deep textarea{position:unset}\n", ":host ::ng-deep .ace_scrollbar.ace_scrollbar-h{height:5px!important}\n", ":host ::ng-deep .ace_editor{min-height:50px}\n"] });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AceInput, decorators: [{
116
116
  type: Component,
117
117
  args: [{ selector: 'bizdoc-ace-input', providers: [{ provide: MatFormFieldControl, useExisting: AceInput }], template: `<div></div>`, styles: [":host ::ng-deep textarea{position:unset}\n", ":host ::ng-deep .ace_scrollbar.ace_scrollbar-h{height:5px!important}\n", ":host ::ng-deep .ace_editor{min-height:50px}\n"] }]
118
118
  }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
@@ -147,9 +147,9 @@ export class ColorPicker {
147
147
  }
148
148
  }
149
149
  ColorPicker.nextId = 0;
150
- ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ColorPicker, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i3.Directionality }], target: i0.ɵɵFactoryTarget.Component });
151
- ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", value: "value", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<button mat-button (click)='open()' [disabled]=\"disabled\" type=\"button\">\r\n <span>{{label}}</span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"color-palette\">\r\n <div *ngFor='let p of Object.keys(_palettes)' class=\"color-container\">\r\n <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class=\"color-item\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ColorPicker, decorators: [{
150
+ ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ColorPicker, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i3.Directionality }], target: i0.ɵɵFactoryTarget.Component });
151
+ ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ColorPicker, selector: "bizdoc-color-picker", inputs: { label: "label", value: "value", required: "required", disabled: "disabled" }, outputs: { valueChanges: "valueChanges" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], viewQueries: [{ propertyName: "_colorPalette", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<button mat-button (click)='open()' [disabled]=\"disabled\" type=\"button\">\r\n <span>{{label}}</span>\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n</button>\r\n<ng-template>\r\n <div class=\"color-palette\">\r\n <div *ngFor='let p of Object.keys(_palettes)' class=\"color-container\">\r\n <span *ngFor='let c of Object.keys(_palettes[p])' (click)='_pick(_palettes[p][c])' [style.background-color]='_palettes[p][c]' class=\"color-item\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".color-palette{display:flex;flex-direction:column}.color-palette .color-container{display:flex}button{width:100%}.color-item{width:20px;height:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ColorPicker, decorators: [{
153
153
  type: Component,
154
154
  args: [{ selector: 'bizdoc-color-picker', providers: [{ provide: MatFormFieldControl, useExisting: ColorPicker }], host: {
155
155
  '[class.floating]': 'shouldLabelFloat',
@@ -97,9 +97,9 @@ export class LocalizedStringComponent {
97
97
  this._destroy.complete();
98
98
  }
99
99
  }
100
- LocalizedStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LocalizedStringComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.SessionService }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
101
- LocalizedStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: LocalizedStringComponent, selector: "bizdoc-localized-string", inputs: { class: "class", floatLabel: "floatLabel", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled", maxlength: "maxlength" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "controlInput", first: true, predicate: ["controlInput"], descendants: true, read: MatInput }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControl]=\"control\" #controlInput [maxlength]=\"maxlength\" [required]=\"required\"></textarea>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:placeholder\"></mat-error>\r\n <button matSuffix mat-icon-button [disabled]=disabled [bizdocTooltip]=\"'Localize'|translate\" (click)=\"multilingual = !multilingual\" type=\"button\"><mat-icon>translate</mat-icon></button>\r\n <mat-hint align=\"end\" *ngIf=\"maxlength\">{{control.value?.length || 0}} / {{maxlength}}</mat-hint>\r\n</mat-form-field>\r\n<ng-container *ngIf=\"multilingual && languages.length\" [formGroup]=\"group\">\r\n <mat-form-field *ngFor=\"let lang of languages;\" [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}} / {{lang|translate}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControlName]=\"lang\" [maxlength]=\"maxlength\"></textarea>\r\n </mat-form-field>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.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: "directive", type: i7.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LocalizedStringComponent, decorators: [{
100
+ LocalizedStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LocalizedStringComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.SessionService }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
101
+ LocalizedStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LocalizedStringComponent, selector: "bizdoc-localized-string", inputs: { class: "class", floatLabel: "floatLabel", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled", maxlength: "maxlength" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "controlInput", first: true, predicate: ["controlInput"], descendants: true, read: MatInput }], ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControl]=\"control\" #controlInput [maxlength]=\"maxlength\" [required]=\"required\"></textarea>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:placeholder\"></mat-error>\r\n <button matSuffix mat-icon-button [disabled]=disabled [bizdocTooltip]=\"'Localize'|translate\" (click)=\"multilingual = !multilingual\" type=\"button\"><mat-icon>translate</mat-icon></button>\r\n <mat-hint align=\"end\" *ngIf=\"maxlength\">{{control.value?.length || 0}} / {{maxlength}}</mat-hint>\r\n</mat-form-field>\r\n<ng-container *ngIf=\"multilingual && languages.length\" [formGroup]=\"group\">\r\n <mat-form-field *ngFor=\"let lang of languages;\" [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}} / {{lang|translate}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControlName]=\"lang\" [maxlength]=\"maxlength\"></textarea>\r\n </mat-form-field>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.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: "directive", type: i7.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LocalizedStringComponent, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'bizdoc-localized-string', template: "<mat-form-field [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControl]=\"control\" #controlInput [maxlength]=\"maxlength\" [required]=\"required\"></textarea>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:placeholder\"></mat-error>\r\n <button matSuffix mat-icon-button [disabled]=disabled [bizdocTooltip]=\"'Localize'|translate\" (click)=\"multilingual = !multilingual\" type=\"button\"><mat-icon>translate</mat-icon></button>\r\n <mat-hint align=\"end\" *ngIf=\"maxlength\">{{control.value?.length || 0}} / {{maxlength}}</mat-hint>\r\n</mat-form-field>\r\n<ng-container *ngIf=\"multilingual && languages.length\" [formGroup]=\"group\">\r\n <mat-form-field *ngFor=\"let lang of languages;\" [floatLabel]=\"floatLabel\">\r\n <mat-label>{{placeholder}} / {{lang|translate}}</mat-label>\r\n <textarea cdkTextareaAutosize matInput [formControlName]=\"lang\" [maxlength]=\"maxlength\"></textarea>\r\n </mat-form-field>\r\n</ng-container>\r\n" }]
105
105
  }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
@@ -20,10 +20,10 @@ export class SearchInput {
20
20
  this.valueChange.complete();
21
21
  }
22
22
  }
23
- SearchInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- SearchInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SearchInput, selector: "bizdoc-search-input", outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown.escape": "_leave()" } }, ngImport: i0, template: `<input matInput [formControl]=_search autocomplete="off" #searchInput />
23
+ SearchInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ SearchInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SearchInput, selector: "bizdoc-search-input", outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown.escape": "_leave()" } }, ngImport: i0, template: `<input matInput [formControl]=_search autocomplete="off" #searchInput />
25
25
  <mat-icon class="mat-icon-rtl-mirror" (click)="searchInput.focus()">search</mat-icon>`, isInline: true, styles: ["input{width:0px;text-align:end;transition:all .2s ease-in-out}\n", "input:focus{width:200px}\n"], dependencies: [{ 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SearchInput, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SearchInput, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'bizdoc-search-input', template: `<input matInput [formControl]=_search autocomplete="off" #searchInput />
29
29
  <mat-icon class="mat-icon-rtl-mirror" (click)="searchInput.focus()">search</mat-icon>`, styles: ["input{width:0px;text-align:end;transition:all .2s ease-in-out}\n", "input:focus{width:200px}\n"] }]
@@ -532,14 +532,14 @@ let SystemDiffComponent = class SystemDiffComponent {
532
532
  this._destroy.complete();
533
533
  }
534
534
  };
535
- SystemDiffComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SystemDiffComponent, deps: [{ token: i1.PromptService }, { token: UtilityRef }, { token: i2.TranslateService }, { token: i3.DatasourceService }, { token: i4.AccountService }], target: i0.ɵɵFactoryTarget.Component });
536
- SystemDiffComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: SystemDiffComponent, selector: "ng-component", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "contents", first: true, predicate: ["contents"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize class=\"flex\">\r\n <mat-sidenav-content>\r\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\r\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\r\n <mat-nav-list *ngIf=\"versions\">\r\n <ng-container *ngFor=\"let v of versions; let index = index; let last = last\">\r\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\" *ngIf=\"!last\">\r\n <h3 matListItemTitle>\r\n {{(v.author || 'System') | userName | async }}\r\n </h3>\r\n <p class=\"time\" matListItemLine>\r\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\r\n </p>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i8.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i8.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i8.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i14.UserNamePipe, name: "userName" }, { kind: "pipe", type: i15.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }] });
535
+ SystemDiffComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SystemDiffComponent, deps: [{ token: i1.PromptService }, { token: UtilityRef }, { token: i2.TranslateService }, { token: i3.DatasourceService }, { token: i4.AccountService }], target: i0.ɵɵFactoryTarget.Component });
536
+ SystemDiffComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SystemDiffComponent, selector: "ng-component", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "contents", first: true, predicate: ["contents"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize class=\"flex\">\r\n <mat-sidenav-content>\r\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\r\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\r\n <mat-nav-list *ngIf=\"versions\">\r\n <ng-container *ngFor=\"let v of versions; let index = index; let last = last\">\r\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\" *ngIf=\"!last\">\r\n <h3 matListItemTitle>\r\n {{(v.author || 'System') | userName | async }}\r\n </h3>\r\n <p class=\"time\" matListItemLine>\r\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\r\n </p>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i8.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i8.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i8.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i14.UserNamePipe, name: "userName" }, { kind: "pipe", type: i15.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }] });
537
537
  SystemDiffComponent = __decorate([
538
538
  BizDoc({ selector: 'bizdoc-configuration-diff' })
539
539
  /** component*/
540
540
  ], SystemDiffComponent);
541
541
  export { SystemDiffComponent };
542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: SystemDiffComponent, decorators: [{
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SystemDiffComponent, decorators: [{
543
543
  type: Component,
544
544
  args: [{ host: {
545
545
  class: 'pane'
@@ -494,14 +494,14 @@ let DocumentTraceComponent = class DocumentTraceComponent {
494
494
  this._destroy.complete();
495
495
  }
496
496
  };
497
- DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: i1.SystemService }, { token: i2.SessionService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.PromptService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.GuideService }, { token: i0.ChangeDetectorRef }, { token: i9.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
498
- DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column flex\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row flex\">\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault class=\"flex column fill\">\r\n <mat-toolbar class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i12.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i12.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i12.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i13.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i14.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i14.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i14.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i14.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i14.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i14.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i14.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i14.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i14.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i14.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i15.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i15.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i16.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i17.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i18.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i18.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i19.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i20.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: i21.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i22.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i23.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i24.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] });
497
+ DocumentTraceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentTraceComponent, deps: [{ token: UtilityRef }, { token: i1.SystemService }, { token: i2.SessionService }, { token: i3.PaneRef }, { token: i4.PanesRouter }, { token: i5.PromptService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.GuideService }, { token: i0.ChangeDetectorRef }, { token: i9.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
498
+ DocumentTraceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DocumentTraceComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "diagramElement", first: true, predicate: ["diagram"], descendants: true }, { propertyName: "filterArgs", first: true, predicate: ["args"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["search"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "rangeNavigator", first: true, predicate: RangeNavigator, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <!-- diagram -->\r\n <div *ngSwitchCase=\"'diagram'\" class=\"column flex\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"browse()\" [bizdocTooltip]=\"'Back' | translate\"><mat-icon class=\"mat-icon-rtl-mirror\">arrow_back</mat-icon></button>\r\n |\r\n <button mat-icon-button (click)=\"pan()\" [bizdocTooltip]=\"'Pan' | translate\"><span class=\"e-icons sf-icon-pan\"></span></button>\r\n <button mat-icon-button (click)=\"cursor()\" [bizdocTooltip]=\"'Cursor' | translate\"><span class=\"e-icons sf-icon-cursor\"></span></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n </mat-toolbar>\r\n <div class=\"row flex\">\r\n <!-- timeline -->\r\n <div class=\"timeline\" *ngIf=\"timeline?.items.length > 1\" data-help=\"timeline\">\r\n <div *ngFor=\"let date of timeline.items; let last = last\" class=\"item\"\r\n [class.active]=\"date.time === timeline.date\"\r\n (click)=\"highlightTime(date.time)\" matRipple>\r\n <div class=\"title\">\r\n <ng-container *ngIf=\"!last || !timeline.estimate; else estimate\">\r\n <span class=\"who\" *ngIf=\"userId\">\r\n {{date.userId | userName | async }}\r\n </span>\r\n <br />\r\n <span class=\"time\">\r\n {{date.time | amDateFormat: 'MMM Do H:mm' }}\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"indicator-container\">\r\n <div class=\"indicator\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex\" #diagram dir=\"ltr\">\r\n </div>\r\n </div>\r\n </div>\r\n <!-- browse -->\r\n <div *ngSwitchDefault class=\"flex column fill\">\r\n <mat-toolbar class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"openFilter($event)\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </mat-toolbar>\r\n <mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- table -->\r\n <mat-table class=\"flex\" [dataSource]=\"dataSource\" matSort>\r\n <!-- Number column -->\r\n <ng-container matColumnDef=\"number\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.number}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Subject column -->\r\n <ng-container matColumnDef=\"subject\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\"> {{item.subject}} </mat-cell>\r\n </ng-container>\r\n <!-- StateId column -->\r\n <ng-container matColumnDef=\"stateId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header=\"stateId\">{{'Status' | translate }}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let item\" class=\"data-column\">\r\n <bizdoc-status [stateId]=\"item.stateId\"></bizdoc-status>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></mat-header-row>\r\n <mat-row *matRowDef=\"let item; columns: displayedColumns;\"\r\n (click)=\"open(item)\">\r\n </mat-row>\r\n </mat-table>\r\n <!-- range -->\r\n <ejs-rangenavigator valueType='DateTime' [value]=range labelFormat='MMM' background=\"transparent\"\r\n [theme]=\"theme\" labelIntersectAction='Hide' enableGrouping=\"false\"\r\n groupBy=\"Years\" intervalType='Months'\r\n (changed)='rangeChanged($event)'>\r\n <e-rangenavigator-series-collection>\r\n <e-rangenavigator-series [dataSource]='rangeData' [fill]=\"accent\" type='Area' xName='date' yName='count' width=2>\r\n </e-rangenavigator-series>\r\n </e-rangenavigator-series-collection>\r\n </ejs-rangenavigator>\r\n </div>\r\n</ng-container>\r\n<!-- args -->\r\n<ng-template #args>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" #search formControlName=\"search\" data-help=\"search\" [placeholder]=\"'Number'|translate\" />\r\n <mat-icon matSuffix class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <bizdoc-select type=\"forms\" [placeholder]=\"'Form'|translate\" formControlName=\"formId\"></bizdoc-select>\r\n </mat-form-field>\r\n </form>\r\n</ng-template>\r\n<ng-template #estimate>\r\n {{'Estimate' | translate}}\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;height:100%}:host ::ng-deep .mat-mdc-row{cursor:pointer}form{margin:8px}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i12.RangeNavigatorComponent, selector: "ejs-rangenavigator", inputs: ["allowIntervalData", "allowSnapping", "animationDuration", "background", "dataSource", "disableRangeSelector", "enableDeferredUpdate", "enableGrouping", "enablePersistence", "enableRtl", "groupBy", "height", "interval", "intervalType", "labelFormat", "labelIntersectAction", "labelPosition", "labelStyle", "locale", "logBase", "majorGridLines", "majorTickLines", "margin", "maximum", "minimum", "navigatorBorder", "navigatorStyleSettings", "periodSelectorSettings", "query", "secondaryLabelAlignment", "series", "skeleton", "skeletonType", "theme", "tickPosition", "tooltip", "useGroupingSeparator", "value", "valueType", "width", "xName", "yName"], outputs: ["beforePrint", "beforeResize", "changed", "labelRender", "load", "loaded", "resized", "selectorRender", "tooltipRender", "dataSourceChange"] }, { kind: "directive", type: i12.RangenavigatorSeriesDirective, selector: "e-rangenavigator-series-collection>e-rangenavigator-series", inputs: ["animation", "border", "dashArray", "dataSource", "fill", "opacity", "query", "type", "width", "xName", "yName"] }, { kind: "directive", type: i12.RangenavigatorSeriesCollectionDirective, selector: "ej-rangenavigator>e-rangenavigator-series-collection" }, { kind: "directive", type: i13.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i14.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i14.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i14.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i14.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i14.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i14.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i14.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i14.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i14.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i14.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i15.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i15.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i16.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i17.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i18.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i18.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i19.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i20.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: i21.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i22.StateDirective, selector: "bizdoc-status", inputs: ["stateId"] }, { kind: "directive", type: i23.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i24.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i25.DateFormatPipe, name: "amDateFormat" }, { kind: "pipe", type: i26.UserNamePipe, name: "userName" }, { kind: "pipe", type: i27.TranslatePipe, name: "translate" }], animations: [trigger('element', EnterExitRight)] });
499
499
  DocumentTraceComponent = __decorate([
500
500
  BizDoc({ selector: 'bizdoc-trace-utility' })
501
501
  /** workflow component*/
502
502
  ], DocumentTraceComponent);
503
503
  export { DocumentTraceComponent };
504
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DocumentTraceComponent, decorators: [{
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentTraceComponent, decorators: [{
505
505
  type: Component,
506
506
  args: [{ host: {
507
507
  class: 'pane'
@@ -528,4 +528,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
528
528
  type: HostListener,
529
529
  args: ['window:keydown.f1', ['$event']]
530
530
  }] } });
531
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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YyxDQUFDLENBQUM7QUFJeEMsc0JBQXNCO0lBRmxDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0lBQzdDLHdCQUF3QjtHQUNYLHNCQUFzQixDQTBjbEM7U0ExY1ksc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBVGxDLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7OzBCQWdGaEQsTUFBTTsyQkFBQyxVQUFVO3lUQTNFRSxjQUFjO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBK0RELFVBQVU7c0JBQTVCLFNBQVM7dUJBQUMsTUFBTTtnQkFDSSxXQUFXO3NCQUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBRUMsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLGNBQWM7c0JBQXhDLFNBQVM7dUJBQUMsY0FBYztnQkFpRXpCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTZWxlY3Rvck1vZGVsLCBTZWxlY3RvckNvbnN0cmFpbnRzLFxyXG4gIFRvb2xCYXNlLCBEaWFncmFtLCBNb3VzZUV2ZW50QXJncywgQ29ubmVjdG9yTW9kZWwsIE5vZGVNb2RlbCwgU25hcFNldHRpbmdzTW9kZWwsIERpYWdyYW1Ub29scywgVGV4dE1vZGVsLCBDb25uZWN0b3JDb25zdHJhaW50cywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncywgTGF5ZXJNb2RlbCwgQ29ubmVjdGlvblBvaW50T3JpZ2luLCBMYXlvdXRNb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgSUNoYW5nZWRFdmVudEFyZ3MsIFJhbmdlTmF2aWdhdG9yIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgZ2V0V2FybiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgR3VpZGVTdGVwIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbywgU3lzdGVtU2VydmljZSwgUmFuZ2VJbmZvIH0gZnJvbSAnLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhbmVzUm91dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbm5lY3RvckRhdGEsIERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIE5vZGVEYXRhLCBUaW1lbGluZSB9IGZyb20gJy4vdGltZWxpbmUnO1xyXG5pbXBvcnQgeyBFbnRlckV4aXRSaWdodCB9IGZyb20gJy4uLy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vLi4vY29yZS9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWxlbWVudERhdGEsIFRyYWNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vdHJhY2UtZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuXHJcbmNvbnN0IFdBUk5OSU5HX1BBVEggPSAnTSAxMy43NjM3MzUsMS44NDMzNzM1IEggNi4zMDM3MzQ5IGwgLTUuMjcsNS4yNyB2IDcuNDU5OTk5NSBsIDUuMjcsNS4yNyBoIDcuNDYwMDAwMSBsIDUuMjcsLTUuMjcgViA3LjExMzM3MzUgWiBtIC0zLjczLDE0LjI5OTk5OTUgYyAtMC43MjAwMDAxLDAgLTEuMzAwMDAwMSwtMC41OCAtMS4zMDAwMDAxLC0xLjMgMCwtMC43MiAwLjU4LC0xLjMgMS4zMDAwMDAxLC0xLjMgMC43MiwwIDEuMywwLjU4IDEuMywxLjMgMCwwLjcyIC0wLjU4LDEuMyAtMS4zLDEuMyB6IG0gMSwtNC4zIEggOS4wMzM3MzQ5IFYgNS44NDMzNzM1IGggMi4wMDAwMDAxIHonLFxyXG4gIEpVTVBfUEFUSCA9ICdNIDYsMTggMTQuNSwxMiA2LDYgWiBNIDE2LDYgdiAxMiBoIDIgViA2IFonO1xyXG5cclxuZnVuY3Rpb24gZ2V0UG9ydHMoKTogUG9pbnRQb3J0TW9kZWxbXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIHsgaWQ6ICdwb3J0MScsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDInLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDEgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQzJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMSwgeTogMC41IH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0NCcsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMCB9IH1cclxuICBdO1xyXG59XHJcblxyXG5jbGFzcyBJbmZvVG9vbCBleHRlbmRzIFRvb2xCYXNlIHtcclxuICBwdWJsaWMgb3ZlcnJpZGUgbW91c2VEb3duKGFyZ3M6IE1vdXNlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXNbMF07XHJcbiAgICAgIHN1cGVyLm1vdXNlRG93bihhcmdzKVxyXG4gICAgICB0aGlzLnRhcC5uZXh0KG5vZGUpO1xyXG4gICAgICB0aGlzLmluQWN0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWdyYW06IERpYWdyYW0sIHB1YmxpYyB0YXA6IFN1YmplY3Q8Tm9kZU1vZGVsPikge1xyXG4gICAgc3VwZXIoZGlhZ3JhbS5jb21tYW5kSGFuZGxlcik7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBTZWFyY2hNb2RlbCB7XHJcbiAgc2VhcmNoPzogc3RyaW5nLCBmb3JtSWQ/OiBzdHJpbmdcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH0sIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdlbGVtZW50JywgRW50ZXJFeGl0UmlnaHQpXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdHJhY2UtdXRpbGl0eScgfSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFRyYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW0nKSBkaWFncmFtRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdGhlbWUgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cDxTZWFyY2hNb2RlbD4oeyBzZWFyY2g6IG51bGwsIGZvcm1JZDogbnVsbCB9KTtcclxuICBtb2RlbDogRGlhZ3JhbUluZm87XHJcbiAgdGltZWxpbmU6IFRpbWVsaW5lO1xyXG4gIGRpYWdyYW1Db25zdHJhaW50czogRGlhZ3JhbUNvbnN0cmFpbnRzID0gRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBEaWFncmFtQ29uc3RyYWludHMuQnJpZGdpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkxpbmVSb3V0aW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5QYW4gfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlpvb207XHJcbiAgZGlhZ3JhbVRvb2w6IERpYWdyYW1Ub29scyA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IHtcclxuICAgIHR5cGU6ICdDb21wbGV4SGllcmFyY2hpY2FsVHJlZScsXHJcbiAgICBjb25uZWN0aW9uUG9pbnRPcmlnaW46IENvbm5lY3Rpb25Qb2ludE9yaWdpbi5EaWZmZXJlbnRQb2ludCxcclxuICAgIGhvcml6b250YWxTcGFjaW5nOiA1MCxcclxuICAgIGVuYWJsZVJvdXRpbmc6IHRydWUsXHJcbiAgICB2ZXJ0aWNhbFNwYWNpbmc6IDUwLFxyXG4gICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ0NlbnRlcicsXHJcbiAgICBjb25uZWN0aW9uRGlyZWN0aW9uOiAnT3JpZW50YXRpb24nLFxyXG4gICAgb3JpZW50YXRpb246ICdUb3BUb0JvdHRvbSdcclxuICB9IGFzIExheW91dE1vZGVsO1xyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5nczogU25hcFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgfTtcclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5nczogU2Nyb2xsU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgbWF4Wm9vbTogMi41XHJcbiAgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDgwMCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJpbWVyeUNvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXM6IFNlbGVjdG9yTW9kZWwgPSB7XHJcbiAgICBjb25zdHJhaW50czogU2VsZWN0b3JDb25zdHJhaW50cy5Vc2VySGFuZGxlLFxyXG4gICAgdXNlckhhbmRsZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdpbmZvJyxcclxuICAgICAgICBwYXRoRGF0YTogJ00xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeicsXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgc2lkZTogJ1JpZ2h0JyxcclxuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ0JvdHRvbScsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgIHBhdGhDb2xvcjogdGhpcy5fcHJpbWVyeUNvbG9yLFxyXG4gICAgICAgIHNpemU6IDQwLFxyXG4gICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDAgfVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfTtcclxuICBwdWJsaWMgZ2V0Q3VzdG9tVG9vbDogRnVuY3Rpb24gPSB0aGlzLmdldFRvb2wuYmluZCh0aGlzKTtcclxuICBub2RlOiBOb2RlTW9kZWw7XHJcbiAgcHJpdmF0ZSBfc3RhcnQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfZW5kOiBEYXRlO1xyXG4gIHByaXZhdGUgX2luZm9SZWY6IFBhbmVSZWY8VHJhY2VFbGVtZW50Q29tcG9uZW50PjtcclxuICBwdWJsaWMgZ2V0VG9vbChhY3Rpb246IHN0cmluZyk6IFRvb2xCYXNlIHtcclxuICAgIGxldCB0b29sOiBUb29sQmFzZTtcclxuICAgIGlmIChhY3Rpb24gPT09ICdpbmZvJykge1xyXG4gICAgICB0b29sID0gbmV3IEluZm9Ub29sKHRoaXMuZGlhZ3JhbSwgdGhpcy5fdGFwKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b29sO1xyXG4gIH1cclxuICBtb2RlOiAnZGlhZ3JhbScgfCAnYnJvd3NlJyB8IG51bGwgPSAnYnJvd3NlJztcclxuICByYW5nZTogKERhdGUgfCBudW1iZXIpW107XHJcbiAgcmFuZ2VEYXRhOiBSYW5nZUluZm9bXTtcclxuICBsb2FkaW5nOiBQcm9ncmVzc0Jhck1vZGUgPSAncXVlcnknO1xyXG4gIEBWaWV3Q2hpbGQoJ2FyZ3MnKSBmaWx0ZXJBcmdzOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaCcpIHNlYXJjaElucHV0OiBNYXRJbnB1dDtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RG9jdW1lbnRJbmZvPjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZChSYW5nZU5hdmlnYXRvcikgcmFuZ2VOYXZpZ2F0b3I6IFJhbmdlTmF2aWdhdG9yO1xyXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBbJ251bWJlcicsICdzdWJqZWN0JywgJ3N0YXRlSWQnXTtcclxuICBwcml2YXRlIF9oaWdoTGlnaHRlZElkczogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF90YXAgPSBuZXcgU3ViamVjdDxOb2RlTW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0ZXNjaGFuZ2UgPSBuZXcgU3ViamVjdDx7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfT4oKTtcclxuICAvKiogd29ya2Zsb3cgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChVdGlsaXR5UmVmKVxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBEaWFncmFtSW5mbywgbnVtYmVyPixcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BhbmU6IFBhbmVSZWY8RG9jdW1lbnRUcmFjZUNvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBwcml2YXRlIF9ndWlkZTogR3VpZGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgdGhpcy5hY2NlbnQgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gICAgICAvL3RoaXMucmFuZ2VOYXZpZ2F0b3IucmVmcmVzaCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnJhbmdlKCkuc3Vic2NyaWJlKHIgPT4gdGhpcy5yYW5nZURhdGEgPSByKTtcclxuICAgIHRoaXMuX2RhdGVzY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9zdGFydCA9IHIuc3RhcnQsIHRoaXMuX2VuZCA9IHIuZW5kO1xyXG4gICAgICB0aGlzLl9saXN0KCk7XHJcbiAgICB9KTtcclxuICAgIC8vbGV0IHIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJhY2UtcmFuZ2UnKTtcclxuXHJcbiAgICB0aGlzLnJhbmdlID0gW25vdy5hZGQoLTIsICd3JykudG9EYXRlKCksXHJcbiAgICBub3cudG9EYXRlKCldO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLlxyXG4gICAgICBzdWJzY3JpYmUodGhpcy5fbGlzdC5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2UoKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZG9jdW1lbnRJZCB9ID0gcDtcclxuICAgICAgZG9jdW1lbnRJZCAmJiB0aGlzLl9vcGVuKChkb2N1bWVudElkIGFzIHN0cmluZykuZGVjb2RlSWQoKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucmVzaXplZCgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5kaWFncmFtPy5yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIG9wZW5GaWx0ZXIoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3Blbih0aGlzLmZpbHRlckFyZ3MsIGV2dC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLm9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PlxyXG4gICAgICB0aGlzLnNlYXJjaElucHV0LmZvY3VzKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9saXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gJ3F1ZXJ5JztcclxuICAgIHRoaXMuX3NlcnZpY2UuZmluZEFsbCh7IC4uLnRoaXMuZm9ybS52YWx1ZSwgc3RhcnQ6IHRoaXMuX3N0YXJ0LCBlbmQ6IHRoaXMuX2VuZCB9KS5zdWJzY3JpYmUobCA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UobCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFuZ2VDaGFuZ2VkKGFyZ3M6IElDaGFuZ2VkRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICAvL2xvY2FsU3RvcmFnZS5zZXRJdGVtKCd0cmFjZS1yYW5nZScsIGFyZ3MuKTtcclxuICAgIHRoaXMuX2RhdGVzY2hhbmdlLm5leHQoYXJncyBhcyBhbnkpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5mMScsIFsnJGV2ZW50J10pXHJcbiAgZ3VpZGUoZXZ0PzogRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBzdGVwczogR3VpZGVTdGVwW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnRpbWVsaW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVsaW5lLml0ZW1zLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9dGltZWxpbmVdJyxcclxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RyYWNlVGltZWxpbmVIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdnW2lkXj1zdGFydF0nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RyYWNlRWxlbWVudEhlbHAnKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHN0ZXBzLnB1c2goe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVNlYXJjaEhlbHAnKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydCh7XHJcbiAgICAgIG5hbWU6ICd0cmFjZScsXHJcbiAgICAgIHN0ZXBzXHJcbiAgICB9KTtcclxuICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgYnJvd3NlKCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdKTtcclxuICAgIHRoaXMuX3JvdXRlci5jb2xsYXBzZSgpO1xyXG4gICAgdGhpcy5tb2RlID0gJ2Jyb3dzZSc7XHJcbiAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3BlbihpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMubG9hZGluZyA9ICdidWZmZXInO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZShpZCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IFtdO1xyXG4gICAgICB0aGlzLm1vZGVsID0gZTtcclxuICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RpYWdyYW0nO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbSA9IG5ldyBEaWFncmFtKHtcclxuICAgICAgICB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyxcclxuICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLFxyXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICB0b29sOiB0aGlzLmRpYWdyYW1Ub29sLFxyXG4gICAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICAgIG5vZGVzOiBlLmRpYWdyYW0ubm9kZXMsXHJcbiAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlOiB0aGlzLnNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgIH0sIHRoaXMuZGlhZ3JhbUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgdGhpcy5faW5kaWNhdG9ycygpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uZml0VG9QYWdlKCk7XHJcblxyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICB0aGlzLl9zYi5lcnJvcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5vZGVEZWZhdWx0cyA9IChub2RlOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwgPT4ge1xyXG4gICAgY29uc3QgeyBpbmRpY2F0b3IsIHZpcnR1YWwgfSA9IG5vZGUuYWRkSW5mbyBhcyBOb2RlRGF0YSB8fCB7fTtcclxuXHJcbiAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgIG5vZGUuY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwLFxyXG4gICAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlV2lkdGggPSAwLFxyXG4gICAgICAgIG5vZGUud2lkdGggPSBub2RlLmhlaWdodCA9IDE1O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5pZCAhPT0gJ3ZlcnNpb24nKSB7XHJcbiAgICAgIG5vZGUuY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuSW5Db25uZWN0IHwgTm9kZUNvbnN0cmFpbnRzLk91dENvbm5lY3QgfFxyXG4gICAgICAgIE5vZGVDb25zdHJhaW50cy5Qb2ludGVyRXZlbnRzIHwgTm9kZUNvbnN0cmFpbnRzLlNlbGVjdDtcclxuICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKG5vZGUpO1xyXG4gICAgICBub2RlLnBvcnRzID0gZ2V0UG9ydHMoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuICBwdWJsaWMgY29ubkRlZmF1bHRzID0gKGNvbm5lY3RvcjogQ29ubmVjdG9yTW9kZWwpID0+IHtcclxuICAgIGNvbnN0IHsgdmlydHVhbCB9ID0gY29ubmVjdG9yLmFkZEluZm8gYXMgQ29ubmVjdG9yRGF0YSB8fCB7fTtcclxuICAgIGNvbm5lY3Rvci5jb25zdHJhaW50cyA9IENvbm5lY3RvckNvbnN0cmFpbnRzLlJlYWRPbmx5ICYgfkNvbm5lY3RvckNvbnN0cmFpbnRzLlNlbGVjdDtcclxuXHJcbiAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3Rvcihjb25uZWN0b3IpO1xyXG4gIH1cclxuICBvcGVuKGl0ZW06IERvY3VtZW50SW5mbykge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IGRvY3VtZW50SWQ6IGl0ZW0uaWQuZW5jb2RlSWQoKSB9IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGltZWxpbmUoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IFtdLCBzdWJtaXNzaW9uczogRGF0ZVtdID0gW107XHJcbiAgICBsZXQgbWluRGF0ZTogRGF0ZSwgbWF4RGF0ZTogRGF0ZSwgZXN0aW1hdGU6IGJvb2xlYW47XHJcbiAgICB0aGlzLm1vZGVsLmxvZy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICBjb25zdCB7IHRpbWUsIHVzZXJJZCB9ID0gbDtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdTdWJtaXQnOlxyXG4gICAgICAgICAgc3VibWlzc2lvbnMucHVzaCh0aW1lKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFpdGVtcy5maW5kKHQgPT4gdC50aW1lID09PSB0aW1lKSlcclxuICAgICAgICBpdGVtcy5wdXNoKHsgdGltZSwgdXNlcklkIH0pO1xyXG4gICAgICBpZiAoIW1pbkRhdGUgfHwgZGF5anModGltZSkuaXNCZWZvcmUobWluRGF0ZSkpIG1pbkRhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAoIW1heERhdGUgfHwgZGF5anModGltZSkuaXNBZnRlcihtYXhEYXRlKSkgbWF4RGF0ZSA9IHRpbWU7XHJcbiAgICAgIGlmIChsLmVzdGltYXRlKSBlc3RpbWF0ZSA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGltZWxpbmUgPSB7XHJcbiAgICAgIGl0ZW1zLCBtaW5EYXRlLCBtYXhEYXRlLFxyXG4gICAgICBzdWJtaXNzaW9ucywgZXN0aW1hdGVcclxuICAgIH0gYXMgYW55O1xyXG4gICAgdGhpcy5fc2NvcGUoc3VibWlzc2lvbnNbc3VibWlzc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3Njb3BlKGRhdGU6IERhdGUpIHtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMudGltZWxpbmUuc3VibWlzc2lvbnMucmV2ZXJzZSgpLlxyXG4gICAgICBmaW5kKHMgPT4gcyA8PSBkYXRlKSxcclxuICAgICAgbmV4dERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLmZpbmQocyA9PiBzID4gZGF0ZSksXHJcbiAgICAgIGVuZERhdGUgPSBuZXh0RGF0ZSA/IG5ldyBEYXRlKG5ldyBEYXRlKG5leHREYXRlKS52YWx1ZU9mKCkgLSAxKS50b0pTT04oKSBhcyBhbnkgOiB0aGlzLnRpbWVsaW5lLm1heERhdGU7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudGltZWxpbmUsIHtcclxuICAgICAgc3RhcnREYXRlLFxyXG4gICAgICBlbmREYXRlLFxyXG4gICAgICByZWNpcGllbnRzOiB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5yZWNlaXZlZCA+PSBzdGFydERhdGUgJiYgci5yZWNlaXZlZCA8PSBlbmREYXRlKSxcclxuICAgICAgbG9nOiB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPj0gc3RhcnREYXRlICYmIGwudGltZSA8PSBlbmREYXRlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljYXRvcnMoKSB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdOb2RlJzpcclxuICAgICAgICAgIGlmIChsLmVycm9yKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGwuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0JvdHRvbUNlbnRlcidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOb2RlSnVtcCc6XHJcbiAgICAgICAgICAvL2luZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAvLyAgc2hhcGU6IHtcclxuICAgICAgICAgIC8vICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgIC8vICAgIGRhdGE6IEpVTVBfUEFUSCxcclxuICAgICAgICAgIC8vICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAvLyAgfSxcclxuICAgICAgICAgIC8vICBzdHlsZToge1xyXG4gICAgICAgICAgLy8gICAgZmlsbDogJ2JsYWNrJ1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgLy8gICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgLy8gICAgcGFyZW50SWQ6IGwubm9kZUlkXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcignaW5kaWNhdG9ycycpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdCgoaS5hZGRJbmZvIGFzIE5vZGVEYXRhKS5wYXJlbnRJZCk7XHJcbiAgICAgIGkub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgcGFyZW50LndpZHRoIC8gMiAtIDE1LFxyXG4gICAgICAgIGkub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZICsgcGFyZW50LmhlaWdodCAvIDIgLSAxNTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZExheWVyKHsgaWQ6ICdpbmRpY2F0b3JzJyB9LCBpbmRpY2F0b3JzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVOb2RlKG5vZGU6IE5vZGVNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQpO1xyXG5cclxuICAgIGlmIChsb2cubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0aGlzLnRpbWVsaW5lLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQpO1xyXG5cclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBub2RlLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG5cclxuICAgICAgbm9kZS5zdHlsZS5maWxsID0gcmVjaXBpZW50cy5maW5kKHIgPT4gci5wZW5kaW5nICYmICFyLmVzdGltYXRlKSA/IHRoaXMuX2FjY2VudENvbG9yIDogJ3doaXRlJztcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgbm9kZS5zdHlsZS5maWxsID0gJ3doaXRlJyxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZUNvbG9yID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICc2IDInO1xyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZUNvbm5lY3Rvcihjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSB7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLnNvdXJjZUlkID09PSBjb25uZWN0b3Iuc291cmNlSUQgJiYgbC50YXJnZXRJZCA9PSBjb25uZWN0b3IudGFyZ2V0SUQpO1xyXG5cclxuICAgIGlmIChsb2cubGVuZ3RoKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gbG9nLmZpbmQobCA9PiBsLmVzdGltYXRlKSA/ICczIDInIDogJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSAnZGFya2dyYXknLFxyXG4gICAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmVyc2lvbigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcihcclxuICAgICAgJ3ZlcnNpb24nKTtcclxuICAgIGNvbnN0IHZlcnNpb24gPSB7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgdHlwZTogJ1RleHQnLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RpYWdyYW1WZXJzaW9uJywgdGhpcy5tb2RlbC5kaWFncmFtLnZlcnNpb24pXHJcbiAgICAgIH0sXHJcbiAgICAgIG9mZnNldFk6IDUsXHJcbiAgICAgIG9mZnNldFg6IDUsXHJcbiAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDUwLFxyXG4gICAgICAgIG9wYWNpdHk6IC4xXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuUmVhZE9ubHlcclxuICAgIH0gYXMgVGV4dE1vZGVsO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZExheWVyKHtcclxuICAgICAgaWQ6ICd2ZXJzaW9uJyxcclxuICAgICAgb2JqZWN0czogW1xyXG4gICAgICAgIHZlcnNpb25dXHJcbiAgICB9IGFzIExheWVyTW9kZWwpO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZCh2ZXJzaW9uKTtcclxuICB9XHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2dDogSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncykge1xyXG4gICAgaWYgKGV2dC5zdGF0ZSAhPT0gJ0NoYW5nZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLl91bmhpZ2hsaWdodCgpO1xyXG4gICAgaWYgKGV2dC5uZXdWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgbGV0IG5vZGUgPSBldnQubmV3VmFsdWVbMF0gYXMgTm9kZU1vZGVsO1xyXG5cclxuICAgICAgY29uc3QgeyBpbmRpY2F0b3IsIHBhcmVudElkIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KHBhcmVudElkKTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uc2VsZWN0KFtub2RlXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gKChub2RlIGFzIGFueSkuaW5FZGdlcykuY29uY2F0KChub2RlIGFzIGFueSkub3V0RWRnZXMpO1xyXG4gICAgICAgIGlkcy5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmZvUmVmKSB0aGlzLl9pbmZvUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFRyYWNlRWxlbWVudENvbXBvbmVudCwge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgdGltZWxpbmU6IHRoaXMudGltZWxpbmUsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICB1dGlsaXR5UmVmOiB0aGlzLl91dGlsaXR5UmVmLFxyXG4gICAgICAgICAgfSBhcyBFbGVtZW50RGF0YSxcclxuICAgICAgICAgIHBvbGljeTogT3BlblBvbGljeS5UYWJcclxuICAgICAgICB9KS50aGVuKChlOiBQYW5lUmVmKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pbmZvUmVmID0gZTtcclxuICAgICAgICAgIGUuYW5pbWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5ub2RlID0gbnVsbDtcclxuICB9XHJcbiAgcHVibGljIGhpZ2hsaWdodFRpbWUodGltZTogRGF0ZSkge1xyXG4gICAgdGhpcy50aW1lbGluZS5kYXRlID0gdGltZTtcclxuICAgIHRoaXMuZGlhZ3JhbS5jbGVhclNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmICh0aW1lIDwgdGhpcy50aW1lbGluZS5zdGFydERhdGUgfHwgdGltZSA+IHRoaXMudGltZWxpbmUuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLl9zY29wZSh0aW1lKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRpYWdyYW0ubm9kZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKHRoaXMuZGlhZ3JhbS5ub2Rlc1tpXSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLmNvbm5lY3RvcnMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IodGhpcy5kaWFncmFtLmNvbm5lY3RvcnNbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlkcyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihsID0+IGwubm9kZUlkICYmIGwudGltZSA9PT0gdGltZSkubWFwKGwgPT4gbC5ub2RlSWQpLlxyXG4gICAgICBmaWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSk7XHJcblxyXG4gICAgdGhpcy5faGlnaGxpZ2h0KGlkcyk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcblxyXG4gIHBhbigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyB8IERpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5ab29tUGFuO1xyXG4gIH1cclxuICBjdXJzb3IoKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgJiB+RGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0KGlkczogc3RyaW5nW10pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZGlhZ3JhbS5nZXRPYmplY3QoaWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgICAgb2JqLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gdGhpcy5fcHJpbWVyeUNvbG9yO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fcHJpbWVyeUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBpZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bmhpZ2hsaWdodCgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHRoaXMuX2hpZ2hMaWdodGVkSWRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZGlhZ3JhbS5nZXRPYmplY3QodGhpcy5faGlnaExpZ2h0ZWRJZHNbaV0pIGFzIGFueTtcclxuICAgICAgaWYgKG9iai5zb3VyY2VJRClcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3RvcihvYmopO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKG9iaik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IFtdO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XHJcbiAgPCEtLSBkaWFncmFtIC0tPlxyXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkaWFncmFtJ1wiIGNsYXNzPVwiY29sdW1uIGZsZXhcIj5cclxuICAgIDxtYXQtdG9vbGJhcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICB8XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwYW4oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYW4nIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcGFuXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ3VpZGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZmxleFwiPlxyXG4gICAgICA8IS0tIHRpbWVsaW5lIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiAqbmdJZj1cInRpbWVsaW5lPy5pdGVtcy5sZW5ndGggPiAxXCIgZGF0YS1oZWxwPVwidGltZWxpbmVcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRlIG9mIHRpbWVsaW5lLml0ZW1zOyBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJkYXRlLnRpbWUgPT09IHRpbWVsaW5lLmRhdGVcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodFRpbWUoZGF0ZS50aW1lKVwiIG1hdFJpcHBsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3QgfHwgIXRpbWVsaW5lLmVzdGltYXRlOyBlbHNlIGVzdGltYXRlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aG9cIiAqbmdJZj1cInVzZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAge3tkYXRlLnVzZXJJZCB8IHVzZXJOYW1lIHwgYXN5bmMgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgICAgICB7e2RhdGUudGltZSB8IGFtRGF0ZUZvcm1hdDogJ01NTSBEbyBIOm1tJyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3JcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIiAjZGlhZ3JhbSBkaXI9XCJsdHJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJyb3dzZSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgY2xhc3M9XCJmbGV4IGNvbHVtbiBmaWxsXCI+XHJcbiAgICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlcigkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcid8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIDwhLS0gdGFibGUgLS0+XHJcbiAgICA8bWF0LXRhYmxlIGNsYXNzPVwiZmxleFwiIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gU3ViamVjdCBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViamVjdFwiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnN1YmplY3R9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI9XCJzdGF0ZUlkXCI+e3snU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgICA8L21hdC1yb3c+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDwhLS0gcmFuZ2UgLS0+XHJcbiAgICA8ZWpzLXJhbmdlbmF2aWdhdG9yIHZhbHVlVHlwZT0nRGF0ZVRpbWUnIFt2YWx1ZV09cmFuZ2UgbGFiZWxGb3JtYXQ9J01NTScgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cInRoZW1lXCIgbGFiZWxJbnRlcnNlY3RBY3Rpb249J0hpZGUnIGVuYWJsZUdyb3VwaW5nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPSdyYW5nZUNoYW5nZWQoJGV2ZW50KSc+XHJcbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cclxuICAgICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzPlxyXG4gICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjwhLS0gYXJncyAtLT5cclxuPG5nLXRlbXBsYXRlICNhcmdzPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwic2VhcmNoXCIgI3NlYXJjaCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBkYXRhLWhlbHA9XCJzZWFyY2hcIiBbcGxhY2Vob2xkZXJdPVwiJ051bWJlcid8dHJhbnNsYXRlXCIgLz5cclxuICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlc3RpbWF0ZT5cclxuICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
531
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kb2N1bWVudC10cmFjZS9kb2N1bWVudC10cmFjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2RvY3VtZW50LXRyYWNlL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBOEMsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0IsZUFBZSxFQUFzQyxtQkFBbUIsRUFDNUcsUUFBUSxFQUFFLE9BQU8sRUFBZ0UsWUFBWSxFQUFhLG9CQUFvQixFQUF5QyxxQkFBcUIsRUFDN0wsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxN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YyxDQUFDLENBQUM7QUFJeEMsc0JBQXNCO0lBRmxDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0lBQzdDLHdCQUF3QjtHQUNYLHNCQUFzQixDQTBjbEM7U0ExY1ksc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBVGxDLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7OzBCQWdGaEQsTUFBTTsyQkFBQyxVQUFVO3lUQTNFRSxjQUFjO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBK0RELFVBQVU7c0JBQTVCLFNBQVM7dUJBQUMsTUFBTTtnQkFDSSxXQUFXO3NCQUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBRUMsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLGNBQWM7c0JBQXhDLFNBQVM7dUJBQUMsY0FBYztnQkFpRXpCLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTZWxlY3Rvck1vZGVsLCBTZWxlY3RvckNvbnN0cmFpbnRzLFxyXG4gIFRvb2xCYXNlLCBEaWFncmFtLCBNb3VzZUV2ZW50QXJncywgQ29ubmVjdG9yTW9kZWwsIE5vZGVNb2RlbCwgU25hcFNldHRpbmdzTW9kZWwsIERpYWdyYW1Ub29scywgVGV4dE1vZGVsLCBDb25uZWN0b3JDb25zdHJhaW50cywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncywgTGF5ZXJNb2RlbCwgQ29ubmVjdGlvblBvaW50T3JpZ2luLCBMYXlvdXRNb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgSUNoYW5nZWRFdmVudEFyZ3MsIFJhbmdlTmF2aWdhdG9yIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgZ2V0V2FybiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgR3VpZGVTdGVwIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tICcuLi91dGlsaXR5LXJlZic7XHJcbmltcG9ydCB7IERvY3VtZW50SW5mbywgU3lzdGVtU2VydmljZSwgUmFuZ2VJbmZvIH0gZnJvbSAnLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEd1aWRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3VpZGUvZ3VpZGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhbmVzUm91dGVyIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbm5lY3RvckRhdGEsIERpYWdyYW1JbmZvLCBNb3ZlTW9kZWwsIE5vZGVEYXRhLCBUaW1lbGluZSB9IGZyb20gJy4vdGltZWxpbmUnO1xyXG5pbXBvcnQgeyBFbnRlckV4aXRSaWdodCB9IGZyb20gJy4uLy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vLi4vY29yZS9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRWxlbWVudERhdGEsIFRyYWNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vdHJhY2UtZWxlbWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuXHJcbmNvbnN0IFdBUk5OSU5HX1BBVEggPSAnTSAxMy43NjM3MzUsMS44NDMzNzM1IEggNi4zMDM3MzQ5IGwgLTUuMjcsNS4yNyB2IDcuNDU5OTk5NSBsIDUuMjcsNS4yNyBoIDcuNDYwMDAwMSBsIDUuMjcsLTUuMjcgViA3LjExMzM3MzUgWiBtIC0zLjczLDE0LjI5OTk5OTUgYyAtMC43MjAwMDAxLDAgLTEuMzAwMDAwMSwtMC41OCAtMS4zMDAwMDAxLC0xLjMgMCwtMC43MiAwLjU4LC0xLjMgMS4zMDAwMDAxLC0xLjMgMC43MiwwIDEuMywwLjU4IDEuMywxLjMgMCwwLjcyIC0wLjU4LDEuMyAtMS4zLDEuMyB6IG0gMSwtNC4zIEggOS4wMzM3MzQ5IFYgNS44NDMzNzM1IGggMi4wMDAwMDAxIHonLFxyXG4gIEpVTVBfUEFUSCA9ICdNIDYsMTggMTQuNSwxMiA2LDYgWiBNIDE2LDYgdiAxMiBoIDIgViA2IFonO1xyXG5cclxuZnVuY3Rpb24gZ2V0UG9ydHMoKTogUG9pbnRQb3J0TW9kZWxbXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIHsgaWQ6ICdwb3J0MScsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAsIHk6IDAuNSB9IH0sXHJcbiAgICB7IGlkOiAncG9ydDInLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDEgfSB9LFxyXG4gICAgeyBpZDogJ3BvcnQzJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMSwgeTogMC41IH0gfSxcclxuICAgIHsgaWQ6ICdwb3J0NCcsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMCB9IH1cclxuICBdO1xyXG59XHJcblxyXG5jbGFzcyBJbmZvVG9vbCBleHRlbmRzIFRvb2xCYXNlIHtcclxuICBwdWJsaWMgb3ZlcnJpZGUgbW91c2VEb3duKGFyZ3M6IE1vdXNlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXNbMF07XHJcbiAgICAgIHN1cGVyLm1vdXNlRG93bihhcmdzKVxyXG4gICAgICB0aGlzLnRhcC5uZXh0KG5vZGUpO1xyXG4gICAgICB0aGlzLmluQWN0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWdyYW06IERpYWdyYW0sIHB1YmxpYyB0YXA6IFN1YmplY3Q8Tm9kZU1vZGVsPikge1xyXG4gICAgc3VwZXIoZGlhZ3JhbS5jb21tYW5kSGFuZGxlcik7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBTZWFyY2hNb2RlbCB7XHJcbiAgc2VhcmNoPzogc3RyaW5nLCBmb3JtSWQ/OiBzdHJpbmdcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtdHJhY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LXRyYWNlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH0sIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdlbGVtZW50JywgRW50ZXJFeGl0UmlnaHQpXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtdHJhY2UtdXRpbGl0eScgfSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFRyYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW0nKSBkaWFncmFtRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdGhlbWUgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgYWNjZW50ID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cDxTZWFyY2hNb2RlbD4oeyBzZWFyY2g6IG51bGwsIGZvcm1JZDogbnVsbCB9KTtcclxuICBtb2RlbDogRGlhZ3JhbUluZm87XHJcbiAgdGltZWxpbmU6IFRpbWVsaW5lO1xyXG4gIGRpYWdyYW1Db25zdHJhaW50czogRGlhZ3JhbUNvbnN0cmFpbnRzID0gRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBEaWFncmFtQ29uc3RyYWludHMuQnJpZGdpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkxpbmVSb3V0aW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5QYW4gfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlpvb207XHJcbiAgZGlhZ3JhbVRvb2w6IERpYWdyYW1Ub29scyA9IERpYWdyYW1Ub29scy5TaW5nbGVTZWxlY3Q7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IHtcclxuICAgIHR5cGU6ICdDb21wbGV4SGllcmFyY2hpY2FsVHJlZScsXHJcbiAgICBjb25uZWN0aW9uUG9pbnRPcmlnaW46IENvbm5lY3Rpb25Qb2ludE9yaWdpbi5EaWZmZXJlbnRQb2ludCxcclxuICAgIGhvcml6b250YWxTcGFjaW5nOiA1MCxcclxuICAgIGVuYWJsZVJvdXRpbmc6IHRydWUsXHJcbiAgICB2ZXJ0aWNhbFNwYWNpbmc6IDUwLFxyXG4gICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ0NlbnRlcicsXHJcbiAgICBjb25uZWN0aW9uRGlyZWN0aW9uOiAnT3JpZW50YXRpb24nLFxyXG4gICAgb3JpZW50YXRpb246ICdUb3BUb0JvdHRvbSdcclxuICB9IGFzIExheW91dE1vZGVsO1xyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5nczogU25hcFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgfTtcclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5nczogU2Nyb2xsU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgbWF4Wm9vbTogMi41XHJcbiAgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDgwMCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJpbWVyeUNvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXM6IFNlbGVjdG9yTW9kZWwgPSB7XHJcbiAgICBjb25zdHJhaW50czogU2VsZWN0b3JDb25zdHJhaW50cy5Vc2VySGFuZGxlLFxyXG4gICAgdXNlckhhbmRsZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdpbmZvJyxcclxuICAgICAgICBwYXRoRGF0YTogJ00xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeicsXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgc2lkZTogJ1JpZ2h0JyxcclxuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ0JvdHRvbScsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgIHBhdGhDb2xvcjogdGhpcy5fcHJpbWVyeUNvbG9yLFxyXG4gICAgICAgIHNpemU6IDQwLFxyXG4gICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDAgfVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfTtcclxuICBwdWJsaWMgZ2V0Q3VzdG9tVG9vbDogRnVuY3Rpb24gPSB0aGlzLmdldFRvb2wuYmluZCh0aGlzKTtcclxuICBub2RlOiBOb2RlTW9kZWw7XHJcbiAgcHJpdmF0ZSBfc3RhcnQ6IERhdGU7XHJcbiAgcHJpdmF0ZSBfZW5kOiBEYXRlO1xyXG4gIHByaXZhdGUgX2luZm9SZWY6IFBhbmVSZWY8VHJhY2VFbGVtZW50Q29tcG9uZW50PjtcclxuICBwdWJsaWMgZ2V0VG9vbChhY3Rpb246IHN0cmluZyk6IFRvb2xCYXNlIHtcclxuICAgIGxldCB0b29sOiBUb29sQmFzZTtcclxuICAgIGlmIChhY3Rpb24gPT09ICdpbmZvJykge1xyXG4gICAgICB0b29sID0gbmV3IEluZm9Ub29sKHRoaXMuZGlhZ3JhbSwgdGhpcy5fdGFwKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b29sO1xyXG4gIH1cclxuICBtb2RlOiAnZGlhZ3JhbScgfCAnYnJvd3NlJyB8IG51bGwgPSAnYnJvd3NlJztcclxuICByYW5nZTogKERhdGUgfCBudW1iZXIpW107XHJcbiAgcmFuZ2VEYXRhOiBSYW5nZUluZm9bXTtcclxuICBsb2FkaW5nOiBQcm9ncmVzc0Jhck1vZGUgPSAncXVlcnknO1xyXG4gIEBWaWV3Q2hpbGQoJ2FyZ3MnKSBmaWx0ZXJBcmdzOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaCcpIHNlYXJjaElucHV0OiBNYXRJbnB1dDtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RG9jdW1lbnRJbmZvPjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZChSYW5nZU5hdmlnYXRvcikgcmFuZ2VOYXZpZ2F0b3I6IFJhbmdlTmF2aWdhdG9yO1xyXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBbJ251bWJlcicsICdzdWJqZWN0JywgJ3N0YXRlSWQnXTtcclxuICBwcml2YXRlIF9oaWdoTGlnaHRlZElkczogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF90YXAgPSBuZXcgU3ViamVjdDxOb2RlTW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0ZXNjaGFuZ2UgPSBuZXcgU3ViamVjdDx7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfT4oKTtcclxuICAvKiogd29ya2Zsb3cgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChVdGlsaXR5UmVmKVxyXG4gICAgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxEaWFncmFtSW5mbywgTW92ZU1vZGVsLCBEaWFncmFtSW5mbywgbnVtYmVyPixcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BhbmU6IFBhbmVSZWY8RG9jdW1lbnRUcmFjZUNvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBwcml2YXRlIF9ndWlkZTogR3VpZGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgdGhpcy5hY2NlbnQgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gICAgICAvL3RoaXMucmFuZ2VOYXZpZ2F0b3IucmVmcmVzaCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnJhbmdlKCkuc3Vic2NyaWJlKHIgPT4gdGhpcy5yYW5nZURhdGEgPSByKTtcclxuICAgIHRoaXMuX2RhdGVzY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9zdGFydCA9IHIuc3RhcnQsIHRoaXMuX2VuZCA9IHIuZW5kO1xyXG4gICAgICB0aGlzLl9saXN0KCk7XHJcbiAgICB9KTtcclxuICAgIC8vbGV0IHIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJhY2UtcmFuZ2UnKTtcclxuXHJcbiAgICB0aGlzLnJhbmdlID0gW25vdy5hZGQoLTIsICd3JykudG9EYXRlKCksXHJcbiAgICBub3cudG9EYXRlKCldO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDIwMCkpLlxyXG4gICAgICBzdWJzY3JpYmUodGhpcy5fbGlzdC5iaW5kKHRoaXMpKTtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2UoKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIGNvbnN0IHsgZG9jdW1lbnRJZCB9ID0gcDtcclxuICAgICAgZG9jdW1lbnRJZCAmJiB0aGlzLl9vcGVuKChkb2N1bWVudElkIGFzIHN0cmluZykuZGVjb2RlSWQoKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucmVzaXplZCgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5kaWFncmFtPy5yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIG9wZW5GaWx0ZXIoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3Blbih0aGlzLmZpbHRlckFyZ3MsIGV2dC50YXJnZXQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLm9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PlxyXG4gICAgICB0aGlzLnNlYXJjaElucHV0LmZvY3VzKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9saXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gJ3F1ZXJ5JztcclxuICAgIHRoaXMuX3NlcnZpY2UuZmluZEFsbCh7IC4uLnRoaXMuZm9ybS52YWx1ZSwgc3RhcnQ6IHRoaXMuX3N0YXJ0LCBlbmQ6IHRoaXMuX2VuZCB9KS5zdWJzY3JpYmUobCA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UobCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFuZ2VDaGFuZ2VkKGFyZ3M6IElDaGFuZ2VkRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICAvL2xvY2FsU3RvcmFnZS5zZXRJdGVtKCd0cmFjZS1yYW5nZScsIGFyZ3MuKTtcclxuICAgIHRoaXMuX2RhdGVzY2hhbmdlLm5leHQoYXJncyBhcyBhbnkpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5mMScsIFsnJGV2ZW50J10pXHJcbiAgZ3VpZGUoZXZ0PzogRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBzdGVwczogR3VpZGVTdGVwW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnRpbWVsaW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVsaW5lLml0ZW1zLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9dGltZWxpbmVdJyxcclxuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RyYWNlVGltZWxpbmVIZWxwJylcclxuICAgICAgICB9KTtcclxuICAgICAgc3RlcHMucHVzaCh7XHJcbiAgICAgICAgc2VsZWN0b3I6ICdnW2lkXj1zdGFydF0nLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RyYWNlRWxlbWVudEhlbHAnKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHN0ZXBzLnB1c2goe1xyXG4gICAgICBzZWxlY3RvcjogJ1tkYXRhLWhlbHA9c2VhcmNoXScsXHJcbiAgICAgIHBvc2l0aW9uOiAnQmVsb3cnLFxyXG4gICAgICBjb250ZW50OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdUcmFjZVNlYXJjaEhlbHAnKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9ndWlkZS5zdGFydCh7XHJcbiAgICAgIG5hbWU6ICd0cmFjZScsXHJcbiAgICAgIHN0ZXBzXHJcbiAgICB9KTtcclxuICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgYnJvd3NlKCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdKTtcclxuICAgIHRoaXMuX3JvdXRlci5jb2xsYXBzZSgpO1xyXG4gICAgdGhpcy5tb2RlID0gJ2Jyb3dzZSc7XHJcbiAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3BlbihpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMubG9hZGluZyA9ICdidWZmZXInO1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZShpZCkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IFtdO1xyXG4gICAgICB0aGlzLm1vZGVsID0gZTtcclxuICAgICAgdGhpcy5fdGltZWxpbmUoKTtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RpYWdyYW0nO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbSA9IG5ldyBEaWFncmFtKHtcclxuICAgICAgICB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyxcclxuICAgICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLFxyXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IHRoaXMuc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICB0b29sOiB0aGlzLmRpYWdyYW1Ub29sLFxyXG4gICAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLFxyXG4gICAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICAgIG5vZGVzOiBlLmRpYWdyYW0ubm9kZXMsXHJcbiAgICAgICAgY29ubmVjdG9yczogZS5kaWFncmFtLmNvbm5lY3RvcnMsXHJcbiAgICAgICAgc2VsZWN0aW9uQ2hhbmdlOiB0aGlzLnNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgIH0sIHRoaXMuZGlhZ3JhbUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24oKTtcclxuICAgICAgdGhpcy5faW5kaWNhdG9ycygpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uZml0VG9QYWdlKCk7XHJcblxyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgICB0aGlzLl9zYi5lcnJvcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5vZGVEZWZhdWx0cyA9IChub2RlOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwgPT4ge1xyXG4gICAgY29uc3QgeyBpbmRpY2F0b3IsIHZpcnR1YWwgfSA9IG5vZGUuYWRkSW5mbyBhcyBOb2RlRGF0YSB8fCB7fTtcclxuXHJcbiAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgIG5vZGUuY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuUG9pbnRlckV2ZW50cyB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwLFxyXG4gICAgICAgIG5vZGUuc3R5bGUuc3Ryb2tlV2lkdGggPSAwLFxyXG4gICAgICAgIG5vZGUud2lkdGggPSBub2RlLmhlaWdodCA9IDE1O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5pZCAhPT0gJ3ZlcnNpb24nKSB7XHJcbiAgICAgIG5vZGUuY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuSW5Db25uZWN0IHwgTm9kZUNvbnN0cmFpbnRzLk91dENvbm5lY3QgfFxyXG4gICAgICAgIE5vZGVDb25zdHJhaW50cy5Qb2ludGVyRXZlbnRzIHwgTm9kZUNvbnN0cmFpbnRzLlNlbGVjdDtcclxuICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKG5vZGUpO1xyXG4gICAgICBub2RlLnBvcnRzID0gZ2V0UG9ydHMoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuICBwdWJsaWMgY29ubkRlZmF1bHRzID0gKGNvbm5lY3RvcjogQ29ubmVjdG9yTW9kZWwpID0+IHtcclxuICAgIGNvbnN0IHsgdmlydHVhbCB9ID0gY29ubmVjdG9yLmFkZEluZm8gYXMgQ29ubmVjdG9yRGF0YSB8fCB7fTtcclxuICAgIGNvbm5lY3Rvci5jb25zdHJhaW50cyA9IENvbm5lY3RvckNvbnN0cmFpbnRzLlJlYWRPbmx5ICYgfkNvbm5lY3RvckNvbnN0cmFpbnRzLlNlbGVjdDtcclxuXHJcbiAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3Rvcihjb25uZWN0b3IpO1xyXG4gIH1cclxuICBvcGVuKGl0ZW06IERvY3VtZW50SW5mbykge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IGRvY3VtZW50SWQ6IGl0ZW0uaWQuZW5jb2RlSWQoKSB9IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGltZWxpbmUoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IFtdLCBzdWJtaXNzaW9uczogRGF0ZVtdID0gW107XHJcbiAgICBsZXQgbWluRGF0ZTogRGF0ZSwgbWF4RGF0ZTogRGF0ZSwgZXN0aW1hdGU6IGJvb2xlYW47XHJcbiAgICB0aGlzLm1vZGVsLmxvZy5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICBjb25zdCB7IHRpbWUsIHVzZXJJZCB9ID0gbDtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdTdWJtaXQnOlxyXG4gICAgICAgICAgc3VibWlzc2lvbnMucHVzaCh0aW1lKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFpdGVtcy5maW5kKHQgPT4gdC50aW1lID09PSB0aW1lKSlcclxuICAgICAgICBpdGVtcy5wdXNoKHsgdGltZSwgdXNlcklkIH0pO1xyXG4gICAgICBpZiAoIW1pbkRhdGUgfHwgZGF5anModGltZSkuaXNCZWZvcmUobWluRGF0ZSkpIG1pbkRhdGUgPSB0aW1lO1xyXG4gICAgICBpZiAoIW1heERhdGUgfHwgZGF5anModGltZSkuaXNBZnRlcihtYXhEYXRlKSkgbWF4RGF0ZSA9IHRpbWU7XHJcbiAgICAgIGlmIChsLmVzdGltYXRlKSBlc3RpbWF0ZSA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudGltZWxpbmUgPSB7XHJcbiAgICAgIGl0ZW1zLCBtaW5EYXRlLCBtYXhEYXRlLFxyXG4gICAgICBzdWJtaXNzaW9ucywgZXN0aW1hdGVcclxuICAgIH0gYXMgYW55O1xyXG4gICAgdGhpcy5fc2NvcGUoc3VibWlzc2lvbnNbc3VibWlzc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3Njb3BlKGRhdGU6IERhdGUpIHtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMudGltZWxpbmUuc3VibWlzc2lvbnMucmV2ZXJzZSgpLlxyXG4gICAgICBmaW5kKHMgPT4gcyA8PSBkYXRlKSxcclxuICAgICAgbmV4dERhdGUgPSB0aGlzLnRpbWVsaW5lLnN1Ym1pc3Npb25zLmZpbmQocyA9PiBzID4gZGF0ZSksXHJcbiAgICAgIGVuZERhdGUgPSBuZXh0RGF0ZSA/IG5ldyBEYXRlKG5ldyBEYXRlKG5leHREYXRlKS52YWx1ZU9mKCkgLSAxKS50b0pTT04oKSBhcyBhbnkgOiB0aGlzLnRpbWVsaW5lLm1heERhdGU7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudGltZWxpbmUsIHtcclxuICAgICAgc3RhcnREYXRlLFxyXG4gICAgICBlbmREYXRlLFxyXG4gICAgICByZWNpcGllbnRzOiB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5yZWNlaXZlZCA+PSBzdGFydERhdGUgJiYgci5yZWNlaXZlZCA8PSBlbmREYXRlKSxcclxuICAgICAgbG9nOiB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPj0gc3RhcnREYXRlICYmIGwudGltZSA8PSBlbmREYXRlKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljYXRvcnMoKSB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5tb2RlbC5sb2cuZm9yRWFjaChsID0+IHtcclxuICAgICAgc3dpdGNoIChsLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdOb2RlJzpcclxuICAgICAgICAgIGlmIChsLmVycm9yKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246ICdYTWluWU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGwuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0JvdHRvbUNlbnRlcidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBsLm5vZGVJZFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOb2RlSnVtcCc6XHJcbiAgICAgICAgICAvL2luZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAvLyAgc2hhcGU6IHtcclxuICAgICAgICAgIC8vICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgIC8vICAgIGRhdGE6IEpVTVBfUEFUSCxcclxuICAgICAgICAgIC8vICAgIGFsaWduOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAvLyAgfSxcclxuICAgICAgICAgIC8vICBzdHlsZToge1xyXG4gICAgICAgICAgLy8gICAgZmlsbDogJ2JsYWNrJ1xyXG4gICAgICAgICAgLy8gIH0sXHJcbiAgICAgICAgICAvLyAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgLy8gICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgLy8gICAgcGFyZW50SWQ6IGwubm9kZUlkXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgLy99KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcignaW5kaWNhdG9ycycpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmRpYWdyYW0uZ2V0Tm9kZU9iamVjdCgoaS5hZGRJbmZvIGFzIE5vZGVEYXRhKS5wYXJlbnRJZCk7XHJcbiAgICAgIGkub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgcGFyZW50LndpZHRoIC8gMiAtIDE1LFxyXG4gICAgICAgIGkub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZICsgcGFyZW50LmhlaWdodCAvIDIgLSAxNTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZExheWVyKHsgaWQ6ICdpbmRpY2F0b3JzJyB9LCBpbmRpY2F0b3JzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVOb2RlKG5vZGU6IE5vZGVNb2RlbCkge1xyXG4gICAgY29uc3QgbG9nID0gdGhpcy50aW1lbGluZS5sb2cuZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQpO1xyXG5cclxuICAgIGlmIChsb2cubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0aGlzLnRpbWVsaW5lLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQpO1xyXG5cclxuICAgICAgbm9kZS5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBub2RlLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9IGxvZy5maW5kKGwgPT4gbC5lc3RpbWF0ZSkgPyAnMyAyJyA6ICcnO1xyXG5cclxuICAgICAgbm9kZS5zdHlsZS5maWxsID0gcmVjaXBpZW50cy5maW5kKHIgPT4gci5wZW5kaW5nICYmICFyLmVzdGltYXRlKSA/IHRoaXMuX2FjY2VudENvbG9yIDogJ3doaXRlJztcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgbm9kZS5zdHlsZS5maWxsID0gJ3doaXRlJyxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZUNvbG9yID0gJ2RhcmtncmF5JyxcclxuICAgICAgICBub2RlLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICc2IDInO1xyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZUNvbm5lY3Rvcihjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSB7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLnRpbWVsaW5lLmxvZy5maWx0ZXIobCA9PiBsLnNvdXJjZUlkID09PSBjb25uZWN0b3Iuc291cmNlSUQgJiYgbC50YXJnZXRJZCA9PSBjb25uZWN0b3IudGFyZ2V0SUQpO1xyXG5cclxuICAgIGlmIChsb2cubGVuZ3RoKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gbG9nLmZpbmQobCA9PiBsLmVzdGltYXRlKSA/ICczIDInIDogJyc7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSAnZGFya2dyYXknLFxyXG4gICAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnNiAyJztcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmVyc2lvbigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5yZW1vdmVMYXllcihcclxuICAgICAgJ3ZlcnNpb24nKTtcclxuICAgIGNvbnN0IHZlcnNpb24gPSB7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgdHlwZTogJ1RleHQnLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RpYWdyYW1WZXJzaW9uJywgdGhpcy5tb2RlbC5kaWFncmFtLnZlcnNpb24pXHJcbiAgICAgIH0sXHJcbiAgICAgIG9mZnNldFk6IDUsXHJcbiAgICAgIG9mZnNldFg6IDUsXHJcbiAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDUwLFxyXG4gICAgICAgIG9wYWNpdHk6IC4xXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuUmVhZE9ubHlcclxuICAgIH0gYXMgVGV4dE1vZGVsO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZExheWVyKHtcclxuICAgICAgaWQ6ICd2ZXJzaW9uJyxcclxuICAgICAgb2JqZWN0czogW1xyXG4gICAgICAgIHZlcnNpb25dXHJcbiAgICB9IGFzIExheWVyTW9kZWwpO1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZCh2ZXJzaW9uKTtcclxuICB9XHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2dDogSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncykge1xyXG4gICAgaWYgKGV2dC5zdGF0ZSAhPT0gJ0NoYW5nZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLl91bmhpZ2hsaWdodCgpO1xyXG4gICAgaWYgKGV2dC5uZXdWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgbGV0IG5vZGUgPSBldnQubmV3VmFsdWVbMF0gYXMgTm9kZU1vZGVsO1xyXG5cclxuICAgICAgY29uc3QgeyBpbmRpY2F0b3IsIHBhcmVudElkIH0gPSBub2RlLmFkZEluZm8gYXMgTm9kZURhdGEgfHwge307XHJcblxyXG4gICAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KHBhcmVudElkKTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uc2VsZWN0KFtub2RlXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaWRzID0gKChub2RlIGFzIGFueSkuaW5FZGdlcykuY29uY2F0KChub2RlIGFzIGFueSkub3V0RWRnZXMpO1xyXG4gICAgICAgIGlkcy5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodChpZHMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmZvUmVmKSB0aGlzLl9pbmZvUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFRyYWNlRWxlbWVudENvbXBvbmVudCwge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgdGltZWxpbmU6IHRoaXMudGltZWxpbmUsXHJcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxyXG4gICAgICAgICAgICB1dGlsaXR5UmVmOiB0aGlzLl91dGlsaXR5UmVmLFxyXG4gICAgICAgICAgfSBhcyBFbGVtZW50RGF0YSxcclxuICAgICAgICAgIHBvbGljeTogT3BlblBvbGljeS5UYWJcclxuICAgICAgICB9KS50aGVuKChlOiBQYW5lUmVmKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9pbmZvUmVmID0gZTtcclxuICAgICAgICAgIGUuYW5pbWF0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB0aGlzLl9yb3V0ZXIuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5ub2RlID0gbnVsbDtcclxuICB9XHJcbiAgcHVibGljIGhpZ2hsaWdodFRpbWUodGltZTogRGF0ZSkge1xyXG4gICAgdGhpcy50aW1lbGluZS5kYXRlID0gdGltZTtcclxuICAgIHRoaXMuZGlhZ3JhbS5jbGVhclNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5fdW5oaWdobGlnaHQoKTtcclxuICAgIGlmICh0aW1lIDwgdGhpcy50aW1lbGluZS5zdGFydERhdGUgfHwgdGltZSA+IHRoaXMudGltZWxpbmUuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLl9zY29wZSh0aW1lKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRpYWdyYW0ubm9kZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKHRoaXMuZGlhZ3JhbS5ub2Rlc1tpXSk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kaWFncmFtLmNvbm5lY3RvcnMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVDb25uZWN0b3IodGhpcy5kaWFncmFtLmNvbm5lY3RvcnNbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlkcyA9IHRoaXMudGltZWxpbmUubG9nLmZpbHRlcihsID0+IGwubm9kZUlkICYmIGwudGltZSA9PT0gdGltZSkubWFwKGwgPT4gbC5ub2RlSWQpLlxyXG4gICAgICBmaWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSk7XHJcblxyXG4gICAgdGhpcy5faGlnaGxpZ2h0KGlkcyk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcblxyXG4gIHBhbigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyB8IERpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5ab29tUGFuO1xyXG4gIH1cclxuICBjdXJzb3IoKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgJiB+RGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLlNpbmdsZVNlbGVjdDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0KGlkczogc3RyaW5nW10pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZGlhZ3JhbS5nZXRPYmplY3QoaWRzW2ldKSBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmouc291cmNlSUQpXHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICAgIG9iai50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgICAgb2JqLnRhcmdldERlY29yYXRvci5zdHlsZS5maWxsID0gdGhpcy5fcHJpbWVyeUNvbG9yO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fcHJpbWVyeUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaExpZ2h0ZWRJZHMgPSBpZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bmhpZ2hsaWdodCgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHRoaXMuX2hpZ2hMaWdodGVkSWRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZGlhZ3JhbS5nZXRPYmplY3QodGhpcy5faGlnaExpZ2h0ZWRJZHNbaV0pIGFzIGFueTtcclxuICAgICAgaWYgKG9iai5zb3VyY2VJRClcclxuICAgICAgICB0aGlzLl9kZWNvcmF0ZUNvbm5lY3RvcihvYmopO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fZGVjb3JhdGVOb2RlKG9iaik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdoTGlnaHRlZElkcyA9IFtdO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XHJcbiAgPCEtLSBkaWFncmFtIC0tPlxyXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkaWFncmFtJ1wiIGNsYXNzPVwiY29sdW1uIGZsZXhcIj5cclxuICAgIDxtYXQtdG9vbGJhcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImJyb3dzZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0JhY2snIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmFycm93X2JhY2s8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICB8XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwYW4oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYW4nIHwgdHJhbnNsYXRlXCI+PHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tcGFuXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ3VpZGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZmxleFwiPlxyXG4gICAgICA8IS0tIHRpbWVsaW5lIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiAqbmdJZj1cInRpbWVsaW5lPy5pdGVtcy5sZW5ndGggPiAxXCIgZGF0YS1oZWxwPVwidGltZWxpbmVcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRlIG9mIHRpbWVsaW5lLml0ZW1zOyBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJkYXRlLnRpbWUgPT09IHRpbWVsaW5lLmRhdGVcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodFRpbWUoZGF0ZS50aW1lKVwiIG1hdFJpcHBsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxhc3QgfHwgIXRpbWVsaW5lLmVzdGltYXRlOyBlbHNlIGVzdGltYXRlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aG9cIiAqbmdJZj1cInVzZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAge3tkYXRlLnVzZXJJZCB8IHVzZXJOYW1lIHwgYXN5bmMgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgICAgICB7e2RhdGUudGltZSB8IGFtRGF0ZUZvcm1hdDogJ01NTSBEbyBIOm1tJyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRpY2F0b3JcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIiAjZGlhZ3JhbSBkaXI9XCJsdHJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIGJyb3dzZSAtLT5cclxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgY2xhc3M9XCJmbGV4IGNvbHVtbiBmaWxsXCI+XHJcbiAgICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkZpbHRlcigkZXZlbnQpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcid8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LXRvb2xiYXI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIDwhLS0gdGFibGUgLS0+XHJcbiAgICA8bWF0LXRhYmxlIGNsYXNzPVwiZmxleFwiIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICA8IS0tIE51bWJlciBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibnVtYmVyXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+e3snTnVtYmVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBjbGFzcz1cImRhdGEtY29sdW1uXCI+IHt7aXRlbS5udW1iZXJ9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gU3ViamVjdCBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViamVjdFwiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPnt7J1N1YmplY3QnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIj4ge3tpdGVtLnN1YmplY3R9fSA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBTdGF0ZUlkIGNvbHVtbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0ZUlkXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI9XCJzdGF0ZUlkXCI+e3snU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxyXG4gICAgICAgICAgPGJpemRvYy1zdGF0dXMgW3N0YXRlSWRdPVwiaXRlbS5zdGF0ZUlkXCI+PC9iaXpkb2Mtc3RhdHVzPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcbiAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbihpdGVtKVwiPlxyXG4gICAgICA8L21hdC1yb3c+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDwhLS0gcmFuZ2UgLS0+XHJcbiAgICA8ZWpzLXJhbmdlbmF2aWdhdG9yIHZhbHVlVHlwZT0nRGF0ZVRpbWUnIFt2YWx1ZV09cmFuZ2UgbGFiZWxGb3JtYXQ9J01NTScgYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cInRoZW1lXCIgbGFiZWxJbnRlcnNlY3RBY3Rpb249J0hpZGUnIGVuYWJsZUdyb3VwaW5nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwiWWVhcnNcIiBpbnRlcnZhbFR5cGU9J01vbnRocydcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQpPSdyYW5nZUNoYW5nZWQoJGV2ZW50KSc+XHJcbiAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcy1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDxlLXJhbmdlbmF2aWdhdG9yLXNlcmllcyBbZGF0YVNvdXJjZV09J3JhbmdlRGF0YScgW2ZpbGxdPVwiYWNjZW50XCIgdHlwZT0nQXJlYScgeE5hbWU9J2RhdGUnIHlOYW1lPSdjb3VudCcgd2lkdGg9Mj5cclxuICAgICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzPlxyXG4gICAgICA8L2UtcmFuZ2VuYXZpZ2F0b3Itc2VyaWVzLWNvbGxlY3Rpb24+XHJcbiAgICA8L2Vqcy1yYW5nZW5hdmlnYXRvcj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbjwhLS0gYXJncyAtLT5cclxuPG5nLXRlbXBsYXRlICNhcmdzPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwic2VhcmNoXCIgI3NlYXJjaCBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBkYXRhLWhlbHA9XCJzZWFyY2hcIiBbcGxhY2Vob2xkZXJdPVwiJ051bWJlcid8dHJhbnNsYXRlXCIgLz5cclxuICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgdHlwZT1cImZvcm1zXCIgW3BsYWNlaG9sZGVyXT1cIidGb3JtJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtSWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlc3RpbWF0ZT5cclxuICB7eydFc3RpbWF0ZScgfCB0cmFuc2xhdGV9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -27,9 +27,9 @@ export class ReassignDialog {
27
27
  pipe(map(r => r.filter(u => this._data.exclude.indexOf(u.id) < 0)));
28
28
  }
29
29
  }
30
- ReassignDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
31
- ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i10.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: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: ReassignDialog, decorators: [{
30
+ ReassignDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ReassignDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.AccountService }], target: i0.ɵɵFactoryTarget.Component });
31
+ ReassignDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ReassignDialog, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i10.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: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ReassignDialog, decorators: [{
33
33
  type: Component,
34
34
  args: [{ template: "<h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" class=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" formControlName=\"userId\" required>\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<mat-form-field>\r\n <mat-select placeholder=\"{{'Role' | translate}}\" formControlName=\"role\">\r\n <mat-option>{{'None'| translate}}</mat-option>\r\n <mat-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>-->\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" placeholder=\"{{'Note'| translate}}\" maxlength=\"200\"></textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
35
35
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{