@bizdoc/core 3.0.5 → 3.2.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.
- package/assets/system/Workday.svg +37 -37
- package/assets/themes/brown.min.css +1 -1
- package/assets/themes/dark.min.css +1 -1
- package/assets/themes/deep-purple-light-blue.min.css +1 -1
- package/assets/themes/deep-purple-teal.min.css +1 -1
- package/assets/themes/default.min.css +44 -1
- package/assets/themes/green.min.css +1 -1
- package/assets/themes/indigo-amber.min.css +1 -1
- package/assets/themes/indigo.min.css +1 -1
- package/esm2022/bizdoc-core.mjs +1 -1
- package/esm2022/lib/admin/admin-dismiss.service.mjs +4 -4
- package/esm2022/lib/admin/admin-menu.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +10 -10
- package/esm2022/lib/admin/architecture/declarations.mjs +3 -2
- package/esm2022/lib/admin/architecture/designer-element.component.mjs +25 -22
- package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/designer.base.mjs +11 -14
- package/esm2022/lib/admin/architecture/designer.component.mjs +9 -8
- package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -5
- package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/control.component.mjs +4 -7
- package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/cube.component.mjs +14 -15
- package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +6 -8
- package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/folder.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +9 -11
- package/esm2022/lib/admin/architecture/elements/form.component.mjs +13 -14
- package/esm2022/lib/admin/architecture/elements/guide.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/job.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/node.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/policy.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/report.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/role.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/elements/rule.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/source.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -5
- package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/elements/type.component.mjs +7 -8
- package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/utility.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/view.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/widget.component.mjs +5 -6
- package/esm2022/lib/admin/architecture/icon-picker.component.mjs +12 -7
- package/esm2022/lib/admin/core/ace.input.mjs +14 -13
- package/esm2022/lib/admin/core/color-picker.input.mjs +5 -5
- package/esm2022/lib/admin/core/localized-string.component.mjs +8 -7
- package/esm2022/lib/admin/core/search.input.mjs +5 -5
- package/esm2022/lib/admin/diff/configuration-diff.component.mjs +8 -7
- package/esm2022/lib/admin/document-trace/document-trace.component.mjs +19 -13
- package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +5 -5
- package/esm2022/lib/admin/document-trace/timeline.mjs +1 -1
- package/esm2022/lib/admin/document-trace/trace-element.component.mjs +6 -6
- package/esm2022/lib/admin/form/designer/box-designer.component.mjs +6 -6
- package/esm2022/lib/admin/form/designer/declarations.mjs +1 -1
- package/esm2022/lib/admin/form/designer/design-control.component.mjs +4 -4
- package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/section.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/settings.component.mjs +4 -4
- package/esm2022/lib/admin/form/form.resolve.service.mjs +4 -4
- package/esm2022/lib/admin/form/workflow/node-ref.mjs +1 -1
- package/esm2022/lib/admin/form/workflow/node.component.mjs +35 -35
- package/esm2022/lib/admin/form/workflow/role-node.component.mjs +5 -5
- package/esm2022/lib/admin/form/workflow/workflow.component.mjs +10 -12
- package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +9 -9
- package/esm2022/lib/admin/patterns/patterns.component.mjs +5 -5
- package/esm2022/lib/admin/permissions/permissions.component.mjs +5 -5
- package/esm2022/lib/admin/positions/positions-popup.component.mjs +8 -7
- package/esm2022/lib/admin/positions/positions.component.mjs +9 -9
- package/esm2022/lib/admin/profiler/outofoffice.component.mjs +6 -6
- package/esm2022/lib/admin/profiler/profiler.component.mjs +7 -7
- package/esm2022/lib/admin/system.service.mjs +15 -11
- package/esm2022/lib/admin/utility-ref.mjs +7 -5
- package/esm2022/lib/admin/utility-wrapper.component.mjs +4 -4
- package/esm2022/lib/admin/utility.pane.component.mjs +4 -4
- package/esm2022/lib/app.component.mjs +7 -7
- package/esm2022/lib/bizdoc.module.mjs +5 -5
- package/esm2022/lib/browse/browse-items.component.mjs +34 -33
- package/esm2022/lib/browse/browse.mobile.component.mjs +11 -8
- package/esm2022/lib/browse/browse.pane.component.mjs +9 -9
- package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +12 -12
- package/esm2022/lib/browse/filter/filter.component.mjs +27 -39
- package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
- package/esm2022/lib/chat/chat-info.mjs +9 -8
- package/esm2022/lib/chat/chat.mobile.component.mjs +5 -5
- package/esm2022/lib/chat/chat.service.mjs +6 -6
- package/esm2022/lib/chat/contacts.component.mjs +10 -9
- package/esm2022/lib/chat/contacts.pane.component.mjs +4 -4
- package/esm2022/lib/chat/conversation.component.mjs +8 -8
- package/esm2022/lib/chat/conversation.pane.component.mjs +4 -4
- package/esm2022/lib/compose/action/action-picker.component.mjs +7 -10
- package/esm2022/lib/compose/action/action-ref.mjs +1 -1
- package/esm2022/lib/compose/action/action.base.mjs +1 -1
- package/esm2022/lib/compose/action/action.dialog.mjs +5 -5
- package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +7 -7
- package/esm2022/lib/compose/action/assign-action.component.mjs +5 -5
- package/esm2022/lib/compose/action/moveto-action.component.mjs +6 -6
- package/esm2022/lib/compose/action/return-action.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/attachments.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/progress-button.directive.mjs +4 -4
- package/esm2022/lib/compose/box/box.component.mjs +5 -5
- package/esm2022/lib/compose/box/control.component.mjs +4 -4
- package/esm2022/lib/compose/box/row.component.mjs +4 -4
- package/esm2022/lib/compose/can-deactivate-changes.service.mjs +4 -4
- package/esm2022/lib/compose/comments/comment.component.mjs +18 -15
- package/esm2022/lib/compose/comments/comments.component.mjs +7 -7
- package/esm2022/lib/compose/comments/comments.pane.component.mjs +5 -5
- package/esm2022/lib/compose/comments/edit-comment.component.mjs +4 -4
- package/esm2022/lib/compose/comments/edits.component.mjs +5 -5
- package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +6 -6
- package/esm2022/lib/compose/comments/votes.component.mjs +5 -5
- package/esm2022/lib/compose/compose-resolve.service.mjs +4 -4
- package/esm2022/lib/compose/compose.mobile.component.mjs +8 -8
- package/esm2022/lib/compose/compose.pane.component.mjs +11 -11
- package/esm2022/lib/compose/copy/copy.dialog.mjs +5 -5
- package/esm2022/lib/compose/dismiss.service.mjs +4 -4
- package/esm2022/lib/compose/document-resolve.service.mjs +7 -7
- package/esm2022/lib/compose/document-resolver.service.mjs +4 -4
- package/esm2022/lib/compose/document.component.mjs +4 -4
- package/esm2022/lib/compose/document.mobile.component.mjs +4 -4
- package/esm2022/lib/compose/document.pane.component.mjs +4 -4
- package/esm2022/lib/compose/events/events.component.mjs +5 -5
- package/esm2022/lib/compose/form-ref.mjs +1 -1
- package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +5 -5
- package/esm2022/lib/compose/form.component.mjs +59 -23
- package/esm2022/lib/compose/new-menu.component.mjs +8 -7
- package/esm2022/lib/compose/overlay.component.exp.mjs +4 -4
- package/esm2022/lib/compose/privilage.directive.mjs +7 -7
- package/esm2022/lib/compose/recipient-resolver.service.mjs +4 -4
- package/esm2022/lib/compose/state.component.mjs +4 -4
- package/esm2022/lib/compose/tag/tags.component.mjs +5 -5
- package/esm2022/lib/compose/trace/flow.component.mjs +16 -17
- package/esm2022/lib/compose/trace/people.component.mjs +14 -9
- package/esm2022/lib/compose/trace/trace.base.mjs +6 -7
- package/esm2022/lib/compose/trace/trace.component.mjs +5 -5
- package/esm2022/lib/compose/trace/trace.pane.component.mjs +4 -4
- package/esm2022/lib/compose/version-compare/version-compare.component.mjs +5 -4
- package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +14 -14
- package/esm2022/lib/compose/version-compare/version.pane.component.mjs +5 -5
- package/esm2022/lib/core/account.service.mjs +4 -4
- package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +4 -4
- package/esm2022/lib/core/animations.mjs +1 -1
- package/esm2022/lib/core/authentication.mjs +1 -1
- package/esm2022/lib/core/avatar/avatar.component.mjs +52 -43
- package/esm2022/lib/core/base.mjs +1 -1
- package/esm2022/lib/core/checkbox.mjs +19 -19
- package/esm2022/lib/core/colors.mjs +1 -1
- package/esm2022/lib/core/component-factory-resolver.mjs +5 -5
- package/esm2022/lib/core/configuration.mjs +1 -1
- package/esm2022/lib/core/datasource.service.mjs +4 -4
- package/esm2022/lib/core/decorators.mjs +1 -1
- package/esm2022/lib/core/document-factory.service.mjs +4 -11
- package/esm2022/lib/core/fields/address.designer.mjs +4 -4
- package/esm2022/lib/core/fields/address.field.mjs +31 -31
- package/esm2022/lib/core/fields/autocomplete.field.mjs +65 -65
- package/esm2022/lib/core/fields/axes-picker.designer.mjs +25 -25
- package/esm2022/lib/core/fields/axes-picker.field.mjs +5 -5
- package/esm2022/lib/core/fields/checkbox.designer.mjs +4 -4
- package/esm2022/lib/core/fields/checkbox.field.mjs +5 -5
- package/esm2022/lib/core/fields/checklist.designer.mjs +59 -59
- package/esm2022/lib/core/fields/checklist.field.mjs +5 -5
- package/esm2022/lib/core/fields/date-range.designer.mjs +4 -4
- package/esm2022/lib/core/fields/date-range.field.mjs +5 -5
- package/esm2022/lib/core/fields/date.designer.mjs +4 -4
- package/esm2022/lib/core/fields/date.field.mjs +5 -5
- package/esm2022/lib/core/fields/expression.field.mjs +30 -30
- package/esm2022/lib/core/fields/file.designer.mjs +4 -4
- package/esm2022/lib/core/fields/file.field.mjs +5 -5
- package/esm2022/lib/core/fields/html.designer.mjs +4 -4
- package/esm2022/lib/core/fields/html.field.mjs +5 -5
- package/esm2022/lib/core/fields/input.designer.mjs +4 -4
- package/esm2022/lib/core/fields/input.field.mjs +5 -5
- package/esm2022/lib/core/fields/localized-string.field.mjs +7 -7
- package/esm2022/lib/core/fields/numeric.designer.mjs +4 -4
- package/esm2022/lib/core/fields/numeric.field.mjs +5 -5
- package/esm2022/lib/core/fields/options.base.mjs +8 -8
- package/esm2022/lib/core/fields/options.component.mjs +5 -5
- package/esm2022/lib/core/fields/radio-button.designer.mjs +5 -5
- package/esm2022/lib/core/fields/radio-button.field.mjs +5 -5
- package/esm2022/lib/core/fields/select.designer.mjs +63 -63
- package/esm2022/lib/core/fields/select.field.mjs +5 -5
- package/esm2022/lib/core/fields/signature.designer.mjs +4 -4
- package/esm2022/lib/core/fields/signature.field.mjs +5 -5
- package/esm2022/lib/core/fields/switch.field.mjs +5 -5
- package/esm2022/lib/core/fields/tags.designer.mjs +4 -4
- package/esm2022/lib/core/fields/tags.field.mjs +5 -5
- package/esm2022/lib/core/fields/textarea.designer.mjs +4 -4
- package/esm2022/lib/core/fields/textarea.field.mjs +5 -5
- package/esm2022/lib/core/fields/time.designer.mjs +4 -4
- package/esm2022/lib/core/fields/time.field.mjs +5 -5
- package/esm2022/lib/core/fields/timespan.field.mjs +30 -30
- package/esm2022/lib/core/fields/yesno.designer.mjs +23 -23
- package/esm2022/lib/core/fields/yesno.field.mjs +5 -5
- package/esm2022/lib/core/firebase.service.mjs +1 -1
- package/esm2022/lib/core/functions.mjs +4 -1
- package/esm2022/lib/core/guide/guide.component.mjs +5 -5
- package/esm2022/lib/core/guide/guide.service.mjs +11 -7
- package/esm2022/lib/core/guide/help-tip.component.mjs +22 -22
- package/esm2022/lib/core/http.interceptor.mjs +6 -6
- package/esm2022/lib/core/hub.service.mjs +4 -4
- package/esm2022/lib/core/identity/identity.component.mjs +5 -5
- package/esm2022/lib/core/info/attachment-info.service.mjs +4 -4
- package/esm2022/lib/core/info/document-info.service.mjs +4 -4
- package/esm2022/lib/core/info/location-info.component.mjs +4 -4
- package/esm2022/lib/core/info/map-info.mjs +4 -4
- package/esm2022/lib/core/inputs/address.input.mjs +21 -21
- package/esm2022/lib/core/inputs/auto-complete.input.mjs +38 -37
- package/esm2022/lib/core/inputs/combination-picker-body.mjs +10 -12
- package/esm2022/lib/core/inputs/combination-picker.mjs +4 -5
- package/esm2022/lib/core/inputs/combination-pool.mjs +7 -6
- package/esm2022/lib/core/inputs/file.input.mjs +30 -24
- package/esm2022/lib/core/inputs/select.input.mjs +37 -37
- package/esm2022/lib/core/inputs/signature.input.mjs +4 -4
- package/esm2022/lib/core/inputs/time-picker.mjs +8 -8
- package/esm2022/lib/core/inputs/timespan.input.mjs +7 -7
- package/esm2022/lib/core/layout.component.mjs +11 -5
- package/esm2022/lib/core/lottie-animation.exp.mjs +49 -0
- package/esm2022/lib/core/mailbox.service.mjs +20 -14
- package/esm2022/lib/core/models.mjs +2 -1
- package/esm2022/lib/core/none.component.mjs +15 -15
- package/esm2022/lib/core/pipes/action.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/calendar.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/date-format.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/daterange.pipe.mjs +7 -7
- package/esm2022/lib/core/pipes/difference.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/duration-format.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/duration.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/filter.pipe.mjs +25 -0
- package/esm2022/lib/core/pipes/form.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/join.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/localized-string.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/role.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/sort.pipe.mjs +8 -30
- package/esm2022/lib/core/pipes/state.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/time-ago.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/to-now.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/translate.pipe.mjs +10 -10
- package/esm2022/lib/core/pipes/type-value.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/user-name.pipe.mjs +4 -4
- package/esm2022/lib/core/popup/popup-ref.mjs +1 -1
- package/esm2022/lib/core/popup/popup.component.mjs +4 -4
- package/esm2022/lib/core/popup/popup.service.mjs +7 -5
- package/esm2022/lib/core/popup/tooltip.directive.mjs +10 -11
- package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +4 -4
- package/esm2022/lib/core/prompt/mask/mask.component.mjs +4 -4
- package/esm2022/lib/core/prompt.service.mjs +6 -6
- package/esm2022/lib/core/router.mjs +9 -9
- package/esm2022/lib/core/save-changes.dialog.mjs +4 -4
- package/esm2022/lib/core/session.service.mjs +18 -9
- package/esm2022/lib/core/slots/pane-ref.mjs +2 -2
- package/esm2022/lib/core/slots/router.directive.mjs +4 -4
- package/esm2022/lib/core/slots/router.service.mjs +6 -5
- package/esm2022/lib/core/slots/slots.component.mjs +26 -23
- package/esm2022/lib/core/sticky-toolbar.exp.mjs +9 -6
- package/esm2022/lib/core/tagging/documents.component.mjs +5 -5
- package/esm2022/lib/core/tagging/edit-input.component.mjs +17 -14
- package/esm2022/lib/core/tagging/emoji.component.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging-item.directive.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.component-base.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.directive.mjs +5 -5
- package/esm2022/lib/core/tagging/tagging.pipe.mjs +4 -4
- package/esm2022/lib/core/tagging/users.component.mjs +5 -5
- package/esm2022/lib/core/translate.service.mjs +5 -4
- package/esm2022/lib/core/translations.mjs +8 -6
- package/esm2022/lib/core/virtual-tabs.component.exp.mjs +7 -7
- package/esm2022/lib/core/window-title.service.mjs +14 -6
- package/esm2022/lib/cube/accum/accum.component.mjs +4 -4
- package/esm2022/lib/cube/chart/chart.component.mjs +8 -7
- package/esm2022/lib/cube/cube-info.service.mjs +13 -10
- package/esm2022/lib/cube/cube-menu.component.mjs +5 -5
- package/esm2022/lib/cube/cube-view.component.mjs +5 -5
- package/esm2022/lib/cube/cube.service.mjs +21 -19
- package/esm2022/lib/cube/declarations.mjs +1 -1
- package/esm2022/lib/cube/explore/document-item.component.mjs +4 -4
- package/esm2022/lib/cube/explore/explore-item.component.mjs +4 -4
- package/esm2022/lib/cube/explore/explore-items.component.mjs +8 -8
- package/esm2022/lib/cube/explore/explore.pane.component.mjs +5 -5
- package/esm2022/lib/cube/explore/item-resolver.service.mjs +7 -7
- package/esm2022/lib/cube/explore/item.pane.component.mjs +5 -5
- package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +5 -5
- package/esm2022/lib/cube/filter/filter.component.mjs +14 -13
- package/esm2022/lib/cube/grid/grid.component.mjs +9 -8
- package/esm2022/lib/cube/matrix/matrix.base.mjs +20 -18
- package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +6 -6
- package/esm2022/lib/cube/matrix/popup.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/table.component.mjs +10 -9
- package/esm2022/lib/cube/parallel/item.mjs +1 -2
- package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
- package/esm2022/lib/cube/pivot/pivot.component.mjs +16 -7
- package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +6 -6
- package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +4 -4
- package/esm2022/lib/cube/sum/sum.component.mjs +20 -19
- package/esm2022/lib/cube/view-base.mjs +5 -5
- package/esm2022/lib/cube/view.mobile.component.mjs +6 -6
- package/esm2022/lib/cube/view.pane.component.mjs +5 -5
- package/esm2022/lib/dashboard/actions/actions.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -8
- package/esm2022/lib/dashboard/cube/compare.widget.mjs +5 -7
- package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +8 -6
- package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
- package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +5 -4
- package/esm2022/lib/dashboard/cube/document-state.widget.mjs +6 -5
- package/esm2022/lib/dashboard/cube/documents.widget.mjs +4 -4
- package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +4 -4
- package/esm2022/lib/dashboard/dashboard.component.mjs +5 -5
- package/esm2022/lib/dashboard/dashboard.pane.component.mjs +4 -4
- package/esm2022/lib/dashboard/recents/recents.widget.mjs +13 -16
- package/esm2022/lib/dashboard/score/activity.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +12 -5
- package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +9 -8
- package/esm2022/lib/dashboard/score/pending-results.widget.mjs +5 -5
- package/esm2022/lib/dashboard/score/personal-score.widget.mjs +19 -18
- package/esm2022/lib/dashboard/widget-item.component.mjs +4 -4
- package/esm2022/lib/dashboard/widget-ref.mjs +1 -1
- package/esm2022/lib/designer.module.mjs +5 -5
- package/esm2022/lib/desktop.module.mjs +8 -12
- package/esm2022/lib/home/about/about.dialog.mjs +6 -6
- package/esm2022/lib/home/home-base.component.mjs +18 -10
- package/esm2022/lib/home/home.desktop.component.mjs +12 -22
- package/esm2022/lib/home/home.mobile.component.mjs +29 -32
- package/esm2022/lib/home/notifications/notifications.component.mjs +22 -24
- package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +10 -10
- package/esm2022/lib/home/sign/sign.component.mjs +17 -21
- package/esm2022/lib/impersonate/impersonate.component.mjs +36 -34
- package/esm2022/lib/mobile.module.mjs +8 -11
- package/esm2022/lib/modules/chart.module.mjs +13 -11
- package/esm2022/lib/modules/circular-gauge.module.mjs +9 -7
- package/esm2022/lib/modules/date.adapter.mjs +1 -1
- package/esm2022/lib/modules/datepicker.intl.mjs +4 -4
- package/esm2022/lib/modules/dayjs.module.mjs +5 -5
- package/esm2022/lib/modules/diagram.module.mjs +9 -7
- package/esm2022/lib/modules/gantt.module.mjs +11 -9
- package/esm2022/lib/modules/grid.module.mjs +9 -7
- package/esm2022/lib/modules/linear-gauge.module.mjs +5 -5
- package/esm2022/lib/modules/material.module.mjs +5 -5
- package/esm2022/lib/modules/paginator.intl.mjs +4 -4
- package/esm2022/lib/modules/pivot.module.mjs +9 -7
- package/esm2022/lib/modules/schedule.module.mjs +9 -7
- package/esm2022/lib/modules/spreadsheet.module.mjs +5 -5
- package/esm2022/lib/modules/stepper.intl.mjs +4 -4
- package/esm2022/lib/modules/texteditor.module.mjs +7 -6
- package/esm2022/lib/notifications/filter.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications-table.component.mjs +7 -8
- package/esm2022/lib/notifications/notifications.component-base.mjs +1 -1
- package/esm2022/lib/notifications/notifications.mobile.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications.pane.component.mjs +4 -4
- package/esm2022/lib/notifications/notifications.service.mjs +13 -6
- package/esm2022/lib/notifications/types/commented.notification.mjs +17 -17
- package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/escalated.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/invite.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/liked.notification.mjs +17 -17
- package/esm2022/lib/notifications/types/long-running-task.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/notification-base.mjs +4 -4
- package/esm2022/lib/notifications/types/nudge.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/state-changed.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/tagged.notification.mjs +7 -7
- package/esm2022/lib/notifications/types/text.notification.mjs +4 -4
- package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +4 -4
- package/esm2022/lib/options/options.component.mjs +91 -49
- package/esm2022/lib/options/options.desktop.component.mjs +26 -0
- package/esm2022/lib/options/options.mobile.component.mjs +23 -0
- package/esm2022/lib/reports/arguments-component.mjs +4 -4
- package/esm2022/lib/reports/cube/documents.component.mjs +4 -4
- package/esm2022/lib/reports/cube/grid-documents.component.mjs +4 -4
- package/esm2022/lib/reports/cube/performance-hilo.component.mjs +5 -5
- package/esm2022/lib/reports/cube/performance-wind.component.mjs +4 -4
- package/esm2022/lib/reports/cube/table-documents.component.mjs +7 -6
- package/esm2022/lib/reports/cube/usage-args.component.mjs +6 -5
- package/esm2022/lib/reports/cube/usage-base.mjs +8 -8
- package/esm2022/lib/reports/cube/usage-chart.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage-pivot.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage.component.mjs +4 -4
- package/esm2022/lib/reports/report-ref.mjs +1 -1
- package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
- package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
- package/esm2022/lib/reports/report.pane.component.mjs +5 -5
- package/esm2022/lib/reports/reports-menu.component.mjs +5 -5
- package/esm2022/lib/reports/substitution/substitution.component.mjs +5 -5
- package/esm2022/lib/reports/table/table-view.component.mjs +5 -5
- package/esm2022/lib/reports/tasks/tasks.component.mjs +4 -4
- package/esm2022/lib/routes.desktop.mjs +24 -5
- package/esm2022/lib/routes.mobile.mjs +12 -2
- package/esm2022/lib/scheduler/schedule.component.mjs +5 -5
- package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +4 -4
- package/esm2022/lib/scheduler/scheduler.pane.component.mjs +4 -4
- package/esm2022/lib/search/cube.component.mjs +8 -9
- package/esm2022/lib/search/declarations.mjs +1 -1
- package/esm2022/lib/search/document.component.mjs +4 -4
- package/esm2022/lib/search/guide.component.mjs +4 -4
- package/esm2022/lib/search/path.component.mjs +15 -15
- package/esm2022/lib/search/search.service.mjs +5 -5
- package/esm2022/lib/shared.module.mjs +17 -17
- package/esm2022/lib/system.module.mjs +5 -5
- package/esm2022/lib/views/cube/chart.component.mjs +5 -5
- package/esm2022/lib/views/cube/cube-base.mjs +4 -4
- package/esm2022/lib/views/cube/explore.component.mjs +6 -6
- package/esm2022/lib/views/cube/matrix.component.mjs +7 -7
- package/esm2022/lib/views/cube/parallel.component.mjs +5 -5
- package/esm2022/lib/views/cube/pivot.component.mjs +5 -5
- package/esm2022/lib/views/cube/sum.component.mjs +5 -5
- package/esm2022/lib/views/cube/view.component.mjs +7 -7
- package/esm2022/lib/views/document-view-ref.mjs +1 -1
- package/esm2022/lib/views/timeline/timeline.component.mjs +7 -8
- package/esm2022/lib/views/view-item.component.mjs +4 -4
- package/esm2022/lib/views/views.component.mjs +5 -5
- package/esm2022/lib/views/views.mobile.component.mjs +6 -6
- package/esm2022/lib/views/views.pane.component.mjs +8 -8
- package/esm2022/public-api.mjs +4 -3
- package/fesm2022/bizdoc-core.mjs +3819 -3701
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/admin/architecture/cube-axes-filter.component.d.ts +4 -1
- package/lib/admin/architecture/declarations.d.ts +14 -9
- package/lib/admin/architecture/designer-element.component.d.ts +1 -0
- package/lib/admin/architecture/designer-privileges.component.d.ts +4 -2
- package/lib/admin/architecture/designer.base.d.ts +1 -4
- package/lib/admin/architecture/designer.component.d.ts +3 -3
- package/lib/admin/architecture/elements/action.component.d.ts +13 -13
- package/lib/admin/architecture/elements/analysis-view.component.d.ts +8 -8
- package/lib/admin/architecture/elements/analysis-widget.component.d.ts +7 -7
- package/lib/admin/architecture/elements/anomaly-rule.component.d.ts +3 -3
- package/lib/admin/architecture/elements/attribute.component.d.ts +1 -1
- package/lib/admin/architecture/elements/box-form.component.d.ts +5 -5
- package/lib/admin/architecture/elements/configuration-datasource.component.d.ts +1 -1
- package/lib/admin/architecture/elements/control.component.d.ts +1 -2
- package/lib/admin/architecture/elements/cube-index-utility.component.d.ts +3 -4
- package/lib/admin/architecture/elements/cube-view.component.d.ts +4 -4
- package/lib/admin/architecture/elements/cube.component.d.ts +9 -10
- package/lib/admin/architecture/elements/document-state-widget.component.d.ts +3 -6
- package/lib/admin/architecture/elements/documents-report.component.d.ts +4 -5
- package/lib/admin/architecture/elements/documents-widget.component.d.ts +5 -5
- package/lib/admin/architecture/elements/explore-view.component.d.ts +4 -4
- package/lib/admin/architecture/elements/folder.component.d.ts +2 -2
- package/lib/admin/architecture/elements/form-invite.dialog.d.ts +7 -7
- package/lib/admin/architecture/elements/form.component.d.ts +10 -9
- package/lib/admin/architecture/elements/guide.component.d.ts +1 -1
- package/lib/admin/architecture/elements/matrix-view.component.d.ts +16 -16
- package/lib/admin/architecture/elements/parallel-view.component.d.ts +9 -10
- package/lib/admin/architecture/elements/performance-report.component.d.ts +2 -3
- package/lib/admin/architecture/elements/performance-widget.component.d.ts +4 -5
- package/lib/admin/architecture/elements/pivot-view.component.d.ts +9 -10
- package/lib/admin/architecture/elements/report.component.d.ts +1 -1
- package/lib/admin/architecture/elements/return-to-role-action.component.d.ts +1 -1
- package/lib/admin/architecture/elements/role.component.d.ts +4 -4
- package/lib/admin/architecture/elements/source.component.d.ts +2 -3
- package/lib/admin/architecture/elements/state.component.d.ts +4 -4
- package/lib/admin/architecture/elements/sum-view.component.d.ts +7 -8
- package/lib/admin/architecture/elements/tasks-report.component.d.ts +4 -4
- package/lib/admin/architecture/elements/type.component.d.ts +8 -4
- package/lib/admin/architecture/elements/usage-report.component.d.ts +7 -7
- package/lib/admin/architecture/elements/widget.component.d.ts +1 -1
- package/lib/admin/architecture/icon-picker.component.d.ts +5 -3
- package/lib/admin/core/ace.input.d.ts +2 -5
- package/lib/admin/core/localized-string.component.d.ts +3 -2
- package/lib/admin/document-trace/document-trace.component.d.ts +6 -5
- package/lib/admin/document-trace/reassign.dialog.d.ts +2 -2
- package/lib/admin/document-trace/timeline.d.ts +2 -2
- package/lib/admin/form/designer/box-designer.component.d.ts +11 -11
- package/lib/admin/form/designer/section.component.d.ts +5 -5
- package/lib/admin/form/workflow/node-ref.d.ts +1 -1
- package/lib/admin/form/workflow/node.component.d.ts +3 -2
- package/lib/admin/form/workflow/role-node.component.d.ts +11 -11
- package/lib/admin/form/workflow/workflow.component.d.ts +5 -4
- package/lib/admin/indices/manage-cube-index.component.d.ts +3 -3
- package/lib/admin/patterns/patterns.component.d.ts +2 -2
- package/lib/admin/positions/positions-popup.component.d.ts +1 -1
- package/lib/admin/positions/positions.component.d.ts +6 -6
- package/lib/admin/profiler/outofoffice.component.d.ts +15 -15
- package/lib/admin/profiler/profiler.component.d.ts +3 -3
- package/lib/admin/system.service.d.ts +11 -12
- package/lib/admin/utility-ref.d.ts +2 -2
- package/lib/browse/browse-items.component.d.ts +6 -7
- package/lib/browse/browse.mobile.component.d.ts +2 -2
- package/lib/browse/browse.pane.component.d.ts +2 -2
- package/lib/browse/filter/filter.component.d.ts +10 -11
- package/lib/chat/chat-info.d.ts +1 -1
- package/lib/chat/chat.service.d.ts +1 -1
- package/lib/chat/conversation.component.d.ts +2 -2
- package/lib/compose/action/action.base.d.ts +2 -1
- package/lib/compose/action/assign-action.component.d.ts +5 -5
- package/lib/compose/action/moveto-action.component.d.ts +3 -3
- package/lib/compose/action/return-action.component.d.ts +4 -4
- package/lib/compose/box/box.component.d.ts +1 -1
- package/lib/compose/comments/comments.component.d.ts +4 -4
- package/lib/compose/compose.mobile.component.d.ts +5 -5
- package/lib/compose/compose.pane.component.d.ts +3 -3
- package/lib/compose/copy/copy.dialog.d.ts +1 -1
- package/lib/compose/form-ref.d.ts +5 -5
- package/lib/compose/form.component.d.ts +36 -2
- package/lib/compose/new-menu.component.d.ts +2 -1
- package/lib/compose/privilage.directive.d.ts +1 -1
- package/lib/compose/tag/tags.component.d.ts +1 -1
- package/lib/compose/trace/flow.component.d.ts +1 -0
- package/lib/compose/trace/people.component.d.ts +5 -2
- package/lib/compose/trace/trace.base.d.ts +1 -1
- package/lib/compose/version-compare/version-compare.directive.d.ts +1 -1
- package/lib/core/account.service.d.ts +1 -1
- package/lib/core/authentication.d.ts +1 -1
- package/lib/core/avatar/avatar.component.d.ts +14 -11
- package/lib/core/base.d.ts +9 -9
- package/lib/core/datasource.service.d.ts +1 -1
- package/lib/core/document-factory.service.d.ts +0 -1
- package/lib/core/fields/address.designer.d.ts +3 -3
- package/lib/core/fields/address.field.d.ts +1 -1
- package/lib/core/fields/autocomplete.field.d.ts +5 -5
- package/lib/core/fields/axes-picker.designer.d.ts +3 -3
- package/lib/core/fields/axes-picker.field.d.ts +1 -1
- package/lib/core/fields/checkbox.designer.d.ts +2 -2
- package/lib/core/fields/checkbox.field.d.ts +1 -1
- package/lib/core/fields/checklist.designer.d.ts +4 -4
- package/lib/core/fields/checklist.field.d.ts +1 -2
- package/lib/core/fields/date-range.designer.d.ts +6 -6
- package/lib/core/fields/date-range.field.d.ts +2 -2
- package/lib/core/fields/date.designer.d.ts +5 -5
- package/lib/core/fields/file.designer.d.ts +3 -3
- package/lib/core/fields/html.designer.d.ts +4 -4
- package/lib/core/fields/input.designer.d.ts +8 -9
- package/lib/core/fields/numeric.designer.d.ts +7 -7
- package/lib/core/fields/options.base.d.ts +1 -1
- package/lib/core/fields/radio-button.designer.d.ts +3 -3
- package/lib/core/fields/radio-button.field.d.ts +2 -3
- package/lib/core/fields/select.designer.d.ts +5 -5
- package/lib/core/fields/select.field.d.ts +1 -2
- package/lib/core/fields/signature.designer.d.ts +2 -2
- package/lib/core/fields/switch.field.d.ts +1 -1
- package/lib/core/fields/textarea.designer.d.ts +6 -6
- package/lib/core/fields/time.designer.d.ts +5 -5
- package/lib/core/fields/yesno.designer.d.ts +3 -3
- package/lib/core/fields/yesno.field.d.ts +1 -1
- package/lib/core/firebase.service.d.ts +1 -1
- package/lib/core/functions.d.ts +7 -4
- package/lib/core/guide/help-tip.component.d.ts +1 -1
- package/lib/core/http.interceptor.d.ts +1 -1
- package/lib/core/hub.service.d.ts +2 -2
- package/lib/core/inputs/address.input.d.ts +5 -4
- package/lib/core/inputs/auto-complete.input.d.ts +4 -4
- package/lib/core/inputs/combination-picker-body.d.ts +2 -2
- package/lib/core/inputs/file.input.d.ts +4 -4
- package/lib/core/inputs/time-picker.d.ts +2 -2
- package/lib/core/inputs/timespan.input.d.ts +7 -7
- package/lib/core/{lottie-animation.d.ts → lottie-animation.exp.d.ts} +0 -1
- package/lib/core/mailbox.service.d.ts +2 -3
- package/lib/core/models.d.ts +6 -5
- package/lib/core/pipes/filter.pipe.d.ts +7 -0
- package/lib/core/pipes/localized-string.pipe.d.ts +1 -1
- package/lib/core/pipes/sort.pipe.d.ts +1 -6
- package/lib/core/pipes/time-ago.pipe.d.ts +1 -1
- package/lib/core/pipes/user-name.pipe.d.ts +1 -1
- package/lib/core/popup/popup-ref.d.ts +4 -4
- package/lib/core/popup/tooltip.directive.d.ts +2 -3
- package/lib/core/router.d.ts +3 -3
- package/lib/core/session.service.d.ts +10 -7
- package/lib/core/slots/pane-ref.d.ts +18 -18
- package/lib/core/slots/router.directive.d.ts +2 -2
- package/lib/core/slots/router.service.d.ts +3 -3
- package/lib/core/slots/slots.component.d.ts +3 -3
- package/lib/core/sticky-toolbar.exp.d.ts +1 -0
- package/lib/core/tagging/edit-input.component.d.ts +5 -5
- package/lib/core/tagging/emoji.component.d.ts +1 -1
- package/lib/core/tagging/tagging.component-base.d.ts +1 -1
- package/lib/core/tagging/tagging.directive.d.ts +1 -1
- package/lib/core/tagging/tagging.pipe.d.ts +1 -1
- package/lib/core/translate.service.d.ts +2 -2
- package/lib/core/translations.d.ts +2 -1049
- package/lib/core/virtual-tabs.component.exp.d.ts +2 -2
- package/lib/core/window-title.service.d.ts +2 -1
- package/lib/cube/accum/accum.component.d.ts +1 -1
- package/lib/cube/chart/chart.component.d.ts +5 -5
- package/lib/cube/cube-info.service.d.ts +1 -1
- package/lib/cube/cube.service.d.ts +2 -2
- package/lib/cube/declarations.d.ts +3 -3
- package/lib/cube/explore/explore-items.component.d.ts +2 -2
- package/lib/cube/filter/filter.component.d.ts +1 -1
- package/lib/cube/grid/grid.component.d.ts +4 -4
- package/lib/cube/matrix/matrix.base.d.ts +9 -8
- package/lib/cube/matrix/matrix.pane.component.d.ts +2 -1
- package/lib/cube/matrix/table.component.d.ts +3 -3
- package/lib/cube/pivot/pivot.component.d.ts +6 -7
- package/lib/cube/spreadsheet/spreadsheet.component.d.ts +3 -3
- package/lib/cube/sum/sum.component.d.ts +5 -5
- package/lib/cube/view-base.d.ts +3 -2
- package/lib/cube/view.mobile.component.d.ts +1 -1
- package/lib/dashboard/cube/accum-cube.widget.d.ts +0 -1
- package/lib/dashboard/cube/cube-analysis.base.d.ts +9 -6
- package/lib/dashboard/cube/filter/filter.component.d.ts +3 -2
- package/lib/dashboard/recents/recents.widget.d.ts +5 -6
- package/lib/dashboard/score/activity.widget.d.ts +1 -0
- package/lib/dashboard/score/peers-performance.widget.d.ts +1 -0
- package/lib/dashboard/score/personal-score.widget.d.ts +2 -4
- package/lib/desktop.module.d.ts +5 -6
- package/lib/home/about/about.dialog.d.ts +2 -2
- package/lib/home/home-base.component.d.ts +2 -0
- package/lib/home/home.desktop.component.d.ts +6 -9
- package/lib/home/home.mobile.component.d.ts +4 -6
- package/lib/home/notifications/notifications.component.d.ts +3 -5
- package/lib/home/outofoffice/outofoffice.component.d.ts +3 -3
- package/lib/home/sign/sign.component.d.ts +4 -2
- package/lib/impersonate/impersonate.component.d.ts +11 -12
- package/lib/mobile.module.d.ts +3 -3
- package/lib/modules/chart.module.d.ts +1 -0
- package/lib/modules/circular-gauge.module.d.ts +1 -0
- package/lib/modules/diagram.module.d.ts +1 -0
- package/lib/modules/gantt.module.d.ts +1 -0
- package/lib/modules/grid.module.d.ts +1 -0
- package/lib/modules/pivot.module.d.ts +1 -0
- package/lib/modules/schedule.module.d.ts +1 -0
- package/lib/notifications/filter.component.d.ts +2 -2
- package/lib/options/options.component.d.ts +54 -31
- package/lib/options/options.desktop.component.d.ts +10 -0
- package/lib/options/options.mobile.component.d.ts +9 -0
- package/lib/reports/arguments-component.d.ts +2 -2
- package/lib/reports/cube/performance-hilo.component.d.ts +1 -1
- package/lib/reports/cube/performance-wind.component.d.ts +2 -2
- package/lib/reports/cube/usage-args.component.d.ts +3 -1
- package/lib/reports/cube/usage-base.d.ts +9 -7
- package/lib/reports/cube/usage-pivot.component.d.ts +1 -1
- package/lib/reports/report.mobile.component.d.ts +3 -1
- package/lib/search/cube.component.d.ts +1 -1
- package/lib/search/declarations.d.ts +2 -2
- package/lib/shared.module.d.ts +154 -153
- package/lib/views/cube/chart.component.d.ts +2 -2
- package/lib/views/cube/cube-base.d.ts +6 -6
- package/lib/views/cube/sum.component.d.ts +2 -2
- package/lib/views/timeline/timeline.component.d.ts +3 -2
- package/lib/views/views.component.d.ts +1 -1
- package/package.json +7 -7
- package/public-api.d.ts +3 -2
- package/assets/themes/readme.md +0 -0
- package/esm2022/lib/core/lottie-animation.mjs +0 -48
- package/esm2022/lib/home/options/options.component.mjs +0 -97
- package/esm2022/lib/options/options.service.mjs +0 -42
- package/lib/home/options/options.component.d.ts +0 -45
- package/lib/options/options.service.d.ts +0 -14
@@ -44,7 +44,7 @@ export class ExpandedItemComponent {
|
|
44
44
|
subscribe(e => {
|
45
45
|
if (e.id === this.model.id && (e.model.byId || e.model.userId) !== this._session.userId) {
|
46
46
|
this._comments();
|
47
|
-
this._accounts.get(e.model.userId).subscribe(u => this._sb.
|
47
|
+
this._accounts.get(e.model.userId).subscribe(u => this._sb.toastString(this._translate.personalize('Commented', u.gender, u.name)));
|
48
48
|
}
|
49
49
|
});
|
50
50
|
this._messaging.update$.pipe(takeUntil(this._destroy)).subscribe(e => {
|
@@ -55,7 +55,7 @@ export class ExpandedItemComponent {
|
|
55
55
|
});
|
56
56
|
this._mailbox.changed.pipe(takeUntil(this._destroy)).subscribe(e => (e.id === this.model.id) &&
|
57
57
|
this._refresh());
|
58
|
-
this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter(e => e.id === this.model.documentId)).subscribe(
|
58
|
+
this._messaging.commentTyping$.pipe(takeUntil(this._destroy), filter(e => e.id === this.model.documentId)).subscribe(() => {
|
59
59
|
this.typing = true;
|
60
60
|
clearTimeout(this._typingTask);
|
61
61
|
this._typingTask = setTimeout(() => this.typing = false, TYPING_HINT_TIME);
|
@@ -66,13 +66,12 @@ export class ExpandedItemComponent {
|
|
66
66
|
async _note() {
|
67
67
|
const { ownerId, ownerById, issued, substituteId, received, replied, log, id, note, byId, action, escalated, originId, draft } = this.model;
|
68
68
|
let target;
|
69
|
-
if (action)
|
69
|
+
if (action)
|
70
70
|
target = await this._target(id);
|
71
|
-
}
|
72
71
|
if (substituteId) {
|
73
72
|
const substituting = await firstValueFrom(this._accounts.get(substituteId));
|
74
73
|
if (replied) {
|
75
|
-
const time = this._fromNow(replied),
|
74
|
+
const time = this._fromNow(replied), aaction = this._session.profile.actions.find(a => a.name === action), adjective = (aaction.adjective || aaction.title).toLowerCase();
|
76
75
|
if (target)
|
77
76
|
this.note = this._translate.personalize('YouSubstituteActionTakenTo', substituting.gender, adjective, target, this._formatUserElement(substituting), time);
|
78
77
|
else
|
@@ -161,6 +160,7 @@ export class ExpandedItemComponent {
|
|
161
160
|
const users = await firstValueFrom(this._accounts.getAll(origin.map(r => r.userId)));
|
162
161
|
return this._translate.join(users.map(u => this._formatUserElement(u)));
|
163
162
|
}
|
163
|
+
return undefined;
|
164
164
|
}
|
165
165
|
_actionName(name, gender) {
|
166
166
|
const action = this._session.profile.actions.find(a => a.name === name);
|
@@ -187,7 +187,7 @@ export class ExpandedItemComponent {
|
|
187
187
|
/** */
|
188
188
|
async _refresh() {
|
189
189
|
const { actions } = this.model;
|
190
|
-
this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) :
|
190
|
+
this.actions = actions && actions.length ? this._session.profile.actions.filter(a => actions.indexOf(a.name) > -1) : undefined;
|
191
191
|
const { senderId } = this.model;
|
192
192
|
// sender
|
193
193
|
if (senderId && (senderId !== this._session.userId)) {
|
@@ -201,7 +201,7 @@ export class ExpandedItemComponent {
|
|
201
201
|
_comments() {
|
202
202
|
const { viewed, comments } = this.model;
|
203
203
|
this.newComments = viewed ?
|
204
|
-
comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length ||
|
204
|
+
comments.filter(c => c.time > viewed && (c.byId || c.userId) !== this._session.userId).length || undefined : undefined;
|
205
205
|
}
|
206
206
|
async _awaiting() {
|
207
207
|
//awaiting
|
@@ -302,15 +302,15 @@ export class ExpandedItemComponent {
|
|
302
302
|
this._destroy.complete();
|
303
303
|
this._typingTask && clearTimeout(this._typingTask);
|
304
304
|
}
|
305
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
305
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExpandedItemComponent, deps: [{ token: i1.PromptService }, { token: i2.ChatInfo }, { token: i3.AccountService }, { token: i4.MailboxService }, { token: i5.SessionService }, { token: i6.Directionality }, { token: i7.MatDialog }, { token: i8.TranslateService }, { token: i9.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: ExpandedItemComponent, selector: "bizdoc-expanded-item", inputs: { model: "model" }, outputs: { sent: "sent" }, ngImport: i0, template: "@if (model.summary) {\r\n <div class=\"summary\" [innerHTML]=\"model.summary\">\r\n </div>\r\n}\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n @for (a of actions; track a) {\r\n @if (a.icon) {\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n }\r\n }\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n \r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n \r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span> \r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div class=\"center center\">\r\n @if (typing) {\r\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\r\n }\r\n @if (model.comments.length) {\r\n <div class=\"mat-small\">\r\n @if (!newComments) {\r\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n } @else {\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (model.tags) {\r\n <mat-chip-set>\r\n @for (tag of model.tags; track tag) {\r\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"], dependencies: [{ kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.AttachmentsComponent, selector: "bizdoc-attachments", inputs: ["model", "viewedIndicator", "includeDeleted"] }, { kind: "component", type: i14.DocumentEventsComponent, selector: "bizdoc-events", inputs: ["model"] }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i16.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i17.TimeAgoPipe, name: "amTimeAgo" }, { kind: "pipe", type: i18.TranslatePipe, name: "translate" }, { kind: "pipe", type: i19.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i20.StatePipe, name: "state" }] }); }
|
307
307
|
}
|
308
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExpandedItemComponent, decorators: [{
|
309
309
|
type: Component,
|
310
|
-
args: [{ selector: 'bizdoc-expanded-item', template: "@if (model.summary) {\n <div class=\"summary\" [innerHTML]=\"model.summary\">\n </div>\n}\n<div>\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\n <bizdoc-events [model]=\"model\"></bizdoc-events>\n</div>\n<div class=\"row\">\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\n <span class=\"divider\"></span>\n @for (a of actions; track a) {\n @if (a.icon) {\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\n <mat-icon>{{a.icon}}</mat-icon>\n </button>\n }\n }\n</div>\n<div class=\"row\">\n <div class=\"mat-small row\">\n <span>{{model.stateId | state : 'past' }}</span>\n \n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\n \n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span> \n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\n </div>\n <span class=\"divider\"></span>\n <div class=\"center center\">\n @if (typing) {\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\n }\n @if (model.comments.length) {\n <div class=\"mat-small\">\n @if (!newComments) {\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\n } @else {\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\n }\n </div>\n }\n </div>\n @if (model.tags) {\n <mat-chip-set>\n @for (tag of model.tags; track tag) {\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\n }\n </mat-chip-set>\n }\n</div>\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"] }]
|
310
|
+
args: [{ selector: 'bizdoc-expanded-item', template: "@if (model.summary) {\r\n <div class=\"summary\" [innerHTML]=\"model.summary\">\r\n </div>\r\n}\r\n<div>\r\n <bizdoc-attachments [model]=\"model\"></bizdoc-attachments>\r\n <bizdoc-events [model]=\"model\"></bizdoc-events>\r\n</div>\r\n<div class=\"row\">\r\n <span class=\"note\" [innerHTML]=\"note | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span class=\"divider\"></span>\r\n @for (a of actions; track a) {\r\n @if (a.icon) {\r\n <button mat-icon-button (click)=\"send(a.name)\" [bizdocTooltip]=\"a.title\" class=\"tool\">\r\n <mat-icon>{{a.icon}}</mat-icon>\r\n </button>\r\n }\r\n }\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"mat-small row\">\r\n <span>{{model.stateId | state : 'past' }}</span>\r\n \r\n <span class=\"time\" [bizdocTooltip]=\"model.received | amCalendar\">{{model.received | amTimeAgo}}</span>\r\n \r\n <span [innerHTML]=\"sender | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span> \r\n <span [innerHTML]=\"awaiting | sanitizeHtml\" (click)=\"chat($event)\" class=\"who\"></span>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <div class=\"center center\">\r\n @if (typing) {\r\n <span class=\"mat-small\">{{'SomeoneTyping'|translate}}</span>\r\n }\r\n @if (model.comments.length) {\r\n <div class=\"mat-small\">\r\n @if (!newComments) {\r\n <span>{{model.comments.length > 1 ? ('CommentsCount' | translate : model.comments.length) : 'OneComment' | translate }}</span>\r\n } @else {\r\n <span [innerHTML]=\"'NewCommentsCount' | translate : model.comments.length : newComments | sanitizeHtml\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if (model.tags) {\r\n <mat-chip-set>\r\n @for (tag of model.tags; track tag) {\r\n <mat-chip [disabled]=\"true\">{{tag}}</mat-chip>\r\n }\r\n </mat-chip-set>\r\n }\r\n</div>\r\n", styles: [":host{display:flex;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;overflow:hidden;padding-right:24px;padding-left:24px;text-align:start}.row{align-items:center;min-height:27px;flex-direction:row;box-sizing:border-box;display:flex}.note{font-weight:200}.time{text-transform:uppercase}.summary{max-width:fit-content}\n"] }]
|
311
311
|
}], ctorParameters: () => [{ type: i1.PromptService }, { type: i2.ChatInfo }, { type: i3.AccountService }, { type: i4.MailboxService }, { type: i5.SessionService }, { type: i6.Directionality }, { type: i7.MatDialog }, { type: i8.TranslateService }, { type: i9.HubService }], propDecorators: { model: [{
|
312
312
|
type: Input
|
313
313
|
}], sent: [{
|
314
314
|
type: Output
|
315
315
|
}] } });
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2Jyb3dzZS9leHBhbmRlZC1pdGVtL2V4cGFuZGVkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZXhwYW5kZWQtaXRlbS9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQU9wRCxNQUFNLE9BQU8scUJBQXFCO0lBYWhDLFlBQW9CLEdBQWtCLEVBQzVCLEtBQWUsRUFDZixTQUF5QixFQUN6QixRQUF3QixFQUN4QixRQUF3QixFQUN4QixJQUFvQixFQUNwQixPQUFrQixFQUNsQixVQUE0QixFQUM1QixVQUFzQjtRQVJaLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWdC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R0FBRztvQkFDTixDQUFDO3dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0ExVFUscUJBQXFCO2tHQUFyQixxQkFBcUIsbUhDeEJsQyw0eURBbURBOzsyRkQzQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjs2U0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEhlYWRlck1vZGVsLCBBY3Rpb24sIFVzZXJJbmZvLCBHZW5kZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRpYWxvZywgQWN0aW9uRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYWN0aW9uL2FjdGlvbi5kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuXHJcbmNvbnN0IFJFRlJFU0hfVElNRSA9IDMwMDAwLCBUWVBJTkdfSElOVF9USU1FID0gMTUwMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWV4cGFuZGVkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBhY3Rpb25zPzogQWN0aW9uW107XHJcbiAgbmV3Q29tbWVudHM/OiBudW1iZXI7XHJcbiAgdHlwaW5nPzogYm9vbGVhbjtcclxuICBub3RlOiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nO1xyXG4gIGF3YWl0aW5nPzogc3RyaW5nO1xyXG4gIG1vZGU6ICd3b3JraW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgbnVsbDtcclxuICBwcml2YXRlIF90eXBpbmdUYXNrOiBOb2RlSlMuVGltZW91dDtcclxuICBwcml2YXRlIF9yZWZyZXNoVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQgJiYgKGUubW9kZWwuYnlJZCB8fCBlLm1vZGVsLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9jb21tZW50cygpO1xyXG4gICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KGUubW9kZWwudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnQ29tbWVudGVkJywgdS5nZW5kZXIsIHUubmFtZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcudXBkYXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICBpZiAoZS5tb2RlbC5pZCA9PT0gdGhpcy5tb2RlbC5pZCkge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgICAgICAoZS51c2VySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSAmJiB0aGlzLl9hY2NvdW50cy5nZXQoZS51c2VySWQpLnN1YnNjcmliZSh1ID0+XHJcbiAgICAgICAgICB0aGlzLl9zYi50b2FzdCgnTWFpbFZlcnNpb25VcGRhdGUnLCB0aGlzLm1vZGVsLm51bWJlciwgdS5uYW1lKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fbWFpbGJveC5jaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PlxyXG4gICAgICAoZS5pZCA9PT0gdGhpcy5tb2RlbC5pZCkgJiZcclxuICAgICAgdGhpcy5fcmVmcmVzaCgpKTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy5jb21tZW50VHlwaW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZmlsdGVyKGUgPT4gZS5pZCA9PT0gdGhpcy5tb2RlbC5kb2N1bWVudElkKSkuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICB0aGlzLnR5cGluZyA9IHRydWU7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGFzayA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy50eXBpbmcgPSBmYWxzZSwgVFlQSU5HX0hJTlRfVElNRSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIHRoaXMuX3JlZnJlc2hUYXNrID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVmcmVzaCgpLCBSRUZSRVNIX1RJTUUpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKCkge1xyXG4gICAgY29uc3QgeyBvd25lcklkLCBvd25lckJ5SWQsIGlzc3VlZCwgc3Vic3RpdHV0ZUlkLCByZWNlaXZlZCwgcmVwbGllZCwgbG9nLCBpZCwgbm90ZSwgYnlJZCwgYWN0aW9uLCBlc2NhbGF0ZWQsIG9yaWdpbklkLCBkcmFmdCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGxldCB0YXJnZXQ6IHN0cmluZztcclxuICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgdGFyZ2V0ID0gYXdhaXQgdGhpcy5fdGFyZ2V0KGlkKTtcclxuICAgIH1cclxuICAgIGlmIChzdWJzdGl0dXRlSWQpIHtcclxuICAgICAgY29uc3Qgc3Vic3RpdHV0aW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHN1YnN0aXR1dGVJZCkpO1xyXG4gICAgICBpZiAocmVwbGllZCkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlcGxpZWQpLFxyXG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgIGFkamVjdGl2ZSA9IChhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW5UbycsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSxcclxuICAgICAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGVBY3Rpb25UYWtlbicsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSwgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXNjYWxhdGVkKSB7XHJcbiAgICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnRXNjYWxhdGVkRnJvbScsIHN1YnN0aXR1dGluZy5nZW5kZXIsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRoaXMuX2R1cmF0aW9uKGVzY2FsYXRpb24uZHVyYXRpb24pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNlaXZlZCk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdOb3RlJywgc3Vic3RpdHV0aW5nLmdlbmRlcixcclxuICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksXHJcbiAgICAgICAgICB0aW1lLFxyXG4gICAgICAgICAgbm90ZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJlcGxpZWQpIHtcclxuICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVwbGllZCk7XHJcbiAgICAgIGlmIChieUlkKSB7XHJcbiAgICAgICAgaWYgKGJ5SWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUlkKSB7XHJcbiAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5WW91VG8nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3UnLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX2FjY291bnRzLmdldChieUlkKS5zdWJzY3JpYmUodSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeVRvJywgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgdS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuVG8nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0YXJnZXQsIHRpbWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnQWN0aW9uVGFrZW4nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25UbycsIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uLCAneW91JyksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgJ3lvdScpLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm90ZSlcclxuICAgICAgdGhpcy5ub3RlID0gbm90ZTtcclxuICAgIGVsc2UgaWYgKG9yaWdpbklkKSB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maW5kKHIgPT4gci5pZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBvcmlnaW4uYWN0aW9uKSxcclxuICAgICAgICBhZGplY3RpdmUgPSBhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZTtcclxuICAgICAgaWYgKChvcmlnaW4uYnlJZCB8fCBvcmlnaW4udXNlcklkKSA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlZb3UnLCBhZGplY3RpdmUpO1xyXG4gICAgICBlbHNlIGlmIChvcmlnaW4uYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLmJ5SWQpKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oIHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnknLCBhZGplY3RpdmUsIHdoby5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgJiYgIWRyYWZ0KSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KGlzc3VlZCk7XHJcbiAgICAgIGlmIChvd25lckJ5SWQpIHtcclxuICAgICAgICBpZiAob3duZXJCeUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZClcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnWW91U3VibWl0dGVkTm90ZUJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5R2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvd25lckJ5SWQpKTtcclxuICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlQnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGVZb3VCeScsIGJ5LmdlbmRlcixcclxuICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChieSksXHJcbiAgICAgICAgICAgICAgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VTdWJtaXR0ZWROb3RlJywgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfdGFyZ2V0KGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maWx0ZXIociA9PiByLm9yaWdpbklkID09PSBpZCk7XHJcbiAgICBpZiAob3JpZ2luLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldEFsbChvcmlnaW4ubWFwKHIgPT4gci51c2VySWQpKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuam9pbihcclxuICAgICAgICB1c2Vycy5tYXAodSA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh1KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FjdGlvbk5hbWUobmFtZTogc3RyaW5nLCBnZW5kZXI6IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmICghYWN0aW9uKSByZXR1cm4gbmFtZTtcclxuICAgIGlmIChnZW5kZXIgPT09ICd5b3UnKSB7XHJcbiAgICAgIGNvbnN0IGdlbmRlciA9IHRoaXMuX3Nlc3Npb24uZ2VuZGVyO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KSB8fCBhY3Rpb24ucGFzdCB8fFxyXG4gICAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi5wYXN0TWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi5wYXN0RmVtYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgICAgYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHVyYXRpb24odGltZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gZGF5anMuZHVyYXRpb24odGltZSwgJ3MnKS5odW1hbml6ZSgpO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIGFzeW5jIF9yZWZyZXNoKCkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25zIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5hY3Rpb25zID0gYWN0aW9ucyAmJiBhY3Rpb25zLmxlbmd0aCA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbHRlcihhID0+IGFjdGlvbnMuaW5kZXhPZihhLm5hbWUpID4gLTEpIDogbnVsbDtcclxuICAgIGNvbnN0IHsgc2VuZGVySWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICAvLyBzZW5kZXJcclxuICAgIGlmIChzZW5kZXJJZCAmJiAoc2VuZGVySWQgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSkge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQoc2VuZGVySWQpKTtcclxuICAgICAgdGhpcy5zZW5kZXIgPSB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudCh3aG8pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tbWVudHMoKTtcclxuICAgIHRoaXMuX25vdGUoKTtcclxuICAgIHRoaXMuX2F3YWl0aW5nKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbW1lbnRzKCkge1xyXG4gICAgY29uc3QgeyB2aWV3ZWQsIGNvbW1lbnRzIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgdGhpcy5uZXdDb21tZW50cyA9IHZpZXdlZCA/XHJcbiAgICAgIGNvbW1lbnRzLmZpbHRlcihjID0+IGMudGltZSA+IHZpZXdlZCAmJiAoYy5ieUlkIHx8IGMudXNlcklkKSAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpLmxlbmd0aCB8fCBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2F3YWl0aW5nKCkge1xyXG4gICAgLy9hd2FpdGluZ1xyXG4gICAgbGV0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5wZW5kaW5nICYmICFyLmVzdGltYXRlKS5cclxuICAgICAgc29ydCgocjAsIHIxKSA9PiByMC5yZWNlaXZlZCA+IHIxLnJlY2VpdmVkID8gMSA6IC0xKS5cclxuICAgICAgbWFwKHIgPT4gci51c2VySWQpO1xyXG4gICAgcmVjaXBpZW50cyA9IHJlY2lwaWVudHMuZmlsdGVyKChyLCBpKSA9PiByZWNpcGllbnRzLmluZGV4T2YocikgPT09IGkpOyAvKiB1bmlxdWUgKi9cclxuICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHJlY2lwaWVudHMuaW5kZXhPZih0aGlzLl9zZXNzaW9uLnVzZXJJZCkgPCAwIHx8IHJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0QWxsKHJlY2lwaWVudHMuZmlsdGVyKHIgPT4gciAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpKSk7XHJcbiAgICAgICAgY29uc3QgbmFtZXMgPSB1c2Vycy5tYXAocCA9PiB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChwKSk7XHJcbiAgICAgICAgcmVjaXBpZW50cy5pbmRleE9mKHRoaXMuX3Nlc3Npb24udXNlcklkKSA+IC0xICYmXHJcbiAgICAgICAgICBuYW1lcy5wdXNoKHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdXJzZWxmJykpO1xyXG4gICAgICAgIHRoaXMuYXdhaXRpbmcgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBd2FpdGluZycsIHRoaXMuX3RyYW5zbGF0ZS5qb2luKG5hbWVzKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgICogQ2hhdFxyXG4gICAgICogQHBhcmFtIGVcclxuICAgICAqL1xyXG4gIGNoYXQoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdXNlcklkID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5mbycpO1xyXG4gICAgdXNlcklkICYmXHJcbiAgICAgIHRoaXMuX2NoYXQub3Blbih1c2VySWQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXRVc2VyRWxlbWVudChwZXJzb246IFVzZXJJbmZvKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hhdC5mb3JtYXQocGVyc29uKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFjdGlvblxyXG4gICAqL1xyXG4gIHNlbmQoYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHsgaWQsIG51bWJlciwgdmVyc2lvbiwgZm9ybUlkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgY29uc3QgZGF0YTogQWN0aW9uRGlhbG9nRGF0YSA9IHtcclxuICAgICAgYWN0aW9uLFxyXG4gICAgICBpdGVtOiB0aGlzLm1vZGVsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQWN0aW9uRGlhbG9nLCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhcmdzID0+IHtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICB0aGlzLm1vZGUgPSAnd29ya2luZyc7XHJcbiAgICAgICAgdGhpcy5fbWFpbGJveC5zZW5kKGlkLCB2ZXJzaW9uLCBmb3JtSWQsIG51bGwsIGFjdGlvbiwgYXJncykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IGFzeW5jIHIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSxcclxuICAgICAgICAgICAgICBhZGplY3RpdmUgPSBjYWN0aW9uLmFkamVjdGl2ZSB8fCBjYWN0aW9uLnRpdGxlO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW50LmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdkb25lJztcclxuICAgICAgICAgIH0sIGVycm9yOiBlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVzcG9uc2UoZSwgdGhpcy5tb2RlbCwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHJlc291cmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBpdGVtOiBIZWFkZXJNb2RlbCwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwOTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIGl0ZW0ubnVtYmVyKTtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgb2JqKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVmcmVzaFRhc2spO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl90eXBpbmdUYXNrICYmIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlbC5zdW1tYXJ5KSB7XG4gIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCIgW2lubmVySFRNTF09XCJtb2RlbC5zdW1tYXJ5XCI+XG4gIDwvZGl2PlxufVxuPGRpdj5cbiAgPGJpemRvYy1hdHRhY2htZW50cyBbbW9kZWxdPVwibW9kZWxcIj48L2JpemRvYy1hdHRhY2htZW50cz5cbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgQGZvciAoYSBvZiBhY3Rpb25zOyB0cmFjayBhKSB7XG4gICAgQGlmIChhLmljb24pIHtcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZW5kKGEubmFtZSlcIiBbYml6ZG9jVG9vbHRpcF09XCJhLnRpdGxlXCIgY2xhc3M9XCJ0b29sXCI+XG4gICAgICAgIDxtYXQtaWNvbj57e2EuaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtc21hbGwgcm93XCI+XG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XG4gICAgJm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0aW1lXCIgW2JpemRvY1Rvb2x0aXBdPVwibW9kZWwucmVjZWl2ZWQgfCBhbUNhbGVuZGFyXCI+e3ttb2RlbC5yZWNlaXZlZCB8IGFtVGltZUFnb319PC9zcGFuPlxuICAgICZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VuZGVyIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPiZuYnNwO1xuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiYXdhaXRpbmcgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgQGlmICh0eXBpbmcpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LXNtYWxsXCI+e3snU29tZW9uZVR5cGluZyd8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgfVxuICAgIEBpZiAobW9kZWwuY29tbWVudHMubGVuZ3RoKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsXCI+XG4gICAgICAgIEBpZiAoIW5ld0NvbW1lbnRzKSB7XG4gICAgICAgICAgPHNwYW4+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ05ld0NvbW1lbnRzQ291bnQnIHwgdHJhbnNsYXRlIDogbW9kZWwuY29tbWVudHMubGVuZ3RoIDogbmV3Q29tbWVudHMgfCBzYW5pdGl6ZUh0bWxcIj48L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAobW9kZWwudGFncykge1xuICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICBAZm9yICh0YWcgb2YgbW9kZWwudGFnczsgdHJhY2sgdGFnKSB7XG4gICAgICAgIDxtYXQtY2hpcCBbZGlzYWJsZWRdPVwidHJ1ZVwiPnt7dGFnfX08L21hdC1jaGlwPlxuICAgICAgfVxuICAgIDwvbWF0LWNoaXAtc2V0PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2V4cGFuZGVkLWl0ZW0vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2V4cGFuZGVkLWl0ZW0vZXhwYW5kZWQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUW5ELE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0sb0NBQW9DLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFPcEQsTUFBTSxPQUFPLHFCQUFxQjtJQWFoQyxZQUFvQixHQUFrQixFQUM1QixLQUFlLEVBQ2YsU0FBeUIsRUFDekIsUUFBd0IsRUFDeEIsUUFBd0IsRUFDeEIsSUFBb0IsRUFDcEIsT0FBa0IsRUFDbEIsVUFBNEIsRUFDNUIsVUFBc0I7UUFSWixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFnQjtR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QUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLEtBQUssR0FBRztvQkFDTixDQUFDO3dCQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQTZDLENBQUM7d0JBQ3pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0ExVFUscUJBQXFCO2tHQUFyQixxQkFBcUIsbUhDeEJsQyxrNURBbURBOzsyRkQzQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHNCQUFzQjs2U0FLdkIsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwsIEhlYWRlck1vZGVsLCBBY3Rpb24sIFVzZXJJbmZvLCBHZW5kZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRpYWxvZywgQWN0aW9uRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYWN0aW9uL2FjdGlvbi5kaWFsb2cnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uLy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuXHJcbmNvbnN0IFJFRlJFU0hfVElNRSA9IDMwMDAwLCBUWVBJTkdfSElOVF9USU1FID0gMTUwMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWV4cGFuZGVkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHBhbmRlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjaXBpZW50TW9kZWw8YW55Pj4oKTtcclxuICBhY3Rpb25zPzogQWN0aW9uW107XHJcbiAgbmV3Q29tbWVudHM/OiBudW1iZXI7XHJcbiAgdHlwaW5nPzogYm9vbGVhbjtcclxuICBub3RlOiBzdHJpbmc7XHJcbiAgc2VuZGVyPzogc3RyaW5nO1xyXG4gIGF3YWl0aW5nPzogc3RyaW5nO1xyXG4gIG1vZGU6ICd3b3JraW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgbnVsbDtcclxuICBwcml2YXRlIF90eXBpbmdUYXNrOiBOb2RlSlMuVGltZW91dDtcclxuICBwcml2YXRlIF9yZWZyZXNoVGFzazogTm9kZUpTLlRpbWVvdXQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdpbmc6IEh1YlNlcnZpY2UpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tZXNzYWdpbmcuY29tbWVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuaWQgPT09IHRoaXMubW9kZWwuaWQgJiYgKGUubW9kZWwuYnlJZCB8fCBlLm1vZGVsLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICB0aGlzLl9jb21tZW50cygpO1xyXG4gICAgICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KGUubW9kZWwudXNlcklkKS5zdWJzY3JpYmUodSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zYi50b2FzdFN0cmluZyh0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0NvbW1lbnRlZCcsIHUuZ2VuZGVyLCB1Lm5hbWUpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuX21lc3NhZ2luZy51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGlmIChlLm1vZGVsLmlkID09PSB0aGlzLm1vZGVsLmlkKSB7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xyXG4gICAgICAgIChlLnVzZXJJZCAhPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpICYmIHRoaXMuX2FjY291bnRzLmdldChlLnVzZXJJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdNYWlsVmVyc2lvblVwZGF0ZScsIHRoaXMubW9kZWwubnVtYmVyLCB1Lm5hbWUpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShlID0+XHJcbiAgICAgIChlLmlkID09PSB0aGlzLm1vZGVsLmlkKSAmJlxyXG4gICAgICB0aGlzLl9yZWZyZXNoKCkpO1xyXG4gICAgdGhpcy5fbWVzc2FnaW5nLmNvbW1lbnRUeXBpbmckLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBmaWx0ZXIoZSA9PiBlLmlkID09PSB0aGlzLm1vZGVsLmRvY3VtZW50SWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnR5cGluZyA9IHRydWU7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICAgICAgdGhpcy5fdHlwaW5nVGFzayA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy50eXBpbmcgPSBmYWxzZSwgVFlQSU5HX0hJTlRfVElNRSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3JlZnJlc2goKTtcclxuICAgIHRoaXMuX3JlZnJlc2hUYXNrID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5fcmVmcmVzaCgpLCBSRUZSRVNIX1RJTUUpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9ub3RlKCkge1xyXG4gICAgY29uc3QgeyBvd25lcklkLCBvd25lckJ5SWQsIGlzc3VlZCwgc3Vic3RpdHV0ZUlkLCByZWNlaXZlZCwgcmVwbGllZCwgbG9nLCBpZCwgbm90ZSwgYnlJZCwgYWN0aW9uLCBlc2NhbGF0ZWQsIG9yaWdpbklkLCBkcmFmdCB9ID0gdGhpcy5tb2RlbDtcclxuICAgIGxldCB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChhY3Rpb24pIFxyXG4gICAgICB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgaWYgKHN1YnN0aXR1dGVJZCkge1xyXG4gICAgICBjb25zdCBzdWJzdGl0dXRpbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQoc3Vic3RpdHV0ZUlkKSk7XHJcbiAgICAgIGlmIChyZXBsaWVkKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVwbGllZCksXHJcbiAgICAgICAgICBhYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gYWN0aW9uKSEsXHJcbiAgICAgICAgICBhZGplY3RpdmUgPSAoYWFjdGlvbi5hZGplY3RpdmUgfHwgYWFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJzdGl0dXRlQWN0aW9uVGFrZW5UbycsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSxcclxuICAgICAgICAgICAgdGFyZ2V0LFxyXG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRVc2VyRWxlbWVudChzdWJzdGl0dXRpbmcpLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGVBY3Rpb25UYWtlbicsIHN1YnN0aXR1dGluZy5nZW5kZXIsIGFkamVjdGl2ZSwgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXNjYWxhdGVkKSB7XHJcbiAgICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IGxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gb3JpZ2luSWQpO1xyXG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnRXNjYWxhdGVkRnJvbScsIHN1YnN0aXR1dGluZy5nZW5kZXIsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHN1YnN0aXR1dGluZyksIHRoaXMuX2R1cmF0aW9uKGVzY2FsYXRpb24hLmR1cmF0aW9uISkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2VpdmVkKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ05vdGUnLCBzdWJzdGl0dXRpbmcuZ2VuZGVyLFxyXG4gICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoc3Vic3RpdHV0aW5nKSxcclxuICAgICAgICAgIHRpbWUsXHJcbiAgICAgICAgICBub3RlIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVwbGllZCkge1xyXG4gICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZXBsaWVkKTtcclxuICAgICAgaWYgKGJ5SWQpIHtcclxuICAgICAgICBpZiAoYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpIHtcclxuICAgICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3VUbycsIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uISwgJ3lvdScpLFxyXG4gICAgICAgICAgICAgIHRhcmdldCxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3UnLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsICd5b3UnKSxcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9hY2NvdW50cy5nZXQoYnlJZCkuc3Vic2NyaWJlKHUgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCB1LmdlbmRlciksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvbkJ5JywgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsIHUuZ2VuZGVyKSwgdGltZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuVG8nLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKSwgdGFyZ2V0LCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGlvbk5hbWUoYWN0aW9uISwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciksIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0YXJnZXQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvblRvJywgdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24hLCAneW91JyksIHRhcmdldCwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiEsICd5b3UnKSwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vdGUpXHJcbiAgICAgIHRoaXMubm90ZSA9IG5vdGU7XHJcbiAgICBlbHNlIGlmIChvcmlnaW5JZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IG9yaWdpbklkKSE7XHJcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG9yaWdpbi5hY3Rpb24pISxcclxuICAgICAgICBhZGplY3RpdmUgPSBhY3Rpb24uYWRqZWN0aXZlIHx8IGFjdGlvbi5wYXN0IHx8IGFjdGlvbi50aXRsZTtcclxuICAgICAgaWYgKChvcmlnaW4uYnlJZCB8fCBvcmlnaW4udXNlcklkKSA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnlZb3UnLCBhZGplY3RpdmUpO1xyXG4gICAgICBlbHNlIGlmIChvcmlnaW4uYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLmJ5SWQpKTtcclxuICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oIHRoaXMuX2FjY291bnRzLmdldChvcmlnaW4udXNlcklkKSk7XHJcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uQnknLCBhZGplY3RpdmUsIHdoby5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgJiYgIWRyYWZ0KSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KGlzc3VlZCEpO1xyXG4gICAgICBpZiAob3duZXJCeUlkKSB7XHJcbiAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHRpbWUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3duZXJCeUlkKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICAgIHRoaXMubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZUJ5JywgYnkuZ2VuZGVyLFxyXG4gICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KGJ5KSxcclxuICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSxcclxuICAgICAgICAgICAgICB0aW1lKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlWW91QnknLCBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQoYnkpLFxyXG4gICAgICAgICAgICAgIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0aGlzLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3RhcmdldChpZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5vcmlnaW5JZCA9PT0gaWQpO1xyXG4gICAgaWYgKG9yaWdpbi5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwob3JpZ2luLm1hcChyID0+IHIudXNlcklkKSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmpvaW4oXHJcbiAgICAgICAgdXNlcnMubWFwKHUgPT4gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQodSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWN0aW9uTmFtZShuYW1lOiBzdHJpbmcsIGdlbmRlcjogR2VuZGVyIHwgdW5kZWZpbmVkIHwgJ3lvdScpIHtcclxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgaWYgKCFhY3Rpb24pIHJldHVybiBuYW1lO1xyXG4gICAgaWYgKGdlbmRlciA9PT0gJ3lvdScpIHtcclxuICAgICAgY29uc3QgZ2VuZGVyID0gdGhpcy5fc2Vzc2lvbi5nZW5kZXI7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgKGdlbmRlciA9PT0gJ01hbGUnID8gKGFjdGlvbi55b3VNYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnlvdUZlbWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICAgIGFjdGlvbi55b3UpIHx8IGFjdGlvbi5wYXN0IHx8XHJcbiAgICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICgoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnBhc3RGZW1hbGUgfHwgYWN0aW9uLnBhc3QpIDpcclxuICAgICAgICBhY3Rpb24ucGFzdCkgfHxcclxuICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9mcm9tTm93KGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXlqcyhkYXRlKS5mcm9tTm93KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kdXJhdGlvbih0aW1lOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBkYXlqcy5kdXJhdGlvbih0aW1lLCAncycpLmh1bWFuaXplKCk7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3JlZnJlc2goKSB7XHJcbiAgICBjb25zdCB7IGFjdGlvbnMgfSA9IHRoaXMubW9kZWw7XHJcbiAgICB0aGlzLmFjdGlvbnMgPSBhY3Rpb25zICYmIGFjdGlvbnMubGVuZ3RoID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmlsdGVyKGEgPT4gYWN0aW9ucy5pbmRleE9mKGEubmFtZSkgPiAtMSkgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB7IHNlbmRlcklkIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgLy8gc2VuZGVyXHJcbiAgICBpZiAoc2VuZGVySWQgJiYgKHNlbmRlcklkICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNlbmRlcklkKSk7XHJcbiAgICAgIHRoaXMuc2VuZGVyID0gdGhpcy5fZm9ybWF0VXNlckVsZW1lbnQod2hvKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbW1lbnRzKCk7XHJcbiAgICB0aGlzLl9ub3RlKCk7XHJcbiAgICB0aGlzLl9hd2FpdGluZygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb21tZW50cygpIHtcclxuICAgIGNvbnN0IHsgdmlld2VkLCBjb21tZW50cyB9ID0gdGhpcy5tb2RlbDtcclxuICAgIHRoaXMubmV3Q29tbWVudHMgPSB2aWV3ZWQgP1xyXG4gICAgICBjb21tZW50cy5maWx0ZXIoYyA9PiBjLnRpbWUgPiB2aWV3ZWQgJiYgKGMuYnlJZCB8fCBjLnVzZXJJZCkgIT09IHRoaXMuX3Nlc3Npb24udXNlcklkKS5sZW5ndGggfHwgdW5kZWZpbmVkIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfYXdhaXRpbmcoKSB7XHJcbiAgICAvL2F3YWl0aW5nXHJcbiAgICBsZXQgcmVjaXBpZW50cyA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5maWx0ZXIociA9PiByLnBlbmRpbmcgJiYgIXIuZXN0aW1hdGUpLlxyXG4gICAgICBzb3J0KChyMCwgcjEpID0+IHIwLnJlY2VpdmVkID4gcjEucmVjZWl2ZWQgPyAxIDogLTEpLlxyXG4gICAgICBtYXAociA9PiByLnVzZXJJZCk7XHJcbiAgICByZWNpcGllbnRzID0gcmVjaXBpZW50cy5maWx0ZXIoKHIsIGkpID0+IHJlY2lwaWVudHMuaW5kZXhPZihyKSA9PT0gaSk7IC8qIHVuaXF1ZSAqL1xyXG4gICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAocmVjaXBpZW50cy5pbmRleE9mKHRoaXMuX3Nlc3Npb24udXNlcklkKSA8IDAgfHwgcmVjaXBpZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXRBbGwocmVjaXBpZW50cy5maWx0ZXIociA9PiByICE9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCkpKTtcclxuICAgICAgICBjb25zdCBuYW1lcyA9IHVzZXJzLm1hcChwID0+IHRoaXMuX2Zvcm1hdFVzZXJFbGVtZW50KHApKTtcclxuICAgICAgICByZWNpcGllbnRzLmluZGV4T2YodGhpcy5fc2Vzc2lvbi51c2VySWQpID4gLTEgJiZcclxuICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5fdHJhbnNsYXRlLmdldCgnWW91cnNlbGYnKSk7XHJcbiAgICAgICAgdGhpcy5hd2FpdGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0F3YWl0aW5nJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4obmFtZXMpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAgKiBDaGF0XHJcbiAgICAgKiBAcGFyYW0gZVxyXG4gICAgICovXHJcbiAgY2hhdChlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB1c2VySWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnZGF0YS1pbmZvJyk7XHJcbiAgICB1c2VySWQgJiZcclxuICAgICAgdGhpcy5fY2hhdC5vcGVuKHVzZXJJZCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Zvcm1hdFVzZXJFbGVtZW50KHBlcnNvbjogVXNlckluZm8pIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGF0LmZvcm1hdChwZXJzb24pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYWN0aW9uXHJcbiAgICovXHJcbiAgc2VuZChhY3Rpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgeyBpZCwgbnVtYmVyLCB2ZXJzaW9uLCBmb3JtSWQgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBjb25zdCBkYXRhOiBBY3Rpb25EaWFsb2dEYXRhID0ge1xyXG4gICAgICBhY3Rpb24sXHJcbiAgICAgIGl0ZW06IHRoaXMubW9kZWxcclxuICAgIH07XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihBY3Rpb25EaWFsb2csIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWVcclxuICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFyZ3MgPT4ge1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIHRoaXMubW9kZSA9ICd3b3JraW5nJztcclxuICAgICAgICB0aGlzLl9tYWlsYm94LnNlbmQoaWQsIHZlcnNpb24sIGZvcm1JZCwgbnVsbCwgYWN0aW9uLCBhcmdzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogYXN5bmMgciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBhY3Rpb24pISxcclxuICAgICAgICAgICAgICBhZGplY3RpdmUgPSBjYWN0aW9uLmFkamVjdGl2ZSB8fCBjYWN0aW9uLnRpdGxlO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCB0aGlzLl90YXJnZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KVxyXG4gICAgICAgICAgICAgIHRoaXMuX3NiLnRvYXN0KCdTZW50VG8nLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fc2IudG9hc3QoJ1NlbnQnLCBudW1iZXIsIGFkamVjdGl2ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZW50LmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZSA9ICdkb25lJztcclxuICAgICAgICAgIH0sIGVycm9yOiBlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmVzcG9uc2UoZSwgdGhpcy5tb2RlbCwgJ1NlbmRFcnInKTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaXRlbVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHJlc291cmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaGFuZGxlUmVzcG9uc2UocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55LCBpdGVtOiBIZWFkZXJNb2RlbCwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocmVzcG9uc2UuY29uc3RydWN0b3IubmFtZSA9PT0gJ1Bvc2l0aW9uRXJyb3InKVxyXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlLmNvZGUpIHtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVXNlckRlbmllZEdlb0VycicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdHZW9FcnInKTtcclxuICAgICAgfVxyXG4gICAgZWxzZSBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwOTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignVmVyc2lvbkVycicsIGl0ZW0ubnVtYmVyKTtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IHJlc3BvbnNlLmVycm9yIC8qIHNlcmlhbGl6ZWQgbW9kZWwgKi8gYXMgUmVjaXBpZW50TW9kZWw8YW55PjtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgb2JqKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcmVmcmVzaFRhc2spO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl90eXBpbmdUYXNrICYmIGNsZWFyVGltZW91dCh0aGlzLl90eXBpbmdUYXNrKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChtb2RlbC5zdW1tYXJ5KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN1bW1hcnlcIiBbaW5uZXJIVE1MXT1cIm1vZGVsLnN1bW1hcnlcIj5cclxuICA8L2Rpdj5cclxufVxyXG48ZGl2PlxyXG4gIDxiaXpkb2MtYXR0YWNobWVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtYXR0YWNobWVudHM+XHJcbiAgPGJpemRvYy1ldmVudHMgW21vZGVsXT1cIm1vZGVsXCI+PC9iaXpkb2MtZXZlbnRzPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibm90ZVwiIFtpbm5lckhUTUxdPVwibm90ZSB8IHNhbml0aXplSHRtbFwiIChjbGljayk9XCJjaGF0KCRldmVudClcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIEBmb3IgKGEgb2YgYWN0aW9uczsgdHJhY2sgYSkge1xyXG4gICAgQGlmIChhLmljb24pIHtcclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNlbmQoYS5uYW1lKVwiIFtiaXpkb2NUb29sdGlwXT1cImEudGl0bGVcIiBjbGFzcz1cInRvb2xcIj5cclxuICAgICAgICA8bWF0LWljb24+e3thLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LXNtYWxsIHJvd1wiPlxyXG4gICAgPHNwYW4+e3ttb2RlbC5zdGF0ZUlkIHwgc3RhdGUgOiAncGFzdCcgfX08L3NwYW4+XHJcbiAgICAmbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwidGltZVwiIFtiaXpkb2NUb29sdGlwXT1cIm1vZGVsLnJlY2VpdmVkIHwgYW1DYWxlbmRhclwiPnt7bW9kZWwucmVjZWl2ZWQgfCBhbVRpbWVBZ299fTwvc3Bhbj5cclxuICAgICZuYnNwO1xyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJzZW5kZXIgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCIgY2xhc3M9XCJ3aG9cIj48L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImF3YWl0aW5nIHwgc2FuaXRpemVIdG1sXCIgKGNsaWNrKT1cImNoYXQoJGV2ZW50KVwiIGNsYXNzPVwid2hvXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgQGlmICh0eXBpbmcpIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtc21hbGxcIj57eydTb21lb25lVHlwaW5nJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBpZiAobW9kZWwuY29tbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc21hbGxcIj5cclxuICAgICAgICBAaWYgKCFuZXdDb21tZW50cykge1xyXG4gICAgICAgICAgPHNwYW4+e3ttb2RlbC5jb21tZW50cy5sZW5ndGggPiAxID8gKCdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCkgOiAnT25lQ29tbWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidOZXdDb21tZW50c0NvdW50JyB8IHRyYW5zbGF0ZSA6IG1vZGVsLmNvbW1lbnRzLmxlbmd0aCA6IG5ld0NvbW1lbnRzIHwgc2FuaXRpemVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChtb2RlbC50YWdzKSB7XHJcbiAgICA8bWF0LWNoaXAtc2V0PlxyXG4gICAgICBAZm9yICh0YWcgb2YgbW9kZWwudGFnczsgdHJhY2sgdGFnKSB7XHJcbiAgICAgICAgPG1hdC1jaGlwIFtkaXNhYmxlZF09XCJ0cnVlXCI+e3t0YWd9fTwvbWF0LWNoaXA+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWNoaXAtc2V0PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Component, Output, EventEmitter, ViewChild, Input, ElementRef, Inject } from '@angular/core';
|
2
2
|
import { Subject } from 'rxjs';
|
3
3
|
import { debounceTime, takeUntil, switchMap, filter } from 'rxjs/operators';
|
4
|
-
import { cleanup, isString } from '../../core/functions';
|
4
|
+
import { cleanup, isObject, isString } from '../../core/functions';
|
5
5
|
import { AXIS_VALUE_PATTERN } from '../../cube/cube.service';
|
6
6
|
import { BIZDOC_CONFIG } from '../../core/configuration';
|
7
7
|
import { MatChipListbox } from '@angular/material/chips';
|
@@ -34,13 +34,13 @@ export class BrowseFilterComponent {
|
|
34
34
|
this._config = _config;
|
35
35
|
this.pattern = AXIS_VALUE_PATTERN;
|
36
36
|
this.valuesChange = new EventEmitter();
|
37
|
-
this.
|
37
|
+
this.sendername = this._fb.control(null);
|
38
38
|
this.form = this._fb.group({
|
39
|
-
contains: null,
|
40
|
-
form: null,
|
41
|
-
state: null,
|
42
|
-
senderId: null,
|
43
|
-
tag: null
|
39
|
+
contains: this._fb.control(null),
|
40
|
+
form: this._fb.control(null),
|
41
|
+
state: this._fb.control(null),
|
42
|
+
senderId: this._fb.control(null),
|
43
|
+
tag: this._fb.control(null)
|
44
44
|
});
|
45
45
|
this.sources = {};
|
46
46
|
this._destroy = new Subject();
|
@@ -58,40 +58,28 @@ export class BrowseFilterComponent {
|
|
58
58
|
const { axes, cube } = this._config.folders;
|
59
59
|
this.filters = { axes, cube };
|
60
60
|
}
|
61
|
-
this.senders$ = this.
|
62
|
-
pipe(debounceTime(250), filter(v => isString(v)),
|
61
|
+
this.senders$ = this.sendername.valueChanges.
|
62
|
+
pipe(takeUntil(this._destroy), debounceTime(250), filter((v) => isString(v)), switchMap((v) => this._mailbox.senders(v)));
|
63
63
|
this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(FILTER_DEBOUNCE)).
|
64
|
-
subscribe(v =>
|
65
|
-
cleanup(v);
|
66
|
-
this.valuesChange.emit(v);
|
67
|
-
});
|
68
|
-
if (this.folderId) {
|
69
|
-
const folder = this._session.profile.folders.find(f => f.name === this.folderId);
|
70
|
-
if (folder.filters)
|
71
|
-
this.filters = folder.filters;
|
72
|
-
}
|
73
|
-
else if (this._config.folders && this._config.folders.axes) {
|
74
|
-
const { axes, cube } = this._config.folders;
|
75
|
-
this.filters = { axes, cube };
|
76
|
-
}
|
64
|
+
subscribe(v => this.valuesChange.emit(cleanup(v)));
|
77
65
|
this.form.patchValue(this.values, { emitEvent: false });
|
78
66
|
if (this.values.senderId)
|
79
67
|
this._accounts.get(this.values.senderId).
|
80
|
-
subscribe(u => this.
|
68
|
+
subscribe(u => this.sendername.setValue(u, { emitEvent: false }));
|
81
69
|
this.chips.value = this.values.tag;
|
82
70
|
}
|
83
71
|
ngAfterViewInit() {
|
84
72
|
this.focus();
|
85
73
|
}
|
86
|
-
|
87
|
-
return
|
74
|
+
displayValue(val) {
|
75
|
+
return isObject(val) ? val.value : null;
|
88
76
|
}
|
89
77
|
change(axis, evt) {
|
90
|
-
this.form.
|
78
|
+
this.form.get(axis).setValue(evt.option.value.key);
|
91
79
|
}
|
92
80
|
clearSender() {
|
93
|
-
this.
|
94
|
-
this.form.
|
81
|
+
this.sendername.reset(null);
|
82
|
+
this.form.controls.senderId.reset(null);
|
95
83
|
}
|
96
84
|
axesChange(axes) {
|
97
85
|
const value = { ...this.form.value, ...axes };
|
@@ -112,22 +100,22 @@ export class BrowseFilterComponent {
|
|
112
100
|
this.form.patchValue({ senderId: info ? info.id : null });
|
113
101
|
}
|
114
102
|
focus() {
|
115
|
-
if (this.
|
116
|
-
this.
|
117
|
-
else if (this.
|
118
|
-
this.
|
103
|
+
if (this.containsEl)
|
104
|
+
this.containsEl.nativeElement.focus();
|
105
|
+
else if (this.senderEl)
|
106
|
+
this.senderEl.nativeElement.focus();
|
119
107
|
this._cd.detectChanges();
|
120
108
|
}
|
121
109
|
ngOnDestroy() {
|
122
110
|
this._destroy.next();
|
123
111
|
this._destroy.complete();
|
124
112
|
}
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BrowseFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i0.ChangeDetectorRef }, { token: i3.MailboxService }, { token: i4.AccountService }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: BrowseFilterComponent, selector: "bizdoc-browse-filter", inputs: { values: "values", folderId: "folderId", exclude: "exclude" }, outputs: { valuesChange: "valuesChange" }, viewQueries: [{ propertyName: "chips", first: true, predicate: MatChipListbox, descendants: true, static: true }, { propertyName: "containsEl", first: true, predicate: ["contains"], descendants: true, read: ElementRef, static: true }, { propertyName: "senderEl", first: true, predicate: ["sender"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<form [formGroup]=\"form\" class=\"column gap\" autocomplete=\"off\">\r\n @if (!exclude || exclude.indexOf('contains') < 0) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput formControlName=\"contains\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n @if (form.value.contains) {\r\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"sendername\" #sender />\r\n <mat-autocomplete #senders [displayWith]=\"displayValue\" (optionSelected)=\"senderSelected($event)\">\r\n @for (u of senders$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (sendername.value) {\r\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (s of states; track s) {\r\n <mat-option [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (f of forms; track f) {\r\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n @for (tag of tags; track tag) {\r\n <mat-chip-option color=\"accent\">\r\n {{tag}}\r\n </mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n @if (filters) {\r\n <bizdoc-cube-filter class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n }\r\n</form>\r\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i5.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
|
127
115
|
}
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: BrowseFilterComponent, decorators: [{
|
129
117
|
type: Component,
|
130
|
-
args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column gap\" autocomplete=\"off\">\n @if (!exclude || exclude.indexOf('contains') < 0) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput formControlName=\"contains\" placeholder=\"{{'Contains' | translate}}\" #contains>\n @if (form.value.contains) {\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n <mat-form-field subscriptSizing=\"dynamic\">\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"
|
118
|
+
args: [{ selector: 'bizdoc-browse-filter', template: "<form [formGroup]=\"form\" class=\"column gap\" autocomplete=\"off\">\r\n @if (!exclude || exclude.indexOf('contains') < 0) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput formControlName=\"contains\" placeholder=\"{{'Contains' | translate}}\" #contains>\r\n @if (form.value.contains) {\r\n <button matSuffix mat-icon-button aria-label=\"\" (click)=\"form.controls.contains.setValue(null)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <input matInput [matAutocomplete]=\"senders\" [placeholder]=\"'Sender' | translate\" [formControl]=\"sendername\" #sender />\r\n <mat-autocomplete #senders [displayWith]=\"displayValue\" (optionSelected)=\"senderSelected($event)\">\r\n @for (u of senders$ | async; track u) {\r\n <mat-option [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (sendername.value) {\r\n <button matSuffix mat-icon-button (click)=\"clearSender()\"><mat-icon>clear</mat-icon></button>\r\n }\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Status'|translate\" formControlName=\"state\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (s of states; track s) {\r\n <mat-option [value]=\"s.name\">\r\n {{s.title}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-select [placeholder]=\"'Form' | translate\" formControlName=\"form\">\r\n <mat-option>\r\n {{ 'All' | translate }}\r\n </mat-option>\r\n @for (f of forms; track f) {\r\n <mat-option [value]=\"f.name\">{{f.title}}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-chip-listbox id=\"tags\" (change)=\"toggleTag($event)\">\r\n @for (tag of tags; track tag) {\r\n <mat-chip-option color=\"accent\">\r\n {{tag}}\r\n </mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n @if (filters) {\r\n <bizdoc-cube-filter class=\"cube-filter\"\r\n [cube]=\"filters.cube\"\r\n [include]=\"filters.axes\"\r\n [axes]=\"values\"\r\n (axesChange)=\"axesChange($event)\"></bizdoc-cube-filter>\r\n }\r\n</form>\r\n", styles: [".cube-filter ::ng-deep form{padding:0}\n"] }]
|
131
119
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i0.ChangeDetectorRef }, { type: i3.MailboxService }, { type: i4.AccountService }, { type: undefined, decorators: [{
|
132
120
|
type: Inject,
|
133
121
|
args: [BIZDOC_CONFIG]
|
@@ -142,11 +130,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
142
130
|
}], chips: [{
|
143
131
|
type: ViewChild,
|
144
132
|
args: [MatChipListbox, { static: true }]
|
145
|
-
}],
|
133
|
+
}], containsEl: [{
|
146
134
|
type: ViewChild,
|
147
135
|
args: ['contains', { static: true, read: ElementRef }]
|
148
|
-
}],
|
136
|
+
}], senderEl: [{
|
149
137
|
type: ViewChild,
|
150
138
|
args: ['sender', { static: true, read: ElementRef }]
|
151
139
|
}] } });
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYnJvd3NlL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9icm93c2UvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLFNBQVMsRUFBNEIsS0FBSyxFQUFFLFVBQVUsRUFBb0MsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJMLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUF3QixNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUUvRSxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFPNUIsNkJBQTZCO0FBQzdCLE1BQU0sT0FBTyxxQkFBcUI7SUEyQmhDLHlCQUF5QjtJQUN6QixZQUFvQixHQUFnQixFQUMxQixRQUF3QixFQUN4QixHQUFzQixFQUN0QixRQUF3QixFQUN4QixTQUF5QixFQUNGLE9BQXFCO1FBTGxDLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcs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LFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5wdXQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCBzd2l0Y2hNYXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RhdGUsIEZvcm0sIFVzZXJJbmZvLCBBeGVzTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBjbGVhbnVwLCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVhJU19WQUxVRV9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb25maWcsIEJJWkRPQ19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcExpc3Rib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcblxyXG5jb25zdCBGSUxURVJfREVCT1VOQ0UgPSAyNTA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1icm93c2UtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG4vKiogYnJvd3NlLWZpbHRlciBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQnJvd3NlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHBhdHRlcm4gPSBBWElTX1ZBTFVFX1BBVFRFUk47XHJcbiAgQElucHV0KCkgdmFsdWVzOiBCcm93c2VGaWx0ZXJBcmdzO1xyXG4gIEBJbnB1dCgpIGZvbGRlcklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxCcm93c2VGaWx0ZXJBcmdzPigpO1xyXG4gIHJlYWRvbmx5IHNlbmRlcklkID0gdGhpcy5fZmIuY29udHJvbChudWxsKTtcclxuICByZWFkb25seSBmb3JtID0gdGhpcy5fZmIuZ3JvdXA8QnJvd3NlRmlsdGVyQXJncz4oe1xyXG4gICAgY29udGFpbnM6IG51bGwsXHJcbiAgICBmb3JtOiBudWxsLFxyXG4gICAgc3RhdGU6IG51bGwsXHJcbiAgICBzZW5kZXJJZDogbnVsbCxcclxuICAgIHRhZzogbnVsbFxyXG4gIH0pO1xyXG4gIGZvcm1zOiBGb3JtW107XHJcbiAgc3RhdGVzOiBTdGF0ZVtdO1xyXG4gIHNlbmRlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIHRhZ3M6IHN0cmluZ1tdO1xyXG4gIGZpbHRlcnM6IHtcclxuICAgIGN1YmU/OiBzdHJpbmc7XHJcbiAgICBheGVzOiBzdHJpbmdbXTtcclxuICB9O1xyXG4gIEBWaWV3Q2hpbGQoTWF0Q2hpcExpc3Rib3gsIHsgc3RhdGljOiB0cnVlIH0pIGNoaXBzOiBNYXRDaGlwTGlzdGJveDtcclxuICBAVmlld0NoaWxkKCdjb250YWlucycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRhaW5zOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbmRlcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHNlbmRlcjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICByZWFkb25seSBzb3VyY2VzOiB7IFtkYXRhdHlwZTogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IFtuYW1lOiBzdHJpbmddOiBhbnkgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBicm93c2UtZmlsdGVyIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEJpekRvY0NvbmZpZykge1xyXG4gICAgdGhpcy5zdGF0ZXMgPSBfc2Vzc2lvbi5wcm9maWxlLnN0YXRlcztcclxuICAgIHRoaXMuZm9ybXMgPSBfc2Vzc2lvbi5wcm9maWxlLmZvcm1zO1xyXG4gICAgdGhpcy50YWdzID0gX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLnRhZ3M7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9sZGVySWQpIHtcclxuICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5mb2xkZXJJZCk7XHJcbiAgICAgIGlmIChmb2xkZXIuZmlsdGVycylcclxuICAgICAgICB0aGlzLmZpbHRlcnMgPSBmb2xkZXIuZmlsdGVycztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuX2NvbmZpZy5mb2xkZXJzICYmIHRoaXMuX2NvbmZpZy5mb2xkZXJzLmF4ZXMpIHtcclxuICAgICAgY29uc3QgeyBheGVzLCBjdWJlIH0gPSB0aGlzLl9jb25maWcuZm9sZGVycztcclxuICAgICAgdGhpcy5maWx0ZXJzID0geyBheGVzLCBjdWJlIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbmRlcnMkID0gdGhpcy5zZW5kZXJJZC52YWx1ZUNoYW5nZXMuXHJcbiAgICAgIHBpcGUoZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgICAgZmlsdGVyKHYgPT4gaXNTdHJpbmcodikpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgc3dpdGNoTWFwKHYgPT4gdGhpcy5fbWFpbGJveC5zZW5kZXJzKHYpKSk7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoRklMVEVSX0RFQk9VTkNFKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgY2xlYW51cCh2KTtcclxuICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh2KTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZm9sZGVySWQpIHtcclxuICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5mb2xkZXJJZCk7XHJcbiAgICAgIGlmIChmb2xkZXIuZmlsdGVycylcclxuICAgICAgICB0aGlzLmZpbHRlcnMgPSBmb2xkZXIuZmlsdGVycztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuX2NvbmZpZy5mb2xkZXJzICYmIHRoaXMuX2NvbmZpZy5mb2xkZXJzLmF4ZXMpIHtcclxuICAgICAgY29uc3QgeyBheGVzLCBjdWJlIH0gPSB0aGlzLl9jb25maWcuZm9sZGVycztcclxuICAgICAgdGhpcy5maWx0ZXJzID0geyBheGVzLCBjdWJlIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzLnNlbmRlcklkKVxyXG4gICAgICB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy52YWx1ZXMuc2VuZGVySWQpLlxyXG4gICAgICAgIHN1YnNjcmliZSh1ID0+IHRoaXMuc2VuZGVySWQuc2V0VmFsdWUodSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgIHRoaXMuY2hpcHMudmFsdWUgPSB0aGlzLnZhbHVlcy50YWc7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcbiAgZGlzcGxheShrZXlWYWx1ZSkge1xyXG4gICAgcmV0dXJuIGtleVZhbHVlID8ga2V5VmFsdWUudmFsdWUgOiBudWxsO1xyXG4gIH1cclxuICBjaGFuZ2UoYXhpczogc3RyaW5nLCBldnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcclxuICAgIHRoaXMuZm9ybS5jb250cm9sc1theGlzXS5zZXRWYWx1ZShldnQub3B0aW9uLnZhbHVlLmtleSk7XHJcbiAgfVxyXG4gIGNsZWFyU2VuZGVyKCkge1xyXG4gICAgdGhpcy5zZW5kZXJJZC5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgc2VuZGVySWQ6IG51bGwgfSk7XHJcbiAgfVxyXG4gIGF4ZXNDaGFuZ2UoYXhlczogQXhlc01hcCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IC4uLnRoaXMuZm9ybS52YWx1ZSwgLi4uYXhlcyB9O1xyXG4gICAgY2xlYW51cCh2YWx1ZSk7XHJcbiAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgdG9nZ2xlVGFnKGV2dDogTWF0Q2hpcExpc3Rib3hDaGFuZ2UpIHtcclxuICAgIHRoaXMuZm9ybS5jb250cm9scy50YWcuc2V0VmFsdWUodGhpcy5mb3JtLmNvbnRyb2xzLnRhZy52YWx1ZSAhPT0gZXZ0LnZhbHVlID8gZXZ0LnZhbHVlIDogbnVsbCk7XHJcbiAgfVxyXG4gIGRpc3BsYXlGbihpdGVtOiBVc2VySW5mbyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZHJvcChldnQ6IENka0RyYWdEcm9wPHN0cmluZywgYW55Pikge1xyXG4gICAgZXZ0Lml0ZW0uZGF0YTtcclxuICB9XHJcbiAgc2VuZGVyU2VsZWN0ZWQoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgaW5mbyA9IGUub3B0aW9uLnZhbHVlIGFzIFVzZXJJbmZvO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzZW5kZXJJZDogaW5mbyA/IGluZm8uaWQgOiBudWxsIH0pO1xyXG4gIH1cclxuICBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmNvbnRhaW5zKSB0aGlzLmNvbnRhaW5zLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuc2VuZGVyKSB0aGlzLnNlbmRlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZUZpbHRlckFyZ3Mge1xyXG4gIGZvcm0/OiBzdHJpbmc7XHJcbiAgZmxhZz86IGJvb2xlYW47XHJcbiAgc3RhdGU/OiBzdHJpbmc7XHJcbiAgY29udGFpbnM/OiBzdHJpbmc7XHJcbiAgc2VuZGVySWQ/OiBzdHJpbmc7XHJcbiAgdGFnPzogc3RyaW5nO1xyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiY29sdW1uIGdhcFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuICBAaWYgKCFleGNsdWRlIHx8IGV4Y2x1ZGUuaW5kZXhPZignY29udGFpbnMnKSA8IDApIHtcbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29udGFpbnNcIiBwbGFjZWhvbGRlcj1cInt7J0NvbnRhaW5zJyB8IHRyYW5zbGF0ZX19XCIgI2NvbnRhaW5zPlxuICAgIEBpZiAoZm9ybS52YWx1ZS5jb250YWlucykge1xuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiXCIgKGNsaWNrKT1cImZvcm0uY29udHJvbHMuY29udGFpbnMuc2V0VmFsdWUobnVsbClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L21hdC1mb3JtLWZpZWxkPlxuICB9XG4gIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwic2VuZGVyc1wiIFtwbGFjZWhvbGRlcl09XCInU2VuZGVyJyB8IHRyYW5zbGF0ZVwiIFtmb3JtQ29udHJvbF09XCJzZW5kZXJJZFwiICNzZW5kZXIgLz5cbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjc2VuZGVycyBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbmRlclNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgIEBmb3IgKHUgb2Ygc2VuZGVycyQgfCBhc3luYzsgdHJhY2sgdSkge1xuICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInVcIj5cbiAgICAgICAgPHNwYW4+e3t1Lm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgQGlmIChzZW5kZXJJZC52YWx1ZSkge1xuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZW5kZXIoKVwiPjxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+PC9idXR0b24+XG4gICAgfVxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU3RhdHVzJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGF0ZVwiPlxuICAgICAgPG1hdC1vcHRpb24+XG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICBAZm9yIChzIG9mIHN0YXRlczsgdHJhY2sgcykge1xuICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInMubmFtZVwiPlxuICAgICAgICB7e3MudGl0bGV9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfVxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICA8bWF0LXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ0Zvcm0nIHwgdHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybVwiPlxuICAgICAgPG1hdC1vcHRpb24+XG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICBAZm9yIChmIG9mIGZvcm1zOyB0cmFjayBmKSB7XG4gICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZi5uYW1lXCI+e3tmLnRpdGxlfX08L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWNoaXAtbGlzdGJveCBpZD1cInRhZ3NcIiAoY2hhbmdlKT1cInRvZ2dsZVRhZygkZXZlbnQpXCI+XG4gICAgQGZvciAodGFnIG9mIHRhZ3M7IHRyYWNrIHRhZykge1xuICAgIDxtYXQtY2hpcC1vcHRpb24gY29sb3I9XCJhY2NlbnRcIj5cbiAgICAgIHt7dGFnfX1cbiAgICA8L21hdC1jaGlwLW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LWNoaXAtbGlzdGJveD5cbiAgQGlmIChmaWx0ZXJzKSB7XG4gIDxiaXpkb2MtY3ViZS1maWx0ZXIgY2xhc3M9XCJjdWJlLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2N1YmVdPVwiZmlsdGVycy5jdWJlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZV09XCJmaWx0ZXJzLmF4ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtheGVzXT1cInZhbHVlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGF4ZXNDaGFuZ2UpPVwiYXhlc0NoYW5nZSgkZXZlbnQpXCI+PC9iaXpkb2MtY3ViZS1maWx0ZXI+XG4gIH1cbjwvZm9ybT5cbiJdfQ==
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9icm93c2UvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYnJvd3NlL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixTQUFTLEVBQTRCLEtBQUssRUFBRSxVQUFVLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyTCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUluRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9FLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQU81Qiw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLHFCQUFxQjtJQTJCaEMseUJBQXlCO0lBQ3pCLFlBQW9CLEdBQWdCLEVBQzFCLFFBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFNBQXlCLEVBQ0YsT0FBcUI7UUFMbEMsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixRQUFHLEdB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QUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBeEdVLHFCQUFxQix3S0FpQ3RCLGFBQWE7a0dBakNaLHFCQUFxQixzTkFzQnJCLGNBQWMsa0lBQ29CLFVBQVUsMkdBQ1osVUFBVSwyQ0MvQ3ZELGk2RUE2REE7OzJGRHRDYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0Usc0JBQXNCOzswQkFzQzdCLE1BQU07MkJBQUMsYUFBYTt5Q0EvQmQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNhLFlBQVk7c0JBQTlCLE1BQU07Z0JBaUJzQyxLQUFLO3NCQUFqRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2dCLFVBQVU7c0JBQXBFLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNBLFFBQVE7c0JBQWhFLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbnB1dCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHN3aXRjaE1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdGF0ZSwgRm9ybSwgVXNlckluZm8sIEF4ZXNNYXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGNsZWFudXAsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVhJU19WQUxVRV9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb25maWcsIEJJWkRPQ19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcExpc3Rib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcblxyXG5jb25zdCBGSUxURVJfREVCT1VOQ0UgPSAyNTA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1icm93c2UtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG4vKiogYnJvd3NlLWZpbHRlciBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQnJvd3NlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHBhdHRlcm4gPSBBWElTX1ZBTFVFX1BBVFRFUk47XHJcbiAgQElucHV0KCkgdmFsdWVzOiBCcm93c2VGaWx0ZXJBcmdzO1xyXG4gIEBJbnB1dCgpIGZvbGRlcklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxCcm93c2VGaWx0ZXJBcmdzPigpO1xyXG4gIHJlYWRvbmx5IHNlbmRlcm5hbWUgPSB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IFVzZXJJbmZvIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGNvbnRhaW5zOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxyXG4gICAgZm9ybTogdGhpcy5fZmIuY29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcclxuICAgIHN0YXRlOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxyXG4gICAgc2VuZGVySWQ6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXHJcbiAgICB0YWc6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbClcclxuICB9KTtcclxuICBmb3JtczogRm9ybVtdO1xyXG4gIHN0YXRlczogU3RhdGVbXTtcclxuICBzZW5kZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuICB0YWdzPzogc3RyaW5nW107XHJcbiAgZmlsdGVyczoge1xyXG4gICAgY3ViZT86IHN0cmluZztcclxuICAgIGF4ZXM6IHN0cmluZ1tdO1xyXG4gIH07XHJcbiAgQFZpZXdDaGlsZChNYXRDaGlwTGlzdGJveCwgeyBzdGF0aWM6IHRydWUgfSkgY2hpcHM6IE1hdENoaXBMaXN0Ym94O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5zJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGFpbnNFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdzZW5kZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBzZW5kZXJFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICByZWFkb25seSBzb3VyY2VzOiB7IFtkYXRhdHlwZTogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IFtuYW1lOiBzdHJpbmddOiBhbnkgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBicm93c2UtZmlsdGVyIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEJpekRvY0NvbmZpZykge1xyXG4gICAgdGhpcy5zdGF0ZXMgPSBfc2Vzc2lvbi5wcm9maWxlLnN0YXRlcztcclxuICAgIHRoaXMuZm9ybXMgPSBfc2Vzc2lvbi5wcm9maWxlLmZvcm1zO1xyXG4gICAgdGhpcy50YWdzID0gX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLnRhZ3M7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9sZGVySWQpIHtcclxuICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5mb2xkZXJJZCkhO1xyXG4gICAgICBpZiAoZm9sZGVyLmZpbHRlcnMpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gZm9sZGVyLmZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl9jb25maWcuZm9sZGVycyAmJiB0aGlzLl9jb25maWcuZm9sZGVycy5heGVzKSB7XHJcbiAgICAgIGNvbnN0IHsgYXhlcywgY3ViZSB9ID0gdGhpcy5fY29uZmlnLmZvbGRlcnM7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgYXhlcywgY3ViZSB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZW5kZXJzJCA9IHRoaXMuc2VuZGVybmFtZS52YWx1ZUNoYW5nZXMuXHJcbiAgICAgIHBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsPGFueT4odGhpcy5fZGVzdHJveSksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXHJcbiAgICAgICAgZmlsdGVyKCh2OiBzdHJpbmcpID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHY6IHN0cmluZykgPT4gdGhpcy5fbWFpbGJveC5zZW5kZXJzKHYpKSk7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoRklMVEVSX0RFQk9VTkNFKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+XHJcbiAgICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdChjbGVhbnVwKHYpIGFzIEJyb3dzZUZpbHRlckFyZ3MpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgaWYgKHRoaXMudmFsdWVzLnNlbmRlcklkKVxyXG4gICAgICB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy52YWx1ZXMuc2VuZGVySWQpLlxyXG4gICAgICAgIHN1YnNjcmliZSh1ID0+IHRoaXMuc2VuZGVybmFtZS5zZXRWYWx1ZSh1LCB7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xyXG4gICAgdGhpcy5jaGlwcy52YWx1ZSA9IHRoaXMudmFsdWVzLnRhZztcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuICBkaXNwbGF5VmFsdWUodmFsOiBhbnkpIHtcclxuICAgIHJldHVybiBpc09iamVjdCh2YWwpID8gdmFsLnZhbHVlIDogbnVsbDtcclxuICB9XHJcbiAgY2hhbmdlKGF4aXM6IHN0cmluZywgZXZ0OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KGF4aXMpIS5zZXRWYWx1ZShldnQub3B0aW9uLnZhbHVlLmtleSk7XHJcbiAgfVxyXG4gIGNsZWFyU2VuZGVyKCkge1xyXG4gICAgdGhpcy5zZW5kZXJuYW1lLnJlc2V0KG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnNlbmRlcklkLnJlc2V0KG51bGwpO1xyXG4gIH1cclxuICBheGVzQ2hhbmdlKGF4ZXM6IEF4ZXNNYXApIHtcclxuICAgIGNvbnN0IHZhbHVlID0geyAuLi50aGlzLmZvcm0udmFsdWUsIC4uLmF4ZXMgfTtcclxuICAgIGNsZWFudXAodmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh2YWx1ZSBhcyBCcm93c2VGaWx0ZXJBcmdzKTtcclxuICB9XHJcbiAgdG9nZ2xlVGFnKGV2dDogTWF0Q2hpcExpc3Rib3hDaGFuZ2UpIHtcclxuICAgIHRoaXMuZm9ybS5jb250cm9scy50YWcuc2V0VmFsdWUodGhpcy5mb3JtLmNvbnRyb2xzLnRhZy52YWx1ZSAhPT0gZXZ0LnZhbHVlID8gZXZ0LnZhbHVlIDogbnVsbCk7XHJcbiAgfVxyXG4gIGRpc3BsYXlGbihpdGVtOiBVc2VySW5mbyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZHJvcChldnQ6IENka0RyYWdEcm9wPHN0cmluZywgYW55Pikge1xyXG4gICAgZXZ0Lml0ZW0uZGF0YTtcclxuICB9XHJcbiAgc2VuZGVyU2VsZWN0ZWQoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgaW5mbyA9IGUub3B0aW9uLnZhbHVlIGFzIFVzZXJJbmZvO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzZW5kZXJJZDogaW5mbyA/IGluZm8uaWQgOiBudWxsIH0pO1xyXG4gIH1cclxuICBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmNvbnRhaW5zRWwpIHRoaXMuY29udGFpbnNFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICBlbHNlIGlmICh0aGlzLnNlbmRlckVsKSB0aGlzLnNlbmRlckVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlRmlsdGVyQXJncyB7XHJcbiAgZm9ybT86IHN0cmluZztcclxuICBmbGFnPzogYm9vbGVhbjtcclxuICBzdGF0ZT86IHN0cmluZztcclxuICBjb250YWlucz86IHN0cmluZztcclxuICBzZW5kZXJJZD86IHN0cmluZztcclxuICB0YWc/OiBzdHJpbmc7XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjb2x1bW4gZ2FwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgQGlmICghZXhjbHVkZSB8fCBleGNsdWRlLmluZGV4T2YoJ2NvbnRhaW5zJykgPCAwKSB7XHJcbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb250YWluc1wiIHBsYWNlaG9sZGVyPVwie3snQ29udGFpbnMnIHwgdHJhbnNsYXRlfX1cIiAjY29udGFpbnM+XHJcbiAgICBAaWYgKGZvcm0udmFsdWUuY29udGFpbnMpIHtcclxuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiXCIgKGNsaWNrKT1cImZvcm0uY29udHJvbHMuY29udGFpbnMuc2V0VmFsdWUobnVsbClcIj5cclxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgfVxyXG4gIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgW21hdEF1dG9jb21wbGV0ZV09XCJzZW5kZXJzXCIgW3BsYWNlaG9sZGVyXT1cIidTZW5kZXInIHwgdHJhbnNsYXRlXCIgW2Zvcm1Db250cm9sXT1cInNlbmRlcm5hbWVcIiAjc2VuZGVyIC8+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjc2VuZGVycyBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVZhbHVlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbmRlclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgQGZvciAodSBvZiBzZW5kZXJzJCB8IGFzeW5jOyB0cmFjayB1KSB7XHJcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ1XCI+XHJcbiAgICAgICAgPHNwYW4+e3t1Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICBAaWYgKHNlbmRlcm5hbWUudmFsdWUpIHtcclxuICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZW5kZXIoKVwiPjxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTdGF0dXMnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uPlxyXG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgQGZvciAocyBvZiBzdGF0ZXM7IHRyYWNrIHMpIHtcclxuICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInMubmFtZVwiPlxyXG4gICAgICAgIHt7cy50aXRsZX19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInRm9ybScgfCB0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtXCI+XHJcbiAgICAgIDxtYXQtb3B0aW9uPlxyXG4gICAgICAgIHt7ICdBbGwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgQGZvciAoZiBvZiBmb3JtczsgdHJhY2sgZikge1xyXG4gICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZi5uYW1lXCI+e3tmLnRpdGxlfX08L21hdC1vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDxtYXQtY2hpcC1saXN0Ym94IGlkPVwidGFnc1wiIChjaGFuZ2UpPVwidG9nZ2xlVGFnKCRldmVudClcIj5cclxuICAgIEBmb3IgKHRhZyBvZiB0YWdzOyB0cmFjayB0YWcpIHtcclxuICAgIDxtYXQtY2hpcC1vcHRpb24gY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAge3t0YWd9fVxyXG4gICAgPC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICB9XHJcbiAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gIEBpZiAoZmlsdGVycykge1xyXG4gIDxiaXpkb2MtY3ViZS1maWx0ZXIgY2xhc3M9XCJjdWJlLWZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY3ViZV09XCJmaWx0ZXJzLmN1YmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVdPVwiZmlsdGVycy5heGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtheGVzXT1cInZhbHVlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoYXhlc0NoYW5nZSk9XCJheGVzQ2hhbmdlKCRldmVudClcIj48L2JpemRvYy1jdWJlLWZpbHRlcj5cclxuICB9XHJcbjwvZm9ybT5cclxuIl19
|