@bizdoc/core 1.13.12 → 1.13.16
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/themes/brown.min.css +3 -3
- package/assets/themes/dark.min.css +3 -3
- package/assets/themes/deep-purple-light-blue.min.css +28 -26
- package/assets/themes/deep-purple-teal.min.css +4 -4
- package/assets/themes/default.min.css +4 -4
- package/assets/themes/green.min.css +3 -3
- package/assets/themes/indigo.min.css +3 -3
- package/bizdoc-core.d.ts +5 -0
- package/esm2020/bizdoc-core.mjs +5 -0
- package/esm2020/lib/admin/admin-dismiss.service.mjs +22 -0
- package/esm2020/lib/admin/admin-menu.component.mjs +27 -0
- package/esm2020/lib/admin/core/ace.input.mjs +147 -0
- package/esm2020/lib/admin/core/color-picker.input.mjs +208 -0
- package/esm2020/lib/admin/core/search.input.mjs +43 -0
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +558 -0
- package/esm2020/lib/admin/document-trace/document-trace.component.mjs +469 -0
- package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +40 -0
- package/esm2020/lib/admin/document-trace/timeline.mjs +2 -0
- package/esm2020/lib/admin/document-trace/trace-element.component.mjs +105 -0
- package/esm2020/lib/admin/form/form.resolve.service.mjs +17 -0
- package/esm2020/lib/admin/form/form.service.mjs +26 -0
- package/esm2020/lib/admin/form/workflow/node-ref.mjs +8 -0
- package/esm2020/lib/admin/form/workflow/node.component.mjs +128 -0
- package/esm2020/lib/admin/form/workflow/role-node.component.mjs +90 -0
- package/esm2020/lib/admin/form/workflow/workflow.component.mjs +408 -0
- package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +161 -0
- package/esm2020/lib/admin/patterns/patterns.component.mjs +179 -0
- package/esm2020/lib/admin/permissions/permissions.component.mjs +97 -0
- package/esm2020/lib/admin/positions/positions-popup.component.mjs +74 -0
- package/esm2020/lib/admin/positions/positions.component.mjs +458 -0
- package/esm2020/lib/admin/profiler/profiler.component.mjs +260 -0
- package/esm2020/lib/admin/utility-ref.mjs +38 -0
- package/esm2020/lib/admin/utility-wrapper.component.mjs +51 -0
- package/esm2020/lib/admin/utility.pane.component.mjs +51 -0
- package/esm2020/lib/app.component.mjs +90 -0
- package/esm2020/lib/bizdoc.module.mjs +93 -0
- package/esm2020/lib/browse/browse-items.component.mjs +476 -0
- package/esm2020/lib/browse/browse.mobile.component.mjs +101 -0
- package/esm2020/lib/browse/browse.pane.component.mjs +149 -0
- package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +315 -0
- package/esm2020/lib/browse/filter/filter.component.mjs +164 -0
- package/esm2020/lib/browse/folders-menu.component.mjs +51 -0
- package/esm2020/lib/chat/chat-info.mjs +69 -0
- package/esm2020/lib/chat/chat.mobile.component.mjs +26 -0
- package/esm2020/lib/chat/chat.service.mjs +122 -0
- package/esm2020/lib/chat/contacts.component.mjs +103 -0
- package/esm2020/lib/chat/contacts.pane.component.mjs +29 -0
- package/esm2020/lib/chat/conversation.component.mjs +193 -0
- package/esm2020/lib/chat/conversation.pane.component.mjs +44 -0
- package/esm2020/lib/compose/action/action-picker.component.mjs +84 -0
- package/esm2020/lib/compose/action/action-ref.mjs +19 -0
- package/esm2020/lib/compose/action/action.base.mjs +49 -0
- package/esm2020/lib/compose/action/action.dialog.mjs +61 -0
- package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +72 -0
- package/esm2020/lib/compose/action/assign-action.component.mjs +90 -0
- package/esm2020/lib/compose/action/return-action.component.mjs +52 -0
- package/esm2020/lib/compose/attachments/attachments.component.mjs +127 -0
- package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +155 -0
- package/esm2020/lib/compose/attachments/progress-button.directive.mjs +25 -0
- package/esm2020/lib/compose/can-deactivate-changes.service.mjs +27 -0
- package/esm2020/lib/compose/comments/Comments.pane.component.mjs +49 -0
- package/esm2020/lib/compose/comments/comment.component.mjs +186 -0
- package/esm2020/lib/compose/comments/comments.component.mjs +227 -0
- package/esm2020/lib/compose/comments/edit-comment.component.mjs +32 -0
- package/esm2020/lib/compose/comments/edits.component.mjs +30 -0
- package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +63 -0
- package/esm2020/lib/compose/comments/votes.component.mjs +42 -0
- package/esm2020/lib/compose/compose-resolve.service.mjs +55 -0
- package/esm2020/lib/compose/compose.mobile.component.mjs +112 -0
- package/esm2020/lib/compose/compose.pane.component.mjs +201 -0
- package/esm2020/lib/compose/copy/copy.dialog.mjs +46 -0
- package/esm2020/lib/compose/dismiss.service.mjs +25 -0
- package/esm2020/lib/compose/document-resolver.service.mjs +17 -0
- package/esm2020/lib/compose/document.component.mjs +45 -0
- package/esm2020/lib/compose/document.mobile.component.mjs +22 -0
- package/esm2020/lib/compose/document.pane.component.mjs +26 -0
- package/esm2020/lib/compose/events/events.component.mjs +30 -0
- package/esm2020/lib/compose/form-ref.mjs +46 -0
- package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +82 -0
- package/esm2020/lib/compose/form.component.mjs +447 -0
- package/esm2020/lib/compose/new-menu.component.mjs +104 -0
- package/esm2020/lib/compose/privilage.directive.mjs +64 -0
- package/esm2020/lib/compose/recipient-resolver.service.mjs +18 -0
- package/esm2020/lib/compose/save-changes.dialog.mjs +18 -0
- package/esm2020/lib/compose/state.component.mjs +37 -0
- package/esm2020/lib/compose/tag/tags.component.mjs +91 -0
- package/esm2020/lib/compose/trace/flow.component.mjs +656 -0
- package/esm2020/lib/compose/trace/people.component.mjs +35 -0
- package/esm2020/lib/compose/trace/trace.base.mjs +71 -0
- package/esm2020/lib/compose/trace/trace.component.mjs +345 -0
- package/esm2020/lib/compose/trace/trace.pane.component.mjs +52 -0
- package/esm2020/lib/compose/version-compare/version-compare.component.mjs +53 -0
- package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +344 -0
- package/esm2020/lib/compose/version-compare/version.pane.component.mjs +56 -0
- package/esm2020/lib/core/NgComponentOutlet.mjs +38 -0
- package/esm2020/lib/core/account.service.mjs +37 -0
- package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +17 -0
- package/esm2020/lib/core/animations.mjs +156 -0
- package/esm2020/lib/core/authentication.mjs +3 -0
- package/esm2020/lib/core/avatar/avatar.component.mjs +103 -0
- package/esm2020/lib/core/base.mjs +2 -0
- package/esm2020/lib/core/colors.mjs +322 -0
- package/esm2020/lib/core/component-factory-resolver.mjs +64 -0
- package/esm2020/lib/core/configuration.mjs +16 -0
- package/esm2020/lib/core/controls/address.input.mjs +193 -0
- package/esm2020/lib/core/controls/auto-complete.input.mjs +256 -0
- package/esm2020/lib/core/controls/combination-picker-body.mjs +173 -0
- package/esm2020/lib/core/controls/combination-picker.mjs +277 -0
- package/esm2020/lib/core/controls/combination-pool.mjs +105 -0
- package/esm2020/lib/core/controls/file.input.mjs +392 -0
- package/esm2020/lib/core/controls/select.input.mjs +237 -0
- package/esm2020/lib/core/controls/time-picker.mjs +196 -0
- package/esm2020/lib/core/controls/timespan.input.mjs +207 -0
- package/esm2020/lib/core/datasource.service.mjs +75 -0
- package/esm2020/lib/core/decorators.mjs +46 -0
- package/esm2020/lib/core/firebase.service.mjs +50 -0
- package/esm2020/lib/core/functions.mjs +200 -0
- package/esm2020/lib/core/guide/guide.component.mjs +219 -0
- package/esm2020/lib/core/guide/guide.service.mjs +107 -0
- package/esm2020/lib/core/http.interceptor.mjs +79 -0
- package/esm2020/lib/core/hub.service.mjs +108 -0
- package/esm2020/lib/core/identity/identity.component.mjs +67 -0
- package/esm2020/lib/core/info/attachment-info.service.mjs +51 -0
- package/esm2020/lib/core/info/document-info.service.mjs +21 -0
- package/esm2020/lib/core/info/location-info.component.mjs +61 -0
- package/esm2020/lib/core/info/map-info.mjs +40 -0
- package/esm2020/lib/core/layout/autocomplete.field.mjs +60 -0
- package/esm2020/lib/core/layout/checkbox.field.mjs +41 -0
- package/esm2020/lib/core/layout/checkbox.mjs +35 -0
- package/esm2020/lib/core/layout/date-range.field.mjs +53 -0
- package/esm2020/lib/core/layout/date.field.mjs +52 -0
- package/esm2020/lib/core/layout/expression.field.mjs +51 -0
- package/esm2020/lib/core/layout/file.field.mjs +47 -0
- package/esm2020/lib/core/layout/html.field.mjs +48 -0
- package/esm2020/lib/core/layout/input.base.mjs +11 -0
- package/esm2020/lib/core/layout/input.field.mjs +64 -0
- package/esm2020/lib/core/layout/layout.component.mjs +196 -0
- package/esm2020/lib/core/layout/numeric.field.mjs +47 -0
- package/esm2020/lib/core/layout/select.field.mjs +82 -0
- package/esm2020/lib/core/layout/switch.field.mjs +41 -0
- package/esm2020/lib/core/layout/textarea.field.mjs +42 -0
- package/esm2020/lib/core/layout/timespan.field.mjs +50 -0
- package/esm2020/lib/core/lottie-animation.mjs +46 -0
- package/esm2020/lib/core/mailbox.service.mjs +395 -0
- package/esm2020/lib/core/models.mjs +40 -0
- package/esm2020/lib/core/none.component.mjs +40 -0
- package/esm2020/lib/core/pipes/action.pipe.mjs +25 -0
- package/esm2020/lib/core/pipes/calendar.pipe.mjs +72 -0
- package/esm2020/lib/core/pipes/date-format.pipe.mjs +19 -0
- package/esm2020/lib/core/pipes/daterange.pipe.mjs +62 -0
- package/esm2020/lib/core/pipes/difference.pipe.mjs +15 -0
- package/esm2020/lib/core/pipes/duration-format.pipe.mjs +48 -0
- package/esm2020/lib/core/pipes/duration.pipe.mjs +19 -0
- package/esm2020/lib/core/pipes/form.pipe.mjs +25 -0
- package/esm2020/lib/core/pipes/join.pipe.mjs +18 -0
- package/esm2020/lib/core/pipes/role.pipe.mjs +25 -0
- package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +18 -0
- package/esm2020/lib/core/pipes/sort.pipe.mjs +48 -0
- package/esm2020/lib/core/pipes/state.pipe.mjs +25 -0
- package/esm2020/lib/core/pipes/time-ago.pipe.mjs +66 -0
- package/esm2020/lib/core/pipes/translate.pipe.mjs +38 -0
- package/esm2020/lib/core/pipes/type-value.pipe.mjs +42 -0
- package/esm2020/lib/core/pipes/user-name.pipe.mjs +21 -0
- package/esm2020/lib/core/popup/popup-ref.mjs +20 -0
- package/esm2020/lib/core/popup/popup.component.mjs +37 -0
- package/esm2020/lib/core/popup/popup.service.mjs +148 -0
- package/esm2020/lib/core/popup/tooltip.directive.mjs +82 -0
- package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +29 -0
- package/esm2020/lib/core/prompt/mask/mask.component.mjs +21 -0
- package/esm2020/lib/core/prompt.service.mjs +86 -0
- package/esm2020/lib/core/router.mjs +35 -0
- package/esm2020/lib/core/session.service.mjs +247 -0
- package/esm2020/lib/core/slots/pane-ref.mjs +125 -0
- package/esm2020/lib/core/slots/router.directive.mjs +70 -0
- package/esm2020/lib/core/slots/router.service.mjs +36 -0
- package/esm2020/lib/core/slots/slots.component.mjs +1049 -0
- package/esm2020/lib/core/tagging/documents.component.mjs +25 -0
- package/esm2020/lib/core/tagging/edit-input.component.mjs +233 -0
- package/esm2020/lib/core/tagging/emoji.component.mjs +35 -0
- package/esm2020/lib/core/tagging/tagging-item.directive.mjs +39 -0
- package/esm2020/lib/core/tagging/tagging.component-base.mjs +29 -0
- package/esm2020/lib/core/tagging/tagging.directive.mjs +138 -0
- package/esm2020/lib/core/tagging/tagging.pipe.mjs +72 -0
- package/esm2020/lib/core/tagging/users.component.mjs +32 -0
- package/esm2020/lib/core/translate.service.mjs +99 -0
- package/esm2020/lib/core/translations.mjs +1104 -0
- package/esm2020/lib/core/window-title.service.mjs +53 -0
- package/esm2020/lib/cube/accum/accum.component.mjs +257 -0
- package/esm2020/lib/cube/chart/chart.component.mjs +326 -0
- package/esm2020/lib/cube/cube-info.service.mjs +100 -0
- package/esm2020/lib/cube/cube-menu.component.mjs +27 -0
- package/esm2020/lib/cube/cube-view.component.mjs +186 -0
- package/esm2020/lib/cube/cube.service.mjs +407 -0
- package/esm2020/lib/cube/declarations.mjs +2 -0
- package/esm2020/lib/cube/explore/document-item.component.mjs +38 -0
- package/esm2020/lib/cube/explore/explore-item.component.mjs +27 -0
- package/esm2020/lib/cube/explore/explore-items.component.mjs +186 -0
- package/esm2020/lib/cube/explore/explore.pane.component.mjs +81 -0
- package/esm2020/lib/cube/explore/item-resolver.service.mjs +32 -0
- package/esm2020/lib/cube/explore/item.pane.component.mjs +23 -0
- package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +75 -0
- package/esm2020/lib/cube/filter/filter.component.mjs +137 -0
- package/esm2020/lib/cube/grid/grid.component.mjs +217 -0
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +365 -0
- package/esm2020/lib/cube/matrix/matrix.base.mjs +127 -0
- package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +63 -0
- package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +76 -0
- package/esm2020/lib/cube/matrix/popup.component.mjs +70 -0
- package/esm2020/lib/cube/matrix/table.component.mjs +489 -0
- package/esm2020/lib/cube/parallel/item.mjs +41 -0
- package/esm2020/lib/cube/parallel/parallel.component.mjs +160 -0
- package/esm2020/lib/cube/pivot/pivot.component.mjs +500 -0
- package/esm2020/lib/cube/sum/sum.component.mjs +404 -0
- package/esm2020/lib/cube/view-base.mjs +79 -0
- package/esm2020/lib/cube/view.mobile.component.mjs +127 -0
- package/esm2020/lib/cube/view.pane.component.mjs +84 -0
- package/esm2020/lib/dashboard/actions/actions.widget.mjs +126 -0
- package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +145 -0
- package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +90 -0
- package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +53 -0
- package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +144 -0
- package/esm2020/lib/dashboard/cube/documents.widget.mjs +64 -0
- package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +59 -0
- package/esm2020/lib/dashboard/dashboard.component.mjs +47 -0
- package/esm2020/lib/dashboard/dashboard.pane.component.mjs +24 -0
- package/esm2020/lib/dashboard/recents/recents.widget.mjs +98 -0
- package/esm2020/lib/dashboard/score/activity.widget.mjs +162 -0
- package/esm2020/lib/dashboard/score/compare-departments.widget.mjs +204 -0
- package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +253 -0
- package/esm2020/lib/dashboard/score/pending-results.widget.mjs +64 -0
- package/esm2020/lib/dashboard/score/personal-score.widget.mjs +219 -0
- package/esm2020/lib/dashboard/widget-item.component.mjs +89 -0
- package/esm2020/lib/dashboard/widget-ref.mjs +18 -0
- package/esm2020/lib/desktop.module.mjs +144 -0
- package/esm2020/lib/home/about/about.dialog.mjs +26 -0
- package/esm2020/lib/home/home-base.component.mjs +91 -0
- package/esm2020/lib/home/home.desktop.component.mjs +201 -0
- package/esm2020/lib/home/home.mobile.component.mjs +116 -0
- package/esm2020/lib/home/notifications/notifications.component.mjs +67 -0
- package/esm2020/lib/home/options/options.component.mjs +94 -0
- package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +38 -0
- package/esm2020/lib/home/search.service.mjs +75 -0
- package/esm2020/lib/home/sign/sign.component.mjs +54 -0
- package/esm2020/lib/home/tools.component.mjs +82 -0
- package/esm2020/lib/impersonate/impersonate.component.mjs +65 -0
- package/esm2020/lib/mobile.module.mjs +59 -0
- package/esm2020/lib/modules/chart.module.mjs +37 -0
- package/esm2020/lib/modules/circular-gauge.module.mjs +17 -0
- package/esm2020/lib/modules/date.adapter.mjs +30 -0
- package/esm2020/lib/modules/datepicker.intl.mjs +39 -0
- package/esm2020/lib/modules/diagram.module.mjs +34 -0
- package/esm2020/lib/modules/gantt.module.mjs +17 -0
- package/esm2020/lib/modules/grid.module.mjs +23 -0
- package/esm2020/lib/modules/material.module.mjs +188 -0
- package/esm2020/lib/modules/paginator.intl.mjs +21 -0
- package/esm2020/lib/modules/pivot.module.mjs +23 -0
- package/esm2020/lib/modules/schedule.module.mjs +21 -0
- package/esm2020/lib/modules/spreadsheet.module.mjs +28 -0
- package/esm2020/lib/modules/stepper.intl.mjs +17 -0
- package/esm2020/lib/modules/texteditor.module.mjs +27 -0
- package/esm2020/lib/notifications/filter.component.mjs +25 -0
- package/esm2020/lib/notifications/notifications-table.component.mjs +106 -0
- package/esm2020/lib/notifications/notifications.component-base.mjs +47 -0
- package/esm2020/lib/notifications/notifications.mobile.component.mjs +20 -0
- package/esm2020/lib/notifications/notifications.pane.component.mjs +23 -0
- package/esm2020/lib/notifications/notifications.service.mjs +71 -0
- package/esm2020/lib/notifications/types/commented.notification.mjs +53 -0
- package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +58 -0
- package/esm2020/lib/notifications/types/escalated.notification.mjs +33 -0
- package/esm2020/lib/notifications/types/liked.notification.mjs +50 -0
- package/esm2020/lib/notifications/types/long-running-task.notification.mjs +31 -0
- package/esm2020/lib/notifications/types/notification-base.mjs +40 -0
- package/esm2020/lib/notifications/types/nudge.notification.mjs +31 -0
- package/esm2020/lib/notifications/types/state-changed.notification.mjs +30 -0
- package/esm2020/lib/notifications/types/tagged.notification.mjs +43 -0
- package/esm2020/lib/notifications/types/text.notification.mjs +20 -0
- package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +36 -0
- package/esm2020/lib/options/options.component.mjs +227 -0
- package/esm2020/lib/options/options.service.mjs +38 -0
- package/esm2020/lib/reports/arguments-component.mjs +83 -0
- package/esm2020/lib/reports/cube/documents.component.mjs +40 -0
- package/esm2020/lib/reports/cube/grid-documents.component.mjs +72 -0
- package/esm2020/lib/reports/cube/table-documents.component.mjs +56 -0
- package/esm2020/lib/reports/cube/usage-args.component.mjs +61 -0
- package/esm2020/lib/reports/cube/usage-base.mjs +79 -0
- package/esm2020/lib/reports/cube/usage-chart.component.mjs +353 -0
- package/esm2020/lib/reports/cube/usage-pivot.component.mjs +239 -0
- package/esm2020/lib/reports/cube/usage.component.mjs +40 -0
- package/esm2020/lib/reports/report-ref.mjs +31 -0
- package/esm2020/lib/reports/report-viewer.component.mjs +154 -0
- package/esm2020/lib/reports/report.mobile.component.mjs +120 -0
- package/esm2020/lib/reports/report.pane.component.mjs +88 -0
- package/esm2020/lib/reports/reports-menu.component.mjs +26 -0
- package/esm2020/lib/reports/substitution/substitution.component.mjs +40 -0
- package/esm2020/lib/reports/table/table-view.component.mjs +41 -0
- package/esm2020/lib/reports/tasks/tasks.component.mjs +95 -0
- package/esm2020/lib/routes.desktop.mjs +197 -0
- package/esm2020/lib/routes.mobile.mjs +69 -0
- package/esm2020/lib/scheduler/schedule.component.mjs +166 -0
- package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +37 -0
- package/esm2020/lib/scheduler/scheduler.pane.component.mjs +53 -0
- package/esm2020/lib/shared.module.mjs +528 -0
- package/esm2020/lib/system.module.mjs +110 -0
- package/esm2020/lib/views/cube/chart.component.mjs +75 -0
- package/esm2020/lib/views/cube/cube-base.mjs +96 -0
- package/esm2020/lib/views/cube/explore.component.mjs +83 -0
- package/esm2020/lib/views/cube/matrix.component.mjs +97 -0
- package/esm2020/lib/views/cube/parallel.component.mjs +53 -0
- package/esm2020/lib/views/cube/pivot.component.mjs +51 -0
- package/esm2020/lib/views/cube/sum.component.mjs +64 -0
- package/esm2020/lib/views/cube/view.component.mjs +102 -0
- package/esm2020/lib/views/document-view-ref.mjs +27 -0
- package/esm2020/lib/views/timeline/timeline.component.exp.mjs +313 -0
- package/esm2020/lib/views/view-item.component.mjs +70 -0
- package/esm2020/lib/views/views.component.mjs +25 -0
- package/esm2020/lib/views/views.mobile.component.mjs +20 -0
- package/esm2020/lib/views/views.pane.component.mjs +31 -0
- package/esm2020/public-api.mjs +142 -0
- package/fesm2015/bizdoc-core.mjs +29625 -0
- package/fesm2015/bizdoc-core.mjs.map +1 -0
- package/fesm2020/bizdoc-core.mjs +29415 -0
- package/fesm2020/bizdoc-core.mjs.map +1 -0
- package/lib/admin/admin-dismiss.service.d.ts +14 -0
- package/lib/admin/admin-menu.component.d.ts +12 -0
- package/lib/admin/core/ace.input.d.ts +52 -0
- package/lib/admin/core/color-picker.input.d.ts +64 -0
- package/lib/admin/core/search.input.d.ts +13 -0
- package/lib/admin/diff/configuration-diff.component.d.ts +116 -0
- package/lib/admin/document-trace/document-trace.component.d.ts +83 -0
- package/lib/admin/document-trace/reassign.dialog.d.ts +22 -0
- package/lib/admin/document-trace/timeline.d.ts +40 -0
- package/lib/admin/document-trace/trace-element.component.d.ts +37 -0
- package/lib/admin/form/form.resolve.service.d.ts +12 -0
- package/lib/admin/form/form.service.d.ts +13 -0
- package/lib/admin/form/workflow/node-ref.d.ts +7 -0
- package/lib/admin/form/workflow/node.component.d.ts +37 -0
- package/lib/admin/form/workflow/role-node.component.d.ts +22 -0
- package/lib/admin/form/workflow/workflow.component.d.ts +73 -0
- package/lib/admin/indices/manage-cube-index.component.d.ts +54 -0
- package/lib/admin/patterns/patterns.component.d.ts +79 -0
- package/lib/admin/permissions/permissions.component.d.ts +45 -0
- package/lib/admin/positions/positions-popup.component.d.ts +39 -0
- package/lib/admin/positions/positions.component.d.ts +117 -0
- package/lib/admin/profiler/profiler.component.d.ts +108 -0
- package/lib/admin/utility-ref.d.ts +19 -0
- package/lib/admin/utility-wrapper.component.d.ts +28 -0
- package/lib/admin/utility.pane.component.d.ts +24 -0
- package/lib/app.component.d.ts +24 -0
- package/lib/bizdoc.module.d.ts +18 -0
- package/lib/browse/browse-items.component.d.ts +104 -0
- package/lib/browse/browse.mobile.component.d.ts +39 -0
- package/lib/browse/browse.pane.component.d.ts +50 -0
- package/lib/browse/expanded-item/expanded-item.component.d.ts +67 -0
- package/lib/browse/filter/filter.component.d.ts +71 -0
- package/lib/browse/folders-menu.component.d.ts +22 -0
- package/lib/chat/chat-info.d.ts +37 -0
- package/lib/chat/chat.mobile.component.d.ts +10 -0
- package/lib/chat/chat.service.d.ts +38 -0
- package/lib/chat/contacts.component.d.ts +38 -0
- package/lib/chat/contacts.pane.component.d.ts +12 -0
- package/lib/chat/conversation.component.d.ts +56 -0
- package/lib/chat/conversation.pane.component.d.ts +16 -0
- package/lib/compose/action/action-picker.component.d.ts +25 -0
- package/lib/compose/action/action-ref.d.ts +10 -0
- package/lib/compose/action/action.base.d.ts +15 -0
- package/lib/compose/action/action.dialog.d.ts +29 -0
- package/lib/compose/action/action.pane.dialog.exp.d.ts +31 -0
- package/lib/compose/action/assign-action.component.d.ts +36 -0
- package/lib/compose/action/return-action.component.d.ts +17 -0
- package/lib/compose/attachments/attachments.component.d.ts +35 -0
- package/lib/compose/attachments/preview/attachment-preview.component.d.ts +49 -0
- package/lib/compose/attachments/progress-button.directive.d.ts +12 -0
- package/lib/compose/can-deactivate-changes.service.d.ts +12 -0
- package/lib/compose/comments/Comments.pane.component.d.ts +18 -0
- package/lib/compose/comments/comment.component.d.ts +51 -0
- package/lib/compose/comments/comments.component.d.ts +66 -0
- package/lib/compose/comments/edit-comment.component.d.ts +25 -0
- package/lib/compose/comments/edits.component.d.ts +26 -0
- package/lib/compose/comments/quick-comment.component.exp.d.ts +28 -0
- package/lib/compose/comments/votes.component.d.ts +22 -0
- package/lib/compose/compose-resolve.service.d.ts +27 -0
- package/lib/compose/compose.mobile.component.d.ts +42 -0
- package/lib/compose/compose.pane.component.d.ts +57 -0
- package/lib/compose/copy/copy.dialog.d.ts +23 -0
- package/lib/compose/dismiss.service.d.ts +12 -0
- package/lib/compose/document-resolver.service.d.ts +12 -0
- package/lib/compose/document.component.d.ts +18 -0
- package/lib/compose/document.mobile.component.d.ts +10 -0
- package/lib/compose/document.pane.component.d.ts +12 -0
- package/lib/compose/events/events.component.d.ts +13 -0
- package/lib/compose/form-ref.d.ts +30 -0
- package/lib/compose/form-selector/form-selector.sheet.d.ts +28 -0
- package/lib/compose/form.component.d.ts +97 -0
- package/lib/compose/new-menu.component.d.ts +36 -0
- package/lib/compose/privilage.directive.d.ts +26 -0
- package/lib/compose/recipient-resolver.service.d.ts +12 -0
- package/lib/compose/save-changes.dialog.d.ts +7 -0
- package/lib/compose/state.component.d.ts +12 -0
- package/lib/compose/tag/tags.component.d.ts +36 -0
- package/lib/compose/trace/flow.component.d.ts +59 -0
- package/lib/compose/trace/people.component.d.ts +18 -0
- package/lib/compose/trace/trace.base.d.ts +28 -0
- package/lib/compose/trace/trace.component.d.ts +55 -0
- package/lib/compose/trace/trace.pane.component.d.ts +20 -0
- package/lib/compose/version-compare/version-compare.component.d.ts +24 -0
- package/lib/compose/version-compare/version-compare.directive.d.ts +89 -0
- package/lib/compose/version-compare/version.pane.component.d.ts +21 -0
- package/lib/core/NgComponentOutlet.d.ts +15 -0
- package/lib/core/account.service.d.ts +18 -0
- package/lib/core/animated-icon/animated-icon.directive.d.ts +7 -0
- package/lib/core/animations.d.ts +26 -0
- package/lib/core/authentication.d.ts +6 -0
- package/lib/core/avatar/avatar.component.d.ts +34 -0
- package/lib/core/base.d.ts +29 -0
- package/lib/core/colors.d.ts +6 -0
- package/lib/core/component-factory-resolver.d.ts +12 -0
- package/lib/core/configuration.d.ts +111 -0
- package/lib/core/controls/address.input.d.ts +63 -0
- package/lib/core/controls/auto-complete.input.d.ts +86 -0
- package/lib/core/controls/combination-picker-body.d.ts +114 -0
- package/lib/core/controls/combination-picker.d.ts +82 -0
- package/lib/core/controls/combination-pool.d.ts +42 -0
- package/lib/core/controls/file.input.d.ts +88 -0
- package/lib/core/controls/select.input.d.ts +84 -0
- package/lib/core/controls/time-picker.d.ts +52 -0
- package/lib/core/controls/timespan.input.d.ts +55 -0
- package/lib/core/datasource.service.d.ts +46 -0
- package/lib/core/decorators.d.ts +17 -0
- package/lib/core/firebase.service.d.ts +17 -0
- package/lib/core/functions.d.ts +50 -0
- package/lib/core/guide/guide.component.d.ts +31 -0
- package/lib/core/guide/guide.service.d.ts +32 -0
- package/lib/core/http.interceptor.d.ts +21 -0
- package/lib/core/hub.service.d.ts +133 -0
- package/lib/core/identity/identity.component.d.ts +29 -0
- package/lib/core/info/attachment-info.service.d.ts +17 -0
- package/lib/core/info/document-info.service.d.ts +14 -0
- package/lib/core/info/location-info.component.d.ts +28 -0
- package/lib/core/info/map-info.d.ts +15 -0
- package/lib/core/layout/autocomplete.field.d.ts +21 -0
- package/lib/core/layout/checkbox.d.ts +10 -0
- package/lib/core/layout/checkbox.field.d.ts +11 -0
- package/lib/core/layout/date-range.field.d.ts +13 -0
- package/lib/core/layout/date.field.d.ts +11 -0
- package/lib/core/layout/expression.field.d.ts +12 -0
- package/lib/core/layout/file.field.d.ts +14 -0
- package/lib/core/layout/html.field.d.ts +12 -0
- package/lib/core/layout/input.base.d.ts +10 -0
- package/lib/core/layout/input.field.d.ts +14 -0
- package/lib/core/layout/layout.component.d.ts +33 -0
- package/lib/core/layout/numeric.field.d.ts +11 -0
- package/lib/core/layout/select.field.d.ts +22 -0
- package/lib/core/layout/switch.field.d.ts +11 -0
- package/lib/core/layout/textarea.field.d.ts +11 -0
- package/lib/core/layout/timespan.field.d.ts +11 -0
- package/lib/core/lottie-animation.d.ts +14 -0
- package/lib/core/mailbox.service.d.ts +141 -0
- package/lib/core/models.d.ts +649 -0
- package/lib/core/none.component.d.ts +9 -0
- package/lib/core/pipes/action.pipe.d.ts +10 -0
- package/lib/core/pipes/calendar.pipe.d.ts +27 -0
- package/lib/core/pipes/date-format.pipe.d.ts +8 -0
- package/lib/core/pipes/daterange.pipe.d.ts +15 -0
- package/lib/core/pipes/difference.pipe.d.ts +7 -0
- package/lib/core/pipes/duration-format.pipe.d.ts +11 -0
- package/lib/core/pipes/duration.pipe.d.ts +8 -0
- package/lib/core/pipes/form.pipe.d.ts +10 -0
- package/lib/core/pipes/join.pipe.d.ts +10 -0
- package/lib/core/pipes/role.pipe.d.ts +10 -0
- package/lib/core/pipes/sanitize-html.pipe.d.ts +10 -0
- package/lib/core/pipes/sort.pipe.d.ts +12 -0
- package/lib/core/pipes/state.pipe.d.ts +10 -0
- package/lib/core/pipes/time-ago.pipe.d.ts +16 -0
- package/lib/core/pipes/translate.pipe.d.ts +18 -0
- package/lib/core/pipes/type-value.pipe.d.ts +15 -0
- package/lib/core/pipes/user-name.pipe.d.ts +11 -0
- package/lib/core/popup/popup-ref.d.ts +14 -0
- package/lib/core/popup/popup.component.d.ts +22 -0
- package/lib/core/popup/popup.service.d.ts +24 -0
- package/lib/core/popup/tooltip.directive.d.ts +29 -0
- package/lib/core/prompt/ask/ask.dialog.d.ts +22 -0
- package/lib/core/prompt/mask/mask.component.d.ts +10 -0
- package/lib/core/prompt.service.d.ts +36 -0
- package/lib/core/router.d.ts +20 -0
- package/lib/core/session.service.d.ts +80 -0
- package/lib/core/slots/pane-ref.d.ts +113 -0
- package/lib/core/slots/router.directive.d.ts +25 -0
- package/lib/core/slots/router.service.d.ts +36 -0
- package/lib/core/slots/slots.component.d.ts +183 -0
- package/lib/core/tagging/documents.component.d.ts +11 -0
- package/lib/core/tagging/edit-input.component.d.ts +65 -0
- package/lib/core/tagging/emoji.component.d.ts +18 -0
- package/lib/core/tagging/tagging-item.directive.d.ts +15 -0
- package/lib/core/tagging/tagging.component-base.d.ts +19 -0
- package/lib/core/tagging/tagging.directive.d.ts +34 -0
- package/lib/core/tagging/tagging.pipe.d.ts +24 -0
- package/lib/core/tagging/users.component.d.ts +15 -0
- package/lib/core/translate.service.d.ts +28 -0
- package/lib/core/translations.d.ts +1097 -0
- package/lib/core/window-title.service.d.ts +21 -0
- package/lib/cube/accum/accum.component.d.ts +63 -0
- package/lib/cube/chart/chart.component.d.ts +74 -0
- package/lib/cube/cube-info.service.d.ts +77 -0
- package/lib/cube/cube-menu.component.d.ts +12 -0
- package/lib/cube/cube-view.component.d.ts +31 -0
- package/lib/cube/cube.service.d.ts +267 -0
- package/lib/cube/declarations.d.ts +23 -0
- package/lib/cube/explore/document-item.component.d.ts +16 -0
- package/lib/cube/explore/explore-item.component.d.ts +14 -0
- package/lib/cube/explore/explore-items.component.d.ts +57 -0
- package/lib/cube/explore/explore.pane.component.d.ts +29 -0
- package/lib/cube/explore/item-resolver.service.d.ts +20 -0
- package/lib/cube/explore/item.pane.component.d.ts +13 -0
- package/lib/cube/filter/filter-tags.component.exp.d.ts +31 -0
- package/lib/cube/filter/filter.component.d.ts +44 -0
- package/lib/cube/grid/grid.component.d.ts +59 -0
- package/lib/cube/grid/spreadsheet.component.d.ts +62 -0
- package/lib/cube/matrix/matrix.base.d.ts +72 -0
- package/lib/cube/matrix/matrix.mobile.component.d.ts +22 -0
- package/lib/cube/matrix/matrix.pane.component.d.ts +23 -0
- package/lib/cube/matrix/popup.component.d.ts +23 -0
- package/lib/cube/matrix/table.component.d.ts +100 -0
- package/lib/cube/parallel/item.d.ts +13 -0
- package/lib/cube/parallel/parallel.component.d.ts +52 -0
- package/lib/cube/pivot/pivot.component.d.ts +103 -0
- package/lib/cube/sum/sum.component.d.ts +78 -0
- package/lib/cube/view-base.d.ts +39 -0
- package/lib/cube/view.mobile.component.d.ts +46 -0
- package/lib/cube/view.pane.component.d.ts +27 -0
- package/lib/dashboard/actions/actions.widget.d.ts +39 -0
- package/lib/dashboard/cube/accum-cube.widget.d.ts +33 -0
- package/lib/dashboard/cube/cube-analysis.base.d.ts +59 -0
- package/lib/dashboard/cube/cube-analysis.widget.d.ts +17 -0
- package/lib/dashboard/cube/cube-chart.widget.d.ts +32 -0
- package/lib/dashboard/cube/documents.widget.d.ts +30 -0
- package/lib/dashboard/cube/filter/filter.component.d.ts +22 -0
- package/lib/dashboard/dashboard.component.d.ts +20 -0
- package/lib/dashboard/dashboard.pane.component.d.ts +8 -0
- package/lib/dashboard/recents/recents.widget.d.ts +40 -0
- package/lib/dashboard/score/activity.widget.d.ts +50 -0
- package/lib/dashboard/score/compare-departments.widget.d.ts +51 -0
- package/lib/dashboard/score/peers-performance.widget.d.ts +65 -0
- package/lib/dashboard/score/pending-results.widget.d.ts +28 -0
- package/lib/dashboard/score/personal-score.widget.d.ts +57 -0
- package/lib/dashboard/widget-item.component.d.ts +31 -0
- package/lib/dashboard/widget-ref.d.ts +11 -0
- package/lib/desktop.module.d.ts +45 -0
- package/lib/home/about/about.dialog.d.ts +14 -0
- package/lib/home/home-base.component.d.ts +34 -0
- package/lib/home/home.desktop.component.d.ts +56 -0
- package/lib/home/home.mobile.component.d.ts +38 -0
- package/lib/home/notifications/notifications.component.d.ts +28 -0
- package/lib/home/options/options.component.d.ts +46 -0
- package/lib/home/outofoffice/outofoffice.component.d.ts +19 -0
- package/lib/home/search.service.d.ts +23 -0
- package/lib/home/sign/sign.component.d.ts +17 -0
- package/lib/home/tools.component.d.ts +36 -0
- package/lib/impersonate/impersonate.component.d.ts +27 -0
- package/lib/mobile.module.d.ts +25 -0
- package/lib/modules/chart.module.d.ts +7 -0
- package/lib/modules/circular-gauge.module.d.ts +7 -0
- package/lib/modules/date.adapter.d.ts +13 -0
- package/lib/modules/datepicker.intl.d.ts +30 -0
- package/lib/modules/diagram.module.d.ts +8 -0
- package/lib/modules/gantt.module.d.ts +7 -0
- package/lib/modules/grid.module.d.ts +7 -0
- package/lib/modules/material.module.d.ts +45 -0
- package/lib/modules/paginator.intl.d.ts +14 -0
- package/lib/modules/pivot.module.d.ts +7 -0
- package/lib/modules/schedule.module.d.ts +7 -0
- package/lib/modules/spreadsheet.module.d.ts +8 -0
- package/lib/modules/stepper.intl.d.ts +10 -0
- package/lib/modules/texteditor.module.d.ts +8 -0
- package/lib/notifications/filter.component.d.ts +9 -0
- package/lib/notifications/notifications-table.component.d.ts +32 -0
- package/lib/notifications/notifications.component-base.d.ts +12 -0
- package/lib/notifications/notifications.mobile.component.d.ts +8 -0
- package/lib/notifications/notifications.pane.component.d.ts +8 -0
- package/lib/notifications/notifications.service.d.ts +24 -0
- package/lib/notifications/types/commented.notification.d.ts +26 -0
- package/lib/notifications/types/cube-anomaly.notification.d.ts +29 -0
- package/lib/notifications/types/escalated.notification.d.ts +25 -0
- package/lib/notifications/types/liked.notification.d.ts +25 -0
- package/lib/notifications/types/long-running-task.notification.d.ts +21 -0
- package/lib/notifications/types/notification-base.d.ts +20 -0
- package/lib/notifications/types/nudge.notification.d.ts +23 -0
- package/lib/notifications/types/state-changed.notification.d.ts +22 -0
- package/lib/notifications/types/tagged.notification.d.ts +26 -0
- package/lib/notifications/types/text.notification.d.ts +13 -0
- package/lib/notifications/types/upcoming-event.notification.d.ts +20 -0
- package/lib/options/options.component.d.ts +66 -0
- package/lib/options/options.service.d.ts +14 -0
- package/lib/reports/arguments-component.d.ts +27 -0
- package/lib/reports/cube/documents.component.d.ts +34 -0
- package/lib/reports/cube/grid-documents.component.d.ts +28 -0
- package/lib/reports/cube/table-documents.component.d.ts +28 -0
- package/lib/reports/cube/usage-args.component.d.ts +21 -0
- package/lib/reports/cube/usage-base.d.ts +72 -0
- package/lib/reports/cube/usage-chart.component.d.ts +62 -0
- package/lib/reports/cube/usage-pivot.component.d.ts +62 -0
- package/lib/reports/cube/usage.component.d.ts +16 -0
- package/lib/reports/report-ref.d.ts +27 -0
- package/lib/reports/report-viewer.component.d.ts +48 -0
- package/lib/reports/report.mobile.component.d.ts +45 -0
- package/lib/reports/report.pane.component.d.ts +34 -0
- package/lib/reports/reports-menu.component.d.ts +12 -0
- package/lib/reports/substitution/substitution.component.d.ts +23 -0
- package/lib/reports/table/table-view.component.d.ts +19 -0
- package/lib/reports/tasks/tasks.component.d.ts +68 -0
- package/lib/routes.desktop.d.ts +2 -0
- package/lib/routes.mobile.d.ts +2 -0
- package/lib/scheduler/schedule.component.d.ts +43 -0
- package/lib/scheduler/scheduler.mobile.component.d.ts +14 -0
- package/lib/scheduler/scheduler.pane.component.d.ts +20 -0
- package/lib/shared.module.d.ts +187 -0
- package/lib/system.module.d.ts +32 -0
- package/lib/views/cube/chart.component.d.ts +39 -0
- package/lib/views/cube/cube-base.d.ts +46 -0
- package/lib/views/cube/explore.component.d.ts +43 -0
- package/lib/views/cube/matrix.component.d.ts +51 -0
- package/lib/views/cube/parallel.component.d.ts +32 -0
- package/lib/views/cube/pivot.component.d.ts +34 -0
- package/lib/views/cube/sum.component.d.ts +33 -0
- package/lib/views/cube/view.component.d.ts +40 -0
- package/lib/views/document-view-ref.d.ts +18 -0
- package/lib/views/timeline/timeline.component.exp.d.ts +66 -0
- package/lib/views/view-item.component.d.ts +28 -0
- package/lib/views/views.component.d.ts +14 -0
- package/lib/views/views.mobile.component.d.ts +10 -0
- package/lib/views/views.pane.component.d.ts +12 -0
- package/package.json +78 -78
- package/public-api.d.ts +144 -0
- package/LICENSE.md +0 -1
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -11
- package/src/lib/admin/admin-dismiss.service.ts +0 -24
- package/src/lib/admin/admin-menu.component.html +0 -18
- package/src/lib/admin/admin-menu.component.ts +0 -20
- package/src/lib/admin/core/ace.input.ts +0 -133
- package/src/lib/admin/core/color-picker.input.scss +0 -17
- package/src/lib/admin/core/color-picker.input.ts +0 -175
- package/src/lib/admin/core/search.input.ts +0 -32
- package/src/lib/admin/diff/_configuration-diff-theme.scss +0 -72
- package/src/lib/admin/diff/configuration-diff.component.html +0 -24
- package/src/lib/admin/diff/configuration-diff.component.scss +0 -16
- package/src/lib/admin/diff/configuration-diff.component.ts +0 -552
- package/src/lib/admin/document-trace/_timeline-theme.scss +0 -70
- package/src/lib/admin/document-trace/document-trace.component.html +0 -55
- package/src/lib/admin/document-trace/document-trace.component.scss +0 -10
- package/src/lib/admin/document-trace/document-trace.component.ts +0 -471
- package/src/lib/admin/document-trace/reassign.dialog.html +0 -24
- package/src/lib/admin/document-trace/reassign.dialog.ts +0 -34
- package/src/lib/admin/document-trace/timeline.ts +0 -45
- package/src/lib/admin/document-trace/trace-element.component.html +0 -57
- package/src/lib/admin/document-trace/trace-element.component.scss +0 -21
- package/src/lib/admin/document-trace/trace-element.component.ts +0 -106
- package/src/lib/admin/form/form.resolve.service.ts +0 -13
- package/src/lib/admin/form/form.service.ts +0 -23
- package/src/lib/admin/form/workflow/node-ref.ts +0 -8
- package/src/lib/admin/form/workflow/node.component.html +0 -36
- package/src/lib/admin/form/workflow/node.component.scss +0 -4
- package/src/lib/admin/form/workflow/node.component.ts +0 -129
- package/src/lib/admin/form/workflow/role-node.component.html +0 -40
- package/src/lib/admin/form/workflow/role-node.component.ts +0 -66
- package/src/lib/admin/form/workflow/tools.component.exp.ts +0 -13
- package/src/lib/admin/form/workflow/tools.component.html +0 -1
- package/src/lib/admin/form/workflow/workflow.component.html +0 -73
- package/src/lib/admin/form/workflow/workflow.component.scss +0 -52
- package/src/lib/admin/form/workflow/workflow.component.ts +0 -400
- package/src/lib/admin/indices/manage-cube-index.component.html +0 -35
- package/src/lib/admin/indices/manage-cube-index.component.scss +0 -16
- package/src/lib/admin/indices/manage-cube-index.component.ts +0 -155
- package/src/lib/admin/patterns/patterns.component.html +0 -70
- package/src/lib/admin/patterns/patterns.component.ts +0 -166
- package/src/lib/admin/permissions/permissions.component.html +0 -21
- package/src/lib/admin/permissions/permissions.component.scss +0 -7
- package/src/lib/admin/permissions/permissions.component.ts +0 -89
- package/src/lib/admin/positions/positions-popup.component.html +0 -23
- package/src/lib/admin/positions/positions-popup.component.ts +0 -68
- package/src/lib/admin/positions/positions.component.html +0 -148
- package/src/lib/admin/positions/positions.component.scss +0 -14
- package/src/lib/admin/positions/positions.component.ts +0 -463
- package/src/lib/admin/profiler/profiler.component.html +0 -109
- package/src/lib/admin/profiler/profiler.component.scss +0 -22
- package/src/lib/admin/profiler/profiler.component.ts +0 -268
- package/src/lib/admin/utility-ref.ts +0 -44
- package/src/lib/admin/utility-wrapper.component.ts +0 -52
- package/src/lib/admin/utility.pane.component.ts +0 -49
- package/src/lib/app.component.ts +0 -89
- package/src/lib/bizdoc.module.ts +0 -71
- package/src/lib/browse/_browse-theme.scss +0 -86
- package/src/lib/browse/browse-items.component.html +0 -171
- package/src/lib/browse/browse-items.component.scss +0 -52
- package/src/lib/browse/browse-items.component.ts +0 -455
- package/src/lib/browse/browse.mobile.component.html +0 -33
- package/src/lib/browse/browse.mobile.component.ts +0 -90
- package/src/lib/browse/browse.pane.component.html +0 -43
- package/src/lib/browse/browse.pane.component.scss +0 -4
- package/src/lib/browse/browse.pane.component.ts +0 -141
- package/src/lib/browse/expanded-item/expanded-item.component.html +0 -38
- package/src/lib/browse/expanded-item/expanded-item.component.scss +0 -35
- package/src/lib/browse/expanded-item/expanded-item.component.ts +0 -333
- package/src/lib/browse/filter/filter.component.html +0 -50
- package/src/lib/browse/filter/filter.component.scss +0 -10
- package/src/lib/browse/filter/filter.component.ts +0 -156
- package/src/lib/browse/folders-menu.component.html +0 -20
- package/src/lib/browse/folders-menu.component.scss +0 -15
- package/src/lib/browse/folders-menu.component.ts +0 -42
- package/src/lib/chat/_chat-theme.scss +0 -95
- package/src/lib/chat/chat-info.ts +0 -76
- package/src/lib/chat/chat-pool.component.exp.ts +0 -117
- package/src/lib/chat/chat-pool.component.html +0 -13
- package/src/lib/chat/chat-pool.component.scss +0 -10
- package/src/lib/chat/chat.mobile.component.html +0 -6
- package/src/lib/chat/chat.mobile.component.scss +0 -8
- package/src/lib/chat/chat.mobile.component.ts +0 -18
- package/src/lib/chat/chat.service.ts +0 -128
- package/src/lib/chat/contacts.component.html +0 -37
- package/src/lib/chat/contacts.component.scss +0 -49
- package/src/lib/chat/contacts.component.ts +0 -88
- package/src/lib/chat/contacts.pane.component.ts +0 -25
- package/src/lib/chat/conversation.component.html +0 -28
- package/src/lib/chat/conversation.component.scss +0 -14
- package/src/lib/chat/conversation.component.ts +0 -186
- package/src/lib/chat/conversation.pane.component.ts +0 -46
- package/src/lib/compose/_compose-theme.scss +0 -63
- package/src/lib/compose/action/action-picker.component.html +0 -25
- package/src/lib/compose/action/action-picker.component.scss +0 -4
- package/src/lib/compose/action/action-picker.component.ts +0 -72
- package/src/lib/compose/action/action-ref.ts +0 -19
- package/src/lib/compose/action/action.base.ts +0 -58
- package/src/lib/compose/action/action.dialog.html +0 -17
- package/src/lib/compose/action/action.dialog.scss +0 -1
- package/src/lib/compose/action/action.dialog.ts +0 -57
- package/src/lib/compose/action/action.pane.dialog.exp.ts +0 -77
- package/src/lib/compose/action/action.pane.dialog.html +0 -12
- package/src/lib/compose/action/assign-action.component.html +0 -35
- package/src/lib/compose/action/assign-action.component.ts +0 -77
- package/src/lib/compose/action/return-action.component.html +0 -13
- package/src/lib/compose/action/return-action.component.ts +0 -38
- package/src/lib/compose/attachments/attachments.component.html +0 -23
- package/src/lib/compose/attachments/attachments.component.scss +0 -21
- package/src/lib/compose/attachments/attachments.component.ts +0 -114
- package/src/lib/compose/attachments/preview/attachment-preview.component.html +0 -15
- package/src/lib/compose/attachments/preview/attachment-preview.component.scss +0 -36
- package/src/lib/compose/attachments/preview/attachment-preview.component.ts +0 -140
- package/src/lib/compose/attachments/progress-button.directive.ts +0 -18
- package/src/lib/compose/can-deactivate-changes.service.ts +0 -22
- package/src/lib/compose/comments/_comments-theme.scss +0 -82
- package/src/lib/compose/comments/comment.component.html +0 -36
- package/src/lib/compose/comments/comment.component.ts +0 -160
- package/src/lib/compose/comments/comments.component.html +0 -27
- package/src/lib/compose/comments/comments.component.scss +0 -33
- package/src/lib/compose/comments/comments.component.ts +0 -220
- package/src/lib/compose/comments/comments.pane.component.ts +0 -41
- package/src/lib/compose/comments/edit-comment.component.html +0 -3
- package/src/lib/compose/comments/edit-comment.component.ts +0 -35
- package/src/lib/compose/comments/edits.component.html +0 -7
- package/src/lib/compose/comments/edits.component.ts +0 -33
- package/src/lib/compose/comments/quick-comment.component.exp.ts +0 -60
- package/src/lib/compose/comments/quick-comment.component.html +0 -5
- package/src/lib/compose/comments/quick-comment.component.scss +0 -11
- package/src/lib/compose/comments/votes.component.html +0 -7
- package/src/lib/compose/comments/votes.component.ts +0 -38
- package/src/lib/compose/compose-resolve.service.ts +0 -42
- package/src/lib/compose/compose.mobile.component.html +0 -67
- package/src/lib/compose/compose.mobile.component.scss +0 -14
- package/src/lib/compose/compose.mobile.component.ts +0 -97
- package/src/lib/compose/compose.pane.component.html +0 -67
- package/src/lib/compose/compose.pane.component.scss +0 -6
- package/src/lib/compose/compose.pane.component.ts +0 -187
- package/src/lib/compose/copy/copy.dialog.html +0 -21
- package/src/lib/compose/copy/copy.dialog.ts +0 -40
- package/src/lib/compose/dismiss.service.ts +0 -26
- package/src/lib/compose/document-resolver.service.ts +0 -13
- package/src/lib/compose/document.component.html +0 -5
- package/src/lib/compose/document.component.ts +0 -41
- package/src/lib/compose/document.mobile.component.ts +0 -20
- package/src/lib/compose/document.pane.component.ts +0 -22
- package/src/lib/compose/events/events.component.html +0 -6
- package/src/lib/compose/events/events.component.ts +0 -21
- package/src/lib/compose/form-ref.ts +0 -53
- package/src/lib/compose/form-selector/form-selector.sheet.html +0 -10
- package/src/lib/compose/form-selector/form-selector.sheet.ts +0 -74
- package/src/lib/compose/form.component.html +0 -13
- package/src/lib/compose/form.component.ts +0 -446
- package/src/lib/compose/maps/maps.component.html +0 -3
- package/src/lib/compose/maps/maps.component.ts +0 -22
- package/src/lib/compose/new-menu.component.html +0 -13
- package/src/lib/compose/new-menu.component.scss +0 -11
- package/src/lib/compose/new-menu.component.ts +0 -106
- package/src/lib/compose/privilage.directive.ts +0 -43
- package/src/lib/compose/recipient-resolver.service.ts +0 -15
- package/src/lib/compose/save-changes.dialog.html +0 -13
- package/src/lib/compose/save-changes.dialog.ts +0 -10
- package/src/lib/compose/state.component.ts +0 -29
- package/src/lib/compose/tag/tags.component.html +0 -22
- package/src/lib/compose/tag/tags.component.scss +0 -1
- package/src/lib/compose/tag/tags.component.ts +0 -83
- package/src/lib/compose/trace/flow.component.html +0 -19
- package/src/lib/compose/trace/flow.component.scss +0 -7
- package/src/lib/compose/trace/flow.component.ts +0 -695
- package/src/lib/compose/trace/people.component.ts +0 -33
- package/src/lib/compose/trace/trace.base.ts +0 -72
- package/src/lib/compose/trace/trace.component.html +0 -57
- package/src/lib/compose/trace/trace.component.scss +0 -21
- package/src/lib/compose/trace/trace.component.ts +0 -368
- package/src/lib/compose/trace/trace.pane.component.html +0 -3
- package/src/lib/compose/trace/trace.pane.component.scss +0 -5
- package/src/lib/compose/trace/trace.pane.component.ts +0 -47
- package/src/lib/compose/version-compare/_compare-theme.scss +0 -147
- package/src/lib/compose/version-compare/version-compare.component.ts +0 -49
- package/src/lib/compose/version-compare/version-compare.directive.ts +0 -292
- package/src/lib/compose/version-compare/version.pane.component.html +0 -19
- package/src/lib/compose/version-compare/version.pane.component.scss +0 -8
- package/src/lib/compose/version-compare/version.pane.component.ts +0 -53
- package/src/lib/core/NgComponentOutlet.ts +0 -31
- package/src/lib/core/account.service.ts +0 -30
- package/src/lib/core/animated-icon/animated-icon.directive.html +0 -3
- package/src/lib/core/animated-icon/animated-icon.directive.scss +0 -12
- package/src/lib/core/animated-icon/animated-icon.directive.ts +0 -41
- package/src/lib/core/animations.ts +0 -207
- package/src/lib/core/authentication.ts +0 -7
- package/src/lib/core/avatar/_avatar-theme.scss +0 -60
- package/src/lib/core/avatar/avatar.component.html +0 -6
- package/src/lib/core/avatar/avatar.component.ts +0 -108
- package/src/lib/core/base.ts +0 -47
- package/src/lib/core/can-activate.service.exp.ts +0 -31
- package/src/lib/core/colors.ts +0 -322
- package/src/lib/core/component-factory-resolver.ts +0 -67
- package/src/lib/core/configuration.ts +0 -121
- package/src/lib/core/controls/_daterange-theme.scss +0 -16
- package/src/lib/core/controls/address.input.ts +0 -163
- package/src/lib/core/controls/auto-complete.input.ts +0 -218
- package/src/lib/core/controls/combination-picker-body.html +0 -34
- package/src/lib/core/controls/combination-picker-body.scss +0 -40
- package/src/lib/core/controls/combination-picker-body.ts +0 -194
- package/src/lib/core/controls/combination-picker.html +0 -6
- package/src/lib/core/controls/combination-picker.scss +0 -9
- package/src/lib/core/controls/combination-picker.ts +0 -243
- package/src/lib/core/controls/combination-pool.html +0 -10
- package/src/lib/core/controls/combination-pool.scss +0 -35
- package/src/lib/core/controls/combination-pool.ts +0 -92
- package/src/lib/core/controls/file.input.html +0 -48
- package/src/lib/core/controls/file.input.scss +0 -40
- package/src/lib/core/controls/file.input.ts +0 -363
- package/src/lib/core/controls/select.input.ts +0 -211
- package/src/lib/core/controls/time-picker.html +0 -4
- package/src/lib/core/controls/time-picker.ts +0 -199
- package/src/lib/core/controls/timespan.input.ts +0 -175
- package/src/lib/core/datasource.service.ts +0 -80
- package/src/lib/core/decorators.ts +0 -56
- package/src/lib/core/firebase.service.ts +0 -55
- package/src/lib/core/functions.ts +0 -241
- package/src/lib/core/guide/_guide-theme.scss +0 -197
- package/src/lib/core/guide/guide.component.html +0 -20
- package/src/lib/core/guide/guide.component.ts +0 -210
- package/src/lib/core/guide/guide.service.ts +0 -98
- package/src/lib/core/http.interceptor.ts +0 -80
- package/src/lib/core/hub.service.ts +0 -202
- package/src/lib/core/identity/identity.component.html +0 -2
- package/src/lib/core/identity/identity.component.ts +0 -57
- package/src/lib/core/info/attachment-info.service.ts +0 -48
- package/src/lib/core/info/document-info.service.ts +0 -14
- package/src/lib/core/info/location-info.component.scss +0 -13
- package/src/lib/core/info/location-info.component.ts +0 -64
- package/src/lib/core/info/map-info.ts +0 -33
- package/src/lib/core/layout/autocomplete.field.ts +0 -41
- package/src/lib/core/layout/checkbox.field.ts +0 -21
- package/src/lib/core/layout/checkbox.scss +0 -13
- package/src/lib/core/layout/checkbox.ts +0 -21
- package/src/lib/core/layout/date-range.field.ts +0 -32
- package/src/lib/core/layout/date.field.ts +0 -26
- package/src/lib/core/layout/expression.field.ts +0 -26
- package/src/lib/core/layout/file.field.ts +0 -27
- package/src/lib/core/layout/html.field.ts +0 -28
- package/src/lib/core/layout/input.base.ts +0 -12
- package/src/lib/core/layout/input.field.ts +0 -43
- package/src/lib/core/layout/layout.component.scss +0 -9
- package/src/lib/core/layout/layout.component.ts +0 -189
- package/src/lib/core/layout/numeric.field.ts +0 -24
- package/src/lib/core/layout/select.field.ts +0 -52
- package/src/lib/core/layout/switch.field.ts +0 -21
- package/src/lib/core/layout/textarea.field.ts +0 -21
- package/src/lib/core/layout/timespan.field.ts +0 -25
- package/src/lib/core/lottie-animation.ts +0 -37
- package/src/lib/core/mailbox.service.ts +0 -453
- package/src/lib/core/models.ts +0 -681
- package/src/lib/core/none.component.scss +0 -26
- package/src/lib/core/none.component.ts +0 -28
- package/src/lib/core/pipes/action.pipe.ts +0 -18
- package/src/lib/core/pipes/calendar.pipe.ts +0 -84
- package/src/lib/core/pipes/date-format.pipe.ts +0 -12
- package/src/lib/core/pipes/daterange.pipe.ts +0 -45
- package/src/lib/core/pipes/difference.pipe.ts +0 -9
- package/src/lib/core/pipes/duration-format.pipe.ts +0 -42
- package/src/lib/core/pipes/duration.pipe.ts +0 -13
- package/src/lib/core/pipes/form.pipe.ts +0 -19
- package/src/lib/core/pipes/join.pipe.ts +0 -10
- package/src/lib/core/pipes/role.pipe.ts +0 -19
- package/src/lib/core/pipes/sanitize-html.pipe.ts +0 -10
- package/src/lib/core/pipes/sort.pipe.ts +0 -34
- package/src/lib/core/pipes/state.pipe.ts +0 -19
- package/src/lib/core/pipes/time-ago.pipe.ts +0 -59
- package/src/lib/core/pipes/translate.pipe.ts +0 -22
- package/src/lib/core/pipes/type-value.pipe.ts +0 -37
- package/src/lib/core/pipes/user-name.pipe.ts +0 -14
- package/src/lib/core/popup/_popup-theme.scss +0 -363
- package/src/lib/core/popup/popup-ref.ts +0 -19
- package/src/lib/core/popup/popup.component.html +0 -6
- package/src/lib/core/popup/popup.component.ts +0 -40
- package/src/lib/core/popup/popup.service.ts +0 -156
- package/src/lib/core/popup/tooltip.directive.ts +0 -58
- package/src/lib/core/prompt/ask/ask.dialog.html +0 -6
- package/src/lib/core/prompt/ask/ask.dialog.ts +0 -35
- package/src/lib/core/prompt/mask/mask.component.html +0 -1
- package/src/lib/core/prompt/mask/mask.component.scss +0 -14
- package/src/lib/core/prompt/mask/mask.component.ts +0 -15
- package/src/lib/core/prompt.service.ts +0 -81
- package/src/lib/core/router.ts +0 -29
- package/src/lib/core/session.service.ts +0 -255
- package/src/lib/core/slots/_slots-theme.scss +0 -140
- package/src/lib/core/slots/extended-tab.component.exp.ts +0 -35
- package/src/lib/core/slots/extended-tab.component.html +0 -0
- package/src/lib/core/slots/intro.pane.component.exp.ts +0 -23
- package/src/lib/core/slots/intro.pane.component.html +0 -22
- package/src/lib/core/slots/intro.pane.component.scss +0 -8
- package/src/lib/core/slots/pane-ref.ts +0 -162
- package/src/lib/core/slots/router.directive.ts +0 -55
- package/src/lib/core/slots/router.service.ts +0 -54
- package/src/lib/core/slots/slot.component.exp.ts +0 -49
- package/src/lib/core/slots/slot.component.html +0 -15
- package/src/lib/core/slots/slot.component.scss +0 -18
- package/src/lib/core/slots/slots.component.html +0 -67
- package/src/lib/core/slots/slots.component.scss +0 -163
- package/src/lib/core/slots/slots.component.ts +0 -1171
- package/src/lib/core/tagging/documents.component.html +0 -11
- package/src/lib/core/tagging/documents.component.ts +0 -19
- package/src/lib/core/tagging/edit-input.component.html +0 -41
- package/src/lib/core/tagging/edit-input.component.scss +0 -21
- package/src/lib/core/tagging/edit-input.component.ts +0 -211
- package/src/lib/core/tagging/emoji.component.ts +0 -23
- package/src/lib/core/tagging/tagging-item.directive.ts +0 -34
- package/src/lib/core/tagging/tagging.component-base.ts +0 -29
- package/src/lib/core/tagging/tagging.component.scss +0 -22
- package/src/lib/core/tagging/tagging.directive.ts +0 -130
- package/src/lib/core/tagging/tagging.pipe.ts +0 -76
- package/src/lib/core/tagging/users.component.html +0 -13
- package/src/lib/core/tagging/users.component.ts +0 -28
- package/src/lib/core/translate.service.ts +0 -103
- package/src/lib/core/translations.ts +0 -1104
- package/src/lib/core/window-title.service.ts +0 -54
- package/src/lib/cube/accum/accum.component.html +0 -16
- package/src/lib/cube/accum/accum.component.ts +0 -265
- package/src/lib/cube/chart/chart.component.html +0 -32
- package/src/lib/cube/chart/chart.component.ts +0 -329
- package/src/lib/cube/cube-info.service.ts +0 -135
- package/src/lib/cube/cube-menu.component.html +0 -13
- package/src/lib/cube/cube-menu.component.ts +0 -18
- package/src/lib/cube/cube-view.component.html +0 -66
- package/src/lib/cube/cube-view.component.ts +0 -186
- package/src/lib/cube/cube.service.ts +0 -483
- package/src/lib/cube/declarations.ts +0 -24
- package/src/lib/cube/explore/document-item.component.ts +0 -28
- package/src/lib/cube/explore/explore-item.component.scss +0 -4
- package/src/lib/cube/explore/explore-item.component.ts +0 -23
- package/src/lib/cube/explore/explore-items.component.html +0 -25
- package/src/lib/cube/explore/explore-items.component.scss +0 -7
- package/src/lib/cube/explore/explore-items.component.ts +0 -185
- package/src/lib/cube/explore/explore.pane.component.html +0 -12
- package/src/lib/cube/explore/explore.pane.component.ts +0 -75
- package/src/lib/cube/explore/item-resolver.service.ts +0 -24
- package/src/lib/cube/explore/item.pane.component.html +0 -3
- package/src/lib/cube/explore/item.pane.component.ts +0 -23
- package/src/lib/cube/filter/filter-tags.component.exp.ts +0 -70
- package/src/lib/cube/filter/filter-tags.component.html +0 -11
- package/src/lib/cube/filter/filter-tags.component.scss +0 -0
- package/src/lib/cube/filter/filter-tags.component.spec.ts +0 -25
- package/src/lib/cube/filter/filter.component.html +0 -25
- package/src/lib/cube/filter/filter.component.scss +0 -8
- package/src/lib/cube/filter/filter.component.ts +0 -116
- package/src/lib/cube/grid/grid.component.html +0 -29
- package/src/lib/cube/grid/grid.component.scss +0 -10
- package/src/lib/cube/grid/grid.component.ts +0 -223
- package/src/lib/cube/grid/spreadsheet.component.ts +0 -380
- package/src/lib/cube/matrix/_matrix.theme.scss +0 -86
- package/src/lib/cube/matrix/matrix.base.ts +0 -149
- package/src/lib/cube/matrix/matrix.mobile.component.html +0 -28
- package/src/lib/cube/matrix/matrix.mobile.component.ts +0 -60
- package/src/lib/cube/matrix/matrix.pane.component.html +0 -34
- package/src/lib/cube/matrix/matrix.pane.component.scss +0 -10
- package/src/lib/cube/matrix/matrix.pane.component.ts +0 -71
- package/src/lib/cube/matrix/popup.component.html +0 -32
- package/src/lib/cube/matrix/popup.component.scss +0 -7
- package/src/lib/cube/matrix/popup.component.ts +0 -57
- package/src/lib/cube/matrix/table.component.html +0 -43
- package/src/lib/cube/matrix/table.component.scss +0 -21
- package/src/lib/cube/matrix/table.component.ts +0 -514
- package/src/lib/cube/parallel/item.ts +0 -47
- package/src/lib/cube/parallel/parallel.component.html +0 -17
- package/src/lib/cube/parallel/parallel.component.scss +0 -13
- package/src/lib/cube/parallel/parallel.component.ts +0 -167
- package/src/lib/cube/pivot/pivot.component.html +0 -14
- package/src/lib/cube/pivot/pivot.component.ts +0 -514
- package/src/lib/cube/sum/_sum.theme.scss +0 -63
- package/src/lib/cube/sum/sum.component.html +0 -60
- package/src/lib/cube/sum/sum.component.scss +0 -94
- package/src/lib/cube/sum/sum.component.ts +0 -438
- package/src/lib/cube/view-base.ts +0 -82
- package/src/lib/cube/view.mobile.component.html +0 -38
- package/src/lib/cube/view.mobile.component.scss +0 -9
- package/src/lib/cube/view.mobile.component.ts +0 -115
- package/src/lib/cube/view.pane.component.html +0 -25
- package/src/lib/cube/view.pane.component.scss +0 -12
- package/src/lib/cube/view.pane.component.ts +0 -76
- package/src/lib/dashboard/_table.widget.scss +0 -19
- package/src/lib/dashboard/actions/actions.widget.html +0 -6
- package/src/lib/dashboard/actions/actions.widget.ts +0 -118
- package/src/lib/dashboard/cube/accum-cube.widget.html +0 -15
- package/src/lib/dashboard/cube/accum-cube.widget.ts +0 -154
- package/src/lib/dashboard/cube/cube-analysis.base.ts +0 -113
- package/src/lib/dashboard/cube/cube-analysis.widget.ts +0 -44
- package/src/lib/dashboard/cube/cube-chart.widget.html +0 -7
- package/src/lib/dashboard/cube/cube-chart.widget.ts +0 -144
- package/src/lib/dashboard/cube/documents.widget.html +0 -19
- package/src/lib/dashboard/cube/documents.widget.ts +0 -57
- package/src/lib/dashboard/cube/filter/filter.component.html +0 -3
- package/src/lib/dashboard/cube/filter/filter.component.ts +0 -51
- package/src/lib/dashboard/cube/gauge.component.exp.ts +0 -18
- package/src/lib/dashboard/dashboard.component.html +0 -18
- package/src/lib/dashboard/dashboard.component.scss +0 -36
- package/src/lib/dashboard/dashboard.component.ts +0 -45
- package/src/lib/dashboard/dashboard.pane.component.ts +0 -19
- package/src/lib/dashboard/recents/recents.widget.html +0 -32
- package/src/lib/dashboard/recents/recents.widget.scss +0 -9
- package/src/lib/dashboard/recents/recents.widget.ts +0 -89
- package/src/lib/dashboard/score/activity.widget.html +0 -9
- package/src/lib/dashboard/score/activity.widget.ts +0 -164
- package/src/lib/dashboard/score/compare-departments.widget.html +0 -8
- package/src/lib/dashboard/score/compare-departments.widget.ts +0 -210
- package/src/lib/dashboard/score/peers-performance.widget.html +0 -23
- package/src/lib/dashboard/score/peers-performance.widget.ts +0 -254
- package/src/lib/dashboard/score/pending-results.widget.html +0 -29
- package/src/lib/dashboard/score/pending-results.widget.ts +0 -57
- package/src/lib/dashboard/score/personal-score.widget.html +0 -18
- package/src/lib/dashboard/score/personal-score.widget.ts +0 -225
- package/src/lib/dashboard/widget-item.component.ts +0 -90
- package/src/lib/dashboard/widget-ref.ts +0 -20
- package/src/lib/desktop.module.ts +0 -98
- package/src/lib/home/_home-theme.scss +0 -156
- package/src/lib/home/about/about.dialog.html +0 -19
- package/src/lib/home/about/about.dialog.ts +0 -18
- package/src/lib/home/home-base.component.ts +0 -100
- package/src/lib/home/home.desktop.component.html +0 -87
- package/src/lib/home/home.desktop.component.scss +0 -66
- package/src/lib/home/home.desktop.component.ts +0 -188
- package/src/lib/home/home.mobile.component.html +0 -81
- package/src/lib/home/home.mobile.component.scss +0 -49
- package/src/lib/home/home.mobile.component.ts +0 -105
- package/src/lib/home/notifications/notifications.component.html +0 -18
- package/src/lib/home/notifications/notifications.component.scss +0 -36
- package/src/lib/home/notifications/notifications.component.ts +0 -55
- package/src/lib/home/options/options.component.html +0 -41
- package/src/lib/home/options/options.component.scss +0 -16
- package/src/lib/home/options/options.component.ts +0 -95
- package/src/lib/home/outofoffice/outofoffice.component.html +0 -5
- package/src/lib/home/outofoffice/outofoffice.component.scss +0 -10
- package/src/lib/home/outofoffice/outofoffice.component.ts +0 -33
- package/src/lib/home/progress-bar.directive.exp.ts +0 -24
- package/src/lib/home/search.service.ts +0 -87
- package/src/lib/home/sign/sign.component.html +0 -15
- package/src/lib/home/sign/sign.component.ts +0 -42
- package/src/lib/home/submenu.directive.exp.ts +0 -43
- package/src/lib/home/tools.component.html +0 -27
- package/src/lib/home/tools.component.scss +0 -15
- package/src/lib/home/tools.component.ts +0 -72
- package/src/lib/home/welcome/welcome.dialog.exp.ts +0 -35
- package/src/lib/home/welcome/welcome.dialog.html +0 -14
- package/src/lib/impersonate/impersonate.component.html +0 -17
- package/src/lib/impersonate/impersonate.component.scss +0 -3
- package/src/lib/impersonate/impersonate.component.spec.ts +0 -24
- package/src/lib/impersonate/impersonate.component.ts +0 -60
- package/src/lib/mobile.module.ts +0 -39
- package/src/lib/modules/chart.module.ts +0 -37
- package/src/lib/modules/circular-gauge.module.ts +0 -11
- package/src/lib/modules/date.adapter.ts +0 -31
- package/src/lib/modules/datepicker.intl.ts +0 -35
- package/src/lib/modules/diagram.module.ts +0 -20
- package/src/lib/modules/gantt.module.ts +0 -12
- package/src/lib/modules/grid.module.ts +0 -16
- package/src/lib/modules/material.module.ts +0 -104
- package/src/lib/modules/paginator.intl.ts +0 -16
- package/src/lib/modules/pivot.module.ts +0 -13
- package/src/lib/modules/schedule.module.ts +0 -12
- package/src/lib/modules/spreadsheet.module.ts +0 -17
- package/src/lib/modules/stepper.intl.ts +0 -12
- package/src/lib/modules/texteditor.module.ts +0 -16
- package/src/lib/notifications/filter.component.html +0 -6
- package/src/lib/notifications/filter.component.ts +0 -16
- package/src/lib/notifications/notifications-table.component.html +0 -54
- package/src/lib/notifications/notifications-table.component.scss +0 -14
- package/src/lib/notifications/notifications-table.component.ts +0 -94
- package/src/lib/notifications/notifications.component-base.ts +0 -49
- package/src/lib/notifications/notifications.mobile.component.ts +0 -13
- package/src/lib/notifications/notifications.pane.component.ts +0 -16
- package/src/lib/notifications/notifications.service.ts +0 -66
- package/src/lib/notifications/types/commented.notification.html +0 -14
- package/src/lib/notifications/types/commented.notification.ts +0 -51
- package/src/lib/notifications/types/cube-anomaly.notification.ts +0 -51
- package/src/lib/notifications/types/escalated.notification.ts +0 -36
- package/src/lib/notifications/types/liked.notification.ts +0 -49
- package/src/lib/notifications/types/long-running-task.notification.ts +0 -23
- package/src/lib/notifications/types/notification-base.ts +0 -37
- package/src/lib/notifications/types/nudge.notification.ts +0 -32
- package/src/lib/notifications/types/state-changed.notification.ts +0 -27
- package/src/lib/notifications/types/tagged.notification.ts +0 -46
- package/src/lib/notifications/types/text.notification.ts +0 -13
- package/src/lib/notifications/types/upcoming-event.notification.ts +0 -25
- package/src/lib/options/options.component.html +0 -149
- package/src/lib/options/options.component.scss +0 -19
- package/src/lib/options/options.component.ts +0 -244
- package/src/lib/options/options.service.ts +0 -30
- package/src/lib/reports/arguments-component.ts +0 -73
- package/src/lib/reports/cube/grid-documents.component.html +0 -25
- package/src/lib/reports/cube/grid-documents.component.ts +0 -85
- package/src/lib/reports/cube/table-documents.component.css +0 -18
- package/src/lib/reports/cube/table-documents.component.html +0 -30
- package/src/lib/reports/cube/table-documents.component.ts +0 -65
- package/src/lib/reports/cube/usage-args.component.html +0 -3
- package/src/lib/reports/cube/usage-args.component.ts +0 -55
- package/src/lib/reports/cube/usage-base.ts +0 -112
- package/src/lib/reports/cube/usage-browse.component.exp.ts +0 -93
- package/src/lib/reports/cube/usage-browse.component.html +0 -27
- package/src/lib/reports/cube/usage-browse.component.scss +0 -24
- package/src/lib/reports/cube/usage-chart.component.html +0 -11
- package/src/lib/reports/cube/usage-chart.component.ts +0 -387
- package/src/lib/reports/cube/usage-pivot.component.html +0 -19
- package/src/lib/reports/cube/usage-pivot.component.ts +0 -252
- package/src/lib/reports/report-ref.ts +0 -42
- package/src/lib/reports/report-viewer.component.html +0 -2
- package/src/lib/reports/report-viewer.component.scss +0 -12
- package/src/lib/reports/report-viewer.component.ts +0 -162
- package/src/lib/reports/report.mobile.component.html +0 -16
- package/src/lib/reports/report.mobile.component.scss +0 -7
- package/src/lib/reports/report.mobile.component.ts +0 -107
- package/src/lib/reports/report.pane.component.html +0 -8
- package/src/lib/reports/report.pane.component.scss +0 -9
- package/src/lib/reports/report.pane.component.ts +0 -78
- package/src/lib/reports/reports-menu.component.html +0 -9
- package/src/lib/reports/reports-menu.component.ts +0 -20
- package/src/lib/reports/substitution/substitution.component.html +0 -26
- package/src/lib/reports/substitution/substitution.component.ts +0 -34
- package/src/lib/reports/table/table-view.component.html +0 -8
- package/src/lib/reports/table/table-view.component.scss +0 -0
- package/src/lib/reports/table/table-view.component.ts +0 -33
- package/src/lib/reports/tasks/tasks.component.html +0 -21
- package/src/lib/reports/tasks/tasks.component.ts +0 -114
- package/src/lib/reports/timeline/timeline.component.exp.ts +0 -225
- package/src/lib/reports/timeline/timeline.component.html +0 -9
- package/src/lib/routes.desktop.ts +0 -196
- package/src/lib/routes.mobile.ts +0 -70
- package/src/lib/scheduler/schedule.component.html +0 -36
- package/src/lib/scheduler/schedule.component.scss +0 -13
- package/src/lib/scheduler/schedule.component.ts +0 -158
- package/src/lib/scheduler/scheduler.mobile.component.ts +0 -30
- package/src/lib/scheduler/scheduler.pane.component.ts +0 -49
- package/src/lib/shared.module.ts +0 -386
- package/src/lib/system.module.ts +0 -75
- package/src/lib/views/_views.theme.scss +0 -18
- package/src/lib/views/cube/chart.component.html +0 -24
- package/src/lib/views/cube/chart.component.ts +0 -88
- package/src/lib/views/cube/cube-base.ts +0 -126
- package/src/lib/views/cube/explore.component.html +0 -33
- package/src/lib/views/cube/explore.component.ts +0 -82
- package/src/lib/views/cube/filter.component.exp.ts +0 -66
- package/src/lib/views/cube/filter.component.html +0 -25
- package/src/lib/views/cube/matrix.component.html +0 -42
- package/src/lib/views/cube/matrix.component.scss +0 -3
- package/src/lib/views/cube/matrix.component.ts +0 -107
- package/src/lib/views/cube/parallel.component.html +0 -10
- package/src/lib/views/cube/parallel.component.scss +0 -13
- package/src/lib/views/cube/parallel.component.ts +0 -62
- package/src/lib/views/cube/pivot.component.html +0 -8
- package/src/lib/views/cube/pivot.component.ts +0 -62
- package/src/lib/views/cube/sum.component.html +0 -30
- package/src/lib/views/cube/sum.component.scss +0 -3
- package/src/lib/views/cube/sum.component.ts +0 -71
- package/src/lib/views/cube/view.component.html +0 -34
- package/src/lib/views/cube/view.component.scss +0 -12
- package/src/lib/views/cube/view.component.ts +0 -103
- package/src/lib/views/document-view-ref.ts +0 -34
- package/src/lib/views/timeline/timeline.component.exp.ts +0 -333
- package/src/lib/views/timeline/timeline.component.html +0 -6
- package/src/lib/views/timeline/timeline.component.scss +0 -6
- package/src/lib/views/view-item.component.ts +0 -67
- package/src/lib/views/views.component.html +0 -4
- package/src/lib/views/views.component.scss +0 -33
- package/src/lib/views/views.component.ts +0 -23
- package/src/lib/views/views.mobile.component.ts +0 -19
- package/src/lib/views/views.pane.component.ts +0 -31
- package/src/polyfills.ts +0 -81
- package/src/public-api.ts +0 -147
- package/src/styles/_app.scss +0 -316
- package/src/styles/_emoji-mart.scss +0 -504
- package/src/styles/_syncfusion-base-definitions.scss +0 -63
- package/src/styles/_syncfusion-dark-definitions.scss +0 -23
- package/src/styles/_syncfusion-icons.scss +0 -57
- package/src/styles/_syncfusion-light-definitions.scss +0 -23
- package/src/styles/_syncfusion.scss +0 -22
- package/src/styles/brown.scss +0 -15
- package/src/styles/build.ps1 +0 -25
- package/src/styles/dark.scss +0 -24
- package/src/styles/deep-purple-light-blue.scss +0 -22
- package/src/styles/deep-purple-teal.scss +0 -22
- package/src/styles/default.scss +0 -23
- package/src/styles/diagram-icons.eot +0 -0
- package/src/styles/diagram-icons.ttf +0 -0
- package/src/styles/green.scss +0 -14
- package/src/styles/indigo.scss +0 -15
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -25
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -18
@@ -0,0 +1,558 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
2
|
+
import { Component, Inject, ViewChild } from '@angular/core';
|
3
|
+
import { Subject } from 'rxjs';
|
4
|
+
import { debounceTime, takeUntil } from 'rxjs/operators';
|
5
|
+
import { BizDoc } from '../../core/decorators';
|
6
|
+
import { isArray, isObject, isString } from '../../core/functions';
|
7
|
+
import { UtilityRef } from '../utility-ref';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "../../core/prompt.service";
|
10
|
+
import * as i2 from "../../core/translate.service";
|
11
|
+
import * as i3 from "../../core/datasource.service";
|
12
|
+
import * as i4 from "../../core/account.service";
|
13
|
+
import * as i5 from "@angular/material/toolbar";
|
14
|
+
import * as i6 from "@angular/material/button";
|
15
|
+
import * as i7 from "@angular/material/icon";
|
16
|
+
import * as i8 from "@angular/material/sidenav";
|
17
|
+
import * as i9 from "@angular/material/progress-bar";
|
18
|
+
import * as i10 from "@angular/material/list";
|
19
|
+
import * as i11 from "../../core/popup/tooltip.directive";
|
20
|
+
import * as i12 from "@angular/flex-layout/flex";
|
21
|
+
import * as i13 from "@angular/common";
|
22
|
+
import * as i14 from "@angular/material/core";
|
23
|
+
import * as i15 from "../../core/pipes/translate.pipe";
|
24
|
+
import * as i16 from "../../core/pipes/sanitize-html.pipe";
|
25
|
+
import * as i17 from "../../core/pipes/user-name.pipe";
|
26
|
+
import * as i18 from "../../core/pipes/calendar.pipe";
|
27
|
+
import * as i19 from "../utility-ref";
|
28
|
+
const IGNORE_NODE = ['author', 'history', 'targetDecorator', 'sourceDecorator', 'offsetX', 'offsetY', 'rotateAngle', 'width', 'height',
|
29
|
+
'style', 'segments', 'offset', 'targetPortID', 'sourcePortID', 'horizontalAlignment', 'verticalAlignment', 'workflow.timestamp',
|
30
|
+
'connectors.constraints', 'nodes.constraints', 'annotations.constraints', 'annotations.id'], SVG_PATH_REGEX = /^[mM].+[zZ]$/, INDEX_PROPERTY = ['name', 'id'], DATA_TYPE = 'dataType', ORIGINAL_VALUE = '_', STATE = '__';
|
31
|
+
let SystemDiffComponent = class SystemDiffComponent {
|
32
|
+
/** ctor */
|
33
|
+
constructor(_sb, _utilityRef, _translate, _ds, _accounts) {
|
34
|
+
this._sb = _sb;
|
35
|
+
this._utilityRef = _utilityRef;
|
36
|
+
this._translate = _translate;
|
37
|
+
this._ds = _ds;
|
38
|
+
this._accounts = _accounts;
|
39
|
+
this.html = '';
|
40
|
+
this.progress = 0;
|
41
|
+
this._working = new Subject();
|
42
|
+
this.CALENDAR_SPEC = {
|
43
|
+
lastDay: `[${this._translate.get('Yesterday')}] HH:mm`,
|
44
|
+
lastWeek: 'ddd HH:mm',
|
45
|
+
sameDay: 'HH:mm',
|
46
|
+
sameElse: 'MMM D HH:mm'
|
47
|
+
};
|
48
|
+
this._destroy = new Subject();
|
49
|
+
}
|
50
|
+
ngOnInit() {
|
51
|
+
// delay progress
|
52
|
+
this._working.pipe(takeUntil(this._destroy), debounceTime(100)).subscribe(v => v && (this.progress = v));
|
53
|
+
this._working.next(50);
|
54
|
+
// populate versions
|
55
|
+
this._utilityRef.populate().subscribe(e => {
|
56
|
+
this.versions = e;
|
57
|
+
this._working.next(100);
|
58
|
+
e.length > 1 &&
|
59
|
+
this.compare(0);
|
60
|
+
}, () => this._sb.error());
|
61
|
+
}
|
62
|
+
/**
|
63
|
+
*
|
64
|
+
* @param index
|
65
|
+
*/
|
66
|
+
compare(index) {
|
67
|
+
const { time: date1, file } = this.versions[index], version = this.versions.slice(index + 1).find(v => v.file === file);
|
68
|
+
if (!version)
|
69
|
+
return;
|
70
|
+
const { time: date2 } = version;
|
71
|
+
this._working.next(25);
|
72
|
+
this._utilityRef.execute({ date1, date2 }).subscribe(r => {
|
73
|
+
this.html = '';
|
74
|
+
this._working.next(50);
|
75
|
+
this.activeDate = date1;
|
76
|
+
const results = this._compare(r[0], r[1]);
|
77
|
+
if (results)
|
78
|
+
results.then(d => {
|
79
|
+
this._working.next(75);
|
80
|
+
this.html = this._generate(d);
|
81
|
+
this._scrollTop();
|
82
|
+
this._working.next(100);
|
83
|
+
this.none = false;
|
84
|
+
});
|
85
|
+
else {
|
86
|
+
this._working.next(100);
|
87
|
+
this.none = true;
|
88
|
+
}
|
89
|
+
}, () => this._sb.error());
|
90
|
+
}
|
91
|
+
_scrollTop() {
|
92
|
+
setTimeout(() => this.contents.nativeElement.parentElement.scroll({ top: 0, behavior: 'smooth' }));
|
93
|
+
}
|
94
|
+
/**
|
95
|
+
*
|
96
|
+
* @param a
|
97
|
+
* @param b
|
98
|
+
* @param diff
|
99
|
+
* @param scope
|
100
|
+
*/
|
101
|
+
_compare(a, b, diff = {}, scope = { nodes: [] }) {
|
102
|
+
const promises = [];
|
103
|
+
if (isArray(a)) {
|
104
|
+
a.forEach((e, i) => {
|
105
|
+
const bVal = b[i];
|
106
|
+
if (e === bVal)
|
107
|
+
return;
|
108
|
+
else if (isObject(e)) {
|
109
|
+
const aJson = JSON.stringify(e), bJson = JSON.stringify(bVal);
|
110
|
+
if (aJson === bJson)
|
111
|
+
return;
|
112
|
+
if (bVal && this._match(bVal, e)) {
|
113
|
+
const obj = {};
|
114
|
+
const promise = this._compare(e, bVal, obj, { nodes: scope.nodes, type: e[DATA_TYPE] || scope.type });
|
115
|
+
if (!promise)
|
116
|
+
return;
|
117
|
+
diff.push(this._rekey(e, obj, scope.nodes));
|
118
|
+
promises.push(promise);
|
119
|
+
}
|
120
|
+
else if (b.find(b => JSON.stringify(b) === aJson))
|
121
|
+
return;
|
122
|
+
else {
|
123
|
+
const bObj = b.find(b => this._match(b, e));
|
124
|
+
if (bObj) {
|
125
|
+
const obj = {};
|
126
|
+
const promise = this._compare(e, bObj, obj, { nodes: scope.nodes, type: e[DATA_TYPE] || scope.type });
|
127
|
+
if (!promise)
|
128
|
+
return;
|
129
|
+
diff.push(this._rekey(e, obj, scope.nodes));
|
130
|
+
promises.push(promise);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
const obj = isArray(e) ? [] : {};
|
134
|
+
const promise = this._branch(e, obj, { nodes: scope.nodes, type: e[DATA_TYPE] || scope.type });
|
135
|
+
if (!promise)
|
136
|
+
return;
|
137
|
+
const length = diff.push(obj);
|
138
|
+
diff[STATE + (length - 1).toString()] = ChangeState.Added;
|
139
|
+
promises.push(promise);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
}
|
143
|
+
else if (!b.find(b => b == e)) {
|
144
|
+
const length = diff.push(e);
|
145
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
146
|
+
const promise = this._accounts.get(e).toPromise().then(v => diff[length - 1] = v.name);
|
147
|
+
promises.push(promise);
|
148
|
+
}
|
149
|
+
diff[STATE + (length - 1).toString()] = ChangeState.Added;
|
150
|
+
}
|
151
|
+
});
|
152
|
+
b.forEach((e, i) => {
|
153
|
+
if (e !== a[i]) {
|
154
|
+
if (isObject(e)) {
|
155
|
+
const bJson = JSON.stringify(e);
|
156
|
+
if (bJson === JSON.stringify(a[i]) || a.find(a => JSON.stringify(a) === bJson ||
|
157
|
+
this._match(a, e)))
|
158
|
+
return;
|
159
|
+
const obj = isArray(e) ? [] : {};
|
160
|
+
const promise = this._branch(e, obj, { nodes: scope.nodes, type: e[DATA_TYPE] || scope.type });
|
161
|
+
if (!promise)
|
162
|
+
return;
|
163
|
+
const length = diff.push(obj);
|
164
|
+
diff[STATE + (length - 1).toString()] = ChangeState.Removed;
|
165
|
+
promises.push(promise);
|
166
|
+
}
|
167
|
+
else if (!a.find(a => a == e)) {
|
168
|
+
const length = diff.push(e);
|
169
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
170
|
+
const promise = this._accounts.get(e).toPromise().then(v => diff[length - 1] = v.name);
|
171
|
+
promises.push(promise);
|
172
|
+
}
|
173
|
+
diff[STATE + (length - 1).toString()] = ChangeState.Removed;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
});
|
177
|
+
if (!diff.length)
|
178
|
+
return false;
|
179
|
+
}
|
180
|
+
else {
|
181
|
+
Object.keys(a).forEach(k => {
|
182
|
+
if (this._ignore(k, scope.nodes))
|
183
|
+
return;
|
184
|
+
const aVal = a[k], bVal = b[k];
|
185
|
+
if (aVal === bVal)
|
186
|
+
return;
|
187
|
+
else if (isObject(aVal)) {
|
188
|
+
if (JSON.stringify(aVal) === JSON.stringify(bVal))
|
189
|
+
return;
|
190
|
+
if (bVal !== undefined && isArray(bVal) !== isArray(aVal)) {
|
191
|
+
diff[k] = aVal;
|
192
|
+
diff[ORIGINAL_VALUE + k] = isArray(bVal) ? bVal.join(', ') : bVal;
|
193
|
+
diff[STATE + k] = ChangeState.Modified;
|
194
|
+
}
|
195
|
+
else {
|
196
|
+
let obj = isArray(aVal) ? [] : {}, extra = { type: aVal[DATA_TYPE] || scope.type, nodes: [...scope.nodes, k] };
|
197
|
+
if (bVal !== undefined) {
|
198
|
+
const promise = this._compare(aVal, bVal, obj, extra);
|
199
|
+
if (!promise)
|
200
|
+
return;
|
201
|
+
if (!isArray(aVal))
|
202
|
+
obj = this._rekey(aVal, obj, scope.nodes);
|
203
|
+
promises.push(promise);
|
204
|
+
}
|
205
|
+
else {
|
206
|
+
const promise = this._branch(aVal, obj, extra);
|
207
|
+
if (!promise)
|
208
|
+
return;
|
209
|
+
promises.push(promise);
|
210
|
+
}
|
211
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
212
|
+
diff[ORIGINAL_VALUE + k] = aVal;
|
213
|
+
const promise = this._ds.get(scope.type, k).toPromise().then(v => {
|
214
|
+
const name = isString(v) ? v : v[Object.keys(v)[0]];
|
215
|
+
diff[name] = obj;
|
216
|
+
if (bVal === undefined)
|
217
|
+
diff[STATE + name] = ChangeState.Added;
|
218
|
+
});
|
219
|
+
promises.push(promise);
|
220
|
+
}
|
221
|
+
else {
|
222
|
+
diff[k] = obj;
|
223
|
+
if (bVal === undefined)
|
224
|
+
diff[STATE + k] = ChangeState.Added;
|
225
|
+
}
|
226
|
+
}
|
227
|
+
}
|
228
|
+
else {
|
229
|
+
diff[k] = aVal;
|
230
|
+
if (k === 'userId') {
|
231
|
+
const promise = this._accounts.get(aVal).toPromise().then(v => diff[k] = v.name);
|
232
|
+
promises.push(promise);
|
233
|
+
}
|
234
|
+
if (bVal !== undefined) {
|
235
|
+
if (k === 'userId') {
|
236
|
+
const promise = this._accounts.get(bVal).toPromise().then(v => diff[ORIGINAL_VALUE + k] = v.name);
|
237
|
+
promises.push(promise);
|
238
|
+
}
|
239
|
+
else
|
240
|
+
diff[ORIGINAL_VALUE + k] = bVal;
|
241
|
+
diff[STATE + k] = ChangeState.Modified;
|
242
|
+
}
|
243
|
+
else
|
244
|
+
diff[STATE + k] = ChangeState.Added;
|
245
|
+
}
|
246
|
+
});
|
247
|
+
Object.keys(b).forEach(k => {
|
248
|
+
if (a[k] !== undefined || this._ignore(k, scope.nodes))
|
249
|
+
return;
|
250
|
+
const bVal = b[k];
|
251
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
252
|
+
const obj = [];
|
253
|
+
diff[ORIGINAL_VALUE + k] = bVal;
|
254
|
+
const promise = this._ds.get(scope.type, k).toPromise().then(v => {
|
255
|
+
const name = isString(v) ? v : v[Object.keys(v)[0]];
|
256
|
+
diff[name] = obj;
|
257
|
+
diff[STATE + name] = ChangeState.Removed;
|
258
|
+
});
|
259
|
+
promises.push(promise);
|
260
|
+
bVal && bVal.forEach((e, i) => {
|
261
|
+
const promise = this._accounts.get(e).toPromise().then(v => obj[i] = v.name);
|
262
|
+
promises.push(promise);
|
263
|
+
});
|
264
|
+
}
|
265
|
+
else {
|
266
|
+
if (isObject(bVal)) {
|
267
|
+
const obj = isArray(bVal) ? [] : {};
|
268
|
+
const promise = this._branch(bVal, obj, { type: bVal[DATA_TYPE] || scope.type, nodes: [...scope.nodes, k] });
|
269
|
+
if (!promise)
|
270
|
+
return;
|
271
|
+
diff[k] = obj;
|
272
|
+
promise && promises.push(promise);
|
273
|
+
}
|
274
|
+
else {
|
275
|
+
diff[k] = bVal;
|
276
|
+
if (k === 'userId') {
|
277
|
+
const promise = this._accounts.get(bVal).toPromise().then(v => diff[k] = v.name);
|
278
|
+
promises.push(promise);
|
279
|
+
}
|
280
|
+
}
|
281
|
+
diff[STATE + k] = ChangeState.Removed;
|
282
|
+
}
|
283
|
+
});
|
284
|
+
if (!Object.keys(diff).length)
|
285
|
+
return false;
|
286
|
+
}
|
287
|
+
return promises.length ? Promise.all(promises).then(() => diff) : Promise.resolve(diff);
|
288
|
+
}
|
289
|
+
/**
|
290
|
+
*
|
291
|
+
* @param obj1
|
292
|
+
* @param obj2
|
293
|
+
*/
|
294
|
+
_match(obj1, obj2) {
|
295
|
+
return INDEX_PROPERTY.findIndex(k => obj1[k] && obj1[k] === obj2[k]) > -1;
|
296
|
+
}
|
297
|
+
/**
|
298
|
+
*
|
299
|
+
* @param base
|
300
|
+
* @param obj
|
301
|
+
* @param nodes
|
302
|
+
*/
|
303
|
+
_rekey(base, obj, nodes) {
|
304
|
+
const newObj = {};
|
305
|
+
let ok = false;
|
306
|
+
INDEX_PROPERTY.forEach(k => {
|
307
|
+
if (this._ignore(k, nodes))
|
308
|
+
return;
|
309
|
+
if (base[k]) {
|
310
|
+
newObj[k] = base[k];
|
311
|
+
ok = true;
|
312
|
+
}
|
313
|
+
});
|
314
|
+
return ok ? Object.assign(newObj, obj) : obj;
|
315
|
+
}
|
316
|
+
/**
|
317
|
+
*
|
318
|
+
* @param name
|
319
|
+
* @param nodes
|
320
|
+
*/
|
321
|
+
_ignore(name, nodes) {
|
322
|
+
return IGNORE_NODE.indexOf(name) > -1 || IGNORE_NODE.indexOf(nodes[nodes.length - 1] + '.' + name) > -1;
|
323
|
+
}
|
324
|
+
/**
|
325
|
+
*
|
326
|
+
* @param base
|
327
|
+
* @param prestine
|
328
|
+
* @param scope
|
329
|
+
*/
|
330
|
+
_branch(base, prestine, scope) {
|
331
|
+
const promises = [];
|
332
|
+
if (isArray(base)) {
|
333
|
+
base.forEach(e => {
|
334
|
+
if (isObject(e)) {
|
335
|
+
const obj = isArray(e) ? [] : {};
|
336
|
+
const promise = this._branch(e, obj, { nodes: scope.nodes, type: e[DATA_TYPE] || scope.type });
|
337
|
+
if (!promise)
|
338
|
+
return;
|
339
|
+
promises.push(promise);
|
340
|
+
prestine.push(obj);
|
341
|
+
}
|
342
|
+
else {
|
343
|
+
const length = prestine.push(e);
|
344
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
345
|
+
const promise = this._accounts.get(e).toPromise().then(v => prestine[length - 1] = v.name);
|
346
|
+
promises.push(promise);
|
347
|
+
}
|
348
|
+
}
|
349
|
+
});
|
350
|
+
if (!prestine.length)
|
351
|
+
return false;
|
352
|
+
}
|
353
|
+
else {
|
354
|
+
Object.keys(base).forEach(k => {
|
355
|
+
if (this._ignore(k, scope.nodes))
|
356
|
+
return;
|
357
|
+
const aVal = base[k];
|
358
|
+
if (isObject(aVal)) {
|
359
|
+
const obj = isArray(aVal) ? [] : {};
|
360
|
+
const promise = this._branch(aVal, obj, { type: aVal[DATA_TYPE] || scope.type, nodes: [...scope.nodes, k] });
|
361
|
+
if (!promise)
|
362
|
+
return;
|
363
|
+
promises.push(promise);
|
364
|
+
if (scope.nodes.indexOf('positions') > -1) {
|
365
|
+
const promise = this._ds.get(scope.type, k).toPromise().then(v => prestine[isString(v) ? v : v[Object.keys(v)[0]]] = obj);
|
366
|
+
promises.push(promise);
|
367
|
+
}
|
368
|
+
else
|
369
|
+
prestine[k] = obj;
|
370
|
+
}
|
371
|
+
else {
|
372
|
+
prestine[k] = aVal;
|
373
|
+
if (k === 'userId') {
|
374
|
+
const promise = this._accounts.get(aVal).toPromise().then(v => prestine[k] = v.name);
|
375
|
+
promises.push(promise);
|
376
|
+
}
|
377
|
+
}
|
378
|
+
});
|
379
|
+
if (!Object.keys(prestine).length)
|
380
|
+
return false;
|
381
|
+
}
|
382
|
+
return promises.length ? Promise.all(promises) : Promise.resolve();
|
383
|
+
}
|
384
|
+
/**
|
385
|
+
* return html from diff tree
|
386
|
+
* @param diff
|
387
|
+
* @param objstate
|
388
|
+
* @param propertyName
|
389
|
+
* @param sibling array entry
|
390
|
+
*/
|
391
|
+
_generate(diff, objstate = ChangeState.Unchanged, propertyName = undefined, sibling = false) {
|
392
|
+
let h = '';
|
393
|
+
if (isArray(diff)) {
|
394
|
+
h += this._write(objstate, TokenKind.ArrayStart, false, false, propertyName);
|
395
|
+
const n = diff.length;
|
396
|
+
diff.forEach((e, i) => {
|
397
|
+
const state = diff[STATE + i.toString()];
|
398
|
+
if (isObject(e))
|
399
|
+
h += this._generate(e, state, undefined, i < n - 1);
|
400
|
+
else
|
401
|
+
h += this._write(state, TokenKind.Value, i === n - 1 || diff[STATE + (i + 1).toString()] !== state, i < n - 1, undefined, e);
|
402
|
+
});
|
403
|
+
h += this._write(objstate, TokenKind.ArrayEnd, true, sibling);
|
404
|
+
}
|
405
|
+
else {
|
406
|
+
h += this._write(objstate, TokenKind.ObjectStart, false, false, propertyName);
|
407
|
+
const keys = Object.keys(diff).filter(k => !k.startsWith(ORIGINAL_VALUE));
|
408
|
+
keys.forEach((k, i) => {
|
409
|
+
const val = diff[k], state = diff[STATE + k], n = keys.length;
|
410
|
+
if (isObject(val))
|
411
|
+
h += this._generate(val, state, k, i < n - 1);
|
412
|
+
else
|
413
|
+
h += this._write(state, TokenKind.Value, state !== objstate, i < n - 1, k, val, diff[ORIGINAL_VALUE + k]);
|
414
|
+
});
|
415
|
+
h += this._write(objstate, TokenKind.ObjectEnd, true, sibling);
|
416
|
+
}
|
417
|
+
return h;
|
418
|
+
}
|
419
|
+
/**
|
420
|
+
* write html line
|
421
|
+
* @param state
|
422
|
+
* @param annotate
|
423
|
+
* @param token
|
424
|
+
* @param sibling array entry
|
425
|
+
* @param propertyName
|
426
|
+
* @param value
|
427
|
+
* @param originalValue
|
428
|
+
*/
|
429
|
+
_write(state, token, annotate, sibling, propertyName, value, originalValue) {
|
430
|
+
let h = '', brackets, cls;
|
431
|
+
switch (state) {
|
432
|
+
case ChangeState.Removed:
|
433
|
+
cls = 'compare removed';
|
434
|
+
break;
|
435
|
+
case ChangeState.Added:
|
436
|
+
cls = 'compare added';
|
437
|
+
break;
|
438
|
+
case ChangeState.Modified:
|
439
|
+
cls = 'compare modified';
|
440
|
+
break;
|
441
|
+
default:
|
442
|
+
cls = '';
|
443
|
+
}
|
444
|
+
switch (token) {
|
445
|
+
case TokenKind.ArrayStart:
|
446
|
+
brackets = '[';
|
447
|
+
break;
|
448
|
+
case TokenKind.ObjectStart:
|
449
|
+
brackets = '{';
|
450
|
+
break;
|
451
|
+
case TokenKind.ArrayEnd:
|
452
|
+
brackets = ']';
|
453
|
+
break;
|
454
|
+
case TokenKind.ObjectEnd:
|
455
|
+
brackets = '}';
|
456
|
+
break;
|
457
|
+
}
|
458
|
+
if (token == TokenKind.ObjectStart || token == TokenKind.ArrayStart)
|
459
|
+
h = `<div class="scope ${cls}">`;
|
460
|
+
if (propertyName)
|
461
|
+
h += `<span class="structure ${cls}">${propertyName}: </span>`;
|
462
|
+
if (brackets) {
|
463
|
+
if (token == TokenKind.ObjectEnd || token == TokenKind.ArrayEnd)
|
464
|
+
h += '</div>';
|
465
|
+
h += `<span class="brackets">${brackets}</span>`;
|
466
|
+
if (token == TokenKind.ObjectStart || token == TokenKind.ArrayStart)
|
467
|
+
h += '<span class="alternate">...</span><div class="scope-content">';
|
468
|
+
}
|
469
|
+
if (token == TokenKind.Value) {
|
470
|
+
if (propertyName === 'color')
|
471
|
+
h += `<div class="color" style="background-color:${value}"></div> `;
|
472
|
+
else if ((propertyName === 'shape' || propertyName === 'data') && SVG_PATH_REGEX.test(value))
|
473
|
+
h += `<svg width=12 height=12 viewBox="0 0 35 35" preserveAspectRatio="none"><path d="${value}"></path></svg> `;
|
474
|
+
h += `<span class="value ${cls}">${value}</span>`;
|
475
|
+
}
|
476
|
+
if (sibling)
|
477
|
+
h += '<span class="structure">,</span>';
|
478
|
+
if (state && annotate) {
|
479
|
+
const resource = state === ChangeState.Removed ? 'Deleted' : state === ChangeState.Added ? 'Added' : 'Modified';
|
480
|
+
h += `<div class="${cls}"> <div class="label"><span>${this._translate.get(resource)}`;
|
481
|
+
if (originalValue)
|
482
|
+
h += ` <span class="original">${originalValue}</span>`;
|
483
|
+
h += '</span></div></div>';
|
484
|
+
}
|
485
|
+
else if (token === TokenKind.Value)
|
486
|
+
h += '<br/>';
|
487
|
+
if (token == TokenKind.ObjectEnd || token == TokenKind.ArrayEnd)
|
488
|
+
h += '</div>';
|
489
|
+
return h;
|
490
|
+
}
|
491
|
+
/**
|
492
|
+
* toggle
|
493
|
+
* @param evt
|
494
|
+
*/
|
495
|
+
collapse(evt) {
|
496
|
+
let el = evt.srcElement;
|
497
|
+
while (el && !el.classList.contains('scope'))
|
498
|
+
el = el.parentElement;
|
499
|
+
el && el.classList.toggle('collapse') && el.classList.remove('focus');
|
500
|
+
evt.stopPropagation();
|
501
|
+
}
|
502
|
+
/**
|
503
|
+
* remove cls
|
504
|
+
*/
|
505
|
+
focusOut() {
|
506
|
+
this.contents.nativeElement.querySelectorAll('.scope.focus').forEach(e => e.classList.remove('focus'));
|
507
|
+
}
|
508
|
+
/**
|
509
|
+
*
|
510
|
+
* @param evt
|
511
|
+
*/
|
512
|
+
focusIn(evt) {
|
513
|
+
this.focusOut();
|
514
|
+
let el = evt.srcElement;
|
515
|
+
while (el && !el.classList.contains('scope'))
|
516
|
+
el = el.parentElement;
|
517
|
+
el && !el.classList.contains('collapse') && el.classList.add('focus');
|
518
|
+
}
|
519
|
+
ngOnDestroy() {
|
520
|
+
this._destroy.next();
|
521
|
+
this._destroy.complete();
|
522
|
+
}
|
523
|
+
};
|
524
|
+
SystemDiffComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SystemDiffComponent, deps: [{ token: i1.PromptService }, { token: UtilityRef }, { token: i2.TranslateService }, { token: i3.DatasourceService }, { token: i4.AccountService }], target: i0.ɵɵFactoryTarget.Component });
|
525
|
+
SystemDiffComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: SystemDiffComponent, selector: "ng-component", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "contents", first: true, predicate: ["contents"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize fxFlex>\r\n <mat-sidenav-content>\r\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\r\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\r\n <mat-nav-list *ngIf=\"versions\">\r\n <ng-container *ngFor=\"let v of versions; let index = index; let last = last\">\r\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\" *ngIf=\"!last\">\r\n <h3 matLine>\r\n {{(v.author || 'System') | userName | async }}\r\n </h3>\r\n <p class=\"time\" matLine>\r\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\r\n </p>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"], components: [{ type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { type: i8.MatSidenavContent, selector: "mat-sidenav-content" }, { type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i8.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { type: i10.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i10.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }], directives: [{ type: i11.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.MatLine, selector: "[mat-line], [matLine]" }], pipes: { "translate": i15.TranslatePipe, "sanitizeHtml": i16.SanitizeHtmlPipe, "async": i13.AsyncPipe, "userName": i17.UserNamePipe, "amCalendar": i18.CalendarPipe } });
|
526
|
+
SystemDiffComponent = __decorate([
|
527
|
+
BizDoc({ selector: 'bizdoc-configuration-diff' })
|
528
|
+
/** component*/
|
529
|
+
], SystemDiffComponent);
|
530
|
+
export { SystemDiffComponent };
|
531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SystemDiffComponent, decorators: [{
|
532
|
+
type: Component,
|
533
|
+
args: [{ host: {
|
534
|
+
class: 'pane'
|
535
|
+
}, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"properties.toggle()\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize fxFlex>\r\n <mat-sidenav-content>\r\n <mat-progress-bar mode=\"buffer\" [value]=progress [bufferValue]=0 [style.visibility]=\"progress > 0 && progress < 100 ? 'visible':'hidden'\"></mat-progress-bar>\r\n <div [innerHTML]=\"html | sanitizeHtml\" (mouseleave)=\"focusOut()\" (mousemove)=\"focusIn($event)\" class=\"configuration-diff\" (click)=\"collapse($event)\" #contents></div>\r\n </mat-sidenav-content>\r\n <mat-sidenav mode=\"side\" opened #properties class=\"timeline\">\r\n <mat-nav-list *ngIf=\"versions\">\r\n <ng-container *ngFor=\"let v of versions; let index = index; let last = last\">\r\n <mat-list-item (click)=\"compare(index)\" [class.active]=\"v.time === activeDate\" *ngIf=\"!last\">\r\n <h3 matLine>\r\n {{(v.author || 'System') | userName | async }}\r\n </h3>\r\n <p class=\"time\" matLine>\r\n {{v.time | amCalendar: null: CALENDAR_SPEC }}\r\n </p>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n</mat-sidenav-container>\r\n", styles: [":host{flex:1 1 auto}.timeline{border:none;width:150px}.timeline .time{font-size:12px!important}:host ::ng-deep .mat-drawer-inner-container{overflow:auto}\n"] }]
|
536
|
+
}], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i19.UtilityRef, decorators: [{
|
537
|
+
type: Inject,
|
538
|
+
args: [UtilityRef]
|
539
|
+
}] }, { type: i2.TranslateService }, { type: i3.DatasourceService }, { type: i4.AccountService }]; }, propDecorators: { contents: [{
|
540
|
+
type: ViewChild,
|
541
|
+
args: ['contents']
|
542
|
+
}] } });
|
543
|
+
var ChangeState;
|
544
|
+
(function (ChangeState) {
|
545
|
+
ChangeState[ChangeState["Unchanged"] = 0] = "Unchanged";
|
546
|
+
ChangeState[ChangeState["Added"] = 1] = "Added";
|
547
|
+
ChangeState[ChangeState["Modified"] = 2] = "Modified";
|
548
|
+
ChangeState[ChangeState["Removed"] = 3] = "Removed";
|
549
|
+
})(ChangeState || (ChangeState = {}));
|
550
|
+
var TokenKind;
|
551
|
+
(function (TokenKind) {
|
552
|
+
TokenKind[TokenKind["Value"] = 0] = "Value";
|
553
|
+
TokenKind[TokenKind["ArrayStart"] = 1] = "ArrayStart";
|
554
|
+
TokenKind[TokenKind["ArrayEnd"] = 2] = "ArrayEnd";
|
555
|
+
TokenKind[TokenKind["ObjectStart"] = 3] = "ObjectStart";
|
556
|
+
TokenKind[TokenKind["ObjectEnd"] = 4] = "ObjectEnd";
|
557
|
+
})(TokenKind || (TokenKind = {}));
|
558
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kaWZmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZGlmZi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9kaWZmL2NvbmZpZ3VyYXRpb24tZGlmZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTVDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUTtJQUNwSSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQjtJQUMvSCx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsQ0FBQyxFQUMzRixjQUFjLEdBQUcsY0FBYyxFQUMvQixjQUFjLEdBQUcsQ0FB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QUFVLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YsQ0FBQTtnSEE5ZVksbUJBQW1CLCtDQWlCcEIsVUFBVTtvR0FqQlQsbUJBQW1CLDRMQzdCaEMscXpDQXdCQTtBREthLG1CQUFtQjtJQUYvQixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQztJQUNsRCxlQUFlO0dBQ0YsbUJBQW1CLENBOGUvQjtTQTllWSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFUL0IsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZDs7MEJBcUJFLE1BQU07MkJBQUMsVUFBVTt3SUFoQkcsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVOztBQTZmdkIsSUFBSyxXQUtKO0FBTEQsV0FBSyxXQUFXO0lBQ2QsdURBQVMsQ0FBQTtJQUNULCtDQUFLLENBQUE7SUFDTCxxREFBUSxDQUFBO0lBQ1IsbURBQU8sQ0FBQTtBQUNULENBQUMsRUFMSSxXQUFXLEtBQVgsV0FBVyxRQUtmO0FBQ0QsSUFBSyxTQU1KO0FBTkQsV0FBSyxTQUFTO0lBQ1osMkNBQUssQ0FBQTtJQUNMLHFEQUFVLENBQUE7SUFDVixpREFBUSxDQUFBO0lBQ1IsdURBQVcsQ0FBQTtJQUNYLG1EQUFTLENBQUE7QUFDWCxDQUFDLEVBTkksU0FBUyxLQUFULFNBQVMsUUFNYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhbGVuZGFyU3BlYyB9IGZyb20gXCIuLi8uLi9jb3JlL3BpcGVzL2NhbGVuZGFyLnBpcGVcIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gJy4uL3V0aWxpdHktcmVmJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnOyBcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcblxyXG5jb25zdCBJR05PUkVfTk9ERSA9IFsnYXV0aG9yJywgJ2hpc3RvcnknLCAndGFyZ2V0RGVjb3JhdG9yJywgJ3NvdXJjZURlY29yYXRvcicsICdvZmZzZXRYJywgJ29mZnNldFknLCAncm90YXRlQW5nbGUnLCAnd2lkdGgnLCAnaGVpZ2h0JyxcclxuICAnc3R5bGUnLCAnc2VnbWVudHMnLCAnb2Zmc2V0JywgJ3RhcmdldFBvcnRJRCcsICdzb3VyY2VQb3J0SUQnLCAnaG9yaXpvbnRhbEFsaWdubWVudCcsICd2ZXJ0aWNhbEFsaWdubWVudCcsICd3b3JrZmxvdy50aW1lc3RhbXAnLFxyXG4gICdjb25uZWN0b3JzLmNvbnN0cmFpbnRzJywgJ25vZGVzLmNvbnN0cmFpbnRzJywgJ2Fubm90YXRpb25zLmNvbnN0cmFpbnRzJywgJ2Fubm90YXRpb25zLmlkJ10sXHJcbiAgU1ZHX1BBVEhfUkVHRVggPSAvXlttTV0uK1t6Wl0kLyxcclxuICBJTkRFWF9QUk9QRVJUWSA9IFsnbmFtZScsICdpZCddLCBEQVRBX1RZUEUgPSAnZGF0YVR5cGUnLCBPUklHSU5BTF9WQUxVRSA9ICdfJywgU1RBVEUgPSAnX18nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYXRpb24tZGlmZi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9XHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy1jb25maWd1cmF0aW9uLWRpZmYnIH0pXHJcbi8qKiBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgU3lzdGVtRGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBVdGlsaXR5Q29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjb250ZW50cycpIGNvbnRlbnRzOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBodG1sID0gJyc7XHJcbiAgdmVyc2lvbnM6IFZlcnNpb25JbmZvW107XHJcbiAgYWN0aXZlRGF0ZTogRGF0ZTtcclxuICBwcm9ncmVzcyA9IDA7XHJcbiAgbm9uZTogYm9vbGVhbjtcclxuICBwcml2YXRlIF93b3JraW5nID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IENBTEVOREFSX1NQRUM6IENhbGVuZGFyU3BlYyA9IHtcclxuICAgIGxhc3REYXk6IGBbJHt0aGlzLl90cmFuc2xhdGUuZ2V0KCdZZXN0ZXJkYXknKX1dIEhIOm1tYCxcclxuICAgIGxhc3RXZWVrOiAnZGRkIEhIOm1tJyxcclxuICAgIHNhbWVEYXk6ICdISDptbScsXHJcbiAgICBzYW1lRWxzZTogJ01NTSBEIEhIOm1tJ1xyXG4gIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfdXRpbGl0eVJlZjogVXRpbGl0eVJlZjxDb25maWd1cnRpb25JbmZvW10sIENvbXBhcmVNb2RlbCwgVmVyc2lvbkluZm9bXSwgbnVtYmVyPixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIGRlbGF5IHByb2dyZXNzXHJcbiAgICB0aGlzLl93b3JraW5nLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKHYgPT4gdiAmJiAodGhpcy5wcm9ncmVzcyA9IHYpKTtcclxuICAgIHRoaXMuX3dvcmtpbmcubmV4dCg1MCk7XHJcbiAgICAvLyBwb3B1bGF0ZSB2ZXJzaW9uc1xyXG4gICAgdGhpcy5fdXRpbGl0eVJlZi5wb3B1bGF0ZSgpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy52ZXJzaW9ucyA9IGU7XHJcbiAgICAgIHRoaXMuX3dvcmtpbmcubmV4dCgxMDApO1xyXG4gICAgICBlLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICB0aGlzLmNvbXBhcmUoMCk7XHJcbiAgICB9LCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGluZGV4XHJcbiAgICovXHJcbiAgY29tcGFyZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB7IHRpbWU6IGRhdGUxLCBmaWxlIH0gPSB0aGlzLnZlcnNpb25zW2luZGV4XSxcclxuICAgICAgdmVyc2lvbiA9IHRoaXMudmVyc2lvbnMuc2xpY2UoaW5kZXggKyAxKS5maW5kKHYgPT4gdi5maWxlID09PSBmaWxlKTtcclxuICAgIGlmICghdmVyc2lvbikgcmV0dXJuO1xyXG4gICAgY29uc3QgeyB0aW1lOiBkYXRlMiB9ID0gdmVyc2lvbjtcclxuICAgIHRoaXMuX3dvcmtpbmcubmV4dCgyNSk7XHJcbiAgICB0aGlzLl91dGlsaXR5UmVmLmV4ZWN1dGUoeyBkYXRlMSwgZGF0ZTIgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLmh0bWwgPSAnJztcclxuICAgICAgdGhpcy5fd29ya2luZy5uZXh0KDUwKTtcclxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gZGF0ZTE7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLl9jb21wYXJlKHJbMF0sIHJbMV0pO1xyXG4gICAgICBpZiAocmVzdWx0cykgcmVzdWx0cy50aGVuKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3dvcmtpbmcubmV4dCg3NSk7XHJcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5fZ2VuZXJhdGUoZCk7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9wKCk7XHJcbiAgICAgICAgdGhpcy5fd29ya2luZy5uZXh0KDEwMCk7XHJcbiAgICAgICAgdGhpcy5ub25lID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl93b3JraW5nLm5leHQoMTAwKTtcclxuICAgICAgICB0aGlzLm5vbmUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2Nyb2xsVG9wKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbnRlbnRzLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGwoeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYVxyXG4gICAqIEBwYXJhbSBiXHJcbiAgICogQHBhcmFtIGRpZmZcclxuICAgKiBAcGFyYW0gc2NvcGVcclxuICAgKi9cclxuICBwcml2YXRlIF9jb21wYXJlKGE6IHt9IHwgW10sIGI6IHt9IHwgW10sIGRpZmY6IHt9IHwgW10gPSB7fSwgc2NvcGU6IFNjb3BlID0geyBub2RlczogW10gfSk6IFByb21pc2U8e30gfCBbXT4gfCBmYWxzZSB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcclxuICAgIGlmIChpc0FycmF5KGEpKSB7XHJcbiAgICAgIGEuZm9yRWFjaCgoZSwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJWYWwgPSBiW2ldO1xyXG4gICAgICAgIGlmIChlID09PSBiVmFsKSByZXR1cm47XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QoZSkpIHtcclxuICAgICAgICAgIGNvbnN0IGFKc29uID0gSlNPTi5zdHJpbmdpZnkoZSksIGJKc29uID0gSlNPTi5zdHJpbmdpZnkoYlZhbCk7XHJcbiAgICAgICAgICBpZiAoYUpzb24gPT09IGJKc29uKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAoYlZhbCAmJiB0aGlzLl9tYXRjaChiVmFsLCBlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBvYmogPSB7fTtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2NvbXBhcmUoZSwgYlZhbCwgb2JqLCB7IG5vZGVzOiBzY29wZS5ub2RlcywgdHlwZTogZVtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUgfSk7XHJcbiAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAoZGlmZiBhcyBhbnlbXSkucHVzaCh0aGlzLl9yZWtleShlLCBvYmosIHNjb3BlLm5vZGVzKSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICgoYiBhcyBbXSkuZmluZChiID0+IEpTT04uc3RyaW5naWZ5KGIpID09PSBhSnNvbikpIHJldHVybjtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBiT2JqID0gKGIgYXMgW10pLmZpbmQoYiA9PiB0aGlzLl9tYXRjaChiLCBlKSk7XHJcbiAgICAgICAgICAgIGlmIChiT2JqKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb2JqID0ge307XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2NvbXBhcmUoZSwgYk9iaiwgb2JqLCB7IG5vZGVzOiBzY29wZS5ub2RlcywgdHlwZTogZVtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgKGRpZmYgYXMgYW55W10pLnB1c2godGhpcy5fcmVrZXkoZSwgb2JqLCBzY29wZS5ub2RlcykpO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb2JqID0gaXNBcnJheShlKSA/IFtdIDoge307XHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChlLCBvYmosIHsgbm9kZXM6IHNjb3BlLm5vZGVzLCB0eXBlOiBlW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSB9KTtcclxuICAgICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSAoZGlmZiBhcyBhbnlbXSkucHVzaChvYmopO1xyXG4gICAgICAgICAgICAgIGRpZmZbU1RBVEUgKyAobGVuZ3RoIC0gMSkudG9TdHJpbmcoKV0gPSBDaGFuZ2VTdGF0ZS5BZGRlZDtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCEoYiBhcyBbXSkuZmluZChiID0+IGIgPT0gZSkpIHtcclxuICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IChkaWZmIGFzIGFueVtdKS5wdXNoKGUpO1xyXG4gICAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChlKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBkaWZmW2xlbmd0aCAtIDFdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRpZmZbU1RBVEUgKyAobGVuZ3RoIC0gMSkudG9TdHJpbmcoKV0gPSBDaGFuZ2VTdGF0ZS5BZGRlZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAoYiBhcyBbXSkuZm9yRWFjaCgoZSwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChlICE9PSBhW2ldKSB7XHJcbiAgICAgICAgICBpZiAoaXNPYmplY3QoZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgYkpzb24gPSBKU09OLnN0cmluZ2lmeShlKTtcclxuICAgICAgICAgICAgaWYgKGJKc29uID09PSBKU09OLnN0cmluZ2lmeShhW2ldKSB8fCAoYSBhcyBbXSkuZmluZChhID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBiSnNvbiB8fFxyXG4gICAgICAgICAgICAgIHRoaXMuX21hdGNoKGEsIGUpKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBvYmogPSBpc0FycmF5KGUpID8gW10gOiB7fTtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChlLCBvYmosIHsgbm9kZXM6IHNjb3BlLm5vZGVzLCB0eXBlOiBlW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSB9KTtcclxuICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IChkaWZmIGFzIGFueVtdKS5wdXNoKG9iaik7XHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyAobGVuZ3RoIC0gMSkudG9TdHJpbmcoKV0gPSBDaGFuZ2VTdGF0ZS5SZW1vdmVkO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoIShhIGFzIFtdKS5maW5kKGEgPT4gYSA9PSBlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSAoZGlmZiBhcyBbXSkucHVzaChlKTtcclxuICAgICAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYWNjb3VudHMuZ2V0KGUpLnRvUHJvbWlzZSgpLnRoZW4odiA9PlxyXG4gICAgICAgICAgICAgICAgZGlmZltsZW5ndGggLSAxXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsgKGxlbmd0aCAtIDEpLnRvU3RyaW5nKCldID0gQ2hhbmdlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIShkaWZmIGFzIGFueVtdKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pZ25vcmUoaywgc2NvcGUubm9kZXMpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgYVZhbCA9IGFba10sIGJWYWwgPSBiW2tdO1xyXG4gICAgICAgIGlmIChhVmFsID09PSBiVmFsKSByZXR1cm47XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QoYVZhbCkpIHtcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhVmFsKSA9PT0gSlNPTi5zdHJpbmdpZnkoYlZhbCkpIHJldHVybjtcclxuICAgICAgICAgIGlmIChiVmFsICE9PSB1bmRlZmluZWQgJiYgaXNBcnJheShiVmFsKSAhPT0gaXNBcnJheShhVmFsKSkge1xyXG4gICAgICAgICAgICBkaWZmW2tdID0gYVZhbDtcclxuICAgICAgICAgICAgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdID0gaXNBcnJheShiVmFsKSA/IGJWYWwuam9pbignLCAnKSA6IGJWYWw7XHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyBrXSA9IENoYW5nZVN0YXRlLk1vZGlmaWVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBvYmogPSBpc0FycmF5KGFWYWwpID8gW10gOiB7fSxcclxuICAgICAgICAgICAgICBleHRyYSA9IHsgdHlwZTogYVZhbFtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUsIG5vZGVzOiBbLi4uc2NvcGUubm9kZXMsIGtdIH0gYXMgU2NvcGU7XHJcbiAgICAgICAgICAgIGlmIChiVmFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fY29tcGFyZShhVmFsLCBiVmFsLCBvYmosIGV4dHJhKTtcclxuICAgICAgICAgICAgICBpZiAoIXByb21pc2UpIHJldHVybjtcclxuICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkoYVZhbCkpXHJcbiAgICAgICAgICAgICAgICBvYmogPSB0aGlzLl9yZWtleShhVmFsLCBvYmosIHNjb3BlLm5vZGVzKTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9icmFuY2goYVZhbCwgb2JqLCBleHRyYSk7XHJcbiAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgICAgICBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10gPSBhVmFsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9kcy5nZXQoc2NvcGUudHlwZSwgaykudG9Qcm9taXNlKCkudGhlbih2ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBpc1N0cmluZyh2KSA/IHYgOiB2W09iamVjdC5rZXlzKHYpWzBdXTtcclxuICAgICAgICAgICAgICAgIGRpZmZbbmFtZV0gPSBvYmpcclxuICAgICAgICAgICAgICAgIGlmIChiVmFsID09PSB1bmRlZmluZWQpIGRpZmZbU1RBVEUgKyBuYW1lXSA9IENoYW5nZVN0YXRlLkFkZGVkO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgZGlmZltrXSA9IG9iajtcclxuICAgICAgICAgICAgICBpZiAoYlZhbCA9PT0gdW5kZWZpbmVkKSBkaWZmW1NUQVRFICsga10gPSBDaGFuZ2VTdGF0ZS5BZGRlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGRpZmZba10gPSBhVmFsO1xyXG4gICAgICAgICAgaWYgKGsgPT09ICd1c2VySWQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoYVZhbCkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgZGlmZltrXSA9IHYubmFtZSk7XHJcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYlZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChrID09PSAndXNlcklkJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoYlZhbCkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgICBkaWZmW09SSUdJTkFMX1ZBTFVFICsga10gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSA9IGJWYWw7XHJcbiAgICAgICAgICAgIGRpZmZbU1RBVEUgKyBrXSA9IENoYW5nZVN0YXRlLk1vZGlmaWVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBkaWZmW1NUQVRFICsga10gPSBDaGFuZ2VTdGF0ZS5BZGRlZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGlmIChhW2tdICE9PSB1bmRlZmluZWQgfHwgdGhpcy5faWdub3JlKGssIHNjb3BlLm5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGJWYWwgPSBiW2tdO1xyXG4gICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICBjb25zdCBvYmogPSBbXTtcclxuICAgICAgICAgIGRpZmZbT1JJR0lOQUxfVkFMVUUgKyBrXSA9IGJWYWw7XHJcbiAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fZHMuZ2V0KHNjb3BlLnR5cGUsIGspLnRvUHJvbWlzZSgpLnRoZW4odiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBpc1N0cmluZyh2KSA/IHYgOiB2W09iamVjdC5rZXlzKHYpWzBdXTtcclxuICAgICAgICAgICAgZGlmZltuYW1lXSA9IG9iajtcclxuICAgICAgICAgICAgZGlmZltTVEFURSArIG5hbWVdID0gQ2hhbmdlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIGJWYWwgJiYgKGJWYWwgYXMgYW55W10pLmZvckVhY2goKGUsIGkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2FjY291bnRzLmdldChlKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBvYmpbaV0gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGlzT2JqZWN0KGJWYWwpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IGlzQXJyYXkoYlZhbCkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fYnJhbmNoKGJWYWwsIG9iaiwgeyB0eXBlOiBiVmFsW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSwgbm9kZXM6IFsuLi5zY29wZS5ub2Rlcywga10gfSk7XHJcbiAgICAgICAgICAgIGlmICghcHJvbWlzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBkaWZmW2tdID0gb2JqO1xyXG4gICAgICAgICAgICBwcm9taXNlICYmIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGlmZltrXSA9IGJWYWw7XHJcbiAgICAgICAgICAgIGlmIChrID09PSAndXNlcklkJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoYlZhbCkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgICBkaWZmW2tdID0gdi5uYW1lKTtcclxuICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkaWZmW1NUQVRFICsga10gPSBDaGFuZ2VTdGF0ZS5SZW1vdmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghT2JqZWN0LmtleXMoZGlmZikubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvbWlzZXMubGVuZ3RoID8gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4gZGlmZikgOiBQcm9taXNlLnJlc29sdmUoZGlmZik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBvYmoxXHJcbiAgICogQHBhcmFtIG9iajJcclxuICAgKi9cclxuICBwcml2YXRlIF9tYXRjaChvYmoxOiBhbnksIG9iajI6IGFueSkge1xyXG4gICAgcmV0dXJuIElOREVYX1BST1BFUlRZLmZpbmRJbmRleChrID0+IG9iajFba10gJiYgb2JqMVtrXSA9PT0gb2JqMltrXSkgPiAtMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBiYXNlXHJcbiAgICogQHBhcmFtIG9ialxyXG4gICAqIEBwYXJhbSBub2Rlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX3Jla2V5KGJhc2U6IHt9LCBvYmo6IHt9LCBub2Rlczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IG5ld09iaiA9IHt9O1xyXG4gICAgbGV0IG9rID0gZmFsc2U7XHJcbiAgICBJTkRFWF9QUk9QRVJUWS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICBpZiAodGhpcy5faWdub3JlKGssIG5vZGVzKSkgcmV0dXJuO1xyXG4gICAgICBpZiAoYmFzZVtrXSkge1xyXG4gICAgICAgIG5ld09ialtrXSA9IGJhc2Vba107XHJcbiAgICAgICAgb2sgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvayA/IE9iamVjdC5hc3NpZ24obmV3T2JqLCBvYmopIDogb2JqO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbm9kZXNcclxuICAgKi9cclxuICBwcml2YXRlIF9pZ25vcmUobmFtZTogc3RyaW5nLCBub2Rlczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBJR05PUkVfTk9ERS5pbmRleE9mKG5hbWUpID4gLTEgfHwgSUdOT1JFX05PREUuaW5kZXhPZihub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSArICcuJyArIG5hbWUpID4gLTE7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBiYXNlXHJcbiAgICogQHBhcmFtIHByZXN0aW5lXHJcbiAgICogQHBhcmFtIHNjb3BlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYnJhbmNoKGJhc2U6IHt9IHwgW10sIHByZXN0aW5lOiB7fSB8IFtdLCBzY29wZTogU2NvcGUpOiBQcm9taXNlPGFueT4gfCBmYWxzZSB7XHJcbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcclxuICAgIGlmIChpc0FycmF5KGJhc2UpKSB7XHJcbiAgICAgIGJhc2UuZm9yRWFjaChlID0+IHtcclxuICAgICAgICBpZiAoaXNPYmplY3QoZSkpIHtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IGlzQXJyYXkoZSkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChlLCBvYmosIHsgbm9kZXM6IHNjb3BlLm5vZGVzLCB0eXBlOiBlW0RBVEFfVFlQRV0gfHwgc2NvcGUudHlwZSB9KTtcclxuICAgICAgICAgIGlmICghcHJvbWlzZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIChwcmVzdGluZSBhcyBhbnlbXSkucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IChwcmVzdGluZSBhcyBhbnlbXSkucHVzaChlKTtcclxuICAgICAgICAgIGlmIChzY29wZS5ub2Rlcy5pbmRleE9mKCdwb3NpdGlvbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoZSkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgcHJlc3RpbmVbbGVuZ3RoIC0gMV0gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghKHByZXN0aW5lIGFzIGFueVtdKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGJhc2UpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lnbm9yZShrLCBzY29wZS5ub2RlcykpIHJldHVybjtcclxuICAgICAgICBjb25zdCBhVmFsID0gYmFzZVtrXTtcclxuICAgICAgICBpZiAoaXNPYmplY3QoYVZhbCkpIHtcclxuICAgICAgICAgIGNvbnN0IG9iaiA9IGlzQXJyYXkoYVZhbCkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2JyYW5jaChhVmFsLCBvYmosIHsgdHlwZTogYVZhbFtEQVRBX1RZUEVdIHx8IHNjb3BlLnR5cGUsIG5vZGVzOiBbLi4uc2NvcGUubm9kZXMsIGtdIH0pO1xyXG4gICAgICAgICAgaWYgKCFwcm9taXNlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgaWYgKHNjb3BlLm5vZGVzLmluZGV4T2YoJ3Bvc2l0aW9ucycpID4gLTEpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2RzLmdldChzY29wZS50eXBlLCBrKS50b1Byb21pc2UoKS50aGVuKHYgPT5cclxuICAgICAgICAgICAgICBwcmVzdGluZVtpc1N0cmluZyh2KSA/IHYgOiB2W09iamVjdC5rZXlzKHYpWzBdXV0gPSBvYmpcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcHJlc3RpbmVba10gPSBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcHJlc3RpbmVba10gPSBhVmFsO1xyXG4gICAgICAgICAgaWYgKGsgPT09ICd1c2VySWQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9hY2NvdW50cy5nZXQoYVZhbCkudG9Qcm9taXNlKCkudGhlbih2ID0+XHJcbiAgICAgICAgICAgICAgcHJlc3RpbmVba10gPSB2Lm5hbWUpO1xyXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghT2JqZWN0LmtleXMocHJlc3RpbmUpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb21pc2VzLmxlbmd0aCA/IFByb21pc2UuYWxsKHByb21pc2VzKSA6IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXR1cm4gaHRtbCBmcm9tIGRpZmYgdHJlZVxyXG4gICAqIEBwYXJhbSBkaWZmXHJcbiAgICogQHBhcmFtIG9ianN0YXRlXHJcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZVxyXG4gICAqIEBwYXJhbSBzaWJsaW5nIGFycmF5IGVudHJ5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2VuZXJhdGUoZGlmZjoge30gfCBbXSwgb2Jqc3RhdGU6IENoYW5nZVN0YXRlID0gQ2hhbmdlU3RhdGUuVW5jaGFuZ2VkLFxyXG4gICAgcHJvcGVydHlOYW1lID0gdW5kZWZpbmVkLCBzaWJsaW5nID0gZmFsc2UpIHtcclxuICAgIGxldCBoID0gJyc7XHJcbiAgICBpZiAoaXNBcnJheShkaWZmKSkge1xyXG4gICAgICBoICs9IHRoaXMuX3dyaXRlKG9ianN0YXRlLCBUb2tlbktpbmQuQXJyYXlTdGFydCwgZmFsc2UsIGZhbHNlLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICBjb25zdCBuID0gZGlmZi5sZW5ndGg7XHJcbiAgICAgIGRpZmYuZm9yRWFjaCgoZSwgaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gZGlmZltTVEFURSArIGkudG9TdHJpbmcoKV07XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGUpKVxyXG4gICAgICAgICAgaCArPSB0aGlzLl9nZW5lcmF0ZShlLCBzdGF0ZSwgdW5kZWZpbmVkLCBpIDwgbiAtIDEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGggKz0gdGhpcy5fd3JpdGUoc3RhdGUsIFRva2VuS2luZC5WYWx1ZSxcclxuICAgICAgICAgICAgaSA9PT0gbiAtIDEgfHwgZGlmZltTVEFURSArIChpICsgMSkudG9TdHJpbmcoKV0gIT09IHN0YXRlLFxyXG4gICAgICAgICAgICBpIDwgbiAtIDEsIHVuZGVmaW5lZCwgZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBoICs9IHRoaXMuX3dyaXRlKG9ianN0YXRlLCBUb2tlbktpbmQuQXJyYXlFbmQsIHRydWUsIHNpYmxpbmcpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGggKz0gdGhpcy5fd3JpdGUob2Jqc3RhdGUsIFRva2VuS2luZC5PYmplY3RTdGFydCwgZmFsc2UsIGZhbHNlLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGlmZikuZmlsdGVyKGsgPT4gIWsuc3RhcnRzV2l0aChPUklHSU5BTF9WQUxVRSkpO1xyXG4gICAgICBrZXlzLmZvckVhY2goKGssIGkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWwgPSBkaWZmW2tdLCBzdGF0ZSA9IGRpZmZbU1RBVEUgKyBrXSwgbiA9IGtleXMubGVuZ3RoO1xyXG4gICAgICAgIGlmIChpc09iamVjdCh2YWwpKVxyXG4gICAgICAgICAgaCArPSB0aGlzLl9nZW5lcmF0ZSh2YWwsIHN0YXRlLCBrLCBpIDwgbiAtIDEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGggKz0gdGhpcy5fd3JpdGUoc3RhdGUsIFRva2VuS2luZC5WYWx1ZSwgc3RhdGUgIT09IG9ianN0YXRlLCBpIDwgbiAtIDEsIGssIHZhbCwgZGlmZltPUklHSU5BTF9WQUxVRSArIGtdKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGggKz0gdGhpcy5fd3JpdGUob2Jqc3RhdGUsIFRva2VuS2luZC5PYmplY3RFbmQsIHRydWUsIHNpYmxpbmcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHdyaXRlIGh0bWwgbGluZVxyXG4gICAqIEBwYXJhbSBzdGF0ZVxyXG4gICAqIEBwYXJhbSBhbm5vdGF0ZVxyXG4gICAqIEBwYXJhbSB0b2tlblxyXG4gICAqIEBwYXJhbSBzaWJsaW5nIGFycmF5IGVudHJ5XHJcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEBwYXJhbSBvcmlnaW5hbFZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfd3JpdGUoc3RhdGU6IENoYW5nZVN0YXRlLFxyXG4gICAgdG9rZW46IFRva2VuS2luZCxcclxuICAgIGFubm90YXRlOiBib29sZWFuLFxyXG4gICAgc2libGluZz86IGJvb2xlYW4sXHJcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXHJcbiAgICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sXHJcbiAgICBvcmlnaW5hbFZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxyXG4gICkge1xyXG4gICAgbGV0IGggPSAnJywgYnJhY2tldHM6IHN0cmluZywgY2xzOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgIGNhc2UgQ2hhbmdlU3RhdGUuUmVtb3ZlZDpcclxuICAgICAgICBjbHMgPSAnY29tcGFyZSByZW1vdmVkJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDaGFuZ2VTdGF0ZS5BZGRlZDpcclxuICAgICAgICBjbHMgPSAnY29tcGFyZSBhZGRlZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2hhbmdlU3RhdGUuTW9kaWZpZWQ6XHJcbiAgICAgICAgY2xzID0gJ2NvbXBhcmUgbW9kaWZpZWQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNscyA9ICcnO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0b2tlbikge1xyXG4gICAgICBjYXNlIFRva2VuS2luZC5BcnJheVN0YXJ0OlxyXG4gICAgICAgIGJyYWNrZXRzID0gJ1snO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRva2VuS2luZC5PYmplY3RTdGFydDpcclxuICAgICAgICBicmFja2V0cyA9ICd7JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUb2tlbktpbmQuQXJyYXlFbmQ6XHJcbiAgICAgICAgYnJhY2tldHMgPSAnXSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVG9rZW5LaW5kLk9iamVjdEVuZDpcclxuICAgICAgICBicmFja2V0cyA9ICd9JztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0b2tlbiA9PSBUb2tlbktpbmQuT2JqZWN0U3RhcnQgfHwgdG9rZW4gPT0gVG9rZW5LaW5kLkFycmF5U3RhcnQpXHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cInNjb3BlICR7Y2xzfVwiPmA7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lKVxyXG4gICAgICBoICs9IGA8c3BhbiBjbGFzcz1cInN0cnVjdHVyZSAke2Nsc31cIj4ke3Byb3BlcnR5TmFtZX06IDwvc3Bhbj5gO1xyXG4gICAgaWYgKGJyYWNrZXRzKSB7XHJcbiAgICAgIGlmICh0b2tlbiA9PSBUb2tlbktpbmQuT2JqZWN0RW5kIHx8IHRva2VuID09IFRva2VuS2luZC5BcnJheUVuZClcclxuICAgICAgICBoICs9ICc8L2Rpdj4nO1xyXG4gICAgICBoICs9IGA8c3BhbiBjbGFzcz1cImJyYWNrZXRzXCI+JHticmFja2V0c308L3NwYW4+YFxyXG4gICAgICBpZiAodG9rZW4gPT0gVG9rZW5LaW5kLk9iamVjdFN0YXJ0IHx8IHRva2VuID09IFRva2VuS2luZC5BcnJheVN0YXJ0KVxyXG4gICAgICAgIGggKz0gJzxzcGFuIGNsYXNzPVwiYWx0ZXJuYXRlXCI+Li4uPC9zcGFuPjxkaXYgY2xhc3M9XCJzY29wZS1jb250ZW50XCI+JztcclxuICAgIH1cclxuICAgIGlmICh0b2tlbiA9PSBUb2tlbktpbmQuVmFsdWUpIHtcclxuICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ2NvbG9yJykgaCArPSBgPGRpdiBjbGFzcz1cImNvbG9yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiR7dmFsdWV9XCI+PC9kaXY+Jm5ic3A7YDtcclxuICAgICAgZWxzZSBpZiAoKHByb3BlcnR5TmFtZSA9PT0gJ3NoYXBlJyB8fCBwcm9wZXJ0eU5hbWUgPT09ICdkYXRhJykgJiYgU1ZHX1BBVEhfUkVHRVgudGVzdCh2YWx1ZSBhcyBzdHJpbmcpKSBoICs9IGA8c3ZnIHdpZHRoPTEyIGhlaWdodD0xMiB2aWV3Qm94PVwiMCAwIDM1IDM1XCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj48cGF0aCBkPVwiJHt2YWx1ZX1cIj48L3BhdGg+PC9zdmc+Jm5ic3A7YDtcclxuICAgICAgaCArPSBgPHNwYW4gY2xhc3M9XCJ2YWx1ZSAke2Nsc31cIj4ke3ZhbHVlfTwvc3Bhbj5gO1xyXG4gICAgfVxyXG4gICAgaWYgKHNpYmxpbmcpIGggKz0gJzxzcGFuIGNsYXNzPVwic3RydWN0dXJlXCI+LDwvc3Bhbj4nO1xyXG4gICAgaWYgKHN0YXRlICYmIGFubm90YXRlKSB7XHJcbiAgICAgIGNvbnN0IHJlc291cmNlID0gc3RhdGUgPT09IENoYW5nZVN0YXRlLlJlbW92ZWQgPyAnRGVsZXRlZCcgOiBzdGF0ZSA9PT0gQ2hhbmdlU3RhdGUuQWRkZWQgPyAnQWRkZWQnIDogJ01vZGlmaWVkJztcclxuICAgICAgaCArPSBgPGRpdiBjbGFzcz1cIiR7Y2xzfVwiPiA8ZGl2IGNsYXNzPVwibGFiZWxcIj48c3Bhbj4ke3RoaXMuX3RyYW5zbGF0ZS5nZXQocmVzb3VyY2UpfWA7XHJcbiAgICAgIGlmIChvcmlnaW5hbFZhbHVlKVxyXG4gICAgICAgIGggKz0gYCZuYnNwOzxzcGFuIGNsYXNzPVwib3JpZ2luYWxcIj4ke29yaWdpbmFsVmFsdWV9PC9zcGFuPmA7XHJcbiAgICAgIGggKz0gJzwvc3Bhbj48L2Rpdj48L2Rpdj4nO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodG9rZW4gPT09IFRva2VuS2luZC5WYWx1ZSlcclxuICAgICAgaCArPSAnPGJyLz4nO1xyXG4gICAgaWYgKHRva2VuID09IFRva2VuS2luZC5PYmplY3RFbmQgfHwgdG9rZW4gPT0gVG9rZW5LaW5kLkFycmF5RW5kKVxyXG4gICAgICBoICs9ICc8L2Rpdj4nO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHRvZ2dsZVxyXG4gICAqIEBwYXJhbSBldnRcclxuICAgKi9cclxuICBjb2xsYXBzZShldnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGxldCBlbCA9IGV2dC5zcmNFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgd2hpbGUgKGVsICYmICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3Njb3BlJykpXHJcbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcclxuICAgIGVsICYmIGVsLmNsYXNzTGlzdC50b2dnbGUoJ2NvbGxhcHNlJykgJiYgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZm9jdXMnKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogcmVtb3ZlIGNsc1xyXG4gICAqL1xyXG4gIGZvY3VzT3V0KCkge1xyXG4gICAgdGhpcy5jb250ZW50cy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zY29wZS5mb2N1cycpLmZvckVhY2goZSA9PlxyXG4gICAgICBlLmNsYXNzTGlzdC5yZW1vdmUoJ2ZvY3VzJylcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBldnRcclxuICAgKi9cclxuICBmb2N1c0luKGV2dDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5mb2N1c091dCgpO1xyXG4gICAgbGV0IGVsID0gZXZ0LnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAoZWwgJiYgIWVsLmNsYXNzTGlzdC5jb250YWlucygnc2NvcGUnKSlcclxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgZWwgJiYgIWVsLmNsYXNzTGlzdC5jb250YWlucygnY29sbGFwc2UnKSAmJiBlbC5jbGFzc0xpc3QuYWRkKCdmb2N1cycpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgVmVyc2lvbkluZm8ge1xyXG4gIHRpbWU6IERhdGU7XHJcbiAgYXV0aG9yOiBzdHJpbmc7XHJcbiAgZmlsZT86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgQ29uZmlndXJ0aW9uSW5mbyB7XHJcbn1cclxuaW50ZXJmYWNlIENvbXBhcmVNb2RlbCB7XHJcbiAgZGF0ZTE6IERhdGU7XHJcbiAgZGF0ZTI6IERhdGU7XHJcbn1cclxuaW50ZXJmYWNlIFNjb3BlIHtcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIG5vZGVzOiBzdHJpbmdbXTtcclxufVxyXG5lbnVtIENoYW5nZVN0YXRlIHtcclxuICBVbmNoYW5nZWQsXHJcbiAgQWRkZWQsXHJcbiAgTW9kaWZpZWQsXHJcbiAgUmVtb3ZlZFxyXG59XHJcbmVudW0gVG9rZW5LaW5kIHtcclxuICBWYWx1ZSxcclxuICBBcnJheVN0YXJ0LFxyXG4gIEFycmF5RW5kLFxyXG4gIE9iamVjdFN0YXJ0LFxyXG4gIE9iamVjdEVuZFxyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicHJvcGVydGllcy50b2dnbGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDb2xsYXBzZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+dmlld19zaWRlYmFyPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxtYXQtc2lkZW5hdi1jb250YWluZXIgYXV0b3NpemUgZnhGbGV4PlxyXG4gIDxtYXQtc2lkZW5hdi1jb250ZW50PlxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImJ1ZmZlclwiIFt2YWx1ZV09cHJvZ3Jlc3MgW2J1ZmZlclZhbHVlXT0wIFtzdHlsZS52aXNpYmlsaXR5XT1cInByb2dyZXNzID4gMCAmJiBwcm9ncmVzcyA8IDEwMCA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIDxkaXYgW2lubmVySFRNTF09XCJodG1sIHwgc2FuaXRpemVIdG1sXCIgKG1vdXNlbGVhdmUpPVwiZm9jdXNPdXQoKVwiIChtb3VzZW1vdmUpPVwiZm9jdXNJbigkZXZlbnQpXCIgY2xhc3M9XCJjb25maWd1cmF0aW9uLWRpZmZcIiAoY2xpY2spPVwiY29sbGFwc2UoJGV2ZW50KVwiICNjb250ZW50cz48L2Rpdj5cclxuICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgPG1hdC1zaWRlbmF2IG1vZGU9XCJzaWRlXCIgb3BlbmVkICNwcm9wZXJ0aWVzIGNsYXNzPVwidGltZWxpbmVcIj5cclxuICAgIDxtYXQtbmF2LWxpc3QgKm5nSWY9XCJ2ZXJzaW9uc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIHZlcnNpb25zOyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKGNsaWNrKT1cImNvbXBhcmUoaW5kZXgpXCIgW2NsYXNzLmFjdGl2ZV09XCJ2LnRpbWUgPT09IGFjdGl2ZURhdGVcIiAqbmdJZj1cIiFsYXN0XCI+XHJcbiAgICAgICAgICA8aDMgbWF0TGluZT5cclxuICAgICAgICAgICAge3sodi5hdXRob3IgfHwgJ1N5c3RlbScpIHwgdXNlck5hbWUgfCBhc3luYyB9fVxyXG4gICAgICAgICAgPC9oMz5cclxuICAgICAgICAgIDxwIGNsYXNzPVwidGltZVwiIG1hdExpbmU+XHJcbiAgICAgICAgICAgIHt7di50aW1lIHwgYW1DYWxlbmRhcjogbnVsbDogQ0FMRU5EQVJfU1BFQyB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1uYXYtbGlzdD5cclxuICA8L21hdC1zaWRlbmF2PlxyXG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuIl19
|