nuxeo-development-framework 6.0.6 → 6.0.8
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/bundles/nuxeo-development-framework.umd.js +239 -72
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +1 -1
- package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +1 -1
- package/esm2015/lib/components/activities-log/activities-log.module.js +1 -1
- package/esm2015/lib/components/activity/activity/activity.component.js +1 -1
- package/esm2015/lib/components/activity/activity.module.js +1 -1
- package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +2 -2
- package/esm2015/lib/components/attachment-item/attachment-item.module.js +1 -1
- package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +1 -1
- package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +1 -1
- package/esm2015/lib/components/avatar/avatar/avatar.component.js +1 -1
- package/esm2015/lib/components/avatar/avatar.module.js +1 -1
- package/esm2015/lib/components/card/card.component.js +1 -1
- package/esm2015/lib/components/card/card.module.js +1 -1
- package/esm2015/lib/components/comments/comments.module.js +1 -1
- package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +2 -2
- package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +1 -1
- package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +1 -1
- package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +1 -1
- package/esm2015/lib/components/comments/constants/comment.js +1 -1
- package/esm2015/lib/components/comments/services/comment-api.service.js +1 -1
- package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +1 -1
- package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +1 -1
- package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +1 -1
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +1 -1
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +1 -1
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +1 -1
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +1 -1
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
- package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +1 -1
- package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +1 -1
- package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +1 -1
- package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +1 -1
- package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +1 -1
- package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +1 -1
- package/esm2015/lib/components/create-entity/create-entity.module.js +1 -1
- package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +2 -2
- package/esm2015/lib/components/cts-tags/cts-tags.module.js +1 -1
- package/esm2015/lib/components/cts-tags/services/tags-api.service.js +1 -1
- package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +1 -1
- package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +1 -1
- package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +1 -1
- package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +1 -1
- package/esm2015/lib/components/diagrams/components/base-node.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/circle-node/circle-node.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/connection-label.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/content-node/content-node.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/custom-connection.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/custom-socket.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/gateway-node/gateway-node.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/gateway-ports.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/index.js +1 -1
- package/esm2015/lib/components/diagrams/components/node-icon.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/node-inputs.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/node-outputs.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/node-ports.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/remove-button.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/status-icon.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/template-node/template-node.component.js +1 -1
- package/esm2015/lib/components/diagrams/components/zoom-control.component.js +1 -1
- package/esm2015/lib/components/diagrams/constants/defaults.js +1 -1
- package/esm2015/lib/components/diagrams/constants/direction.js +1 -1
- package/esm2015/lib/components/diagrams/constants/index.js +1 -1
- package/esm2015/lib/components/diagrams/constants/message-type.js +1 -1
- package/esm2015/lib/components/diagrams/constants/node-type.js +1 -1
- package/esm2015/lib/components/diagrams/constants/notify-events.js +1 -1
- package/esm2015/lib/components/diagrams/constants/sizes.js +1 -1
- package/esm2015/lib/components/diagrams/constants/status.js +1 -1
- package/esm2015/lib/components/diagrams/diagrams.module.js +1 -1
- package/esm2015/lib/components/diagrams/directive/diagram.directive.js +1 -1
- package/esm2015/lib/components/diagrams/directive/index.js +1 -1
- package/esm2015/lib/components/diagrams/editor/customize.js +1 -1
- package/esm2015/lib/components/diagrams/editor/editor.js +1 -1
- package/esm2015/lib/components/diagrams/editor/index.js +1 -1
- package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +1 -1
- package/esm2015/lib/components/diagrams/editor/overrides/index.js +1 -1
- package/esm2015/lib/components/diagrams/editor/path-plugin.js +1 -1
- package/esm2015/lib/components/diagrams/editor/socket-position-watcher.js +1 -1
- package/esm2015/lib/components/diagrams/index.js +1 -1
- package/esm2015/lib/components/diagrams/models/base-node.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/circle-node.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/connection.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/content-node.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/gate-way.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/index.js +1 -1
- package/esm2015/lib/components/diagrams/models/ports.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/socket.model.js +1 -1
- package/esm2015/lib/components/diagrams/models/template-node.model.js +1 -1
- package/esm2015/lib/components/diagrams/public-api.js +1 -1
- package/esm2015/lib/components/diagrams/services/diagram-plugins.service.js +1 -1
- package/esm2015/lib/components/diagrams/services/diagram.service.js +1 -1
- package/esm2015/lib/components/diagrams/services/index.js +1 -1
- package/esm2015/lib/components/diagrams/services/message.service.js +1 -1
- package/esm2015/lib/components/diagrams/services/workflow.service.js +1 -1
- package/esm2015/lib/components/diagrams/types/common.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/connection-config.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/connection-label.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/customization.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/diagram-config.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/diagram-editor.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/emitter-type.js +1 -1
- package/esm2015/lib/components/diagrams/types/index.js +1 -1
- package/esm2015/lib/components/diagrams/types/layout.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/node-content.js +1 -1
- package/esm2015/lib/components/diagrams/types/node-definition.js +1 -1
- package/esm2015/lib/components/diagrams/types/node-status.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/node.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/notify-event.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/path.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/ports-config.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/schemes.type.js +1 -1
- package/esm2015/lib/components/diagrams/types/socket.type.js +1 -1
- package/esm2015/lib/components/diagrams/utilities/common.js +1 -1
- package/esm2015/lib/components/diagrams/utilities/index.js +1 -1
- package/esm2015/lib/components/diagrams/utilities/random.js +1 -1
- package/esm2015/lib/components/diagrams/utilities/remove.util.js +1 -1
- package/esm2015/lib/components/diagrams/utilities/serialize.js +1 -1
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +2 -2
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +1 -1
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +1 -1
- package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +1 -1
- package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +1 -1
- package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +1 -1
- package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +1 -1
- package/esm2015/lib/components/documents/components/document-scan/document-scan.service.js +1 -1
- package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +1 -1
- package/esm2015/lib/components/documents/components/documents/documents.component.js +1 -1
- package/esm2015/lib/components/documents/constants/document-templates.js +1 -1
- package/esm2015/lib/components/documents/constants/documents.js +1 -1
- package/esm2015/lib/components/documents/documents.module.js +1 -1
- package/esm2015/lib/components/documents/services/document-templates.service.js +1 -1
- package/esm2015/lib/components/documents/services/documents.service.js +1 -1
- package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +1 -1
- package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +1 -1
- package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +1 -1
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +1 -1
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +1 -1
- package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +2 -2
- package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +2 -2
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +1 -1
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +1 -1
- package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +1 -1
- package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +1 -1
- package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +1 -1
- package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +1 -1
- package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/services/vocabulary-api.service.js +1 -1
- package/esm2015/lib/components/dynamic-form/validators/length-validator.js +1 -1
- package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +1 -1
- package/esm2015/lib/components/dynamic-form/validators/required-validator.js +1 -1
- package/esm2015/lib/components/dynamic-form/validators/value-validator.js +1 -1
- package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +1 -1
- package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +1 -1
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +1 -1
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +1 -1
- package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +1 -1
- package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +1 -1
- package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +1 -1
- package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +2 -2
- package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +1 -1
- package/esm2015/lib/components/dynamic-view/dynamic-viewe.service.js +1 -1
- package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/copy/copy.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/delete/delete.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/move/move.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/rename/rename.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +2 -2
- package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +1 -1
- package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +1 -1
- package/esm2015/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.js +1 -1
- package/esm2015/lib/components/file-manger/file-manager.abstract.js +1 -1
- package/esm2015/lib/components/file-manger/file-manger.module.js +1 -1
- package/esm2015/lib/components/file-manger/models/file-manager-config.model.js +1 -1
- package/esm2015/lib/components/file-manger/models/index.js +1 -1
- package/esm2015/lib/components/file-manger/models/pagination-payload.mode.js +1 -1
- package/esm2015/lib/components/file-manger/models/pagination-response.model.js +1 -1
- package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
- package/esm2015/lib/components/filter/filter.module.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +1 -1
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +1 -1
- package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +1 -1
- package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +1 -1
- package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +2 -2
- package/esm2015/lib/components/latest-activity/constants/activitylog.js +1 -1
- package/esm2015/lib/components/latest-activity/latest-activity.module.js +1 -1
- package/esm2015/lib/components/latest-activity/services/activity-log.service.js +1 -1
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +1 -1
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/components/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +2 -2
- package/esm2015/lib/components/ndf-config-editor/config.token.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/constants/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/constants/mode.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/constants/query.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +2 -2
- package/esm2015/lib/components/ndf-config-editor/containers/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/metadata-token.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/config.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/payload-data.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/pipes/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +2 -2
- package/esm2015/lib/components/ndf-config-editor/public/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/public-api.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/services/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/utility/index.js +1 -1
- package/esm2015/lib/components/ndf-config-editor/utility/json.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/adapters/hijri-adapter.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/adapters/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/adapters/moment-adapter.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/base/base-value-accessor.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/base/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/components/base-datepicker.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/components/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/components/input-date.component.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/components/input-range-date.component.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/date-locale-keys.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/date-picker.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/date-type.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/formats.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/hijri-dates-names.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/constants/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/containers/datepicker-container.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/containers/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/containers/ndf-gregorian-datepicker.component.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/containers/ndf-hijri-datepicker.component.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/models/data-types.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/models/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/models/value-object.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.component.js +2 -2
- package/esm2015/lib/components/ndf-datepicker/ndf-datepicker.module.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/services/calendar.service.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/services/index.js +1 -1
- package/esm2015/lib/components/ndf-datepicker/services/localize-state.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/base-aggregation-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/base-custom-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/base-predicate-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/base-value-accessor.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/base/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/field-header.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-collapse-control/filter-collapse-control.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-date-range/filter-date-range.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-empty-message.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-option-text/filter-option-text.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-options-sort/filter-options-sort.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-search-input/filter-search-input.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/html-dialog/html-dialog.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-autocomplete/aggregation-autocomplete.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-checkbox/aggregation-checkbox.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-custom/aggregation-custom.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-radio/aggregation-radio.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-select/aggregation-select.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-switch/aggregation-switch.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/components/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/predicate-date-input/predicate-date-input.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/constants/common.js +1 -1
- package/esm2015/lib/components/ndf-filters/constants/field.js +1 -1
- package/esm2015/lib/components/ndf-filters/constants/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/constants/operators.js +1 -1
- package/esm2015/lib/components/ndf-filters/constants/sort.js +1 -1
- package/esm2015/lib/components/ndf-filters/constants/type.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/base-field.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/base-filters-panel.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/containers/predicate-field/predicate-field.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user-switch.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/user-types.js +1 -1
- package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/autocomplete-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/checkbox-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/custom-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/date-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/dropdown-label-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/dropdown-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/radio-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/switch-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/aggregation-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/aggregation-response.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/common.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-config.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/autocomplete-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/checkbox-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/common-utils.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/date-list-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/date-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/dropdown-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/input-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/radio-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/field-options/switch-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/form-query-request.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/operator-value-object.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/predicate-field-config.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/types-helper.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/value-object.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/autocomplete-filter.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/filter.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/hash-translate.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/localized-label.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/roles-filters.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/sanitizer.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/sort.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/pipes/tooltip.pipe.js +1 -1
- package/esm2015/lib/components/ndf-filters/public-api.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/filters-mapper.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/filters-query.service.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/utility/index.js +1 -1
- package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +1 -1
- package/esm2015/lib/components/ndf-filters/utility/nxql.js +1 -1
- package/esm2015/lib/components/ndf-filters/utility/object.js +1 -1
- package/esm2015/lib/components/ndf-panel/component/ndf-panel.component.js +1 -1
- package/esm2015/lib/components/ndf-panel/index.js +1 -1
- package/esm2015/lib/components/ndf-panel/ndf-panel.module.js +1 -1
- package/esm2015/lib/components/ndf-scanner/index.js +1 -1
- package/esm2015/lib/components/ndf-scanner/ndf-scanner.component.js +2 -2
- package/esm2015/lib/components/ndf-scanner/ndf-scanner.module.js +1 -1
- package/esm2015/lib/components/ndf-signatures/emdha/dialogs/auth/emdha-auth.dialog.js +1 -1
- package/esm2015/lib/components/ndf-signatures/emdha/dialogs/index.js +1 -1
- package/esm2015/lib/components/ndf-signatures/emdha/index.js +1 -1
- package/esm2015/lib/components/ndf-signatures/emdha/services/emdha.service.js +1 -1
- package/esm2015/lib/components/ndf-signatures/emdha/services/index.js +1 -1
- package/esm2015/lib/components/ndf-signatures/index.js +1 -1
- package/esm2015/lib/components/ndf-signatures/ndf-signature-panel/ndf-signature-panel.component.js +1 -1
- package/esm2015/lib/components/ndf-signatures/ndf-signatures.module.js +1 -1
- package/esm2015/lib/components/ndf-signatures/services/index.js +1 -1
- package/esm2015/lib/components/ndf-signatures/services/signatures.service.js +1 -1
- package/esm2015/lib/components/ndf-tabs/component/ndf-tabs.component.js +2 -2
- package/esm2015/lib/components/ndf-tabs/index.js +1 -1
- package/esm2015/lib/components/ndf-tabs/ndf-tabs.module.js +1 -1
- package/esm2015/lib/components/ndf-tabs/tab.type.js +1 -1
- package/esm2015/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.js +2 -2
- package/esm2015/lib/components/ndf-uploader/components/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/config/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/config/uploader.config.js +1 -1
- package/esm2015/lib/components/ndf-uploader/constant/file-content.js +1 -1
- package/esm2015/lib/components/ndf-uploader/constant/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/helpers/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/helpers/uploader.helper.js +1 -1
- package/esm2015/lib/components/ndf-uploader/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/models/batch.model.js +1 -1
- package/esm2015/lib/components/ndf-uploader/models/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/models/ndf-file.model.js +1 -1
- package/esm2015/lib/components/ndf-uploader/models/provider.model.js +1 -1
- package/esm2015/lib/components/ndf-uploader/ndf-uploader-bottom-sheet.service.js +1 -1
- package/esm2015/lib/components/ndf-uploader/ndf-uploader.module.js +1 -1
- package/esm2015/lib/components/ndf-uploader/ndf-uploader.service.js +1 -1
- package/esm2015/lib/components/ndf-uploader/providers/index.js +1 -1
- package/esm2015/lib/components/ndf-uploader/providers/nuxeo-provider.service.js +1 -1
- package/esm2015/lib/components/ndf-uploader/providers/s3-provider.service.js +1 -1
- package/esm2015/lib/components/no-data-found/index.js +1 -1
- package/esm2015/lib/components/no-data-found/no-data-found.component.js +1 -1
- package/esm2015/lib/components/no-data-found/no-data.module.js +1 -1
- package/esm2015/lib/components/notifications/components/base-list-notfications.component.js +1 -1
- package/esm2015/lib/components/notifications/components/base-notifications.component.js +1 -1
- package/esm2015/lib/components/notifications/components/index.js +1 -1
- package/esm2015/lib/components/notifications/components/notification-item/get-icon.pipe.js +1 -1
- package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notification-sortby-toggle/notification-sortby-toggle.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notification-source-select/notification-source-select.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-list/options.js +1 -1
- package/esm2015/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.js +1 -1
- package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.js +1 -1
- package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.component.js +2 -2
- package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.js +1 -1
- package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.js +1 -1
- package/esm2015/lib/components/notifications/constants/date.js +1 -1
- package/esm2015/lib/components/notifications/constants/index.js +1 -1
- package/esm2015/lib/components/notifications/constants/pagination.js +1 -1
- package/esm2015/lib/components/notifications/constants/panel.js +1 -1
- package/esm2015/lib/components/notifications/constants/status.js +1 -1
- package/esm2015/lib/components/notifications/containers/index.js +1 -1
- package/esm2015/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.js +2 -2
- package/esm2015/lib/components/notifications/containers/notifications-list-container/options.js +1 -1
- package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +1 -1
- package/esm2015/lib/components/notifications/directives/button.directive.js +1 -1
- package/esm2015/lib/components/notifications/directives/index.js +1 -1
- package/esm2015/lib/components/notifications/directives/notification.directive.js +1 -1
- package/esm2015/lib/components/notifications/index.js +1 -1
- package/esm2015/lib/components/notifications/models/common.js +1 -1
- package/esm2015/lib/components/notifications/models/index.js +1 -1
- package/esm2015/lib/components/notifications/models/notification-definition.model.js +1 -1
- package/esm2015/lib/components/notifications/models/notification-message.mode.js +1 -1
- package/esm2015/lib/components/notifications/models/notification-options.js +1 -1
- package/esm2015/lib/components/notifications/models/notification-setting.presenter.js +1 -1
- package/esm2015/lib/components/notifications/models/notification-subscription.model.js +1 -1
- package/esm2015/lib/components/notifications/models/notification.model.js +1 -1
- package/esm2015/lib/components/notifications/models/notifications-list-options.js +1 -1
- package/esm2015/lib/components/notifications/models/paging-response.model.js +1 -1
- package/esm2015/lib/components/notifications/models/params.model.js +1 -1
- package/esm2015/lib/components/notifications/models/vocabularies.js +1 -1
- package/esm2015/lib/components/notifications/notifications.module.js +1 -1
- package/esm2015/lib/components/notifications/public-api.js +1 -1
- package/esm2015/lib/components/notifications/services/index.js +1 -1
- package/esm2015/lib/components/notifications/services/listener.service.js +1 -1
- package/esm2015/lib/components/notifications/services/notifications.service.js +1 -1
- package/esm2015/lib/components/notifications/services/params.service.js +1 -1
- package/esm2015/lib/components/notifications/services/response.service.js +1 -1
- package/esm2015/lib/components/notifications/services/socket.service.js +1 -1
- package/esm2015/lib/components/notifications/utilities/index.js +1 -1
- package/esm2015/lib/components/notifications/utilities/response.adapter.js +1 -1
- package/esm2015/lib/components/pagination/pagination/pagination.component.js +1 -1
- package/esm2015/lib/components/pagination/pagination.module.js +1 -1
- package/esm2015/lib/components/pdf-tron/directives/index.js +1 -1
- package/esm2015/lib/components/pdf-tron/directives/ndf-tron-extract-text.directive.js +1 -1
- package/esm2015/lib/components/pdf-tron/models/index.js +1 -1
- package/esm2015/lib/components/pdf-tron/models/tron.model.js +1 -1
- package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +1 -1
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +1 -1
- package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +1 -1
- package/esm2015/lib/components/pdf-tron/pdftron/silent-pdftron.service.js +1 -1
- package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +2 -2
- package/esm2015/lib/components/permissions/permission.service.js +1 -1
- package/esm2015/lib/components/permissions/permissions/permissions.component.js +1 -1
- package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +1 -1
- package/esm2015/lib/components/permissions/permissions.module.js +1 -1
- package/esm2015/lib/components/reports/chart-panel.js +1 -1
- package/esm2015/lib/components/reports/charts/chart.const.js +1 -1
- package/esm2015/lib/components/reports/charts/chart.token.js +1 -1
- package/esm2015/lib/components/reports/charts/charts.module.js +1 -1
- package/esm2015/lib/components/reports/charts/components/base-chart.component.js +1 -1
- package/esm2015/lib/components/reports/charts/components/chart.component.js +1 -1
- package/esm2015/lib/components/reports/charts/components/data-chart.component.js +1 -1
- package/esm2015/lib/components/reports/charts/components/index.js +1 -1
- package/esm2015/lib/components/reports/charts/defaults/bar.js +1 -1
- package/esm2015/lib/components/reports/charts/defaults/doughnut.js +1 -1
- package/esm2015/lib/components/reports/charts/defaults/index.js +1 -1
- package/esm2015/lib/components/reports/charts/defaults/line.js +1 -1
- package/esm2015/lib/components/reports/charts/defaults/pie.js +1 -1
- package/esm2015/lib/components/reports/charts/index.js +1 -1
- package/esm2015/lib/components/reports/charts/models/index.js +1 -1
- package/esm2015/lib/components/reports/charts/models/options.js +1 -1
- package/esm2015/lib/components/reports/charts/models/plugins-options.js +1 -1
- package/esm2015/lib/components/reports/charts/models/response.js +1 -1
- package/esm2015/lib/components/reports/charts/models/statistic-request-config.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/data-labels.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/doughnut-center-text.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/doughnut-empty-state.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/index.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/legend-margin.js +1 -1
- package/esm2015/lib/components/reports/charts/plugins/scrollable-legends.js +1 -1
- package/esm2015/lib/components/reports/charts/public-api.js +1 -1
- package/esm2015/lib/components/reports/charts/services/index.js +1 -1
- package/esm2015/lib/components/reports/charts/services/statistic.service.js +1 -1
- package/esm2015/lib/components/reports/charts/utility/colors.js +1 -1
- package/esm2015/lib/components/reports/charts/utility/common.js +1 -1
- package/esm2015/lib/components/reports/charts/utility/css.js +1 -1
- package/esm2015/lib/components/reports/charts/utility/index.js +1 -1
- package/esm2015/lib/components/reports/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/base/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/time-group-selector/time-group-selector.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/constants/charts-types.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/constants/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/constants/time-group.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/directives/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/directives/scrollable-div.directive.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/digit.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/graph-definition.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/report-data-source.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/report-response.model.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/request.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/doughnut.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/horizontal-bar.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/pie.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/options/vertical-bar.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/public-api.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/base-chart-builder.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-callbacks-register.services.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-theme.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/digit-chart.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-configuration.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/reports-data-transformers.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/reports-dialog.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/reports-state.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/dataset-colors.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/index.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +1 -1
- package/esm2015/lib/components/select/select/select.component.js +1 -1
- package/esm2015/lib/components/select/select.module.js +1 -1
- package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +1 -1
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +1 -1
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
- package/esm2015/lib/components/skeleton/index.js +1 -1
- package/esm2015/lib/components/skeleton/skeleton.component.js +1 -1
- package/esm2015/lib/components/skeleton/skeleton.module.js +1 -1
- package/esm2015/lib/components/skeleton/table-skeleton.component.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/directives/empty-state.directive.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table.module.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/index.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/public-api.js +1 -1
- package/esm2015/lib/components/tables/dynamic-table/services/dynamic-table.service.js +1 -1
- package/esm2015/lib/components/tables/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/components/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/components/mode-toggler/mode-toggler.component.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/components/sorting-list/sorting-list.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/components/table-columns-toggler/table-columns-toggler.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/components/table-export/table-export.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/components/text-search/text-search.component.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/constants/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/constants/sizes.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/containers/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/directives/actions.directive.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/directives/filter-custom.directive.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/directives/search.directive.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/payload-types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/search.config.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-column.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-mode.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-options.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/public-api.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/services/index.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/services/ndf-table-configuration.service.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/services/ndf-table.service.js +1 -1
- package/esm2015/lib/components/tables/public-api.js +1 -1
- package/esm2015/lib/components/tables/table/dynamic-column/dynamic-column.component.js +1 -1
- package/esm2015/lib/components/tables/table/dynamic-component.js +1 -1
- package/esm2015/lib/components/tables/table/index.js +1 -1
- package/esm2015/lib/components/tables/table/page-sizes-list/page-sizes-list.component.js +1 -1
- package/esm2015/lib/components/tables/table/public-api.js +1 -1
- package/esm2015/lib/components/tables/table/table/table.component.js +2 -2
- package/esm2015/lib/components/tables/table/table.module.js +1 -1
- package/esm2015/lib/components/toasts/components/notification-toast/notification-toast.component.js +1 -1
- package/esm2015/lib/components/toasts/index.js +1 -1
- package/esm2015/lib/components/toasts/public-api.js +1 -1
- package/esm2015/lib/components/toasts/toasts.module.js +1 -1
- package/esm2015/lib/components/user/user/user.component.js +1 -1
- package/esm2015/lib/components/user/user.module.js +1 -1
- package/esm2015/lib/components/users-card/users-card.component.js +2 -2
- package/esm2015/lib/components/users-card/users-card.module.js +1 -1
- package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +1 -1
- package/esm2015/lib/components/viewer-log/viewer-log.module.js +1 -1
- package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +1 -1
- package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +1 -1
- package/esm2015/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.js +1 -1
- package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +1 -1
- package/esm2015/lib/components/vocabulary/vocabulary.module.js +1 -1
- package/esm2015/lib/configuration/app-config.service.js +1 -1
- package/esm2015/lib/configuration/helpers/app-initializer.js +1 -1
- package/esm2015/lib/core/adapters/adapter.service.js +1 -1
- package/esm2015/lib/core/core.module.js +1 -1
- package/esm2015/lib/core/enums/language.enum.js +1 -1
- package/esm2015/lib/core/env/env-manager.js +1 -1
- package/esm2015/lib/core/env/index.js +1 -1
- package/esm2015/lib/core/models/api-response.model.js +1 -1
- package/esm2015/lib/core/models/automation-response.model.js +1 -1
- package/esm2015/lib/core/models/base-response.models.js +1 -1
- package/esm2015/lib/core/models/component.model.js +1 -1
- package/esm2015/lib/core/models/index.js +1 -1
- package/esm2015/lib/core/services/callApi/call-api.service.js +1 -1
- package/esm2015/lib/core/services/column-renderer/column-renderer-registry.service.js +1 -1
- package/esm2015/lib/core/services/column-renderer/index.js +1 -1
- package/esm2015/lib/core/services/extension/action.extensions.js +1 -1
- package/esm2015/lib/core/services/extension/component-register.service.js +1 -1
- package/esm2015/lib/core/services/extension/extenion-utils.js +1 -1
- package/esm2015/lib/core/services/extension/extension-element.js +1 -1
- package/esm2015/lib/core/services/extension/extension-loader.service.js +1 -1
- package/esm2015/lib/core/services/extension/extension.service.js +1 -1
- package/esm2015/lib/core/services/index.js +1 -1
- package/esm2015/lib/core/services/initialization/initialization.service.js +1 -1
- package/esm2015/lib/core/services/localStorag/local-storag.service.js +1 -1
- package/esm2015/lib/core/services/ndf-transform.service.js +1 -1
- package/esm2015/lib/core/services/nuxeo/new-nuxeo-overide.js +1 -1
- package/esm2015/lib/core/services/nuxeo/nuxeo-override.js +1 -1
- package/esm2015/lib/core/services/nuxeo/nuxeo.service.js +1 -1
- package/esm2015/lib/core/services/roles/roles.service.js +1 -1
- package/esm2015/lib/core/services/translation/translate-loader.service.js +1 -1
- package/esm2015/lib/core/services/translation/translation.service.js +1 -1
- package/esm2015/lib/core/services/user/user-preferences.service.js +1 -1
- package/esm2015/lib/core/tokens/index.js +1 -1
- package/esm2015/lib/core/tokens/project.token.js +1 -1
- package/esm2015/lib/core/utilities/moment-date-adapter.js +1 -1
- package/esm2015/lib/core/utilities/utility.service.js +1 -1
- package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +1 -1
- package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +1 -1
- package/esm2015/lib/directive/directive.module.js +1 -1
- package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +1 -1
- package/esm2015/lib/directive/permissions/evaluators.service.js +1 -1
- package/esm2015/lib/directive/permissions/permissions.directive.js +1 -1
- package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +1 -1
- package/esm2015/lib/directive/rtl/set-rtl.directive.js +1 -1
- package/esm2015/lib/nuxeo-development-framework.component.js +1 -1
- package/esm2015/lib/nuxeo-development-framework.module.js +1 -1
- package/esm2015/lib/nuxeo-development-framework.service.js +1 -1
- package/esm2015/lib/pipes/file-size.pipe.js +1 -1
- package/esm2015/lib/pipes/hijri-date.pipe.js +1 -1
- package/esm2015/lib/pipes/localized-date.pipe.js +1 -1
- package/esm2015/lib/pipes/multi-value.pipe.js +1 -1
- package/esm2015/lib/pipes/pipes.module.js +1 -1
- package/esm2015/lib/pipes/secure-html.pipe.js +1 -1
- package/esm2015/lib/pipes/secure.pipe.js +1 -1
- package/esm2015/lib/pipes/time-ago.pipe.js +1 -1
- package/esm2015/lib/shared/components/base/base-column.component.js +1 -1
- package/esm2015/lib/shared/components/base/base-dialog.component.js +1 -1
- package/esm2015/lib/shared/components/base/base-selector.component.js +1 -1
- package/esm2015/lib/shared/components/base/base.component.js +1 -1
- package/esm2015/lib/shared/components/base/destroy.subject.js +1 -1
- package/esm2015/lib/shared/components/base/index.js +1 -1
- package/esm2015/lib/shared/components/button/button.component.js +1 -1
- package/esm2015/lib/shared/components/general-notification-popup/general-notification-popup.component.js +1 -1
- package/esm2015/lib/shared/components/index.js +1 -1
- package/esm2015/lib/shared/components/item-list/item-list.component.js +2 -2
- package/esm2015/lib/shared/components/no-data/no-data.component.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/confirmation/ndf-confirmation-dialog.component.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/index.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/models/confirm-options.model.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/models/dialog-option.model.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo-dialog.module.js +1 -1
- package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +2 -2
- package/esm2015/lib/shared/components/nuxeo-dialog/services/nuxeo-dialog.service.js +1 -1
- package/esm2015/lib/shared/components/read-more/read-more.component.js +1 -1
- package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +1 -1
- package/esm2015/lib/shared/components/spinner/spinner.component.js +1 -1
- package/esm2015/lib/shared/components/user-card/user-card.component.js +1 -1
- package/esm2015/lib/shared/constants/editor-config-type.js +1 -1
- package/esm2015/lib/shared/constants/index.js +1 -1
- package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +1 -1
- package/esm2015/lib/shared/directives/element-height.directive.js +1 -1
- package/esm2015/lib/shared/directives/fluid-height.directive.js +1 -1
- package/esm2015/lib/shared/directives/index.js +1 -1
- package/esm2015/lib/shared/evaluator/evaluator.js +1 -1
- package/esm2015/lib/shared/evaluator/index.js +1 -1
- package/esm2015/lib/shared/evaluator/types.js +1 -1
- package/esm2015/lib/shared/index.js +1 -1
- package/esm2015/lib/shared/libraryShared.module.js +1 -1
- package/esm2015/lib/shared/models/index.js +1 -1
- package/esm2015/lib/shared/models/mapper/index.js +1 -1
- package/esm2015/lib/shared/models/mapper/nuxeo-mapper.js +1 -1
- package/esm2015/lib/shared/models/ndf-request.model.js +1 -1
- package/esm2015/lib/shared/models/nuxeo-response.model.js +1 -1
- package/esm2015/lib/shared/models/task.model.js +1 -1
- package/esm2015/lib/shared/models/type-helpers.js +1 -1
- package/esm2015/lib/shared/services/base/base-editor-config.service.js +1 -1
- package/esm2015/lib/shared/services/base/base.service.js +1 -1
- package/esm2015/lib/shared/services/base/cache-base.service.js +1 -1
- package/esm2015/lib/shared/services/base/config/default-ttl-config.js +1 -1
- package/esm2015/lib/shared/services/base/config/index.js +1 -1
- package/esm2015/lib/shared/services/base/constants/default-cache-options.js +1 -1
- package/esm2015/lib/shared/services/base/constants/index.js +1 -1
- package/esm2015/lib/shared/services/base/http-base.service.js +1 -1
- package/esm2015/lib/shared/services/base/index.js +1 -1
- package/esm2015/lib/shared/services/base/models/cache-info-model.js +1 -1
- package/esm2015/lib/shared/services/base/models/http-options.model.js +1 -1
- package/esm2015/lib/shared/services/base/models/index.js +1 -1
- package/esm2015/lib/shared/services/base/models/operation-options.model.js +1 -1
- package/esm2015/lib/shared/services/base/models/query-options.model.js +1 -1
- package/esm2015/lib/shared/services/base/models/request-options.model.js +1 -1
- package/esm2015/lib/shared/services/index.js +1 -1
- package/esm2015/lib/shared-services/apis-errors-messages.service.js +1 -1
- package/esm2015/lib/shared-services/dialog-mangment.service.js +1 -1
- package/esm2015/lib/shared-services/dynamic-form.service.js +1 -1
- package/esm2015/lib/shared-services/file-manager.adapter.js +1 -1
- package/esm2015/lib/shared-services/file-manager.service.js +1 -1
- package/esm2015/lib/shared-services/global-admin.service.js +1 -1
- package/esm2015/lib/shared-services/global-pdftron.service.js +1 -1
- package/esm2015/lib/shared-services/mainfolder.service.js +1 -1
- package/esm2015/lib/shared-services/publishing-document.service.js +1 -1
- package/esm2015/lib/shared-services/recently-viewed.service.js +1 -1
- package/esm2015/lib/shared-services/shared-docs.service.js +1 -1
- package/esm2015/lib/shared-services/shared-services.module.js +1 -1
- package/esm2015/lib/shared-services/upload-file.service.js +1 -1
- package/esm2015/lib/shared-services/upload-managment.service.js +1 -1
- package/esm2015/lib/shared-services/user.service.js +1 -1
- package/esm2015/nuxeo-development-framework.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +61 -61
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/activities-log/activities-log/activities-log.component.d.ts.map +1 -0
- package/lib/components/activities-log/activities-log/activities-log.service.d.ts.map +1 -0
- package/lib/components/activities-log/activities-log.module.d.ts.map +1 -0
- package/lib/components/activity/activity/activity.component.d.ts.map +1 -0
- package/lib/components/activity/activity.module.d.ts.map +1 -0
- package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts.map +1 -0
- package/lib/components/attachment-item/attachment-item.module.d.ts.map +1 -0
- package/lib/components/attachment-modal/attachment-modal.module.d.ts.map +1 -0
- package/lib/components/attachment-modal/attachments/attachments.component.d.ts.map +1 -0
- package/lib/components/avatar/avatar/avatar.component.d.ts.map +1 -0
- package/lib/components/avatar/avatar.module.d.ts.map +1 -0
- package/lib/components/card/card.component.d.ts.map +1 -0
- package/lib/components/card/card.module.d.ts.map +1 -0
- package/lib/components/comments/comments.module.d.ts.map +1 -0
- package/lib/components/comments/components/comment-item/comment-item.component.d.ts.map +1 -0
- package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts.map +1 -0
- package/lib/components/comments/components/comments-list/comments-list.component.d.ts.map +1 -0
- package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts.map +1 -0
- package/lib/components/comments/constants/comment.d.ts.map +1 -0
- package/lib/components/comments/services/comment-api.service.d.ts.map +1 -0
- package/lib/components/confirm-caller/confirm-caller.dialog.d.ts.map +1 -0
- package/lib/components/confirm-caller/confirm-caller.module.d.ts.map +1 -0
- package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts.map +1 -0
- package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts.map +1 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts.map +1 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts.map +1 -0
- package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts.map +1 -0
- package/lib/components/correspondence-relation/components/versions/versions.component.d.ts.map +1 -0
- package/lib/components/correspondence-relation/correspondence-relation.module.d.ts.map +1 -0
- package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts.map +1 -0
- package/lib/components/correspondence-relation/services/viewer-files.service.d.ts.map +1 -0
- package/lib/components/create-entity/create-entity/create-entity.component.d.ts.map +1 -0
- package/lib/components/create-entity/create-entity.module.d.ts.map +1 -0
- package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts.map +1 -0
- package/lib/components/cts-tags/cts-tags.module.d.ts.map +1 -0
- package/lib/components/cts-tags/services/tags-api.service.d.ts.map +1 -0
- package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts.map +1 -0
- package/lib/components/custom-toastr/custom-toastr.module.d.ts.map +1 -0
- package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts.map +1 -0
- package/lib/components/custom-toastr/services/custom-toastr.service.d.ts.map +1 -0
- package/lib/components/diagrams/components/base-node.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/circle-node/circle-node.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/connection-label.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/content-node/content-node.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/custom-connection.component.d.ts +1 -1
- package/lib/components/diagrams/components/custom-connection.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/custom-socket.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/gateway-node/gateway-node.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/gateway-ports.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/index.d.ts.map +1 -0
- package/lib/components/diagrams/components/node-icon.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/node-inputs.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/node-outputs.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/node-ports.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/remove-button.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/status-icon.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/template-node/template-node.component.d.ts.map +1 -0
- package/lib/components/diagrams/components/zoom-control.component.d.ts.map +1 -0
- package/lib/components/diagrams/constants/defaults.d.ts.map +1 -0
- package/lib/components/diagrams/constants/direction.d.ts.map +1 -0
- package/lib/components/diagrams/constants/index.d.ts.map +1 -0
- package/lib/components/diagrams/constants/message-type.d.ts.map +1 -0
- package/lib/components/diagrams/constants/node-type.d.ts.map +1 -0
- package/lib/components/diagrams/constants/notify-events.d.ts.map +1 -0
- package/lib/components/diagrams/constants/sizes.d.ts.map +1 -0
- package/lib/components/diagrams/constants/status.d.ts.map +1 -0
- package/lib/components/diagrams/diagrams.module.d.ts.map +1 -0
- package/lib/components/diagrams/directive/diagram.directive.d.ts.map +1 -0
- package/lib/components/diagrams/directive/index.d.ts.map +1 -0
- package/lib/components/diagrams/editor/customize.d.ts.map +1 -0
- package/lib/components/diagrams/editor/editor.d.ts.map +1 -0
- package/lib/components/diagrams/editor/index.d.ts.map +1 -0
- package/lib/components/diagrams/editor/overrides/connection-path.transformers.d.ts.map +1 -0
- package/lib/components/diagrams/editor/overrides/index.d.ts.map +1 -0
- package/lib/components/diagrams/editor/path-plugin.d.ts.map +1 -0
- package/lib/components/diagrams/editor/socket-position-watcher.d.ts.map +1 -0
- package/lib/components/diagrams/index.d.ts.map +1 -0
- package/lib/components/diagrams/models/base-node.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/circle-node.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/connection.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/content-node.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/gate-way.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/index.d.ts.map +1 -0
- package/lib/components/diagrams/models/ports.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/socket.model.d.ts.map +1 -0
- package/lib/components/diagrams/models/template-node.model.d.ts.map +1 -0
- package/lib/components/diagrams/public-api.d.ts.map +1 -0
- package/lib/components/diagrams/services/diagram-plugins.service.d.ts.map +1 -0
- package/lib/components/diagrams/services/diagram.service.d.ts.map +1 -0
- package/lib/components/diagrams/services/index.d.ts.map +1 -0
- package/lib/components/diagrams/services/message.service.d.ts.map +1 -0
- package/lib/components/diagrams/services/workflow.service.d.ts.map +1 -0
- package/lib/components/diagrams/types/common.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/connection-config.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/connection-label.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/customization.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/diagram-config.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/diagram-editor.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/emitter-type.d.ts.map +1 -0
- package/lib/components/diagrams/types/index.d.ts.map +1 -0
- package/lib/components/diagrams/types/layout.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/node-content.d.ts.map +1 -0
- package/lib/components/diagrams/types/node-definition.d.ts.map +1 -0
- package/lib/components/diagrams/types/node-status.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/node.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/notify-event.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/path.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/ports-config.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/schemes.type.d.ts.map +1 -0
- package/lib/components/diagrams/types/socket.type.d.ts.map +1 -0
- package/lib/components/diagrams/utilities/common.d.ts.map +1 -0
- package/lib/components/diagrams/utilities/index.d.ts.map +1 -0
- package/lib/components/diagrams/utilities/random.d.ts.map +1 -0
- package/lib/components/diagrams/utilities/remove.util.d.ts.map +1 -0
- package/lib/components/diagrams/utilities/serialize.d.ts.map +1 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts.map +1 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts.map +1 -0
- package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts.map +1 -0
- package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts.map +1 -0
- package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts.map +1 -0
- package/lib/components/documents/components/document-list/documents-list.component.d.ts.map +1 -0
- package/lib/components/documents/components/document-scan/document-scan.component.d.ts.map +1 -0
- package/lib/components/documents/components/document-scan/document-scan.service.d.ts.map +1 -0
- package/lib/components/documents/components/document-upload/document-upload.component.d.ts.map +1 -0
- package/lib/components/documents/components/documents/documents.component.d.ts.map +1 -0
- package/lib/components/documents/constants/document-templates.d.ts.map +1 -0
- package/lib/components/documents/constants/documents.d.ts.map +1 -0
- package/lib/components/documents/documents.module.d.ts.map +1 -0
- package/lib/components/documents/services/document-templates.service.d.ts.map +1 -0
- package/lib/components/documents/services/documents.service.d.ts.map +1 -0
- package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts.map +1 -0
- package/lib/components/dynamic-chart/dynamic-chart.module.d.ts.map +1 -0
- package/lib/components/dynamic-chart/services/chart-data.service.d.ts.map +1 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts.map +1 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts.map +1 -0
- package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts.map +1 -0
- package/lib/components/dynamic-filter/dynamic-filter.module.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +1 -1
- package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.formio.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts.map +1 -0
- package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts.map +1 -0
- package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts.map +1 -0
- package/lib/components/dynamic-form/dynamic-form.module.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts.map +1 -0
- package/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts.map +1 -0
- package/lib/components/dynamic-form/models/dynamic-form.models.d.ts.map +1 -0
- package/lib/components/dynamic-form/services/card-item-types.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/services/vocabulary-api.service.d.ts.map +1 -0
- package/lib/components/dynamic-form/validators/length-validator.d.ts.map +1 -0
- package/lib/components/dynamic-form/validators/regex-validator.d.ts.map +1 -0
- package/lib/components/dynamic-form/validators/required-validator.d.ts.map +1 -0
- package/lib/components/dynamic-form/validators/value-validator.d.ts.map +1 -0
- package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts.map +1 -0
- package/lib/components/dynamic-search/dynamic-search.module.d.ts.map +1 -0
- package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts.map +1 -0
- package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts.map +1 -0
- package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts.map +1 -0
- package/lib/components/dynamic-view/dynamic-view.module.d.ts.map +1 -0
- package/lib/components/dynamic-view/dynamic-viewe.service.d.ts.map +1 -0
- package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/copy/copy.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/delete/delete.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/move/move.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/rename/rename.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts.map +1 -0
- package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts.map +1 -0
- package/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.d.ts.map +1 -0
- package/lib/components/file-manger/file-manager.abstract.d.ts.map +1 -0
- package/lib/components/file-manger/file-manger.module.d.ts.map +1 -0
- package/lib/components/file-manger/models/file-manager-config.model.d.ts.map +1 -0
- package/lib/components/file-manger/models/index.d.ts.map +1 -0
- package/lib/components/file-manger/models/pagination-payload.mode.d.ts.map +1 -0
- package/lib/components/file-manger/models/pagination-response.model.d.ts.map +1 -0
- package/lib/components/filter/filter/filter.component.d.ts.map +1 -0
- package/lib/components/filter/filter.module.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts.map +1 -0
- package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts.map +1 -0
- package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts.map +1 -0
- package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts.map +1 -0
- package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts.map +1 -0
- package/lib/components/latest-activity/constants/activitylog.d.ts.map +1 -0
- package/lib/components/latest-activity/latest-activity.module.d.ts.map +1 -0
- package/lib/components/latest-activity/services/activity-log.service.d.ts.map +1 -0
- package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts.map +1 -0
- package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/components/editor-mode-switch.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/components/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/config.token.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/constants/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/constants/mode.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/constants/query.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/containers/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/containers/monaco-editor.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/metadata-token.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/config.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/dialog-data.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/editor-model.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/payload-data.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/models/type-helper.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/ndf-config-editor.module.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/pipes/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/pipes/validate-object.pipe.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/public/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/public-api.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/services/data-access.service.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/services/data-store.service.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/services/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/services/monaco.loader.service.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/utility/index.d.ts.map +1 -0
- package/lib/components/ndf-config-editor/utility/json.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/adapters/hijri-adapter.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/adapters/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/adapters/moment-adapter.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/base/base-value-accessor.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/base/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/components/base-datepicker.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/components/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/components/input-date.component.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/components/input-range-date.component.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/date-locale-keys.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/date-picker.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/date-type.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/formats.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/hijri-dates-names.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/constants/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/containers/datepicker-container.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/containers/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/containers/ndf-gregorian-datepicker.component.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/containers/ndf-hijri-datepicker.component.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/models/data-types.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/models/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/models/value-object.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/ndf-datepicker.component.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/ndf-datepicker.module.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/services/calendar.service.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/services/index.d.ts.map +1 -0
- package/lib/components/ndf-datepicker/services/localize-state.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/base-aggregation-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/base-checkbox-radio.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/base-custom-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/base-predicate-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/base-value-accessor.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/base/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/field-header.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-collapse-control/filter-collapse-control.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-date-range/filter-date-range.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-empty-message.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-option-text/filter-option-text.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-options-sort/filter-options-sort.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/filter-search-input/filter-search-input.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/html-dialog/html-dialog.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/__parts/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-autocomplete/aggregation-autocomplete.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-checkbox/aggregation-checkbox.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-custom/aggregation-custom.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-radio/aggregation-radio.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-select/aggregation-select.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/aggregation-switch/aggregation-switch.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/predicate-date-input/predicate-date-input.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/common.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/field.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/operators.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/sort.d.ts.map +1 -0
- package/lib/components/ndf-filters/constants/type.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/base-field.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/custom-field/custom-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/filters-panel/base-filters-panel.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/containers/predicate-field/predicate-field.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/active-user-switch/active-user-switch.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/active-user-switch/active-user.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/active-user-switch/user-types.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.d.ts.map +1 -0
- package/lib/components/ndf-filters/custom-components/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/autocomplete-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/checkbox-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/custom-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/date-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/dropdown-label-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/dropdown-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/radio-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/directives/switch-template.directive.d.ts.map +1 -0
- package/lib/components/ndf-filters/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/aggregation-field-config.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/aggregation-response.model.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/base-field-config.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/common.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/custom-field-config.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-config.model.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/autocomplete-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/checkbox-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/common-utils.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/custom-fields-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/custom-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/date-list-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/date-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/dropdown-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/input-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/radio-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/field-options/switch-options.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/filter-option.model.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/form-query-request.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/operator-value-object.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/predicate-field-config.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/types-helper.d.ts.map +1 -0
- package/lib/components/ndf-filters/models/value-object.model.d.ts.map +1 -0
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/autocomplete-filter.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/filter.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/hash-translate.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/localized-label.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/roles-filters.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/sanitizer.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/sort.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/pipes/tooltip.pipe.d.ts.map +1 -0
- package/lib/components/ndf-filters/public-api.d.ts.map +1 -0
- package/lib/components/ndf-filters/services/aggregation-field.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/services/dynamic-component-loader.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/services/filters-mapper.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/services/filters-query.service.d.ts.map +1 -0
- package/lib/components/ndf-filters/services/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/utility/index.d.ts.map +1 -0
- package/lib/components/ndf-filters/utility/nxql-query.d.ts.map +1 -0
- package/lib/components/ndf-filters/utility/nxql.d.ts.map +1 -0
- package/lib/components/ndf-filters/utility/object.d.ts.map +1 -0
- package/lib/components/ndf-panel/component/ndf-panel.component.d.ts.map +1 -0
- package/lib/components/ndf-panel/index.d.ts.map +1 -0
- package/lib/components/ndf-panel/ndf-panel.module.d.ts.map +1 -0
- package/lib/components/ndf-scanner/index.d.ts.map +1 -0
- package/lib/components/ndf-scanner/ndf-scanner.component.d.ts.map +1 -0
- package/lib/components/ndf-scanner/ndf-scanner.module.d.ts.map +1 -0
- package/lib/components/ndf-signatures/emdha/dialogs/auth/emdha-auth.dialog.d.ts.map +1 -0
- package/lib/components/ndf-signatures/emdha/dialogs/index.d.ts.map +1 -0
- package/lib/components/ndf-signatures/emdha/index.d.ts.map +1 -0
- package/lib/components/ndf-signatures/emdha/services/emdha.service.d.ts.map +1 -0
- package/lib/components/ndf-signatures/emdha/services/index.d.ts.map +1 -0
- package/lib/components/ndf-signatures/index.d.ts.map +1 -0
- package/lib/components/ndf-signatures/ndf-signature-panel/ndf-signature-panel.component.d.ts.map +1 -0
- package/lib/components/ndf-signatures/ndf-signatures.module.d.ts.map +1 -0
- package/lib/components/ndf-signatures/services/index.d.ts.map +1 -0
- package/lib/components/ndf-signatures/services/signatures.service.d.ts.map +1 -0
- package/lib/components/ndf-tabs/component/ndf-tabs.component.d.ts.map +1 -0
- package/lib/components/ndf-tabs/index.d.ts.map +1 -0
- package/lib/components/ndf-tabs/ndf-tabs.module.d.ts.map +1 -0
- package/lib/components/ndf-tabs/tab.type.d.ts.map +1 -0
- package/lib/components/ndf-uploader/components/bottom-sheet/ndf-uploader-bottom-sheet.component.d.ts.map +1 -0
- package/lib/components/ndf-uploader/components/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/config/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/config/uploader.config.d.ts.map +1 -0
- package/lib/components/ndf-uploader/constant/file-content.d.ts.map +1 -0
- package/lib/components/ndf-uploader/constant/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/helpers/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/helpers/uploader.helper.d.ts.map +1 -0
- package/lib/components/ndf-uploader/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/models/batch.model.d.ts.map +1 -0
- package/lib/components/ndf-uploader/models/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/models/ndf-file.model.d.ts.map +1 -0
- package/lib/components/ndf-uploader/models/provider.model.d.ts.map +1 -0
- package/lib/components/ndf-uploader/ndf-uploader-bottom-sheet.service.d.ts.map +1 -0
- package/lib/components/ndf-uploader/ndf-uploader.module.d.ts.map +1 -0
- package/lib/components/ndf-uploader/ndf-uploader.service.d.ts.map +1 -0
- package/lib/components/ndf-uploader/providers/index.d.ts.map +1 -0
- package/lib/components/ndf-uploader/providers/nuxeo-provider.service.d.ts.map +1 -0
- package/lib/components/ndf-uploader/providers/s3-provider.service.d.ts.map +1 -0
- package/lib/components/no-data-found/index.d.ts.map +1 -0
- package/lib/components/no-data-found/no-data-found.component.d.ts.map +1 -0
- package/lib/components/no-data-found/no-data.module.d.ts.map +1 -0
- package/lib/components/notifications/components/base-list-notfications.component.d.ts.map +1 -0
- package/lib/components/notifications/components/base-notifications.component.d.ts.map +1 -0
- package/lib/components/notifications/components/index.d.ts.map +1 -0
- package/lib/components/notifications/components/notification-item/get-icon.pipe.d.ts.map +1 -0
- package/lib/components/notifications/components/notification-item/notification-item.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notification-sortby-toggle/notification-sortby-toggle.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notification-source-select/notification-source-select.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-list/options.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-settings/notifications-settings.component.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.d.ts.map +1 -0
- package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.d.ts.map +1 -0
- package/lib/components/notifications/constants/date.d.ts.map +1 -0
- package/lib/components/notifications/constants/index.d.ts.map +1 -0
- package/lib/components/notifications/constants/pagination.d.ts.map +1 -0
- package/lib/components/notifications/constants/panel.d.ts.map +1 -0
- package/lib/components/notifications/constants/status.d.ts.map +1 -0
- package/lib/components/notifications/containers/index.d.ts.map +1 -0
- package/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.d.ts.map +1 -0
- package/lib/components/notifications/containers/notifications-list-container/options.d.ts.map +1 -0
- package/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.d.ts.map +1 -0
- package/lib/components/notifications/directives/button.directive.d.ts.map +1 -0
- package/lib/components/notifications/directives/index.d.ts.map +1 -0
- package/lib/components/notifications/directives/notification.directive.d.ts.map +1 -0
- package/lib/components/notifications/index.d.ts.map +1 -0
- package/lib/components/notifications/models/common.d.ts.map +1 -0
- package/lib/components/notifications/models/index.d.ts.map +1 -0
- package/lib/components/notifications/models/notification-definition.model.d.ts.map +1 -0
- package/lib/components/notifications/models/notification-message.mode.d.ts.map +1 -0
- package/lib/components/notifications/models/notification-options.d.ts.map +1 -0
- package/lib/components/notifications/models/notification-setting.presenter.d.ts.map +1 -0
- package/lib/components/notifications/models/notification-subscription.model.d.ts.map +1 -0
- package/lib/components/notifications/models/notification.model.d.ts.map +1 -0
- package/lib/components/notifications/models/notifications-list-options.d.ts.map +1 -0
- package/lib/components/notifications/models/paging-response.model.d.ts.map +1 -0
- package/lib/components/notifications/models/params.model.d.ts.map +1 -0
- package/lib/components/notifications/models/vocabularies.d.ts.map +1 -0
- package/lib/components/notifications/notifications.module.d.ts.map +1 -0
- package/lib/components/notifications/public-api.d.ts.map +1 -0
- package/lib/components/notifications/services/index.d.ts.map +1 -0
- package/lib/components/notifications/services/listener.service.d.ts.map +1 -0
- package/lib/components/notifications/services/notifications.service.d.ts.map +1 -0
- package/lib/components/notifications/services/params.service.d.ts.map +1 -0
- package/lib/components/notifications/services/response.service.d.ts.map +1 -0
- package/lib/components/notifications/services/socket.service.d.ts.map +1 -0
- package/lib/components/notifications/utilities/index.d.ts.map +1 -0
- package/lib/components/notifications/utilities/response.adapter.d.ts.map +1 -0
- package/lib/components/pagination/pagination/pagination.component.d.ts.map +1 -0
- package/lib/components/pagination/pagination.module.d.ts.map +1 -0
- package/lib/components/pdf-tron/directives/index.d.ts.map +1 -0
- package/lib/components/pdf-tron/directives/ndf-tron-extract-text.directive.d.ts.map +1 -0
- package/lib/components/pdf-tron/models/index.d.ts.map +1 -0
- package/lib/components/pdf-tron/models/tron.model.d.ts.map +1 -0
- package/lib/components/pdf-tron/pdf-tron.module.d.ts.map +1 -0
- package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts.map +1 -0
- package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts.map +1 -0
- package/lib/components/pdf-tron/pdftron/silent-pdftron.service.d.ts.map +1 -0
- package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts.map +1 -0
- package/lib/components/permissions/permission.service.d.ts.map +1 -0
- package/lib/components/permissions/permissions/permissions.component.d.ts.map +1 -0
- package/lib/components/permissions/permissions-template/permissions-template.component.d.ts.map +1 -0
- package/lib/components/permissions/permissions.module.d.ts.map +1 -0
- package/lib/components/reports/chart-panel.d.ts.map +1 -0
- package/lib/components/reports/charts/chart.const.d.ts.map +1 -0
- package/lib/components/reports/charts/chart.token.d.ts.map +1 -0
- package/lib/components/reports/charts/charts.module.d.ts.map +1 -0
- package/lib/components/reports/charts/components/base-chart.component.d.ts +1 -1
- package/lib/components/reports/charts/components/base-chart.component.d.ts.map +1 -0
- package/lib/components/reports/charts/components/chart.component.d.ts.map +1 -0
- package/lib/components/reports/charts/components/data-chart.component.d.ts.map +1 -0
- package/lib/components/reports/charts/components/index.d.ts.map +1 -0
- package/lib/components/reports/charts/defaults/bar.d.ts.map +1 -0
- package/lib/components/reports/charts/defaults/doughnut.d.ts.map +1 -0
- package/lib/components/reports/charts/defaults/index.d.ts.map +1 -0
- package/lib/components/reports/charts/defaults/line.d.ts.map +1 -0
- package/lib/components/reports/charts/defaults/pie.d.ts.map +1 -0
- package/lib/components/reports/charts/index.d.ts.map +1 -0
- package/lib/components/reports/charts/models/index.d.ts.map +1 -0
- package/lib/components/reports/charts/models/options.d.ts.map +1 -0
- package/lib/components/reports/charts/models/plugins-options.d.ts.map +1 -0
- package/lib/components/reports/charts/models/response.d.ts.map +1 -0
- package/lib/components/reports/charts/models/statistic-request-config.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/data-labels.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/doughnut-center-text.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/doughnut-empty-state.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/index.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/legend-margin.d.ts.map +1 -0
- package/lib/components/reports/charts/plugins/scrollable-legends.d.ts.map +1 -0
- package/lib/components/reports/charts/public-api.d.ts.map +1 -0
- package/lib/components/reports/charts/services/index.d.ts.map +1 -0
- package/lib/components/reports/charts/services/statistic.service.d.ts.map +1 -0
- package/lib/components/reports/charts/utility/colors.d.ts.map +1 -0
- package/lib/components/reports/charts/utility/common.d.ts.map +1 -0
- package/lib/components/reports/charts/utility/css.d.ts.map +1 -0
- package/lib/components/reports/charts/utility/index.d.ts.map +1 -0
- package/lib/components/reports/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/base/base-chart.d.ts +1 -1
- package/lib/components/reports/ndf-reports/base/base-chart.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/base/base-custom-report.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/base/base-graph.report.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/base/base-report.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/base/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/charts-components/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/time-group-selector/time-group-selector.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +1 -17
- package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.d.ts +1 -1
- package/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/components/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/constants/charts-types.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/constants/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/constants/time-group.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/containers/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/directives/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/directives/scrollable-div.directive.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/base.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/common.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/custom-definition.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/details.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/dialog-data.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/digit.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/graph-definition.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/report-config.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/report-data-source.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/report-response.model.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/models/request.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/doughnut.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/horizontal-bar.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/line.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/pie.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/options/vertical-bar.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/public-api.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts +14 -14
- package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/chart-callbacks-register.services.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/chart-manager.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/chart-theme.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/custom-reports-registry.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/digit-chart.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/report-configuration.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/report-transform.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/reports-data-transformers.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/reports-dialog.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/services/reports-state.service.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/utilities/dataset-colors.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/utilities/index.d.ts.map +1 -0
- package/lib/components/reports/ndf-reports/utilities/reports-table.mapper.d.ts.map +1 -0
- package/lib/components/select/select/select.component.d.ts.map +1 -0
- package/lib/components/select/select.module.d.ts.map +1 -0
- package/lib/components/select-users-by-department/select-users-by-department.module.d.ts.map +1 -0
- package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts.map +1 -0
- package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts.map +1 -0
- package/lib/components/skeleton/index.d.ts.map +1 -0
- package/lib/components/skeleton/skeleton.component.d.ts.map +1 -0
- package/lib/components/skeleton/skeleton.module.d.ts.map +1 -0
- package/lib/components/skeleton/table-skeleton.component.d.ts.map +1 -0
- package/lib/components/spell-checker-field/spell-checker-field.module.d.ts.map +1 -0
- package/lib/components/spell-checker-field/spell-checker-text-field/spell-checker-text-field.component.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/directives/empty-state.directive.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/dynamic-table.module.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/index.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/public-api.d.ts.map +1 -0
- package/lib/components/tables/dynamic-table/services/dynamic-table.service.d.ts.map +1 -0
- package/lib/components/tables/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/mode-toggler/mode-toggler.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/sorting-list/sorting-list.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/table-columns-toggler/table-columns-toggler.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/table-export/table-export.component.d.ts +1 -1
- package/lib/components/tables/ndf-table/components/table-export/table-export.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/components/text-search/text-search.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/constants/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/constants/sizes.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/containers/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/directives/actions.directive.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/directives/filter-custom.directive.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/directives/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/directives/search.directive.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/payload-types.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/search.config.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/table-column.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/table-config.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/table-mode.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/table-options.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/models/types.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/ndf-table.module.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/public-api.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/services/index.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/services/ndf-table-configuration.service.d.ts.map +1 -0
- package/lib/components/tables/ndf-table/services/ndf-table.service.d.ts.map +1 -0
- package/lib/components/tables/public-api.d.ts.map +1 -0
- package/lib/components/tables/table/dynamic-column/dynamic-column.component.d.ts.map +1 -0
- package/lib/components/tables/table/dynamic-component.d.ts.map +1 -0
- package/lib/components/tables/table/index.d.ts.map +1 -0
- package/lib/components/tables/table/page-sizes-list/page-sizes-list.component.d.ts.map +1 -0
- package/lib/components/tables/table/public-api.d.ts.map +1 -0
- package/lib/components/tables/table/table/table.component.d.ts.map +1 -0
- package/lib/components/tables/table/table.module.d.ts.map +1 -0
- package/lib/components/toasts/components/notification-toast/notification-toast.component.d.ts.map +1 -0
- package/lib/components/toasts/index.d.ts.map +1 -0
- package/lib/components/toasts/public-api.d.ts.map +1 -0
- package/lib/components/toasts/toasts.module.d.ts.map +1 -0
- package/lib/components/user/user/user.component.d.ts.map +1 -0
- package/lib/components/user/user.module.d.ts.map +1 -0
- package/lib/components/users-card/users-card.component.d.ts.map +1 -0
- package/lib/components/users-card/users-card.module.d.ts.map +1 -0
- package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts.map +1 -0
- package/lib/components/viewer-log/viewer-log.module.d.ts.map +1 -0
- package/lib/components/vocabulary/interfaces/op-type.interface.d.ts.map +1 -0
- package/lib/components/vocabulary/services/vocabulary-api.service.d.ts.map +1 -0
- package/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.d.ts.map +1 -0
- package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts.map +1 -0
- package/lib/components/vocabulary/vocabulary.module.d.ts.map +1 -0
- package/lib/configuration/app-config.service.d.ts.map +1 -0
- package/lib/configuration/helpers/app-initializer.d.ts.map +1 -0
- package/lib/core/adapters/adapter.service.d.ts.map +1 -0
- package/lib/core/core.module.d.ts.map +1 -0
- package/lib/core/enums/language.enum.d.ts.map +1 -0
- package/lib/core/env/env-manager.d.ts.map +1 -0
- package/lib/core/env/index.d.ts.map +1 -0
- package/lib/core/models/api-response.model.d.ts.map +1 -0
- package/lib/core/models/automation-response.model.d.ts.map +1 -0
- package/lib/core/models/base-response.models.d.ts.map +1 -0
- package/lib/core/models/component.model.d.ts.map +1 -0
- package/lib/core/models/index.d.ts.map +1 -0
- package/lib/core/services/callApi/call-api.service.d.ts.map +1 -0
- package/lib/core/services/column-renderer/column-renderer-registry.service.d.ts.map +1 -0
- package/lib/core/services/column-renderer/index.d.ts.map +1 -0
- package/lib/core/services/extension/action.extensions.d.ts.map +1 -0
- package/lib/core/services/extension/component-register.service.d.ts.map +1 -0
- package/lib/core/services/extension/extenion-utils.d.ts.map +1 -0
- package/lib/core/services/extension/extension-element.d.ts.map +1 -0
- package/lib/core/services/extension/extension-loader.service.d.ts.map +1 -0
- package/lib/core/services/extension/extension.service.d.ts.map +1 -0
- package/lib/core/services/index.d.ts.map +1 -0
- package/lib/core/services/initialization/initialization.service.d.ts.map +1 -0
- package/lib/core/services/localStorag/local-storag.service.d.ts.map +1 -0
- package/lib/core/services/ndf-transform.service.d.ts.map +1 -0
- package/lib/core/services/nuxeo/new-nuxeo-overide.d.ts.map +1 -0
- package/lib/core/services/nuxeo/nuxeo-override.d.ts.map +1 -0
- package/lib/core/services/nuxeo/nuxeo.service.d.ts.map +1 -0
- package/lib/core/services/roles/roles.service.d.ts.map +1 -0
- package/lib/core/services/translation/translate-loader.service.d.ts.map +1 -0
- package/lib/core/services/translation/translation.service.d.ts.map +1 -0
- package/lib/core/services/user/user-preferences.service.d.ts.map +1 -0
- package/lib/core/tokens/index.d.ts.map +1 -0
- package/lib/core/tokens/project.token.d.ts.map +1 -0
- package/lib/core/utilities/moment-date-adapter.d.ts.map +1 -0
- package/lib/core/utilities/utility.service.d.ts.map +1 -0
- package/lib/directive/app-has-role/app-has-role.directive.d.ts.map +1 -0
- package/lib/directive/clickOutSide/click-outside.directive.d.ts.map +1 -0
- package/lib/directive/directive.module.d.ts.map +1 -0
- package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts.map +1 -0
- package/lib/directive/permissions/evaluators.service.d.ts.map +1 -0
- package/lib/directive/permissions/permissions.directive.d.ts.map +1 -0
- package/lib/directive/rtl/set-dir-rtl.directive.d.ts.map +1 -0
- package/lib/directive/rtl/set-rtl.directive.d.ts.map +1 -0
- package/lib/nuxeo-development-framework.component.d.ts.map +1 -0
- package/lib/nuxeo-development-framework.module.d.ts.map +1 -0
- package/lib/nuxeo-development-framework.service.d.ts.map +1 -0
- package/lib/pipes/file-size.pipe.d.ts.map +1 -0
- package/lib/pipes/hijri-date.pipe.d.ts.map +1 -0
- package/lib/pipes/localized-date.pipe.d.ts.map +1 -0
- package/lib/pipes/multi-value.pipe.d.ts.map +1 -0
- package/lib/pipes/pipes.module.d.ts.map +1 -0
- package/lib/pipes/secure-html.pipe.d.ts.map +1 -0
- package/lib/pipes/secure.pipe.d.ts.map +1 -0
- package/lib/pipes/time-ago.pipe.d.ts.map +1 -0
- package/lib/shared/components/base/base-column.component.d.ts.map +1 -0
- package/lib/shared/components/base/base-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/base/base-selector.component.d.ts.map +1 -0
- package/lib/shared/components/base/base.component.d.ts.map +1 -0
- package/lib/shared/components/base/destroy.subject.d.ts.map +1 -0
- package/lib/shared/components/base/index.d.ts.map +1 -0
- package/lib/shared/components/button/button.component.d.ts.map +1 -0
- package/lib/shared/components/general-notification-popup/general-notification-popup.component.d.ts.map +1 -0
- package/lib/shared/components/index.d.ts.map +1 -0
- package/lib/shared/components/item-list/item-list.component.d.ts.map +1 -0
- package/lib/shared/components/no-data/no-data.component.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/confirmation/ndf-confirmation-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/index.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/models/confirm-options.model.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/models/dialog-option.model.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/nuxeo-dialog.module.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/nuxeo.dialog.d.ts.map +1 -0
- package/lib/shared/components/nuxeo-dialog/services/nuxeo-dialog.service.d.ts.map +1 -0
- package/lib/shared/components/read-more/read-more.component.d.ts.map +1 -0
- package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts.map +1 -0
- package/lib/shared/components/spinner/spinner.component.d.ts.map +1 -0
- package/lib/shared/components/user-card/user-card.component.d.ts.map +1 -0
- package/lib/shared/constants/editor-config-type.d.ts.map +1 -0
- package/lib/shared/constants/index.d.ts.map +1 -0
- package/lib/shared/directives/copy-to-clipboard.directive.d.ts.map +1 -0
- package/lib/shared/directives/element-height.directive.d.ts.map +1 -0
- package/lib/shared/directives/fluid-height.directive.d.ts.map +1 -0
- package/lib/shared/directives/index.d.ts.map +1 -0
- package/lib/shared/evaluator/evaluator.d.ts.map +1 -0
- package/lib/shared/evaluator/index.d.ts.map +1 -0
- package/lib/shared/evaluator/types.d.ts.map +1 -0
- package/lib/shared/index.d.ts.map +1 -0
- package/lib/shared/libraryShared.module.d.ts.map +1 -0
- package/lib/shared/models/index.d.ts.map +1 -0
- package/lib/shared/models/mapper/index.d.ts.map +1 -0
- package/lib/shared/models/mapper/nuxeo-mapper.d.ts.map +1 -0
- package/lib/shared/models/ndf-request.model.d.ts.map +1 -0
- package/lib/shared/models/nuxeo-response.model.d.ts.map +1 -0
- package/lib/shared/models/task.model.d.ts.map +1 -0
- package/lib/shared/models/type-helpers.d.ts.map +1 -0
- package/lib/shared/services/base/base-editor-config.service.d.ts.map +1 -0
- package/lib/shared/services/base/base.service.d.ts.map +1 -0
- package/lib/shared/services/base/cache-base.service.d.ts.map +1 -0
- package/lib/shared/services/base/config/default-ttl-config.d.ts.map +1 -0
- package/lib/shared/services/base/config/index.d.ts.map +1 -0
- package/lib/shared/services/base/constants/default-cache-options.d.ts.map +1 -0
- package/lib/shared/services/base/constants/index.d.ts.map +1 -0
- package/lib/shared/services/base/http-base.service.d.ts.map +1 -0
- package/lib/shared/services/base/index.d.ts.map +1 -0
- package/lib/shared/services/base/models/cache-info-model.d.ts.map +1 -0
- package/lib/shared/services/base/models/http-options.model.d.ts.map +1 -0
- package/lib/shared/services/base/models/index.d.ts.map +1 -0
- package/lib/shared/services/base/models/operation-options.model.d.ts.map +1 -0
- package/lib/shared/services/base/models/query-options.model.d.ts.map +1 -0
- package/lib/shared/services/base/models/request-options.model.d.ts.map +1 -0
- package/lib/shared/services/index.d.ts.map +1 -0
- package/lib/shared-services/apis-errors-messages.service.d.ts.map +1 -0
- package/lib/shared-services/dialog-mangment.service.d.ts.map +1 -0
- package/lib/shared-services/dynamic-form.service.d.ts.map +1 -0
- package/lib/shared-services/file-manager.adapter.d.ts.map +1 -0
- package/lib/shared-services/file-manager.service.d.ts.map +1 -0
- package/lib/shared-services/global-admin.service.d.ts.map +1 -0
- package/lib/shared-services/global-pdftron.service.d.ts.map +1 -0
- package/lib/shared-services/mainfolder.service.d.ts.map +1 -0
- package/lib/shared-services/publishing-document.service.d.ts.map +1 -0
- package/lib/shared-services/recently-viewed.service.d.ts.map +1 -0
- package/lib/shared-services/shared-docs.service.d.ts.map +1 -0
- package/lib/shared-services/shared-services.module.d.ts.map +1 -0
- package/lib/shared-services/upload-file.service.d.ts.map +1 -0
- package/lib/shared-services/upload-managment.service.d.ts.map +1 -0
- package/lib/shared-services/user.service.d.ts.map +1 -0
- package/nuxeo-development-framework.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts.map +1 -0
|
@@ -849,4 +849,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
849
849
|
}], SignatureEvent: [{
|
|
850
850
|
type: Output
|
|
851
851
|
}] } });
|
|
852
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGZ0cm9uL3BkZnRyb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdOLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUt4RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFPSCxNQUFNLE9BQU8sZ0JBQWdCO0lBNkQ1QixZQUNRLEdBQXNCLEVBQ3JCLGNBQThCLEVBQzlCLEtBQW1CLEVBQ0ksUUFBZ0IsRUFDdkMsa0JBQXNDLEVBQ3RDLG9CQUEwQyxFQUNuQixXQUFXO1FBTm5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ0ksYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQUE7O1FBOURsQyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxDQUFD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LElBQUksRUFBRTtnQkFJekMsUUFBUTtzQkFEUCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsS0FBSztnQkFDSSwyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVQLE1BQU07c0JBREwsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbmplY3QsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgV2ViVmlld2VyIGZyb20gJ0BwZGZ0cm9uL3dlYnZpZXdlcic7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmltcG9ydCB7IFBkZnRyb25TZXJ2aWNlIH0gZnJvbSAnLi9wZGZ0cm9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUFBfQkFTRV9IUkVGIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2VjdXJlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3NlY3VyZS5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNpbGVudFBkZlRyb25TZXJ2aWNlIH0gZnJvbSAnLi9zaWxlbnQtcGRmdHJvbi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBIHJldXNhYmxlIGZpbGUgdmlld2VyIGJhc2VkIG9uIFBERlRyb24gTGlicmFyeVxyXG4gKiBAdGl0bGVcclxuICogUERGVHJvbiBWaWV3ZXJcclxuICogQGV4YW1wbGVcclxuICogPGFwcC1wZGZ0cm9uXHJcbiAqICAgW2ZpbGVEYXRhXT1cImZpbGVEYXRhXCJcclxuICogICBbZWRpdE1vZGVdPVwiZmFsc2VcIlxyXG4gKiAgIFtkb2NJZF09XCJmaWxlSWRcIlxyXG4gKiAgIFtmaWxlVGl0bGVdPVwiZmlsZS50aXRsZVwiXHJcbiAqID5cclxuICogPC9hcHAtcGRmdHJvbj5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXBkZnRyb24nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wZGZ0cm9uLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wZGZ0cm9uLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbU2VjdXJlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZnRyb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHRAVmlld0NoaWxkKCdmaWxlVmlld2VyJywgeyBzdGF0aWM6IHRydWUgfSkgdmlld2VyUmVmOiBFbGVtZW50UmVmO1xyXG5cdHdlYlZpZXdlckluc3RhbmNlO1xyXG5cdC8qKiBEaXNhYmxlL0VuYWJsZSBBbm5vdGF0aW9uICovXHJcblx0QElucHV0KClcclxuXHRlZGl0TW9kZTogYm9vbGVhbjtcclxuXHRASW5wdXQoKSBhY3Rpb25DbGlja2VkID0gZmFsc2U7IC8vIHVzZWQgdG8ga25vdyBpZiB0aGVyZSBpcyBhY3Rpb24gY2xpY2tlZCBvdXRzaWRlIHRvIHN0YXJ0IGVkaXQgbW9kZSBvciBub3RcclxuXHRpc0RvY3VtZW50TG9hZGluZzogYm9vbGVhbjtcclxuXHRpc0ZldGNoaW5nOiBib29sZWFuO1xyXG5cdC8qKiBEb2N1bWVudCB0aXRsZSAqL1xyXG5cdEBJbnB1dCgpXHJcblx0ZmlsZVRpdGxlOiBzdHJpbmc7XHJcblx0LyoqIERvY3VtZW50IElEICovXHJcblx0QElucHV0KClcclxuXHRkb2NJZDogc3RyaW5nO1xyXG5cdEBJbnB1dCgpXHJcblx0RE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9wZGYnO1xyXG5cdEBJbnB1dCgpXHJcblx0ZmlsZURhdGE7XHJcblx0QElucHV0KClcclxuXHRmaXRNb2RlOiAnRml0V2lkdGgnIHwgJ0ZpdFBhZ2UnIHwgJ1pvb20nID0gJ0ZpdFdpZHRoJztcclxuXHRASW5wdXQoKVxyXG5cdGF1dGhIZWFkZXI6IHN0cmluZztcclxuXHRASW5wdXQoKVxyXG5cdGZpbGVVUkw6IHN0cmluZztcclxuXHRASW5wdXQoKVxyXG5cdGNvcnJlc3BvbmRhbmNlO1xyXG5cclxuXHRASW5wdXQoKSBzZWNyZWN5UHJvcGVydHk7IC8vIHVzZWQgdG8gYWRkIHdhdGVybWFyayBhY29yZGluZyBjZXJ0YWluIHNlY3JlY3kgbGV2ZWxcclxuXHRASW5wdXQoKSBlZGl0aW5nVHlwZTtcclxuXHRASW5wdXQoKSB1c2VyU2lnbmF0dXJlcztcclxuXHRASW5wdXQoKSBzZWFyY2hTdHJpbmcgPSAnJzsgLy8gc3RyaW5nIHRvIHNlYXJjaCBmb3IgaXQgaW4gdGhlIGRvY3VtZW50XHJcblxyXG5cdEBJbnB1dCgpIHRyYWNrU2lnbmF0dXJlID0gZmFsc2U7IC8vIHRvIGVuYWJsZSB0cmFja2luZyBzaWduYXR1cmUgcG9zaXRpb24gYW5kIGVtaXQgaXQgYWZ0ZXIgZXZlcnkgY2hhbmdlIGl0IHNpZ25hdHVyZVxyXG5cdEBPdXRwdXQoKSBvblNpZ25hdHVyZVRyYWNraW5nID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBldmVudCB0byBlbWl0IHNpZ25hdHVyZSBjaGFuZ2VzXHJcblxyXG5cdEBJbnB1dCgpIHVzZU91dHNpZGVBbm90YXRpb25zID0gZmFsc2U7IC8vIGZsYWdlIHRvIGluZGljYXQgaWYgdXNpbmcgb3V0IHNpZGUgYW5vdGF0aW9ucyBvciBub3RcclxuXHRASW5wdXQoKSBpbXBvcnRlZEFub3RhdGlvbnM7IC8vIGltcG9ydGVkIGFub3RhdGlvbnMgZnJvbSBvdXRzaWRlXHJcblx0QElucHV0KCkgYWxsb3dEb3dubG9hZFNlY3JldEZpbGUgPSB0cnVlOyAvLyBhbGxvdyBvciBwcmV2ZW50IGRvd25sb2FkIHNjcmVjdCBmaWxlc1xyXG5cdEBJbnB1dCgpIGFsbG93UHJpbnRTZWNyZXRGaWxlID0gdHJ1ZTsgLy8gYWxsb3cgb3IgcHJldmVudCBwcmludCBzY3JlY3QgZmlsZXNcclxuXHRASW5wdXQoKSBuZWdlbGVjdEFkZGluZ1dhdGVyTWFyayA9IGZhbHNlOyAvLyBkb24ndCBhZGQgd2F0ZXJtYXJrIGhlcmUgd2hhdGV2ZXIgZWFzIHRoZSBjb25kaXRpb25zICh3ZSBtYXkgYWRkIGl0IGZyb20gb3V0c2lkZSBvciBub3QgYWRkIGl0IGF0IGFsbClcclxuXHRASW5wdXQoKSBmbGF0dGVuQW5vdGF0aW9uID0gZmFsc2U7IC8vIHVzZWQgdG8gZmxhdHRlbiBhbm90YXRpb24gaW50byB0aGUgZG9jdW1lbnQgdG8gYXZvaWQgZWRpdGluZyBvbiB0aGVtIGFmdGVyIHNhdmluZ1xyXG5cdEBJbnB1dCgpIHJlY29nbml6ZWRKc29uO1xyXG5cdEBJbnB1dCAoKSBpc1NpZ25lZERvY3VtZW50ID0gZmFsc2U7IC8vIGZsYWdlIHRvIGluZGljYXRlIGlmIHRoaXMgZG9jdW1lbnQgaXMgc2lnbmVkIHdpdGggb3V0c2lkZSBwbGF0Zm9ybSB0byBlbmFibGUgZGlmZnJlbnQgd2F5IG9mIGRvd25sb2FkaW5nIGl0XHJcblx0QElucHV0ICgpIGFsbG93UHJpbnRGcm9tT3V0U2lkZSA9IGZhbHNlOyAvL2ZsYWdlIHRvIGluZGljYXRlIGlmIHRvIHVzZSBwcmludCBvZiBwZGZ0cm9uIG9yIGVtaXQgdGhlIGV2ZW50IG91dHNpZGUgdG8gaGFuZGxlIHByaW50ZnJvbSBvdXRzaWRlXHJcblx0QE91dHB1dCgpIG9uRG93bmxvYWRpbmdTaWduZWREb2N1bWVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdXNlZCB0byB0ZWxsIG91dHNpZGUgd2UgbmVlZCBkb3dubG9hZCBzaWduZWQgZG9jdW1lbnQgdG8gZG93bmxvYWQgaXQgd2l0aCBwcm9wZXIgd2F5IGRpZmZyZW50IGZyb20gZXhwb3J0IG9mIHBkZnRyb25cclxuXHRAT3V0cHV0KCkgb25BZGRpbmdBbm90YXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHVzZWQgdG8gZXhwb3J0IGFsbCBhbm90YXRpb25zIHRvIG91dHNpZGVcclxuXHRAT3V0cHV0KClcclxuXHRldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIFNpZ25hdHVyZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB1c2VkIHRvIGV4cG9ydCBzaWduYXR1cmUgdG8gb3V0c2lkZVxyXG5cdGZpcnN0VGltZUxvYWQgPSB0cnVlOyAvL2ZsYWdlIHRvIGNvbnRyb2wgaW1wb3J0aW5nIHNpZ25hdHVyZXMgaW4gdGhlIGZpcnN0IHRpbWUgbG9hZCBvbmx5XHJcblx0Zmlyc3RTaWduYXR1cmVMb2FkID0gdHJ1ZTsgLy8gZmxhZ2UgdG8gcGFzcyBmaXJzdCBsb2FkIG9mIGltcG9ydGVkIHNpZ25hdHVyZXMgd2l0aG91dCBlbWl0dGluZyB0aGUgZXZlbnRcclxuXHRuZXdTaWduQ3JlYXRpb24gPSBmYWxzZTsgLy8gZmxhZ2UgdG8gaW5kaWNhdGUgc2lnbmF0dXJlIGNyZWF0aW9uIGlzIGNyZWF0ZWQgb3IgY2hvb3NlZCBmcm9tIHN0b3JlZCBvbmVzXHJcblx0dHJhbnNlbGF0aW9uU3Vic2NyaXRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRpc0FyYWJpYztcclxuXHJcblx0Ly9zaWxlbnQgcGRmVHJvblxyXG5cdHNpbGVudFBkZlRyb246IEhUTUxFbGVtZW50O1xyXG5cdG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcblx0cmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHJpdmF0ZSBwZGZ0cm9uU2VydmljZTogUGRmdHJvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIG51eGVvOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRASW5qZWN0KEFQUF9CQVNFX0hSRUYpIHByaXZhdGUgYmFzZUhyZWY6IHN0cmluZyxcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHNpbGVudFBkZlRyb25TZXJ2aWNlOiBTaWxlbnRQZGZUcm9uU2VydmljZSxcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudFxyXG5cdCkge31cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblx0XHR0aGlzLnRyYW5zZWxhdGlvblN1YnNjcml0aW9uID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaXNBcmFiaWMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0FyYWJpYyA9IHJlcztcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheSA9IHRoaXMuc2VhcmNoU3RyaW5nLnRyaW0oKSA/IHRoaXMuc2VhcmNoU3RyaW5nLnNwbGl0KCcsJykgOiBbXTtcclxuXHRcdGlmICh0aGlzLmZpbGVUaXRsZSkge1xyXG5cdFx0XHRpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5wcHQnKSkge1xyXG5cdFx0XHRcdHRoaXMuRE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5wcHR4JykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbic7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5maWxlVGl0bGUuZW5kc1dpdGgoJy5kb2MnKSkge1xyXG5cdFx0XHRcdHRoaXMuRE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9tc3dvcmQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcuZG9jeCcpKSB7XHJcblx0XHRcdFx0dGhpcy5ET0NVTUVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmlzRW5hYmxlZCkge1xyXG5cdFx0XHRbdGhpcy5zaWxlbnRQZGZUcm9uLCB0aGlzLndlYlZpZXdlckluc3RhbmNlXSA9IGF3YWl0IHRoaXMuc2lsZW50UGRmVHJvblNlcnZpY2UuZ2V0V2ViVmlld2VyKCk7XHJcblx0XHRcdHRoaXMuI2FmdGVyTG9hZFdlYlZpZXdlcih0aGlzLndlYlZpZXdlckluc3RhbmNlKTtcclxuXHJcblx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuI3VwZGF0ZVNpbGVudFBkZlRyb24oKSk7XHJcblx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xyXG5cclxuXHRcdFx0dGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLiN1cGRhdGVTaWxlbnRQZGZUcm9uKCkpO1xyXG5cdFx0XHR0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy52aWV3ZXJSZWYubmF0aXZlRWxlbWVudCk7XHJcblxyXG5cdFx0XHR0aGlzLiN1cGRhdGVTaWxlbnRQZGZUcm9uKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRXZWJWaWV3ZXIoXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0cGF0aDogdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3BkZnRyb25zJyxcclxuXHRcdFx0XHRcdGZvcmNlQ2xpZW50U2lkZUluaXQ6IHRydWUsXHJcblx0XHRcdFx0XHRzdHJlYW1pbmc6IHRydWUsXHJcblx0XHRcdFx0XHRmdWxsQVBJOiB0aGlzLmltcG9ydEZ1bGxBcGkoKSxcclxuXHRcdFx0XHRcdGxpY2Vuc2VLZXk6IHRoaXMuZW52aXJvbm1lbnQucGRmdHJvbkxpY2VuY2VLZXksXHJcblx0XHRcdFx0XHRjc3M6IHRoaXMuaXNBcmFiaWNcclxuXHRcdFx0XHRcdFx0PyB0aGlzLmJhc2VIcmVmICsgJy9hc3NldHMvc3R5bGVzL2FyLW15cGRmdHJvbi5jc3MnXHJcblx0XHRcdFx0XHRcdDogdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3N0eWxlcy9lbi1teXBkZnRyb24uY3NzJyxcclxuXHRcdFx0XHRcdGFubm90YXRpb25Vc2VyOlxyXG5cdFx0XHRcdFx0XHR0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcy5maXJzdE5hbWUgKyAnICcgKyB0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcy5sYXN0TmFtZSxcclxuXHRcdFx0XHRcdGRpc2FibGVkRWxlbWVudHM6IFsnZG93bmxvYWRCdXR0b24nLCAncHJpbnRCdXR0b24nXVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dGhpcy52aWV3ZXJSZWYubmF0aXZlRWxlbWVudFxyXG5cdFx0XHQpLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XHJcblx0XHRcdFx0dGhpcy4jYWZ0ZXJMb2FkV2ViVmlld2VyKGluc3RhbmNlKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdCN1cGRhdGVTaWxlbnRQZGZUcm9uKCkge1xyXG5cdFx0Y29uc3QgcmVjdCA9IHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRPYmplY3QuYXNzaWduKHRoaXMuc2lsZW50UGRmVHJvbi5zdHlsZSwge1xyXG5cdFx0XHRwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuXHRcdFx0dG9wOiBgJHtyZWN0LnRvcH1weGAsXHJcblx0XHRcdGxlZnQ6IGAke3JlY3QubGVmdH1weGAsXHJcblx0XHRcdHdpZHRoOiBgJHtyZWN0LndpZHRofXB4YCxcclxuXHRcdFx0aGVpZ2h0OiBgJHtyZWN0LmhlaWdodH1weGAsXHJcblx0XHRcdHpJbmRleDogJzk5OScsXHJcblx0XHRcdGRpc3BsYXk6ICdibG9jaydcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0I2FmdGVyTG9hZFdlYlZpZXdlcihpbnN0YW5jZSkge1xyXG5cdFx0dGhpcy5pc0FyYWJpYyA/IGluc3RhbmNlLnNldExhbmd1YWdlKCdhcicpIDogaW5zdGFuY2Uuc2V0TGFuZ3VhZ2UoJ2VuJyk7XHJcblx0XHR0aGlzLnBkZnRyb25TZXJ2aWNlLmluc3RhbmNlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG5cdFx0aWYgKHRoaXMuY29ycmVzcG9uZGFuY2UuZmFjZXRzLmluZGV4T2YoJ2N0b2NyJykgPiAtMSAmJiB0aGlzLmNvcnJlc3BvbmRhbmNlPy5wcm9wZXJ0aWVzPy5bJ2N0b2NyOnJlY29nbml6ZWRKc29uJ10pIHtcclxuXHRcdFx0dGhpcy5maWxlV2l0aE9jciA9IHRydWU7XHJcblx0XHRcdHRoaXMucGFnZXMgPSB0aGlzLnJlY29nbml6ZWRKc29uP0pTT04ucGFyc2UodGhpcy5yZWNvZ25pemVkSnNvbikgOiBKU09OLnBhcnNlKHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1snY3RvY3I6cmVjb2duaXplZEpzb24nXSk7XHJcblx0XHRcdC8vIG92ZXJyaWRlIHNlYXJjaCBmdW50aW9uIHRvIHVzZSBvdXIgc2VhcmNoIGluIG9jciBub3QgZGVmdWx0IHNlYXJjaFxyXG5cdFx0XHRpbnN0YW5jZS5vdmVycmlkZVNlYXJjaEV4ZWN1dGlvbih0aGlzLnNlYXJjaEZuKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIGlmIG5vIG9jciB0aGVuIGFkZCBzZWFyY2ggbGlzbmVyIHRvIGxpc25lIHRvIGludGVybmFsIHNlYXJjaCBhbmQgY2F0Y2ggcmVzdWx0c1xyXG5cdFx0XHR0aGlzLmFkZFNlYXJjaExpc3RuZXIoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWRkUHJpbnRCdXR0b24oKTtcclxuXHRcdHRoaXMuYWRkRG93bmxvYWRCdXR0b24oKTtcclxuXHRcdHRoaXMuaW1wb3J0U2lnbmF0dXJlKCk7XHJcblx0XHR0aGlzLmV4cG9ydGluZ1NpZ25hdHVyZSgpO1xyXG5cdFx0dGhpcy5kZWxldGVBbm5vdGF0aW9uKCk7XHJcblx0XHR0aGlzLmV4cG9ydGluZ1NhdmVkU2lnbmF0dXJlKCk7XHJcblx0XHRpZiAodGhpcy51c2VPdXRzaWRlQW5vdGF0aW9ucykge1xyXG5cdFx0XHR0aGlzLmltcG9ydEFub3RhdGlvbnNGcm9tT3V0c2lkZSgpO1xyXG5cdFx0XHR0aGlzLmV4cG9ydEFub3RhdGlvbnNUb091dHNpZGUoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLnNldFNlYXJjaEhpZ2hsaWdodENvbG9ycyh7XHJcblx0XHRcdC8vIHNldFNlYXJjaEhpZ2hsaWdodENvbG9ycyBhY2NlcHRzIGJvdGggQW5ub3RhdGlvbnMuQ29sb3Igb2JqZWN0cyBvciAncmdiYScgc3RyaW5nc1xyXG5cdFx0XHRzZWFyY2hSZXN1bHQ6IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KSxcclxuXHRcdFx0YWN0aXZlU2VhcmNoUmVzdWx0OiBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5NilcclxuXHRcdH0pO1xyXG5cdFx0aWYgKHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheS5sZW5ndGggIT09IDApIHtcclxuXHRcdFx0dGhpcy5hdXRvbWF0aWNTZWFyY2godGhpcy5yZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5KTtcclxuXHRcdH1cclxuXHRcdHRoaXMubG9hZERvY3VtZW50KCk7XHJcblx0fVxyXG5cclxuXHQvLyBmdW50aW9uIHRvIGNoZWNrIHRvIGltcG9ydCB0aGUgZnVsbCBhcGkgb3Igbm90IGFjY29yZGluZyB0byBhY3Rpb24gb2YgYWRkIHN0aWNrZXIgZXhpc3Qgb3Igbm90XHJcblx0aW1wb3J0RnVsbEFwaSgpe1xyXG5cdFx0bGV0IHVzZUZ1bGxBcGkgPSBmYWxzZTtcclxuICAgICAgICAvLyBsZXQgYWN0aW9uRXhpc3QgPSBbJ2FkZFFyY29kZScgLCAnc2VsZWN0UXJjb2RlJ10uc29tZShpdGVtID0+IHRoaXMuY29ycmVzcG9uZGFuY2UuY29udGV4dFBhcmFtZXRlcnMuYWN0aW9ucy5pbmNsdWRlcyhpdGVtKSk7XHJcblx0XHRsZXQgbG9ja01vZGVFeGlzdCA9IHRoaXMucGRmdHJvblNlcnZpY2UubW9kZSA9PT0gJ2FkZFFyY29kZSc7XHJcblx0XHRpZih0aGlzLmZsYXR0ZW5Bbm90YXRpb24gJiYgbG9ja01vZGVFeGlzdCl7XHJcblx0XHRcdHVzZUZ1bGxBcGkgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHVzZUZ1bGxBcGlcclxuXHR9XHJcblxyXG5cdGltcG9ydEFub3RhdGlvbnNGcm9tT3V0c2lkZSgpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblxyXG5cdFx0ZG9jdW1lbnRWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5pbXBvcnRBbm5vdGF0aW9ucyh0aGlzLmltcG9ydGVkQW5vdGF0aW9ucyk7XHJcblx0XHR9KTtcclxuXHRcdC8vIC50aGVuKGFubm90YXRpb25zID0+IHtcclxuXHRcdC8vICAgYW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcclxuXHRcdC8vICAgICB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24pO1xyXG5cdFx0Ly8gICB9KTtcclxuXHRcdC8vIH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gZXhjdHJhY3QgYWxsIGFub3RhdGlvbnMgb24gdGhlIGZpbGUgYW5kIHNlbmQgaXQgb3V0IHNpZGUgdG8gYmUgc2F2ZWQgYW5kIGxlYXZlIHRoZSBmaWxlIGFzIGl0IGlzIHdpdGhvdXQgYW55IGFub3RhdGlvbnMgb24gaXRcclxuXHRleHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCkge1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIub24oJ2Fubm90YXRpb25DaGFuZ2VkJywgKGFubm90YXRpb25zLCBhY3Rpb24sIHsgaW1wb3J0ZWQgfSkgPT4ge1xyXG5cdFx0XHRpZiAoaW1wb3J0ZWQpIHJldHVybjtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZXhwb3J0QW5ub3RhdGlvbnMoKS50aGVuKChleGN0cmFjdGVkQW5vdGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdHRoaXMub25BZGRpbmdBbm90YXRpb24uZW1pdChleGN0cmFjdGVkQW5vdGF0aW9ucyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHQvLyBpZiB0cmFja2luZyBzaWduYXR1cmUgbG9jYXRpb24gaXMgZW5hYmxlIHRoZW4gZW1pdCBzaWduYXR1cmUgb3V0c2lkZSB3aXRoIGV2ZXJ5IGNoYW5nZXMgaW4gaXRcclxuXHRcdFx0aWYgKHRoaXMudHJhY2tTaWduYXR1cmUpIHtcclxuXHRcdFx0XHR0aGlzLm9uU2lnbmF0dXJlVHJhY2tpbmcuZW1pdCh7IGFub3RhdGlvbnM6IGFubm90YXRpb25zLCBhY3Rpb246IGFjdGlvbiB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRpbXBvcnRTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3Qgc2lnbmF0dXJlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHJcblx0XHRkb2N1bWVudFZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmZpcnN0VGltZUxvYWQpIHtcclxuXHRcdFx0XHRzaWduYXR1cmVUb29sLmltcG9ydFNpZ25hdHVyZXMoWy4uLnRoaXMudXNlclNpZ25hdHVyZXNdKTtcclxuXHRcdFx0XHR0aGlzLmZpcnN0VGltZUxvYWQgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblx0XHRjb25zdCBTaWduYXR1cmVDcmVhdGVUb29sID0gZG9jdW1lbnRWaWV3ZXIuZ2V0VG9vbCgnQW5ub3RhdGlvbkNyZWF0ZVNpZ25hdHVyZScpO1xyXG5cdFx0U2lnbmF0dXJlQ3JlYXRlVG9vbC5vbignc2lnbmF0dXJlU2F2ZWQnLCAoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRpZiAoIXRoaXMuZmlyc3RTaWduYXR1cmVMb2FkKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3NpZ25hdHVyZSBzYXZlZCB0cmlnZXJlZCcpO1xyXG5cdFx0XHRcdHRoaXMubmV3U2lnbkNyZWF0aW9uID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCA9IGZhbHNlO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRpbmdTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ2Fubm90YXRpb25BZGRlZCcsIChhbm5vdGF0aW9uKSA9PiB7XHJcblx0XHRcdGlmIChhbm5vdGF0aW9uICYmIHRoaXMubmV3U2lnbkNyZWF0aW9uKSB7XHJcblx0XHRcdFx0dGhpcy5uZXdTaWduQ3JlYXRpb24gPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGFubm90YXRpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpIHtcclxuXHRcdGlmIChhbm5vdGF0aW9uWydpbWFnZSddKSB7XHJcblx0XHRcdC8vIGNvbnZlcnQgYmFzZTY0IHNpZ25hdHVyZSBpbnRvIGZpbGUgYW5kIGVtaXQgaXQgdG8gb3V0IHNpZGVcclxuXHRcdFx0bGV0IGJhc2U2NEltZyA9IGFubm90YXRpb25bJ2ltYWdlJ11bJ2N1cnJlbnRTcmMnXTtcclxuXHRcdFx0dmFyIGFyciA9IGJhc2U2NEltZy5zcGxpdCgnLCcpLFxyXG5cdFx0XHRcdG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuXHRcdFx0XHRic3RyID0gYXRvYihhcnJbMV0pLFxyXG5cdFx0XHRcdG4gPSBic3RyLmxlbmd0aCxcclxuXHRcdFx0XHR1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG5cdFx0XHR3aGlsZSAobi0tKSB7XHJcblx0XHRcdFx0dThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IG5hbWUgPSBtaW1lLnJlcGxhY2UoJy8nLCAnLicpO1xyXG5cdFx0XHRsZXQgbXlGaWxlID0gbmV3IEZpbGUoW3U4YXJyXSwgJ215U2lnbmF0dXJlLnBuZycsIHsgdHlwZTogbWltZSB9KTtcclxuXHRcdFx0dGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogbXlGaWxlLCBldmVudE5hbWU6ICdleHBvcnQnIH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5leHRyYWN0QW5ub3RhdGlvblNpZ25hdHVyZShhbm5vdGF0aW9uLCBkb2N1bWVudFZpZXdlcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHRyYWN0QW5ub3RhdGlvblNpZ25hdHVyZShhbm5vdGF0aW9uLCBkb2NWaWV3ZXIpIHtcclxuXHRcdC8vIENyZWF0ZSBhIG5ldyBDYW52YXMgdG8gZHJhdyB0aGUgQW5ub3RhdGlvbiBvblxyXG5cdFx0Y29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcblx0XHQvLyBSZWZlcmVuY2UgdGhlIGFubm90YXRpb24gZnJvbSB0aGUgRG9jdW1lbnRcclxuXHRcdGNvbnN0IHBhZ2VNYXRyaXggPSBkb2NWaWV3ZXIuZ2V0RG9jdW1lbnQoKS5nZXRQYWdlTWF0cml4KGFubm90YXRpb24uUGFnZU51bWJlcik7XHJcblx0XHQvLyBTZXQgdGhlIGhlaWdodCAmIHdpZHRoIG9mIHRoZSBjYW52YXMgdG8gbWFkZWxldGVTYXZlZFNpZ25hdHVyZXRjaCB0aGUgYW5ub3RhdGlvblxyXG5cdFx0Y2FudmFzLmhlaWdodCA9IGFubm90YXRpb24uSGVpZ2h0O1xyXG5cdFx0Y2FudmFzLndpZHRoID0gYW5ub3RhdGlvbi5XaWR0aDtcclxuXHRcdGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cdFx0Ly8gVHJhbnNsYXRlIHRoZSBBbm5vdGF0aW9uIHRvIHRoZSB0b3AgVG9wIExlZnQgQ29ybmVyIG9mIHRoZSBDYW52YXMgaWUgKDAsIDApXHJcblx0XHRjdHgudHJhbnNsYXRlKC1hbm5vdGF0aW9uLlgsIC1hbm5vdGF0aW9uLlkpO1xyXG5cdFx0Ly8gRHJhdyB0aGUgQW5ub3RhdGlvbiBvbnRvIHRoZSBDYW52YXNcclxuXHRcdGFubm90YXRpb24uZHJhdyhjdHgsIHBhZ2VNYXRyaXgpO1xyXG5cdFx0Ly8gQ29udmVydCB0aGUgQ2FudmFzIHRvIGEgQmxvYiBPYmplY3QgZm9yIFVwbG9hZFxyXG5cdFx0Y2FudmFzLnRvQmxvYigoYmxvYikgPT4ge1xyXG5cdFx0XHQvLyBDYWxsIHlvdXIgQmxvYiBTdG9yYWdlIFVwbG9hZCBGdW5jdGlvblxyXG5cdFx0XHRsZXQgbmFtZSA9IGJsb2IudHlwZS5yZXBsYWNlKCcvJywgJy4nKTtcclxuXHRcdFx0bGV0IG15RmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgbmFtZSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IG15RmlsZSwgZXZlbnROYW1lOiAnZXhwb3J0JyB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZGVsZXRlQW5ub3RhdGlvbigpIHtcclxuXHRcdGNvbnN0IGRvY3VtZW50Vmlld2VyID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXI7XHJcblx0XHRjb25zdCBTaWduYXR1cmVDcmVhdGVUb29sID0gZG9jdW1lbnRWaWV3ZXIuZ2V0VG9vbCgnQW5ub3RhdGlvbkNyZWF0ZVNpZ25hdHVyZScpO1xyXG5cdFx0U2lnbmF0dXJlQ3JlYXRlVG9vbC5vbignc2lnbmF0dXJlRGVsZXRlZCcsIChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRjb25zb2xlLmxvZygndGhlcmUgd2VyZSBhbm5vdGF0aW9ucyBkZWxldGVkJyk7XHJcblx0XHRcdHRoaXMudXNlclNpZ25hdHVyZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5TaWduYXR1cmVFdmVudC5lbWl0KHsgZGF0YTogeyBzaWduYXR1cmU6IGFubm90YXRpb24sIGluZGV4OiBpbmRleCB9LCBldmVudE5hbWU6ICdkZWxldGUnIH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhZGREb3dubG9hZEJ1dHRvbigpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5hbGxvd0Rvd25sb2FkU2VjcmV0RmlsZSB8fFxyXG5cdFx0XHQoIXRoaXMuYWxsb3dEb3dubG9hZFNlY3JldEZpbGUgJiZcclxuXHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSA9PT0gJ05vcm1hbCcpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRIZWFkZXJJdGVtcygoaGVhZGVyKSA9PiB7XHJcblx0XHRcdFx0aGVhZGVyLnB1c2goe1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FjdGlvbkJ1dHRvbicsXHJcblx0XHRcdFx0XHRpbWc6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgY2xhc3M9XCJiaSBiaS1maWxlLWVhcm1hcmstYXJyb3ctZG93blwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj4gPHBhdGggZD1cIk04LjUgNi41YS41LjUgMCAwIDAtMSAwdjMuNzkzTDYuMzU0IDkuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMiAyYS41LjUgMCAwIDAgLjcwOCAwbDItMmEuNS41IDAgMCAwLS43MDgtLjcwOEw4LjUgMTAuMjkzVjYuNXpcIi8+IDxwYXRoIGQ9XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCIvPjwvc3ZnPicsXHJcblx0XHRcdFx0XHR0aXRsZTogdGhpcy5pc0FyYWJpYyA/ICfYqtmG2LLZitmEJyA6ICdEb3dubG9hZCcsXHJcblx0XHRcdFx0XHRvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGlmIHdhc24ndCBzaWduZWQgZG9jdW1lbnQgdGhlbiBkb3dubG9hZCBpdCB1c2luZyBwZGZ0cm9uIG5vcm1hbCBkb253bmxvYWRcclxuXHRcdFx0XHRcdFx0aWYoIXRoaXMuaXNTaWduZWREb2N1bWVudCl7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgeGZkZlN0cmluZyA9IGF3YWl0IHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmV4cG9ydEFubm90YXRpb25zKCk7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGZpbGVuYW1lOiB0aGlzLmNvcnJlc3BvbmRhbmNlLnRpdGxlID8gdGhpcy5jb3JyZXNwb25kYW5jZS50aXRsZSA6ICdteURvY3VtZW50LnBkZicsXHJcblx0XHRcdFx0XHRcdFx0XHR4ZmRmU3RyaW5nLFxyXG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZUFubm90YXRpb25zOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZG93bmxvYWRUeXBlOiAncGRmJ1xyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5kb3dubG9hZFBkZihvcHRpb25zKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmV2ZW50cy5uZXh0KCdkb3dubG9hZCcpO1xyXG5cdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHQvLyBpZiBpdCB3YXMgc2lnbmVkIGRvY3VtZW50IHRoZW4gZG93bmxvYWQgaXQgYnkgZnVuY3Rpb24gZnJvbSBvdXRzaWRlIHRvIGF2b2lkIFxyXG5cdFx0XHRcdFx0XHRcdC8vIGxvb3Npbmcgc2lnbmluZyBpbmZvcm1hdGlvbiB0aGF0IGhhcHBlbnMgaWYgaSBkb3dubG9hZCBpdCBmcm9tIHBkZnRyb24gaXRzZWxmXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5vbkRvd25sb2FkaW5nU2lnbmVkRG9jdW1lbnQuZW1pdCgpXHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8vIGxldCB1cmwgPSB0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXMuY29udGVudC5kYXRhO1xyXG5cdFx0XHRcdFx0XHQvLyBsZXQgZmlsZU5hbWUgPSB0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXMuY29udGVudC5uYW1lO1xyXG5cdFx0XHRcdFx0XHQvLyBpZiAodXJsICYmIGZpbGVOYW1lKSB7XHJcblx0XHRcdFx0XHRcdC8vICAgbGV0IHNhZmVVcmwgPSB0aGlzLnNlY3VyZVBpcGUudHJhbnNmb3JtKHVybCk7XHJcblx0XHRcdFx0XHRcdC8vICAgc2FmZVVybC5zdWJzY3JpYmUoKHVybDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgbGluay5ocmVmID0gdXJsLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7XHJcblx0XHRcdFx0XHRcdC8vICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcblx0XHRcdFx0XHRcdC8vICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgbGluay5jbGljaygpO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIHRoaXMuZXZlbnRzLm5leHQoJ2Rvd25sb2FkJyk7XHJcblx0XHRcdFx0XHRcdC8vICAgfSk7XHJcblx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhZGRQcmludEJ1dHRvbigpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5hbGxvd1ByaW50U2VjcmV0RmlsZSB8fFxyXG5cdFx0XHQoIXRoaXMuYWxsb3dQcmludFNlY3JldEZpbGUgJiZcclxuXHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSA9PT0gJ05vcm1hbCcpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRIZWFkZXJJdGVtcygoaGVhZGVyKSA9PiB7XHJcblx0XHRcdFx0aGVhZGVyLnB1c2goe1xyXG5cdFx0XHRcdFx0dHlwZTogJ2FjdGlvbkJ1dHRvbicsXHJcblx0XHRcdFx0XHRpbWc6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNhYmIwYzQ7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5pY29uIC0gaGVhZGVyIC0gcHJpbnQgLSBsaW5lPC90aXRsZT48cGF0aCBjbGFzcz1cImNscy0xXCIgZD1cIk0yMCw2SDE4VjJINlY2SDRBMiwyLDAsMCwwLDIsOHY5YTIsMiwwLDAsMCwyLDJINnYzSDE4VjE5aDJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwyMCw2Wk04LDRoOFY2SDhabTgsMTZIOFYxNmg4Wm00LTNIMThWMTRINnYzSDRWOEgyMFptLTQtN2gydjJIMTZabS0zLDBoMnYySDEzWlwiPjwvcGF0aD48L3N2Zz4nLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuaXNBcmFiaWMgPyAn2LfYqNin2LnYqScgOiAnUHJpbnQnLFxyXG5cdFx0XHRcdFx0b25DbGljazogKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFsbG93UHJpbnRGcm9tT3V0U2lkZSl7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ldmVudHMubmV4dCgncHJpbnQnKTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZS5wcmludCgpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXZlbnRzLm5leHQoJ3ByaW50Jyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbJ3ByaW50TW9kYWwnXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhZGRXYXRlcm1hcmsoKSB7XHJcblx0XHRjb25zdCB1c2VyaW5mbyA9IHRoaXMubnV4ZW8ubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzO1xyXG5cdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5hZGRXYXRlcm1hcmsoXHJcblx0XHRcdGAke3VzZXJpbmZvLnVzZXJuYW1lfSAgICBgXHJcblx0XHRcdC8vIGAke3VzZXJpbmZvLmZpcnN0TmFtZX0gJHtcclxuXHRcdFx0Ly8gICB1c2VyaW5mby5sYXN0TmFtZVxyXG5cdFx0XHQvLyB9IGBcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQjZG9jTG9hZGVkID0gKCkgPT4ge1xyXG5cdFx0bGV0IGZpdE1vZGUgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLkZpdE1vZGUuRml0V2lkdGg7XHJcblx0XHRpZiAodGhpcy5maXRNb2RlID09PSAnRml0UGFnZScpIHtcclxuXHRcdFx0Zml0TW9kZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuRml0TW9kZS5GaXRQYWdlO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLmZpdE1vZGUgPT09ICdab29tJykge1xyXG5cdFx0XHRmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLlpvb207XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEZpdE1vZGUoZml0TW9kZSk7XHJcblx0fTtcclxuXHRsb2FkRG9jdW1lbnQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMud2ViVmlld2VySW5zdGFuY2UgfHwgKCF0aGlzLmZpbGVEYXRhICYmICF0aGlzLmZpbGVVUkwpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHsgZG9jVmlld2VyLCBhbm5vdE1hbmFnZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsIHRoaXMuI2RvY0xvYWRlZCk7XHJcblx0XHRpZiAoIXRoaXMuZWRpdE1vZGUpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcblx0XHRcdC8vIGluc3RhbmNlLmVuYWJsZVRvb2xzKFtdKTtcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmZpbGVVUkwgJiYgdGhpcy5maWxlVVJMLmxlbmd0aCkge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmxvYWREb2N1bWVudCh0aGlzLmZpbGVVUkwsIHtcclxuXHRcdFx0XHR4b2RzdHJlYW1pbmc6IHRydWUsXHJcblx0XHRcdFx0Y3VzdG9tSGVhZGVyczoge1xyXG5cdFx0XHRcdFx0QXV0aG9yaXphdGlvbjogdGhpcy5hdXRoSGVhZGVyXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmxvYWREb2N1bWVudChuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkodGhpcy5maWxlRGF0YSldLCB7IHR5cGU6IHRoaXMuRE9DVU1FTlRfVFlQRSB9KSwge1xyXG5cdFx0XHRcdGZpbGVuYW1lOiB0aGlzLmZpbGVUaXRsZVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuXHRcdC8vIGlmIG5vdCBuZWdlbGN0aW5nIGFkZGluZyB3YXRlciBtYXJrIHRoZW4gY2hlY2sgY29uZGl0aW9ucyBmb3IgYWRkaW5nIGl0XHJcblx0XHRpZiAoIXRoaXMubmVnZWxlY3RBZGRpbmdXYXRlck1hcmspIHtcclxuXHRcdFx0aWYgKHRoaXMuY29ycmVzcG9uZGFuY2UgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdC8vIGlmIHdlIG5lZWQgdG8gY2hlY2sgb24gc2VjcmVjeSBsZXZlbCBmb3IgYWRkaW5nIHdhdGVyIG1hcmsgb3Igbm90XHJcblx0XHRcdFx0aWYgKHRoaXMuZW52aXJvbm1lbnQuZW5hYmxlVmlld2VyV2F0ZXJNYXJrICYmIHRoaXMuc2VjcmVjeVByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHQvLyBjaGVjayBmb3Igc2VjcmVjeSBsZXZlbCBiZWZvciBhZGRpbmcgd2F0ZXJtYXJrXHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAhPT0gJ05vcm1hbCdcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmFkZFdhdGVybWFyaygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5lbnZpcm9ubWVudC5lbmFibGVWaWV3ZXJXYXRlck1hcmsgJiYgIXRoaXMuc2VjcmVjeVByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHR0aGlzLmFkZFdhdGVybWFyaygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZXhwb3J0QXNCbG9iKCk6IFByb21pc2U8QmxvYj4ge1xyXG5cdFx0Y29uc3QgZG9jID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0RG9jdW1lbnQoKTtcclxuXHRcdGNvbnN0IHhmZGZTdHJpbmcgPSBhd2FpdCB0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5leHBvcnRBbm5vdGF0aW9ucygpO1xyXG5cdFx0Y29uc3QgZGF0YSA9IGF3YWl0IGRvYy5nZXRGaWxlRGF0YSh7XHJcblx0XHRcdC8vIHNhdmVzIHRoZSBkb2N1bWVudCB3aXRoIGFubm90YXRpb25zIGluIGl0XHJcblx0XHRcdHhmZGZTdHJpbmdcclxuXHRcdH0pO1xyXG5cdFx0Y29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7XHJcblx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW2Fycl0sIHsgdHlwZTogdGhpcy5ET0NVTUVOVF9UWVBFIH0pO1xyXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShibG9iKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZUVkaXQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuYWN0aW9uQ2xpY2tlZCkge1xyXG5cdFx0XHQvLyBhY3Rpb24gY2xpY2tlZCBpcyBub3QgY2xpY2tlZCB0aGVuIG5vIHVwZGF0ZSBtb2RlIG9wZW5lZFxyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0J3Rvb2xiYXJHcm91cC1TaGFwZXMnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtRWRpdCcsXHJcblx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXHJcblx0XHRcdF0pO1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seSh0cnVlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIGVkaXQgbW9kZSBvcGVuZWQgYW5kIG11c3QgYmUgd2hlbiBhY3Rpb24gaXMgY2xpY2tlZFxyXG5cdFx0XHRpZiAodGhpcy5lZGl0aW5nVHlwZSkge1xyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZGlzYWJsZUVsZW1lbnRzKFtcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtU2hhcGVzJyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtRWRpdCcsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUluc2VydCcsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUFubm90YXRlJ1xyXG5cdFx0XHRcdF0pO1xyXG5cdFx0XHRcdGxldCBncm91cDtcclxuXHRcdFx0XHRpZiAodGhpcy5lZGl0aW5nVHlwZSA9PT0gJ3NpZ25Eb2MnKSB7XHJcblx0XHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmVuYWJsZUVsZW1lbnRzKFsndG9vbGJhckdyb3VwLUluc2VydCddKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZWRpdGluZ1R5cGUgPT09ICdhbm5vdGF0ZScpIHtcclxuXHRcdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZW5hYmxlRWxlbWVudHMoWyd0b29sYmFyR3JvdXAtU2hhcGVzJywgJ3Rvb2xiYXJHcm91cC1FZGl0JywgJ3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSddKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSdcclxuXHRcdFx0XHRdKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seShmYWxzZSk7XHJcblx0XHRcdC8vIHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0VG9vbGJhckdyb3VwKCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLndlYlZpZXdlckluc3RhbmNlKSB7XHJcblx0XHRcdHRoaXMudG9nZ2xlRWRpdCgpO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0Y2hhbmdlcy51cmxGaWxlQ29udGVudCAmJlxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQucHJldmlvdXNWYWx1ZSAmJlxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcy51cmxGaWxlQ29udGVudC5jdXJyZW50VmFsdWVcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy5uZ09uRGVzdHJveSgpO1xyXG5cdFx0XHRcdHRoaXMubmdPbkluaXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwZGZUcm9uRXZlbnQoZXZlbnQpIHtcclxuXHRcdGlmICh0aGlzW2V2ZW50LmFjdGlvbl0pIHtcclxuXHRcdFx0Ly8gbWV0aG9kIGV4aXN0cyBpbiB0aGUgY29tcG9uZW50XHJcblx0XHRcdC8vICB0aGlzW2V2ZW50LmFjdGlvbl0oZXZlbnQucGFyYW1zKTsgLy8gY2FsbCBpdFxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzZWFyY2ggcmVzdWx0cyBzZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRwYWdlczogYW55O1xyXG5cdHN0YW5kYXJkSGVpZ2h0O1xyXG5cdHN0YW5kYXJkV2lkdGg7XHJcblx0cGFnZUhlaWdodDtcclxuXHRwYWdlV2lkdGg7XHJcblx0c2F2ZWRBbm90YXRpb25zID0gW107XHJcblx0ZmlsZVdpdGhPY3IgPSBmYWxzZTtcclxuXHRuZXdBbm5vdGF0aW9ucyA9IFtdO1xyXG5cdG15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdO1xyXG5cdHJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkgPSBbXTtcclxuXHJcblx0Ly8gYWRkaW5nIHNlYXJjaCBsaXNuZXIgdG8gbGlzZW4gdG8gaW50ZXJuYWwgc2VhcmNoIGZyb20gdWkgYW5kIHdpdGhvdXQgb2NyXHJcblx0YWRkU2VhcmNoTGlzdG5lcigpIHtcclxuXHRcdGNvbnN0IHsgYW5ub3RNYW5hZ2VyLCBkb2NWaWV3ZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0Y29uc3Qgc2VhcmNoTGlzdGVuZXIgPSAoc2VhcmNoUGF0dGVybiwgb3B0aW9ucywgcmVzdWx0cykgPT4ge1xyXG5cdFx0XHR0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdO1xyXG5cdFx0XHRpZiAodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5IaWRkZW4gPSB0cnVlO1xyXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG5cdFx0XHRcdFx0YW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcblx0XHRcdGlmIChzZWFyY2hQYXR0ZXJuLnRyaW0oKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Ly8gYWRkIHJlZGFjdGlvbiBhbm5vdGF0aW9uIGZvciBlYWNoIHNlYXJjaCByZXN1bHRcclxuXHRcdFx0XHR0aGlzLm5ld0Fubm90YXRpb25zID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5RdWFkcyA9IHJlc3VsdC5xdWFkcy5tYXAoKHF1YWQpID0+IHF1YWQuZ2V0UG9pbnRzKCkpO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5QYWdlTnVtYmVyID0gcmVzdWx0LnBhZ2VOdW07XHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uLlN0cm9rZUNvbG9yID0gbmV3IEFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHRcdFx0XHRcdHJldHVybiBhbm5vdGF0aW9uO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLnB1c2goLi4udGhpcy5uZXdBbm5vdGF0aW9ucyk7XHJcblx0XHRcdFx0YW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb25zKHRoaXMubmV3QW5ub3RhdGlvbnMpO1xyXG5cdFx0XHRcdGFubm90TWFuYWdlci5kcmF3QW5ub3RhdGlvbnNGcm9tTGlzdCh0aGlzLm5ld0Fubm90YXRpb25zKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRkb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hZGRTZWFyY2hMaXN0ZW5lcihzZWFyY2hMaXN0ZW5lcik7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIHBlcmZvcm0gYXV0b21hdGljIHNlYXJjaCB3aGVuIGludGVyaW5nIHRoZSBwYWdlXHJcblx0YXV0b21hdGljU2VhcmNoKHNlYXJjaFRleHRBcnJheSkge1xyXG5cdFx0Y29uc3QgeyBhbm5vdE1hbmFnZXIsIGRvY1ZpZXdlciwgQW5ub3RhdGlvbnMgfSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2U7XHJcblx0XHRsZXQgc2VhcmNoT3B0aW9ucztcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uub3BlbkVsZW1lbnRzKFsnc2VhcmNoUGFuZWwnXSk7XHJcblx0XHRkb2NWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBtb2RlID1cclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLkNvcmVDb250cm9scy5TZWFyY2guTW9kZS5QQUdFX1NUT1AgfFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5Nb2RlLkhJR0hMSUdIVCB8XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuQU1CSUVOVF9TVFJJTkc7XHJcblx0XHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107IC8vIGVtcHR5IG15IHNlYXJjaCByZXN1bHQgd2hlbiBzdGFydGluZyBuZXcgc2VhcmNoXHJcblx0XHRcdGlmICh0aGlzLmZpbGVXaXRoT2NyKSB7XHJcblx0XHRcdFx0Ly8gYWRkIHJlZGFjdGlvbiBhbm5vdGF0aW9uIGZvciBlYWNoIHNlYXJjaCByZXN1bHRcclxuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uID0gbmV3IEFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRcdFx0c2VhcmNoVGV4dEFycmF5Lm1hcCgoc2VhcmNoVGV4dCkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IG15U2VhcmNoID0gc2VhcmNoVGV4dC5zcGxpdCgnICcpO1xyXG5cdFx0XHRcdFx0aWYgKG15U2VhcmNoLmxlbmd0aCA+IDEpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgd29yZFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYWdlSGVpZ2h0ID0gcGFnZS5wYWdlX2hlaWdodDtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHRcdHBhZ2Uuem9uZXMuZm9yRWFjaCgoem9uZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0em9uZS5wYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJhZ3JhcGgubGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsaW5lLnRleHQuaW5jbHVkZXMoc2VhcmNoVGV4dCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuU2VhcmNoRm9yV29yZEluTGluZShteVNlYXJjaCwgbGluZSwgaW5kZXggKyAxLCBwYWdlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhlbiBpIGFtIHNlYXJjaGluZyB3aXRoIG9ubHkgb25lIHdvcmRcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hUZXh0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRkb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHRcdFx0dGhpcy5kaXNwYWxheVNlYXJjaFJlc3VsdHMoZG9jVmlld2VyKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzZWFyY2hPcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0Ly8gSWYgdHJ1ZSwgYSBzZWFyY2ggb2YgdGhlIGVudGlyZSBkb2N1bWVudCB3aWxsIGJlIHBlcmZvcm1lZC4gT3RoZXJ3aXNlLCBhIHNpbmdsZSBzZWFyY2ggd2lsbCBiZSBwZXJmb3JtZWQuXHJcblx0XHRcdFx0XHRmdWxsU2VhcmNoOiB0cnVlLFxyXG5cdFx0XHRcdFx0Ly8gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHNlYXJjaCByZXR1cm5zIGEgcmVzdWx0LlxyXG5cdFx0XHRcdFx0b25SZXN1bHQ6IChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gd2l0aCAnUEFHRV9TVE9QJyBtb2RlLCB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZCBhZnRlciBlYWNoIHBhZ2UgaGFzIGJlZW4gc2VhcmNoZWQuXHJcblx0XHRcdFx0XHRcdGlmIChyZXN1bHQucmVzdWx0Q29kZSA9PT0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLlJlc3VsdENvZGUuRk9VTkQpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uID0gbmV3IEFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5RdWFkcyA9IHJlc3VsdC5xdWFkcy5tYXAoKHF1YWQpID0+IHF1YWQuZ2V0UG9pbnRzKCkpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFubm90YXRpb24uUXVhZHMpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uUGFnZU51bWJlciA9IHJlc3VsdC5wYWdlTnVtO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uU3Ryb2tlQ29sb3IgPSBuZXcgQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKGFubm90YXRpb24pO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9ucyhbYW5ub3RhdGlvbl0pO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90TWFuYWdlci5kcmF3QW5ub3RhdGlvbnNGcm9tTGlzdChbYW5ub3RhdGlvbl0pO1xyXG5cdFx0XHRcdFx0XHRcdGRvY1ZpZXdlci5kaXNwbGF5QWRkaXRpb25hbFNlYXJjaFJlc3VsdHMoW3Jlc3VsdF0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZWFyY2hUZXh0QXJyYXkubWFwKChzZWFyY2hlZFRleHQpID0+IHtcclxuXHRcdFx0XHRcdGRvY1ZpZXdlci50ZXh0U2VhcmNoSW5pdChzZWFyY2hlZFRleHQsIG1vZGUsIHNlYXJjaE9wdGlvbnMpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIHNlYXJjaCBmb3Igc2luZ2xlIHdvcmQgaW4gYWxsIHBhZ2VzXHJcblx0c2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoZWRXb3JkKSB7XHJcblx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG5cdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0Y29uc3QgeCA9IHRoaXMucGFnZVdpZHRoIC8gdGhpcy5zdGFuZGFyZFdpZHRoOyAvLyB3aWR0aCByYXRpb1xyXG5cdFx0XHRjb25zdCB5ID0gdGhpcy5wYWdlSGVpZ2h0IC8gdGhpcy5zdGFuZGFyZEhlaWdodDsgLy8gaGVpZ2h0IHJhdGlvXHJcblx0XHRcdHBhZ2Uuem9uZXMuZm9yRWFjaCgoem9uZSkgPT4ge1xyXG5cdFx0XHRcdHpvbmUucGFyYWdyYXBocy5mb3JFYWNoKChwYXJhZ3JhcGgpID0+IHtcclxuXHRcdFx0XHRcdHBhcmFncmFwaC5saW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XHJcblx0XHRcdFx0XHRcdGxpbmUud29yZHMuZm9yRWFjaCgod29yZCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh3b3JkLnRleHQuaW5jbHVkZXMoc2VhcmNoZWRXb3JkKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gYW5ub3RhdGlvbi5QYWdlTnVtYmVyID0gaW5kZXgrMTtcclxuXHRcdFx0XHRcdFx0XHRcdGxldCBxdWFkcyA9IFtcclxuXHRcdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgxOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueCAvIHgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eDI6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgzOiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4NDogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHkxOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTI6IHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC55IC8geSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR5Mzogd29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTQ6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhpZ2xpZ2h0VGV4dChxdWFkcywgaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY29uc3RydWN0U2VhcmNoUmVzdWx0KHNlYXJjaGVkV29yZCwgaW5kZXggKyAxLCBxdWFkcywgbGluZS50ZXh0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBzZWFyY2ggZm9yIHdvcmQgaW4gc2luZ2xlIGxpbmVcclxuXHRTZWFyY2hGb3JXb3JkSW5MaW5lKGxpc3RPZlNlYXJjaGVkV29yZHMsIGxpbmUsIHBhZ2VudW1iZXIsIHBhZ2UpIHtcclxuXHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdHRoaXMuc3RhbmRhcmRIZWlnaHQgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlSGVpZ2h0KHBhZ2VudW1iZXIpO1xyXG5cdFx0dGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKHBhZ2VudW1iZXIpO1xyXG5cdFx0Y29uc3QgeCA9IHRoaXMucGFnZVdpZHRoIC8gdGhpcy5zdGFuZGFyZFdpZHRoOyAvLyB3aWR0aCByYXRpb1xyXG5cdFx0Y29uc3QgeSA9IHRoaXMucGFnZUhlaWdodCAvIHRoaXMuc3RhbmRhcmRIZWlnaHQ7IC8vIGhlaWdodCByYXRpb1xyXG5cdFx0Ly8gZmluZCBvbmx5IHdvcmRzIHJlbGF0ZWQgdG8gbXkgc2VhcmNoIGZvcm0gdGhlIGxpbmVcclxuXHRcdGxldCBteUZvdW5kZWRSZXN1bHRzID0gW107XHJcblx0XHRsZXQgY29ycmVjdFJlc3VsdHMgPSBbXTtcclxuXHRcdGxpbmUud29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChsaXN0T2ZTZWFyY2hlZFdvcmRzLmluZGV4T2Yod29yZC50ZXh0KSA+IC0xKSB7XHJcblx0XHRcdFx0bXlGb3VuZGVkUmVzdWx0cy5wdXNoKHsgd29yZDogd29yZCwgd29yZEluZGV4OiB3b3JkSW5kZXggfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGZpbmQgb25seSB3b3JkcyBleGlzdCBpbiBteSBzZWFyY2ggc2VudGVuY2UgYW5kIG5vdCBzaW5nbGUgYW5kIHJlcGVhdGVkIHdvcmRcclxuXHRcdG15Rm91bmRlZFJlc3VsdHMubWFwKChyZXN1bHQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRteUZvdW5kZWRSZXN1bHRzW2luZGV4XVsnd29yZEluZGV4J10gLSAxID09PVxyXG5cdFx0XHRcdFx0KG15Rm91bmRlZFJlc3VsdHNbaW5kZXggLSAxXSAmJiBteUZvdW5kZWRSZXN1bHRzW2luZGV4IC0gMV1bJ3dvcmRJbmRleCddKSB8fFxyXG5cdFx0XHRcdChteUZvdW5kZWRSZXN1bHRzW2luZGV4ICsgMV0gJiZcclxuXHRcdFx0XHRcdG15Rm91bmRlZFJlc3VsdHNbaW5kZXggKyAxXVsnd29yZEluZGV4J10gLSAxID09PSBteUZvdW5kZWRSZXN1bHRzW2luZGV4XVsnd29yZEluZGV4J10pXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvcnJlY3RSZXN1bHRzLnB1c2gocmVzdWx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gaGlnaGxpaHQgdGhlc2Ugd29yZHMgYWZ0ZXIgZWxlbWluYXRpbmcgYWxsIHJlcGVhdGVkIGFuZCByZWxhdGVkIHdvcmRzXHJcblx0XHQvLyBtdXN0IGJlIGZvciBsb29wIHNwIGkgY2FuIGNvbnRyb2wgdGhlIHN0ZXAgaW4gZWFjaCBsb29wXHJcblx0XHRsZXQgcXVhZHMgPSBbXTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY29ycmVjdFJlc3VsdHMubGVuZ3RoOyBpID0gaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoKSB7XHJcblx0XHRcdHF1YWRzLnB1c2goe1xyXG5cdFx0XHRcdHgxOiBjb3JyZWN0UmVzdWx0c1tpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGggLSAxXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueCAvIHgsXHJcblx0XHRcdFx0eDI6IGNvcnJlY3RSZXN1bHRzW2ldLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnggLyB4LFxyXG5cdFx0XHRcdHgzOiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHR4NDogY29ycmVjdFJlc3VsdHNbaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoIC0gMV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdHkxOiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0eTI6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC55IC8geSxcclxuXHRcdFx0XHR5MzogY29ycmVjdFJlc3VsdHNbaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoIC0gMV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueSAvIHksXHJcblx0XHRcdFx0eTQ6IGNvcnJlY3RSZXN1bHRzW2ldLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLmhpZ2xpZ2h0VGV4dChxdWFkcywgcGFnZW51bWJlcik7XHJcblx0XHRcdHRoaXMuY29uc3RydWN0U2VhcmNoUmVzdWx0KGxpc3RPZlNlYXJjaGVkV29yZHMuam9pbignICcpLCBwYWdlbnVtYmVyLCBxdWFkcywgbGluZS50ZXh0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdFNlYXJjaFJlc3VsdChzZWFyY2hlZFRleHQsIHBhZ2VOdW0sIHF1YWRzLCBsaW5lKSB7XHJcblx0XHRsZXQgbXlTZWFyY2hTdGFydFRleHRJbmRleCA9IGxpbmUuaW5kZXhPZihzZWFyY2hlZFRleHQpO1xyXG5cdFx0bGV0IG15U2VlYXJjaGVkVGV4dEVuZEluZGV4ID0gbXlTZWFyY2hTdGFydFRleHRJbmRleCArIHNlYXJjaGVkVGV4dC5sZW5ndGg7XHJcblx0XHRsZXQgc2VhcmNoUmVzdWx0T2JqZWN0ID0ge1xyXG5cdFx0XHRhbWJpZW50U3RyOiBsaW5lLFxyXG5cdFx0XHRyZXN1bHRTdHI6IHNlYXJjaGVkVGV4dCxcclxuXHRcdFx0cmVzdWx0U3RyU3RhcnQ6IG15U2VhcmNoU3RhcnRUZXh0SW5kZXgsXHJcblx0XHRcdHJlc3VsdFN0ckVuZDogbXlTZWVhcmNoZWRUZXh0RW5kSW5kZXgsXHJcblx0XHRcdHBhZ2VOdW06IHBhZ2VOdW0sXHJcblx0XHRcdHJlc3VsdENvZGU6IDIsXHJcblx0XHRcdHF1YWRzOiBbXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0ZWE6IHF1YWRzWzBdWyd5MyddLFxyXG5cdFx0XHRcdFx0ZmE6IHF1YWRzWzBdWyd5NCddLFxyXG5cdFx0XHRcdFx0aGE6IHF1YWRzWzBdWyd4MSddLFxyXG5cdFx0XHRcdFx0aWE6IHF1YWRzWzBdWyd4MiddLFxyXG5cdFx0XHRcdFx0cEI6IHF1YWRzWzBdWyd4MyddLFxyXG5cdFx0XHRcdFx0cUI6IHF1YWRzWzBdWyd4NCddLFxyXG5cdFx0XHRcdFx0ckI6IHF1YWRzWzBdWyd5MSddLFxyXG5cdFx0XHRcdFx0c0I6IHF1YWRzWzBdWyd5MiddXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRdXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMucHVzaChzZWFyY2hSZXN1bHRPYmplY3QpO1xyXG5cdFx0Y29uc29sZS5sb2codGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMpO1xyXG5cdH1cclxuXHJcblx0ZGlzcGFsYXlTZWFyY2hSZXN1bHRzKGRvY1ZpZXdlcikge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdGRvY1ZpZXdlci5kaXNwbGF5QWRkaXRpb25hbFNlYXJjaFJlc3VsdHModGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMpO1xyXG5cdFx0fSwgNTAwKTtcclxuXHR9XHJcblxyXG5cdC8vIGRyYXcgaGlsaWd0aGluZyBhcm91bmQgY2VydGFpbiBjaGFyYXRhY3RlcnNcclxuXHRoaWdsaWdodFRleHQocXVhZHMsIHBhZ2VOdW1iZXIpIHtcclxuXHRcdGNvbnN0IGhpZ2hsaWdodGluZ0Fubm90ID0gbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LlN0cm9rZUNvbG9yID0gbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpO1xyXG5cdFx0aGlnaGxpZ2h0aW5nQW5ub3QuUXVhZHMgPSBxdWFkcztcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LlBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyO1xyXG5cdFx0aGlnaGxpZ2h0aW5nQW5ub3QuQXV0aG9yID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLnB1c2goaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuYWRkQW5ub3RhdGlvbihoaWdobGlnaHRpbmdBbm5vdCk7XHJcblxyXG5cdFx0Ly8gbmVlZCB0byBkcmF3IHRoZSBhbm5vdGF0aW9uIG90aGVyd2lzZSBpdCB3b24ndCBzaG93IHVwIHVudGlsIHRoZSBwYWdlIGlzIHJlZnJlc2hlZFxyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIucmVkcmF3QW5ub3RhdGlvbihoaWdobGlnaHRpbmdBbm5vdCk7XHJcblx0fVxyXG5cclxuXHRzZWFyY2hGbiA9IChzZWFyY2hWYWx1ZSwgb3B0aW9ucykgPT4ge1xyXG5cdFx0dGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuXHRcdGlmICh0aGlzLnNhdmVkQW5vdGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc2F2ZWRBbm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRcdGFubm90YXRpb24uSGlkZGVuID0gdHJ1ZTtcclxuXHRcdFx0XHQvLyBBbHdheXMgcmVkcmF3IGFubm90YXRpb24gaWYgcmVuZGVyaW5nIHdhcyB1cGRhdGVkXHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIucmVkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHQvLyBkb24ndCBkbyBhbnkgc2VhcmNoIHVudGlsIHRoZXJlIGlzIGEgc2VhcmNoIHBhdHRlcm5cclxuXHRcdGlmIChzZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRpZiAodGhpcy5maWxlV2l0aE9jcikge1xyXG5cdFx0XHRcdC8vIGFkZCByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgZWFjaCBzZWFyY2ggcmVzdWx0XHJcblx0XHRcdFx0Ly8gY29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdGxldCBteVNlYXJjaCA9IHNlYXJjaFZhbHVlLnNwbGl0KCcgJyk7XHJcblx0XHRcdFx0aWYgKG15U2VhcmNoLmxlbmd0aCA+IDEpIHtcclxuXHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBtb3JlIHRoYW4gb25lIHdvcmRcclxuXHRcdFx0XHRcdHRoaXMucGFnZXMucGFnZXMuZm9yRWFjaCgocGFnZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5wYWdlSGVpZ2h0ID0gcGFnZS5wYWdlX2hlaWdodDtcclxuXHRcdFx0XHRcdFx0dGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RhbmRhcmRIZWlnaHQgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlSGVpZ2h0KGluZGV4ICsgMSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHRwYWdlLnpvbmVzLmZvckVhY2goKHpvbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR6b25lLnBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRwYXJhZ3JhcGgubGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGluZS50ZXh0LmluY2x1ZGVzKHNlYXJjaFZhbHVlKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuU2VhcmNoRm9yV29yZEluTGluZShteVNlYXJjaCwgbGluZSwgaW5kZXggKyAxLCBwYWdlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBvbmx5IG9uZSB3b3JkXHJcblx0XHRcdFx0XHR0aGlzLnNlYXJjaEZvcldvcmRJbkFsbFBhZ2VzKHNlYXJjaFZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHRcdFx0dGhpcy5kaXNwYWxheVNlYXJjaFJlc3VsdHModGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5jbGVhclNlYXJjaFJlc3VsdHMoKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuc2lsZW50UGRmVHJvblNlcnZpY2UuaXNFbmFibGVkKSB7XHJcblx0XHRcdHRoaXMuI3Jlc2V0KCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpZiAodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSkge1xyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuY2xvc2VEb2N1bWVudCgpLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2RvY3VtZW50IGNsb3NlZCEnKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnBkZnRyb25TZXJ2aWNlLmluc3RhbmNlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA/IHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQjcmVzZXQoKSB7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmNsb3NlRG9jdW1lbnQoKS50aGVuKCgpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ2RvY3VtZW50IGNsb3NlZCEnKTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IG51bGw7XHJcblx0XHR0aGlzLnRyYW5zZWxhdGlvblN1YnNjcml0aW9uID8gdGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuXHJcblx0XHR0aGlzLnNpbGVudFBkZlRyb24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHRcdHRoaXMubXV0YXRpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG5cclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG5cdFx0XHRoZWFkZXIuaGVhZGVycy5kZWZhdWx0ID0gaGVhZGVyLmhlYWRlcnMuZGVmYXVsdC5maWx0ZXIoKHEpID0+ICFxLmltZz8uaW5jbHVkZXMoJzxzdmcnKSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLm9mZignZG9jdW1lbnRMb2FkZWQnLCB0aGlzLiNkb2NMb2FkZWQpO1xyXG5cdFx0Ly8gbWF5YmUgd2lsbCBuZWVkIHRvIHJlc2V0IHNpZ25hdHVyZSAmIGFubm90YXRpb25zXHJcblx0fVxyXG59XHJcbiIsIjxkaXYgI2ZpbGVWaWV3ZXIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPjwvZGl2PlxyXG4iXX0=
|
|
852
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFLeEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQTZENUIsWUFDUSxHQUFzQixFQUNyQixjQUE4QixFQUM5QixLQUFtQixFQUNJLFFBQWdCLEVBQ3ZDLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDbkIsV0FBVztRQU5uQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNJLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFBOztRQTlEbEMsa0JBQWEsR0FBRyxLQUFL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LE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXpDLFFBQVE7c0JBRFAsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLEtBQUs7Z0JBQ0ksMkJBQTJCO3NCQUFwQyxNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFUCxNQUFNO3NCQURMLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5qZWN0LFxyXG5cdElucHV0LFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdlYlZpZXdlciBmcm9tICdAcGRmdHJvbi93ZWJ2aWV3ZXInO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZGZ0cm9uU2VydmljZSB9IGZyb20gJy4vcGRmdHJvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBQX0JBU0VfSFJFRiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNlY3VyZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9zZWN1cmUucGlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTaWxlbnRQZGZUcm9uU2VydmljZSB9IGZyb20gJy4vc2lsZW50LXBkZnRyb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQSByZXVzYWJsZSBmaWxlIHZpZXdlciBiYXNlZCBvbiBQREZUcm9uIExpYnJhcnlcclxuICogQHRpdGxlXHJcbiAqIFBERlRyb24gVmlld2VyXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxhcHAtcGRmdHJvblxyXG4gKiAgIFtmaWxlRGF0YV09XCJmaWxlRGF0YVwiXHJcbiAqICAgW2VkaXRNb2RlXT1cImZhbHNlXCJcclxuICogICBbZG9jSWRdPVwiZmlsZUlkXCJcclxuICogICBbZmlsZVRpdGxlXT1cImZpbGUudGl0bGVcIlxyXG4gKiA+XHJcbiAqIDwvYXBwLXBkZnRyb24+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1wZGZ0cm9uJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGRmdHJvbi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGRmdHJvbi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW1NlY3VyZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZGZ0cm9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblx0QFZpZXdDaGlsZCgnZmlsZVZpZXdlcicsIHsgc3RhdGljOiB0cnVlIH0pIHZpZXdlclJlZjogRWxlbWVudFJlZjtcclxuXHR3ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHQvKiogRGlzYWJsZS9FbmFibGUgQW5ub3RhdGlvbiAqL1xyXG5cdEBJbnB1dCgpXHJcblx0ZWRpdE1vZGU6IGJvb2xlYW47XHJcblx0QElucHV0KCkgYWN0aW9uQ2xpY2tlZCA9IGZhbHNlOyAvLyB1c2VkIHRvIGtub3cgaWYgdGhlcmUgaXMgYWN0aW9uIGNsaWNrZWQgb3V0c2lkZSB0byBzdGFydCBlZGl0IG1vZGUgb3Igbm90XHJcblx0aXNEb2N1bWVudExvYWRpbmc6IGJvb2xlYW47XHJcblx0aXNGZXRjaGluZzogYm9vbGVhbjtcclxuXHQvKiogRG9jdW1lbnQgdGl0bGUgKi9cclxuXHRASW5wdXQoKVxyXG5cdGZpbGVUaXRsZTogc3RyaW5nO1xyXG5cdC8qKiBEb2N1bWVudCBJRCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0ZG9jSWQ6IHN0cmluZztcclxuXHRASW5wdXQoKVxyXG5cdERPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vcGRmJztcclxuXHRASW5wdXQoKVxyXG5cdGZpbGVEYXRhO1xyXG5cdEBJbnB1dCgpXHJcblx0Zml0TW9kZTogJ0ZpdFdpZHRoJyB8ICdGaXRQYWdlJyB8ICdab29tJyA9ICdGaXRXaWR0aCc7XHJcblx0QElucHV0KClcclxuXHRhdXRoSGVhZGVyOiBzdHJpbmc7XHJcblx0QElucHV0KClcclxuXHRmaWxlVVJMOiBzdHJpbmc7XHJcblx0QElucHV0KClcclxuXHRjb3JyZXNwb25kYW5jZTtcclxuXHJcblx0QElucHV0KCkgc2VjcmVjeVByb3BlcnR5OyAvLyB1c2VkIHRvIGFkZCB3YXRlcm1hcmsgYWNvcmRpbmcgY2VydGFpbiBzZWNyZWN5IGxldmVsXHJcblx0QElucHV0KCkgZWRpdGluZ1R5cGU7XHJcblx0QElucHV0KCkgdXNlclNpZ25hdHVyZXM7XHJcblx0QElucHV0KCkgc2VhcmNoU3RyaW5nID0gJyc7IC8vIHN0cmluZyB0byBzZWFyY2ggZm9yIGl0IGluIHRoZSBkb2N1bWVudFxyXG5cclxuXHRASW5wdXQoKSB0cmFja1NpZ25hdHVyZSA9IGZhbHNlOyAvLyB0byBlbmFibGUgdHJhY2tpbmcgc2lnbmF0dXJlIHBvc2l0aW9uIGFuZCBlbWl0IGl0IGFmdGVyIGV2ZXJ5IGNoYW5nZSBpdCBzaWduYXR1cmVcclxuXHRAT3V0cHV0KCkgb25TaWduYXR1cmVUcmFja2luZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gZXZlbnQgdG8gZW1pdCBzaWduYXR1cmUgY2hhbmdlc1xyXG5cclxuXHRASW5wdXQoKSB1c2VPdXRzaWRlQW5vdGF0aW9ucyA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0IGlmIHVzaW5nIG91dCBzaWRlIGFub3RhdGlvbnMgb3Igbm90XHJcblx0QElucHV0KCkgaW1wb3J0ZWRBbm90YXRpb25zOyAvLyBpbXBvcnRlZCBhbm90YXRpb25zIGZyb20gb3V0c2lkZVxyXG5cdEBJbnB1dCgpIGFsbG93RG93bmxvYWRTZWNyZXRGaWxlID0gdHJ1ZTsgLy8gYWxsb3cgb3IgcHJldmVudCBkb3dubG9hZCBzY3JlY3QgZmlsZXNcclxuXHRASW5wdXQoKSBhbGxvd1ByaW50U2VjcmV0RmlsZSA9IHRydWU7IC8vIGFsbG93IG9yIHByZXZlbnQgcHJpbnQgc2NyZWN0IGZpbGVzXHJcblx0QElucHV0KCkgbmVnZWxlY3RBZGRpbmdXYXRlck1hcmsgPSBmYWxzZTsgLy8gZG9uJ3QgYWRkIHdhdGVybWFyayBoZXJlIHdoYXRldmVyIGVhcyB0aGUgY29uZGl0aW9ucyAod2UgbWF5IGFkZCBpdCBmcm9tIG91dHNpZGUgb3Igbm90IGFkZCBpdCBhdCBhbGwpXHJcblx0QElucHV0KCkgZmxhdHRlbkFub3RhdGlvbiA9IGZhbHNlOyAvLyB1c2VkIHRvIGZsYXR0ZW4gYW5vdGF0aW9uIGludG8gdGhlIGRvY3VtZW50IHRvIGF2b2lkIGVkaXRpbmcgb24gdGhlbSBhZnRlciBzYXZpbmdcclxuXHRASW5wdXQoKSByZWNvZ25pemVkSnNvbjtcclxuXHRASW5wdXQgKCkgaXNTaWduZWREb2N1bWVudCA9IGZhbHNlOyAvLyBmbGFnZSB0byBpbmRpY2F0ZSBpZiB0aGlzIGRvY3VtZW50IGlzIHNpZ25lZCB3aXRoIG91dHNpZGUgcGxhdGZvcm0gdG8gZW5hYmxlIGRpZmZyZW50IHdheSBvZiBkb3dubG9hZGluZyBpdFxyXG5cdEBJbnB1dCAoKSBhbGxvd1ByaW50RnJvbU91dFNpZGUgPSBmYWxzZTsgLy9mbGFnZSB0byBpbmRpY2F0ZSBpZiB0byB1c2UgcHJpbnQgb2YgcGRmdHJvbiBvciBlbWl0IHRoZSBldmVudCBvdXRzaWRlIHRvIGhhbmRsZSBwcmludGZyb20gb3V0c2lkZVxyXG5cdEBPdXRwdXQoKSBvbkRvd25sb2FkaW5nU2lnbmVkRG9jdW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHVzZWQgdG8gdGVsbCBvdXRzaWRlIHdlIG5lZWQgZG93bmxvYWQgc2lnbmVkIGRvY3VtZW50IHRvIGRvd25sb2FkIGl0IHdpdGggcHJvcGVyIHdheSBkaWZmcmVudCBmcm9tIGV4cG9ydCBvZiBwZGZ0cm9uXHJcblx0QE91dHB1dCgpIG9uQWRkaW5nQW5vdGF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyB1c2VkIHRvIGV4cG9ydCBhbGwgYW5vdGF0aW9ucyB0byBvdXRzaWRlXHJcblx0QE91dHB1dCgpXHJcblx0ZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBTaWduYXR1cmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdXNlZCB0byBleHBvcnQgc2lnbmF0dXJlIHRvIG91dHNpZGVcclxuXHRmaXJzdFRpbWVMb2FkID0gdHJ1ZTsgLy9mbGFnZSB0byBjb250cm9sIGltcG9ydGluZyBzaWduYXR1cmVzIGluIHRoZSBmaXJzdCB0aW1lIGxvYWQgb25seVxyXG5cdGZpcnN0U2lnbmF0dXJlTG9hZCA9IHRydWU7IC8vIGZsYWdlIHRvIHBhc3MgZmlyc3QgbG9hZCBvZiBpbXBvcnRlZCBzaWduYXR1cmVzIHdpdGhvdXQgZW1pdHRpbmcgdGhlIGV2ZW50XHJcblx0bmV3U2lnbkNyZWF0aW9uID0gZmFsc2U7IC8vIGZsYWdlIHRvIGluZGljYXRlIHNpZ25hdHVyZSBjcmVhdGlvbiBpcyBjcmVhdGVkIG9yIGNob29zZWQgZnJvbSBzdG9yZWQgb25lc1xyXG5cdHRyYW5zZWxhdGlvblN1YnNjcml0aW9uOiBTdWJzY3JpcHRpb247XHJcblx0aXNBcmFiaWM7XHJcblxyXG5cdC8vc2lsZW50IHBkZlRyb25cclxuXHRzaWxlbnRQZGZUcm9uOiBIVE1MRWxlbWVudDtcclxuXHRtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xyXG5cdHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHByaXZhdGUgcGRmdHJvblNlcnZpY2U6IFBkZnRyb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBudXhlbzogTnV4ZW9TZXJ2aWNlLFxyXG5cdFx0QEluamVjdChBUFBfQkFTRV9IUkVGKSBwcml2YXRlIGJhc2VIcmVmOiBzdHJpbmcsXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBzaWxlbnRQZGZUcm9uU2VydmljZTogU2lsZW50UGRmVHJvblNlcnZpY2UsXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnRcclxuXHQpIHt9XHJcblxyXG5cdGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzQXJhYmljLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkgPSB0aGlzLnNlYXJjaFN0cmluZy50cmltKCkgPyB0aGlzLnNlYXJjaFN0cmluZy5zcGxpdCgnLCcpIDogW107XHJcblx0XHRpZiAodGhpcy5maWxlVGl0bGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0JykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcucHB0eCcpKSB7XHJcblx0XHRcdFx0dGhpcy5ET0NVTUVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZmlsZVRpdGxlLmVuZHNXaXRoKCcuZG9jJykpIHtcclxuXHRcdFx0XHR0aGlzLkRPQ1VNRU5UX1RZUEUgPSAnYXBwbGljYXRpb24vbXN3b3JkJztcclxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmZpbGVUaXRsZS5lbmRzV2l0aCgnLmRvY3gnKSkge1xyXG5cdFx0XHRcdHRoaXMuRE9DVU1FTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zaWxlbnRQZGZUcm9uU2VydmljZS5pc0VuYWJsZWQpIHtcclxuXHRcdFx0W3RoaXMuc2lsZW50UGRmVHJvbiwgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZV0gPSBhd2FpdCB0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmdldFdlYlZpZXdlcigpO1xyXG5cdFx0XHR0aGlzLiNhZnRlckxvYWRXZWJWaWV3ZXIodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSk7XHJcblxyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLiN1cGRhdGVTaWxlbnRQZGZUcm9uKCkpO1xyXG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcclxuXHJcblx0XHRcdHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpKTtcclxuXHRcdFx0dGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuXHRcdFx0dGhpcy4jdXBkYXRlU2lsZW50UGRmVHJvbigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0V2ViVmlld2VyKFxyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdHBhdGg6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9wZGZ0cm9ucycsXHJcblx0XHRcdFx0XHRmb3JjZUNsaWVudFNpZGVJbml0OiB0cnVlLFxyXG5cdFx0XHRcdFx0c3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdFx0ZnVsbEFQSTogdGhpcy5pbXBvcnRGdWxsQXBpKCksXHJcblx0XHRcdFx0XHRsaWNlbnNlS2V5OiB0aGlzLmVudmlyb25tZW50LnBkZnRyb25MaWNlbmNlS2V5LFxyXG5cdFx0XHRcdFx0Y3NzOiB0aGlzLmlzQXJhYmljXHJcblx0XHRcdFx0XHRcdD8gdGhpcy5iYXNlSHJlZiArICcvYXNzZXRzL3N0eWxlcy9hci1teXBkZnRyb24uY3NzJ1xyXG5cdFx0XHRcdFx0XHQ6IHRoaXMuYmFzZUhyZWYgKyAnL2Fzc2V0cy9zdHlsZXMvZW4tbXlwZGZ0cm9uLmNzcycsXHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uVXNlcjpcclxuXHRcdFx0XHRcdFx0dGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMubGFzdE5hbWUsXHJcblx0XHRcdFx0XHRkaXNhYmxlZEVsZW1lbnRzOiBbJ2Rvd25sb2FkQnV0dG9uJywgJ3ByaW50QnV0dG9uJ11cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnRcclxuXHRcdFx0KS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuI2FmdGVyTG9hZFdlYlZpZXdlcihpbnN0YW5jZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjdXBkYXRlU2lsZW50UGRmVHJvbigpIHtcclxuXHRcdGNvbnN0IHJlY3QgPSB0aGlzLnZpZXdlclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLnNpbGVudFBkZlRyb24uc3R5bGUsIHtcclxuXHRcdFx0cG9zaXRpb246ICdhYnNvbHV0ZScsXHJcblx0XHRcdHRvcDogYCR7cmVjdC50b3B9cHhgLFxyXG5cdFx0XHRsZWZ0OiBgJHtyZWN0LmxlZnR9cHhgLFxyXG5cdFx0XHR3aWR0aDogYCR7cmVjdC53aWR0aH1weGAsXHJcblx0XHRcdGhlaWdodDogYCR7cmVjdC5oZWlnaHR9cHhgLFxyXG5cdFx0XHR6SW5kZXg6ICc5OTknLFxyXG5cdFx0XHRkaXNwbGF5OiAnYmxvY2snXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNhZnRlckxvYWRXZWJWaWV3ZXIoaW5zdGFuY2UpIHtcclxuXHRcdHRoaXMuaXNBcmFiaWMgPyBpbnN0YW5jZS5zZXRMYW5ndWFnZSgnYXInKSA6IGluc3RhbmNlLnNldExhbmd1YWdlKCdlbicpO1xyXG5cdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuXHRcdGlmICh0aGlzLmNvcnJlc3BvbmRhbmNlLmZhY2V0cy5pbmRleE9mKCdjdG9jcicpID4gLTEgJiYgdGhpcy5jb3JyZXNwb25kYW5jZT8ucHJvcGVydGllcz8uWydjdG9jcjpyZWNvZ25pemVkSnNvbiddKSB7XHJcblx0XHRcdHRoaXMuZmlsZVdpdGhPY3IgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLnBhZ2VzID0gdGhpcy5yZWNvZ25pemVkSnNvbj9KU09OLnBhcnNlKHRoaXMucmVjb2duaXplZEpzb24pIDogSlNPTi5wYXJzZSh0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbJ2N0b2NyOnJlY29nbml6ZWRKc29uJ10pO1xyXG5cdFx0XHQvLyBvdmVycmlkZSBzZWFyY2ggZnVudGlvbiB0byB1c2Ugb3VyIHNlYXJjaCBpbiBvY3Igbm90IGRlZnVsdCBzZWFyY2hcclxuXHRcdFx0aW5zdGFuY2Uub3ZlcnJpZGVTZWFyY2hFeGVjdXRpb24odGhpcy5zZWFyY2hGbik7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBpZiBubyBvY3IgdGhlbiBhZGQgc2VhcmNoIGxpc25lciB0byBsaXNuZSB0byBpbnRlcm5hbCBzZWFyY2ggYW5kIGNhdGNoIHJlc3VsdHNcclxuXHRcdFx0dGhpcy5hZGRTZWFyY2hMaXN0bmVyKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmFkZFByaW50QnV0dG9uKCk7XHJcblx0XHR0aGlzLmFkZERvd25sb2FkQnV0dG9uKCk7XHJcblx0XHR0aGlzLmltcG9ydFNpZ25hdHVyZSgpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTaWduYXR1cmUoKTtcclxuXHRcdHRoaXMuZGVsZXRlQW5ub3RhdGlvbigpO1xyXG5cdFx0dGhpcy5leHBvcnRpbmdTYXZlZFNpZ25hdHVyZSgpO1xyXG5cdFx0aWYgKHRoaXMudXNlT3V0c2lkZUFub3RhdGlvbnMpIHtcclxuXHRcdFx0dGhpcy5pbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKTtcclxuXHRcdFx0dGhpcy5leHBvcnRBbm90YXRpb25zVG9PdXRzaWRlKCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5zZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMoe1xyXG5cdFx0XHQvLyBzZXRTZWFyY2hIaWdobGlnaHRDb2xvcnMgYWNjZXB0cyBib3RoIEFubm90YXRpb25zLkNvbG9yIG9iamVjdHMgb3IgJ3JnYmEnIHN0cmluZ3NcclxuXHRcdFx0c2VhcmNoUmVzdWx0OiBuZXcgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Bbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5NiksXHJcblx0XHRcdGFjdGl2ZVNlYXJjaFJlc3VsdDogbmV3IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQW5ub3RhdGlvbnMuQ29sb3IoMjUwLCAyMDYsIDAsIDAuNTAxOTYpXHJcblx0XHR9KTtcclxuXHRcdGlmICh0aGlzLnJlY2l2ZWRTZWFyY2hTdHJpbmdzQXJyYXkubGVuZ3RoICE9PSAwKSB7XHJcblx0XHRcdHRoaXMuYXV0b21hdGljU2VhcmNoKHRoaXMucmVjaXZlZFNlYXJjaFN0cmluZ3NBcnJheSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxvYWREb2N1bWVudCgpO1xyXG5cdH1cclxuXHJcblx0Ly8gZnVudGlvbiB0byBjaGVjayB0byBpbXBvcnQgdGhlIGZ1bGwgYXBpIG9yIG5vdCBhY2NvcmRpbmcgdG8gYWN0aW9uIG9mIGFkZCBzdGlja2VyIGV4aXN0IG9yIG5vdFxyXG5cdGltcG9ydEZ1bGxBcGkoKXtcclxuXHRcdGxldCB1c2VGdWxsQXBpID0gZmFsc2U7XHJcbiAgICAgICAgLy8gbGV0IGFjdGlvbkV4aXN0ID0gWydhZGRRcmNvZGUnICwgJ3NlbGVjdFFyY29kZSddLnNvbWUoaXRlbSA9PiB0aGlzLmNvcnJlc3BvbmRhbmNlLmNvbnRleHRQYXJhbWV0ZXJzLmFjdGlvbnMuaW5jbHVkZXMoaXRlbSkpO1xyXG5cdFx0bGV0IGxvY2tNb2RlRXhpc3QgPSB0aGlzLnBkZnRyb25TZXJ2aWNlLm1vZGUgPT09ICdhZGRRcmNvZGUnO1xyXG5cdFx0aWYodGhpcy5mbGF0dGVuQW5vdGF0aW9uICYmIGxvY2tNb2RlRXhpc3Qpe1xyXG5cdFx0XHR1c2VGdWxsQXBpID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB1c2VGdWxsQXBpXHJcblx0fVxyXG5cclxuXHRpbXBvcnRBbm90YXRpb25zRnJvbU91dHNpZGUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cclxuXHRcdGRvY3VtZW50Vmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuaW1wb3J0QW5ub3RhdGlvbnModGhpcy5pbXBvcnRlZEFub3RhdGlvbnMpO1xyXG5cdFx0fSk7XHJcblx0XHQvLyAudGhlbihhbm5vdGF0aW9ucyA9PiB7XHJcblx0XHQvLyAgIGFubm90YXRpb25zLmZvckVhY2goYW5ub3RhdGlvbiA9PiB7XHJcblx0XHQvLyAgICAgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIucmVkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uKTtcclxuXHRcdC8vICAgfSk7XHJcblx0XHQvLyB9KTtcclxuXHR9XHJcblxyXG5cdC8vIGV4Y3RyYWN0IGFsbCBhbm90YXRpb25zIG9uIHRoZSBmaWxlIGFuZCBzZW5kIGl0IG91dCBzaWRlIHRvIGJlIHNhdmVkIGFuZCBsZWF2ZSB0aGUgZmlsZSBhcyBpdCBpcyB3aXRob3V0IGFueSBhbm90YXRpb25zIG9uIGl0XHJcblx0ZXhwb3J0QW5vdGF0aW9uc1RvT3V0c2lkZSgpIHtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLm9uKCdhbm5vdGF0aW9uQ2hhbmdlZCcsIChhbm5vdGF0aW9ucywgYWN0aW9uLCB7IGltcG9ydGVkIH0pID0+IHtcclxuXHRcdFx0aWYgKGltcG9ydGVkKSByZXR1cm47XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmV4cG9ydEFubm90YXRpb25zKCkudGhlbigoZXhjdHJhY3RlZEFub3RhdGlvbnMpID0+IHtcclxuXHRcdFx0XHR0aGlzLm9uQWRkaW5nQW5vdGF0aW9uLmVtaXQoZXhjdHJhY3RlZEFub3RhdGlvbnMpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly8gaWYgdHJhY2tpbmcgc2lnbmF0dXJlIGxvY2F0aW9uIGlzIGVuYWJsZSB0aGVuIGVtaXQgc2lnbmF0dXJlIG91dHNpZGUgd2l0aCBldmVyeSBjaGFuZ2VzIGluIGl0XHJcblx0XHRcdGlmICh0aGlzLnRyYWNrU2lnbmF0dXJlKSB7XHJcblx0XHRcdFx0dGhpcy5vblNpZ25hdHVyZVRyYWNraW5nLmVtaXQoeyBhbm90YXRpb25zOiBhbm5vdGF0aW9ucywgYWN0aW9uOiBhY3Rpb24gfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aW1wb3J0U2lnbmF0dXJlKCkge1xyXG5cdFx0Y29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuXHRcdGNvbnN0IHNpZ25hdHVyZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcblxyXG5cdFx0ZG9jdW1lbnRWaWV3ZXIub24oJ2RvY3VtZW50TG9hZGVkJywgKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5maXJzdFRpbWVMb2FkKSB7XHJcblx0XHRcdFx0c2lnbmF0dXJlVG9vbC5pbXBvcnRTaWduYXR1cmVzKFsuLi50aGlzLnVzZXJTaWduYXR1cmVzXSk7XHJcblx0XHRcdFx0dGhpcy5maXJzdFRpbWVMb2FkID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0aW5nU2F2ZWRTaWduYXR1cmUoKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ3NpZ25hdHVyZVNhdmVkJywgKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLmZpcnN0U2lnbmF0dXJlTG9hZCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdzaWduYXR1cmUgc2F2ZWQgdHJpZ2VyZWQnKTtcclxuXHRcdFx0XHR0aGlzLm5ld1NpZ25DcmVhdGlvbiA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5maXJzdFNpZ25hdHVyZUxvYWQgPSBmYWxzZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0aW5nU2lnbmF0dXJlKCkge1xyXG5cdFx0Y29uc3QgZG9jdW1lbnRWaWV3ZXIgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlcjtcclxuXHRcdGNvbnN0IFNpZ25hdHVyZUNyZWF0ZVRvb2wgPSBkb2N1bWVudFZpZXdlci5nZXRUb29sKCdBbm5vdGF0aW9uQ3JlYXRlU2lnbmF0dXJlJyk7XHJcblx0XHRTaWduYXR1cmVDcmVhdGVUb29sLm9uKCdhbm5vdGF0aW9uQWRkZWQnLCAoYW5ub3RhdGlvbikgPT4ge1xyXG5cdFx0XHRpZiAoYW5ub3RhdGlvbiAmJiB0aGlzLm5ld1NpZ25DcmVhdGlvbikge1xyXG5cdFx0XHRcdHRoaXMubmV3U2lnbkNyZWF0aW9uID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5leHRyYWN0QW5vdGF0aW9uKGFubm90YXRpb24sIGRvY3VtZW50Vmlld2VyKTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhhbm5vdGF0aW9uKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRleHRyYWN0QW5vdGF0aW9uKGFubm90YXRpb24sIGRvY3VtZW50Vmlld2VyKSB7XHJcblx0XHRpZiAoYW5ub3RhdGlvblsnaW1hZ2UnXSkge1xyXG5cdFx0XHQvLyBjb252ZXJ0IGJhc2U2NCBzaWduYXR1cmUgaW50byBmaWxlIGFuZCBlbWl0IGl0IHRvIG91dCBzaWRlXHJcblx0XHRcdGxldCBiYXNlNjRJbWcgPSBhbm5vdGF0aW9uWydpbWFnZSddWydjdXJyZW50U3JjJ107XHJcblx0XHRcdHZhciBhcnIgPSBiYXNlNjRJbWcuc3BsaXQoJywnKSxcclxuXHRcdFx0XHRtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcblx0XHRcdFx0YnN0ciA9IGF0b2IoYXJyWzFdKSxcclxuXHRcdFx0XHRuID0gYnN0ci5sZW5ndGgsXHJcblx0XHRcdFx0dThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcclxuXHRcdFx0d2hpbGUgKG4tLSkge1xyXG5cdFx0XHRcdHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGxldCBuYW1lID0gbWltZS5yZXBsYWNlKCcvJywgJy4nKTtcclxuXHRcdFx0bGV0IG15RmlsZSA9IG5ldyBGaWxlKFt1OGFycl0sICdteVNpZ25hdHVyZS5wbmcnLCB7IHR5cGU6IG1pbWUgfSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IG15RmlsZSwgZXZlbnROYW1lOiAnZXhwb3J0JyB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jdW1lbnRWaWV3ZXIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jVmlld2VyKSB7XHJcblx0XHQvLyBDcmVhdGUgYSBuZXcgQ2FudmFzIHRvIGRyYXcgdGhlIEFubm90YXRpb24gb25cclxuXHRcdGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG5cdFx0Ly8gUmVmZXJlbmNlIHRoZSBhbm5vdGF0aW9uIGZyb20gdGhlIERvY3VtZW50XHJcblx0XHRjb25zdCBwYWdlTWF0cml4ID0gZG9jVmlld2VyLmdldERvY3VtZW50KCkuZ2V0UGFnZU1hdHJpeChhbm5vdGF0aW9uLlBhZ2VOdW1iZXIpO1xyXG5cdFx0Ly8gU2V0IHRoZSBoZWlnaHQgJiB3aWR0aCBvZiB0aGUgY2FudmFzIHRvIG1hZGVsZXRlU2F2ZWRTaWduYXR1cmV0Y2ggdGhlIGFubm90YXRpb25cclxuXHRcdGNhbnZhcy5oZWlnaHQgPSBhbm5vdGF0aW9uLkhlaWdodDtcclxuXHRcdGNhbnZhcy53aWR0aCA9IGFubm90YXRpb24uV2lkdGg7XHJcblx0XHRjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHRcdC8vIFRyYW5zbGF0ZSB0aGUgQW5ub3RhdGlvbiB0byB0aGUgdG9wIFRvcCBMZWZ0IENvcm5lciBvZiB0aGUgQ2FudmFzIGllICgwLCAwKVxyXG5cdFx0Y3R4LnRyYW5zbGF0ZSgtYW5ub3RhdGlvbi5YLCAtYW5ub3RhdGlvbi5ZKTtcclxuXHRcdC8vIERyYXcgdGhlIEFubm90YXRpb24gb250byB0aGUgQ2FudmFzXHJcblx0XHRhbm5vdGF0aW9uLmRyYXcoY3R4LCBwYWdlTWF0cml4KTtcclxuXHRcdC8vIENvbnZlcnQgdGhlIENhbnZhcyB0byBhIEJsb2IgT2JqZWN0IGZvciBVcGxvYWRcclxuXHRcdGNhbnZhcy50b0Jsb2IoKGJsb2IpID0+IHtcclxuXHRcdFx0Ly8gQ2FsbCB5b3VyIEJsb2IgU3RvcmFnZSBVcGxvYWQgRnVuY3Rpb25cclxuXHRcdFx0bGV0IG5hbWUgPSBibG9iLnR5cGUucmVwbGFjZSgnLycsICcuJyk7XHJcblx0XHRcdGxldCBteUZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIG5hbWUpO1xyXG5cdFx0XHR0aGlzLlNpZ25hdHVyZUV2ZW50LmVtaXQoeyBkYXRhOiBteUZpbGUsIGV2ZW50TmFtZTogJ2V4cG9ydCcgfSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUFubm90YXRpb24oKSB7XHJcblx0XHRjb25zdCBkb2N1bWVudFZpZXdlciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyO1xyXG5cdFx0Y29uc3QgU2lnbmF0dXJlQ3JlYXRlVG9vbCA9IGRvY3VtZW50Vmlld2VyLmdldFRvb2woJ0Fubm90YXRpb25DcmVhdGVTaWduYXR1cmUnKTtcclxuXHRcdFNpZ25hdHVyZUNyZWF0ZVRvb2wub24oJ3NpZ25hdHVyZURlbGV0ZWQnLCAoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3RoZXJlIHdlcmUgYW5ub3RhdGlvbnMgZGVsZXRlZCcpO1xyXG5cdFx0XHR0aGlzLnVzZXJTaWduYXR1cmVzLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdHRoaXMuU2lnbmF0dXJlRXZlbnQuZW1pdCh7IGRhdGE6IHsgc2lnbmF0dXJlOiBhbm5vdGF0aW9uLCBpbmRleDogaW5kZXggfSwgZXZlbnROYW1lOiAnZGVsZXRlJyB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0YWRkRG93bmxvYWRCdXR0b24oKSB7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYWxsb3dEb3dubG9hZFNlY3JldEZpbGUgfHxcclxuXHRcdFx0KCF0aGlzLmFsbG93RG93bmxvYWRTZWNyZXRGaWxlICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAmJlxyXG5cdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gPT09ICdOb3JtYWwnKVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG5cdFx0XHRcdGhlYWRlci5wdXNoKHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhY3Rpb25CdXR0b24nLFxyXG5cdFx0XHRcdFx0aW1nOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwiYmkgYmktZmlsZS1lYXJtYXJrLWFycm93LWRvd25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+IDxwYXRoIGQ9XCJNOC41IDYuNWEuNS41IDAgMCAwLTEgMHYzLjc5M0w2LjM1NCA5LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDIgMmEuNS41IDAgMCAwIC43MDggMGwyLTJhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1Y2LjV6XCIvPiA8cGF0aCBkPVwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwiLz48L3N2Zz4nLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuaXNBcmFiaWMgPyAn2KrZhtiy2YrZhCcgOiAnRG93bmxvYWQnLFxyXG5cdFx0XHRcdFx0b25DbGljazogYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiB3YXNuJ3Qgc2lnbmVkIGRvY3VtZW50IHRoZW4gZG93bmxvYWQgaXQgdXNpbmcgcGRmdHJvbiBub3JtYWwgZG9ud25sb2FkXHJcblx0XHRcdFx0XHRcdGlmKCF0aGlzLmlzU2lnbmVkRG9jdW1lbnQpe1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHhmZGZTdHJpbmcgPSBhd2FpdCB0aGlzLnBkZnRyb25TZXJ2aWNlLmluc3RhbmNlLmFubm90TWFuYWdlci5leHBvcnRBbm5vdGF0aW9ucygpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmaWxlbmFtZTogdGhpcy5jb3JyZXNwb25kYW5jZS50aXRsZSA/IHRoaXMuY29ycmVzcG9uZGFuY2UudGl0bGUgOiAnbXlEb2N1bWVudC5wZGYnLFxyXG5cdFx0XHRcdFx0XHRcdFx0eGZkZlN0cmluZyxcclxuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVBbm5vdGF0aW9uczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRcdGRvd25sb2FkVHlwZTogJ3BkZidcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UuZG93bmxvYWRQZGYob3B0aW9ucyk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ldmVudHMubmV4dCgnZG93bmxvYWQnKTtcclxuXHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly8gaWYgaXQgd2FzIHNpZ25lZCBkb2N1bWVudCB0aGVuIGRvd25sb2FkIGl0IGJ5IGZ1bmN0aW9uIGZyb20gb3V0c2lkZSB0byBhdm9pZCBcclxuXHRcdFx0XHRcdFx0XHQvLyBsb29zaW5nIHNpZ25pbmcgaW5mb3JtYXRpb24gdGhhdCBoYXBwZW5zIGlmIGkgZG93bmxvYWQgaXQgZnJvbSBwZGZ0cm9uIGl0c2VsZlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMub25Eb3dubG9hZGluZ1NpZ25lZERvY3VtZW50LmVtaXQoKVxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBsZXQgdXJsID0gdGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzLmNvbnRlbnQuZGF0YTtcclxuXHRcdFx0XHRcdFx0Ly8gbGV0IGZpbGVOYW1lID0gdGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzLmNvbnRlbnQubmFtZTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgKHVybCAmJiBmaWxlTmFtZSkge1xyXG5cdFx0XHRcdFx0XHQvLyAgIGxldCBzYWZlVXJsID0gdGhpcy5zZWN1cmVQaXBlLnRyYW5zZm9ybSh1cmwpO1xyXG5cdFx0XHRcdFx0XHQvLyAgIHNhZmVVcmwuc3Vic2NyaWJlKCh1cmw6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuaHJlZiA9IHVybC5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGxpbmsuY2xpY2soKTtcclxuXHRcdFx0XHRcdFx0Ly8gICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcblx0XHRcdFx0XHRcdC8vICAgICB0aGlzLmV2ZW50cy5uZXh0KCdkb3dubG9hZCcpO1xyXG5cdFx0XHRcdFx0XHQvLyAgIH0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWRkUHJpbnRCdXR0b24oKSB7XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuYWxsb3dQcmludFNlY3JldEZpbGUgfHxcclxuXHRcdFx0KCF0aGlzLmFsbG93UHJpbnRTZWNyZXRGaWxlICYmXHJcblx0XHRcdFx0dGhpcy5jb3JyZXNwb25kYW5jZS5wcm9wZXJ0aWVzW3RoaXMuc2VjcmVjeVByb3BlcnR5XSAmJlxyXG5cdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gPT09ICdOb3JtYWwnKVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2Uuc2V0SGVhZGVySXRlbXMoKGhlYWRlcikgPT4ge1xyXG5cdFx0XHRcdGhlYWRlci5wdXNoKHtcclxuXHRcdFx0XHRcdHR5cGU6ICdhY3Rpb25CdXR0b24nLFxyXG5cdFx0XHRcdFx0aW1nOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojYWJiMGM0O308L3N0eWxlPjwvZGVmcz48dGl0bGU+aWNvbiAtIGhlYWRlciAtIHByaW50IC0gbGluZTwvdGl0bGU+PHBhdGggY2xhc3M9XCJjbHMtMVwiIGQ9XCJNMjAsNkgxOFYySDZWNkg0QTIsMiwwLDAsMCwyLDh2OWEyLDIsMCwwLDAsMiwySDZ2M0gxOFYxOWgyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMjAsNlpNOCw0aDhWNkg4Wm04LDE2SDhWMTZoOFptNC0zSDE4VjE0SDZ2M0g0VjhIMjBabS00LTdoMnYySDE2Wm0tMywwaDJ2MkgxM1pcIj48L3BhdGg+PC9zdmc+JyxcclxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLmlzQXJhYmljID8gJ9i32KjYp9i52KknIDogJ1ByaW50JyxcclxuXHRcdFx0XHRcdG9uQ2xpY2s6ICgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYodGhpcy5hbGxvd1ByaW50RnJvbU91dFNpZGUpe1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZXZlbnRzLm5leHQoJ3ByaW50Jyk7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UucHJpbnQoKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmV2ZW50cy5uZXh0KCdwcmludCcpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoWydwcmludE1vZGFsJ10pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWRkV2F0ZXJtYXJrKCkge1xyXG5cdFx0Y29uc3QgdXNlcmluZm8gPSB0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcztcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuYWRkV2F0ZXJtYXJrKFxyXG5cdFx0XHRgJHt1c2VyaW5mby51c2VybmFtZX0gICAgYFxyXG5cdFx0XHQvLyBgJHt1c2VyaW5mby5maXJzdE5hbWV9ICR7XHJcblx0XHRcdC8vICAgdXNlcmluZm8ubGFzdE5hbWVcclxuXHRcdFx0Ly8gfSBgXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0I2RvY0xvYWRlZCA9ICgpID0+IHtcclxuXHRcdGxldCBmaXRNb2RlID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5GaXRNb2RlLkZpdFdpZHRoO1xyXG5cdFx0aWYgKHRoaXMuZml0TW9kZSA9PT0gJ0ZpdFBhZ2UnKSB7XHJcblx0XHRcdGZpdE1vZGUgPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLkZpdE1vZGUuRml0UGFnZTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5maXRNb2RlID09PSAnWm9vbScpIHtcclxuXHRcdFx0Zml0TW9kZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuRml0TW9kZS5ab29tO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5zZXRGaXRNb2RlKGZpdE1vZGUpO1xyXG5cdH07XHJcblx0bG9hZERvY3VtZW50KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLndlYlZpZXdlckluc3RhbmNlIHx8ICghdGhpcy5maWxlRGF0YSAmJiAhdGhpcy5maWxlVVJMKSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCB7IGRvY1ZpZXdlciwgYW5ub3RNYW5hZ2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHRcdGRvY1ZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCB0aGlzLiNkb2NMb2FkZWQpO1xyXG5cdFx0aWYgKCF0aGlzLmVkaXRNb2RlKSB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnNldFJlYWRPbmx5KHRydWUpO1xyXG5cdFx0XHQvLyBpbnN0YW5jZS5lbmFibGVUb29scyhbXSk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5maWxlVVJMICYmIHRoaXMuZmlsZVVSTC5sZW5ndGgpIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5sb2FkRG9jdW1lbnQodGhpcy5maWxlVVJMLCB7XHJcblx0XHRcdFx0eG9kc3RyZWFtaW5nOiB0cnVlLFxyXG5cdFx0XHRcdGN1c3RvbUhlYWRlcnM6IHtcclxuXHRcdFx0XHRcdEF1dGhvcml6YXRpb246IHRoaXMuYXV0aEhlYWRlclxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5sb2FkRG9jdW1lbnQobmV3IEJsb2IoW25ldyBVaW50OEFycmF5KHRoaXMuZmlsZURhdGEpXSwgeyB0eXBlOiB0aGlzLkRPQ1VNRU5UX1RZUEUgfSksIHtcclxuXHRcdFx0XHRmaWxlbmFtZTogdGhpcy5maWxlVGl0bGVcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcblx0XHQvLyBpZiBub3QgbmVnZWxjdGluZyBhZGRpbmcgd2F0ZXIgbWFyayB0aGVuIGNoZWNrIGNvbmRpdGlvbnMgZm9yIGFkZGluZyBpdFxyXG5cdFx0aWYgKCF0aGlzLm5lZ2VsZWN0QWRkaW5nV2F0ZXJNYXJrKSB7XHJcblx0XHRcdGlmICh0aGlzLmNvcnJlc3BvbmRhbmNlICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHQvLyBpZiB3ZSBuZWVkIHRvIGNoZWNrIG9uIHNlY3JlY3kgbGV2ZWwgZm9yIGFkZGluZyB3YXRlciBtYXJrIG9yIG5vdFxyXG5cdFx0XHRcdGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZVZpZXdlcldhdGVyTWFyayAmJiB0aGlzLnNlY3JlY3lQcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0Ly8gY2hlY2sgZm9yIHNlY3JlY3kgbGV2ZWwgYmVmb3IgYWRkaW5nIHdhdGVybWFya1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvcnJlc3BvbmRhbmNlLnByb3BlcnRpZXNbdGhpcy5zZWNyZWN5UHJvcGVydHldICYmXHJcblx0XHRcdFx0XHRcdHRoaXMuY29ycmVzcG9uZGFuY2UucHJvcGVydGllc1t0aGlzLnNlY3JlY3lQcm9wZXJ0eV0gIT09ICdOb3JtYWwnXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5hZGRXYXRlcm1hcmsoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuZW52aXJvbm1lbnQuZW5hYmxlVmlld2VyV2F0ZXJNYXJrICYmICF0aGlzLnNlY3JlY3lQcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hZGRXYXRlcm1hcmsoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGV4cG9ydEFzQmxvYigpOiBQcm9taXNlPEJsb2I+IHtcclxuXHRcdGNvbnN0IGRvYyA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldERvY3VtZW50KCk7XHJcblx0XHRjb25zdCB4ZmRmU3RyaW5nID0gYXdhaXQgdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuZXhwb3J0QW5ub3RhdGlvbnMoKTtcclxuXHRcdGNvbnN0IGRhdGEgPSBhd2FpdCBkb2MuZ2V0RmlsZURhdGEoe1xyXG5cdFx0XHQvLyBzYXZlcyB0aGUgZG9jdW1lbnQgd2l0aCBhbm5vdGF0aW9ucyBpbiBpdFxyXG5cdFx0XHR4ZmRmU3RyaW5nXHJcblx0XHR9KTtcclxuXHRcdGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KGRhdGEpO1xyXG5cdFx0Y29uc3QgYmxvYiA9IG5ldyBCbG9iKFthcnJdLCB7IHR5cGU6IHRoaXMuRE9DVU1FTlRfVFlQRSB9KTtcclxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYmxvYik7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFZGl0KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmFjdGlvbkNsaWNrZWQpIHtcclxuXHRcdFx0Ly8gYWN0aW9uIGNsaWNrZWQgaXMgbm90IGNsaWNrZWQgdGhlbiBubyB1cGRhdGUgbW9kZSBvcGVuZWRcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoW1xyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtU2hhcGVzJyxcclxuXHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdCd0b29sYmFyR3JvdXAtSW5zZXJ0JyxcclxuXHRcdFx0XHQndG9vbGJhckdyb3VwLUFubm90YXRlJ1xyXG5cdFx0XHRdKTtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBlZGl0IG1vZGUgb3BlbmVkIGFuZCBtdXN0IGJlIHdoZW4gYWN0aW9uIGlzIGNsaWNrZWRcclxuXHRcdFx0aWYgKHRoaXMuZWRpdGluZ1R5cGUpIHtcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRpc2FibGVFbGVtZW50cyhbXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLVNoYXBlcycsXHJcblx0XHRcdFx0XHQndG9vbGJhckdyb3VwLUVkaXQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1JbnNlcnQnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1Bbm5vdGF0ZSdcclxuXHRcdFx0XHRdKTtcclxuXHRcdFx0XHRsZXQgZ3JvdXA7XHJcblx0XHRcdFx0aWYgKHRoaXMuZWRpdGluZ1R5cGUgPT09ICdzaWduRG9jJykge1xyXG5cdFx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5lbmFibGVFbGVtZW50cyhbJ3Rvb2xiYXJHcm91cC1JbnNlcnQnXSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVkaXRpbmdUeXBlID09PSAnYW5ub3RhdGUnKSB7XHJcblx0XHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmVuYWJsZUVsZW1lbnRzKFsndG9vbGJhckdyb3VwLVNoYXBlcycsICd0b29sYmFyR3JvdXAtRWRpdCcsICd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZW5hYmxlRWxlbWVudHMoW1xyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1TaGFwZXMnLFxyXG5cdFx0XHRcdFx0J3Rvb2xiYXJHcm91cC1FZGl0JyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtSW5zZXJ0JyxcclxuXHRcdFx0XHRcdCd0b29sYmFyR3JvdXAtQW5ub3RhdGUnXHJcblx0XHRcdFx0XSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5hbm5vdE1hbmFnZXIuc2V0UmVhZE9ubHkoZmFsc2UpO1xyXG5cdFx0XHQvLyB0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldFRvb2xiYXJHcm91cCgndG9vbGJhckdyb3VwLUFubm90YXRlJyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy53ZWJWaWV3ZXJJbnN0YW5jZSkge1xyXG5cdFx0XHR0aGlzLnRvZ2dsZUVkaXQoKTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdGNoYW5nZXMudXJsRmlsZUNvbnRlbnQgJiZcclxuXHRcdFx0XHRjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgJiZcclxuXHRcdFx0XHRjaGFuZ2VzLnVybEZpbGVDb250ZW50LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMudXJsRmlsZUNvbnRlbnQuY3VycmVudFZhbHVlXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHRoaXMubmdPbkRlc3Ryb3koKTtcclxuXHRcdFx0XHR0aGlzLm5nT25Jbml0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcGRmVHJvbkV2ZW50KGV2ZW50KSB7XHJcblx0XHRpZiAodGhpc1tldmVudC5hY3Rpb25dKSB7XHJcblx0XHRcdC8vIG1ldGhvZCBleGlzdHMgaW4gdGhlIGNvbXBvbmVudFxyXG5cdFx0XHQvLyAgdGhpc1tldmVudC5hY3Rpb25dKGV2ZW50LnBhcmFtcyk7IC8vIGNhbGwgaXRcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2VhcmNoIHJlc3VsdHMgc2VjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0cGFnZXM6IGFueTtcclxuXHRzdGFuZGFyZEhlaWdodDtcclxuXHRzdGFuZGFyZFdpZHRoO1xyXG5cdHBhZ2VIZWlnaHQ7XHJcblx0cGFnZVdpZHRoO1xyXG5cdHNhdmVkQW5vdGF0aW9ucyA9IFtdO1xyXG5cdGZpbGVXaXRoT2NyID0gZmFsc2U7XHJcblx0bmV3QW5ub3RhdGlvbnMgPSBbXTtcclxuXHRteVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuXHRyZWNpdmVkU2VhcmNoU3RyaW5nc0FycmF5ID0gW107XHJcblxyXG5cdC8vIGFkZGluZyBzZWFyY2ggbGlzbmVyIHRvIGxpc2VuIHRvIGludGVybmFsIHNlYXJjaCBmcm9tIHVpIGFuZCB3aXRob3V0IG9jclxyXG5cdGFkZFNlYXJjaExpc3RuZXIoKSB7XHJcblx0XHRjb25zdCB7IGFubm90TWFuYWdlciwgZG9jVmlld2VyLCBBbm5vdGF0aW9ucyB9ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZTtcclxuXHRcdGNvbnN0IHNlYXJjaExpc3RlbmVyID0gKHNlYXJjaFBhdHRlcm4sIG9wdGlvbnMsIHJlc3VsdHMpID0+IHtcclxuXHRcdFx0dGhpcy5teVNlYXJjaFN0cmluZ1Jlc3VsdHMgPSBbXTtcclxuXHRcdFx0aWYgKHRoaXMuc2F2ZWRBbm90YXRpb25zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uSGlkZGVuID0gdHJ1ZTtcclxuXHRcdFx0XHRcdC8vIEFsd2F5cyByZWRyYXcgYW5ub3RhdGlvbiBpZiByZW5kZXJpbmcgd2FzIHVwZGF0ZWRcclxuXHRcdFx0XHRcdGFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIGRvbid0IGRvIGFueSBzZWFyY2ggdW50aWwgdGhlcmUgaXMgYSBzZWFyY2ggcGF0dGVyblxyXG5cdFx0XHRpZiAoc2VhcmNoUGF0dGVybi50cmltKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdC8vIGFkZCByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgZWFjaCBzZWFyY2ggcmVzdWx0XHJcblx0XHRcdFx0dGhpcy5uZXdBbm5vdGF0aW9ucyA9IHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uUXVhZHMgPSByZXN1bHQucXVhZHMubWFwKChxdWFkKSA9PiBxdWFkLmdldFBvaW50cygpKTtcclxuXHRcdFx0XHRcdGFubm90YXRpb24uUGFnZU51bWJlciA9IHJlc3VsdC5wYWdlTnVtO1xyXG5cdFx0XHRcdFx0YW5ub3RhdGlvbi5TdHJva2VDb2xvciA9IG5ldyBBbm5vdGF0aW9ucy5Db2xvcigyNTAsIDIwNiwgMCwgMC41MDE5Nik7XHJcblx0XHRcdFx0XHRhbm5vdGF0aW9uLkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHRcdFx0XHRyZXR1cm4gYW5ub3RhdGlvbjtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKC4uLnRoaXMubmV3QW5ub3RhdGlvbnMpO1xyXG5cdFx0XHRcdGFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9ucyh0aGlzLm5ld0Fubm90YXRpb25zKTtcclxuXHRcdFx0XHRhbm5vdE1hbmFnZXIuZHJhd0Fubm90YXRpb25zRnJvbUxpc3QodGhpcy5uZXdBbm5vdGF0aW9ucyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0ZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGRvY1ZpZXdlci5vbignZG9jdW1lbnRMb2FkZWQnLCAoKSA9PiB7XHJcblx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYWRkU2VhcmNoTGlzdGVuZXIoc2VhcmNoTGlzdGVuZXIpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBwZXJmb3JtIGF1dG9tYXRpYyBzZWFyY2ggd2hlbiBpbnRlcmluZyB0aGUgcGFnZVxyXG5cdGF1dG9tYXRpY1NlYXJjaChzZWFyY2hUZXh0QXJyYXkpIHtcclxuXHRcdGNvbnN0IHsgYW5ub3RNYW5hZ2VyLCBkb2NWaWV3ZXIsIEFubm90YXRpb25zIH0gPSB0aGlzLndlYlZpZXdlckluc3RhbmNlO1xyXG5cdFx0bGV0IHNlYXJjaE9wdGlvbnM7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLm9wZW5FbGVtZW50cyhbJ3NlYXJjaFBhbmVsJ10pO1xyXG5cdFx0ZG9jVmlld2VyLm9uKCdkb2N1bWVudExvYWRlZCcsICgpID0+IHtcclxuXHRcdFx0Y29uc3QgbW9kZSA9XHJcblx0XHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5Db3JlQ29udHJvbHMuU2VhcmNoLk1vZGUuUEFHRV9TVE9QIHxcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLkNvcmVDb250cm9scy5TZWFyY2guTW9kZS5ISUdITElHSFQgfFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5Nb2RlLkFNQklFTlRfU1RSSU5HO1xyXG5cdFx0XHR0aGlzLm15U2VhcmNoU3RyaW5nUmVzdWx0cyA9IFtdOyAvLyBlbXB0eSBteSBzZWFyY2ggcmVzdWx0IHdoZW4gc3RhcnRpbmcgbmV3IHNlYXJjaFxyXG5cdFx0XHRpZiAodGhpcy5maWxlV2l0aE9jcikge1xyXG5cdFx0XHRcdC8vIGFkZCByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgZWFjaCBzZWFyY2ggcmVzdWx0XHJcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdHNlYXJjaFRleHRBcnJheS5tYXAoKHNlYXJjaFRleHQpID0+IHtcclxuXHRcdFx0XHRcdGxldCBteVNlYXJjaCA9IHNlYXJjaFRleHQuc3BsaXQoJyAnKTtcclxuXHRcdFx0XHRcdGlmIChteVNlYXJjaC5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBtb3JlIHRoYW4gb25lIHdvcmRcclxuXHRcdFx0XHRcdFx0dGhpcy5wYWdlcy5wYWdlcy5mb3JFYWNoKChwYWdlLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGFuZGFyZEhlaWdodCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VIZWlnaHQoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0XHRwYWdlLnpvbmVzLmZvckVhY2goKHpvbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdHpvbmUucGFyYWdyYXBocy5mb3JFYWNoKChwYXJhZ3JhcGgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyYWdyYXBoLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAobGluZS50ZXh0LmluY2x1ZGVzKHNlYXJjaFRleHQpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsIGxpbmUsIGluZGV4ICsgMSwgcGFnZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoZW4gaSBhbSBzZWFyY2hpbmcgd2l0aCBvbmx5IG9uZSB3b3JkXHJcblx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoRm9yV29yZEluQWxsUGFnZXMoc2VhcmNoVGV4dCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0ZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHRcdHRoaXMuZGlzcGFsYXlTZWFyY2hSZXN1bHRzKGRvY1ZpZXdlcik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c2VhcmNoT3B0aW9ucyA9IHtcclxuXHRcdFx0XHRcdC8vIElmIHRydWUsIGEgc2VhcmNoIG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQgd2lsbCBiZSBwZXJmb3JtZWQuIE90aGVyd2lzZSwgYSBzaW5nbGUgc2VhcmNoIHdpbGwgYmUgcGVyZm9ybWVkLlxyXG5cdFx0XHRcdFx0ZnVsbFNlYXJjaDogdHJ1ZSxcclxuXHRcdFx0XHRcdC8vIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBzZWFyY2ggcmV0dXJucyBhIHJlc3VsdC5cclxuXHRcdFx0XHRcdG9uUmVzdWx0OiAocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIHdpdGggJ1BBR0VfU1RPUCcgbW9kZSwgdGhlIGNhbGxiYWNrIGlzIGludm9rZWQgYWZ0ZXIgZWFjaCBwYWdlIGhhcyBiZWVuIHNlYXJjaGVkLlxyXG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0LnJlc3VsdENvZGUgPT09IHRoaXMud2ViVmlld2VySW5zdGFuY2UuQ29yZUNvbnRyb2xzLlNlYXJjaC5SZXN1bHRDb2RlLkZPVU5EKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IG5ldyBBbm5vdGF0aW9ucy5UZXh0SGlnaGxpZ2h0QW5ub3RhdGlvbigpO1xyXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uUXVhZHMgPSByZXN1bHQucXVhZHMubWFwKChxdWFkKSA9PiBxdWFkLmdldFBvaW50cygpKTtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhbm5vdGF0aW9uLlF1YWRzKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLlBhZ2VOdW1iZXIgPSByZXN1bHQucGFnZU51bTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLlN0cm9rZUNvbG9yID0gbmV3IEFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlZEFub3RhdGlvbnMucHVzaChhbm5vdGF0aW9uKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdE1hbmFnZXIuYWRkQW5ub3RhdGlvbnMoW2Fubm90YXRpb25dKTtcclxuXHRcdFx0XHRcdFx0XHRhbm5vdE1hbmFnZXIuZHJhd0Fubm90YXRpb25zRnJvbUxpc3QoW2Fubm90YXRpb25dKTtcclxuXHRcdFx0XHRcdFx0XHRkb2NWaWV3ZXIuZGlzcGxheUFkZGl0aW9uYWxTZWFyY2hSZXN1bHRzKFtyZXN1bHRdKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0c2VhcmNoVGV4dEFycmF5Lm1hcCgoc2VhcmNoZWRUZXh0KSA9PiB7XHJcblx0XHRcdFx0XHRkb2NWaWV3ZXIudGV4dFNlYXJjaEluaXQoc2VhcmNoZWRUZXh0LCBtb2RlLCBzZWFyY2hPcHRpb25zKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBzZWFyY2ggZm9yIHNpbmdsZSB3b3JkIGluIGFsbCBwYWdlc1xyXG5cdHNlYXJjaEZvcldvcmRJbkFsbFBhZ2VzKHNlYXJjaGVkV29yZCkge1xyXG5cdFx0dGhpcy5wYWdlcy5wYWdlcy5mb3JFYWNoKChwYWdlLCBpbmRleCkgPT4ge1xyXG5cdFx0XHR0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG5cdFx0XHR0aGlzLnBhZ2VXaWR0aCA9IHBhZ2UucGFnZV93aWR0aDtcclxuXHRcdFx0dGhpcy5zdGFuZGFyZEhlaWdodCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VIZWlnaHQoaW5kZXggKyAxKTtcclxuXHRcdFx0dGhpcy5zdGFuZGFyZFdpZHRoID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZVdpZHRoKGluZGV4ICsgMSk7XHJcblx0XHRcdGNvbnN0IHggPSB0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuc3RhbmRhcmRXaWR0aDsgLy8gd2lkdGggcmF0aW9cclxuXHRcdFx0Y29uc3QgeSA9IHRoaXMucGFnZUhlaWdodCAvIHRoaXMuc3RhbmRhcmRIZWlnaHQ7IC8vIGhlaWdodCByYXRpb1xyXG5cdFx0XHRwYWdlLnpvbmVzLmZvckVhY2goKHpvbmUpID0+IHtcclxuXHRcdFx0XHR6b25lLnBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoKSA9PiB7XHJcblx0XHRcdFx0XHRwYXJhZ3JhcGgubGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRsaW5lLndvcmRzLmZvckVhY2goKHdvcmQpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAod29yZC50ZXh0LmluY2x1ZGVzKHNlYXJjaGVkV29yZCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFubm90YXRpb24uUGFnZU51bWJlciA9IGluZGV4KzE7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcXVhZHMgPSBbXHJcblx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4MTogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHgyOiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR4Mzogd29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eDQ6IHdvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR5MTogd29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHkyOiB3b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eTM6IHdvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHk0OiB3b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oaWdsaWdodFRleHQocXVhZHMsIGluZGV4ICsgMSk7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNvbnN0cnVjdFNlYXJjaFJlc3VsdChzZWFyY2hlZFdvcmQsIGluZGV4ICsgMSwgcXVhZHMsIGxpbmUudGV4dCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gc2VhcmNoIGZvciB3b3JkIGluIHNpbmdsZSBsaW5lXHJcblx0U2VhcmNoRm9yV29yZEluTGluZShsaXN0T2ZTZWFyY2hlZFdvcmRzLCBsaW5lLCBwYWdlbnVtYmVyLCBwYWdlKSB7XHJcblx0XHR0aGlzLnBhZ2VIZWlnaHQgPSBwYWdlLnBhZ2VfaGVpZ2h0O1xyXG5cdFx0dGhpcy5wYWdlV2lkdGggPSBwYWdlLnBhZ2Vfd2lkdGg7XHJcblx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChwYWdlbnVtYmVyKTtcclxuXHRcdHRoaXMuc3RhbmRhcmRXaWR0aCA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChwYWdlbnVtYmVyKTtcclxuXHRcdGNvbnN0IHggPSB0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuc3RhbmRhcmRXaWR0aDsgLy8gd2lkdGggcmF0aW9cclxuXHRcdGNvbnN0IHkgPSB0aGlzLnBhZ2VIZWlnaHQgLyB0aGlzLnN0YW5kYXJkSGVpZ2h0OyAvLyBoZWlnaHQgcmF0aW9cclxuXHRcdC8vIGZpbmQgb25seSB3b3JkcyByZWxhdGVkIHRvIG15IHNlYXJjaCBmb3JtIHRoZSBsaW5lXHJcblx0XHRsZXQgbXlGb3VuZGVkUmVzdWx0cyA9IFtdO1xyXG5cdFx0bGV0IGNvcnJlY3RSZXN1bHRzID0gW107XHJcblx0XHRsaW5lLndvcmRzLmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAobGlzdE9mU2VhcmNoZWRXb3Jkcy5pbmRleE9mKHdvcmQudGV4dCkgPiAtMSkge1xyXG5cdFx0XHRcdG15Rm91bmRlZFJlc3VsdHMucHVzaCh7IHdvcmQ6IHdvcmQsIHdvcmRJbmRleDogd29yZEluZGV4IH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyBmaW5kIG9ubHkgd29yZHMgZXhpc3QgaW4gbXkgc2VhcmNoIHNlbnRlbmNlIGFuZCBub3Qgc2luZ2xlIGFuZCByZXBlYXRlZCB3b3JkXHJcblx0XHRteUZvdW5kZWRSZXN1bHRzLm1hcCgocmVzdWx0LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0bXlGb3VuZGVkUmVzdWx0c1tpbmRleF1bJ3dvcmRJbmRleCddIC0gMSA9PT1cclxuXHRcdFx0XHRcdChteUZvdW5kZWRSZXN1bHRzW2luZGV4IC0gMV0gJiYgbXlGb3VuZGVkUmVzdWx0c1tpbmRleCAtIDFdWyd3b3JkSW5kZXgnXSkgfHxcclxuXHRcdFx0XHQobXlGb3VuZGVkUmVzdWx0c1tpbmRleCArIDFdICYmXHJcblx0XHRcdFx0XHRteUZvdW5kZWRSZXN1bHRzW2luZGV4ICsgMV1bJ3dvcmRJbmRleCddIC0gMSA9PT0gbXlGb3VuZGVkUmVzdWx0c1tpbmRleF1bJ3dvcmRJbmRleCddKVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRjb3JyZWN0UmVzdWx0cy5wdXNoKHJlc3VsdCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIGhpZ2hsaWh0IHRoZXNlIHdvcmRzIGFmdGVyIGVsZW1pbmF0aW5nIGFsbCByZXBlYXRlZCBhbmQgcmVsYXRlZCB3b3Jkc1xyXG5cdFx0Ly8gbXVzdCBiZSBmb3IgbG9vcCBzcCBpIGNhbiBjb250cm9sIHRoZSBzdGVwIGluIGVhY2ggbG9vcFxyXG5cdFx0bGV0IHF1YWRzID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvcnJlY3RSZXN1bHRzLmxlbmd0aDsgaSA9IGkgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCkge1xyXG5cdFx0XHRxdWFkcy5wdXNoKHtcclxuXHRcdFx0XHR4MTogY29ycmVjdFJlc3VsdHNbaSArIGxpc3RPZlNlYXJjaGVkV29yZHMubGVuZ3RoIC0gMV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnggLyB4LFxyXG5cdFx0XHRcdHgyOiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC54IC8geCxcclxuXHRcdFx0XHR4MzogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy5ib3R0b21fcmlnaHQueCAvIHgsXHJcblx0XHRcdFx0eDQ6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMudXBwZXJfbGVmdC54IC8geCxcclxuXHRcdFx0XHR5MTogY29ycmVjdFJlc3VsdHNbaV0ud29yZC5jb29yZGluYXRlcy51cHBlcl9sZWZ0LnkgLyB5LFxyXG5cdFx0XHRcdHkyOiBjb3JyZWN0UmVzdWx0c1tpICsgbGlzdE9mU2VhcmNoZWRXb3Jkcy5sZW5ndGggLSAxXS53b3JkLmNvb3JkaW5hdGVzLnVwcGVyX2xlZnQueSAvIHksXHJcblx0XHRcdFx0eTM6IGNvcnJlY3RSZXN1bHRzW2kgKyBsaXN0T2ZTZWFyY2hlZFdvcmRzLmxlbmd0aCAtIDFdLndvcmQuY29vcmRpbmF0ZXMuYm90dG9tX3JpZ2h0LnkgLyB5LFxyXG5cdFx0XHRcdHk0OiBjb3JyZWN0UmVzdWx0c1tpXS53b3JkLmNvb3JkaW5hdGVzLmJvdHRvbV9yaWdodC55IC8geVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5oaWdsaWdodFRleHQocXVhZHMsIHBhZ2VudW1iZXIpO1xyXG5cdFx0XHR0aGlzLmNvbnN0cnVjdFNlYXJjaFJlc3VsdChsaXN0T2ZTZWFyY2hlZFdvcmRzLmpvaW4oJyAnKSwgcGFnZW51bWJlciwgcXVhZHMsIGxpbmUudGV4dCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RTZWFyY2hSZXN1bHQoc2VhcmNoZWRUZXh0LCBwYWdlTnVtLCBxdWFkcywgbGluZSkge1xyXG5cdFx0bGV0IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggPSBsaW5lLmluZGV4T2Yoc2VhcmNoZWRUZXh0KTtcclxuXHRcdGxldCBteVNlZWFyY2hlZFRleHRFbmRJbmRleCA9IG15U2VhcmNoU3RhcnRUZXh0SW5kZXggKyBzZWFyY2hlZFRleHQubGVuZ3RoO1xyXG5cdFx0bGV0IHNlYXJjaFJlc3VsdE9iamVjdCA9IHtcclxuXHRcdFx0YW1iaWVudFN0cjogbGluZSxcclxuXHRcdFx0cmVzdWx0U3RyOiBzZWFyY2hlZFRleHQsXHJcblx0XHRcdHJlc3VsdFN0clN0YXJ0OiBteVNlYXJjaFN0YXJ0VGV4dEluZGV4LFxyXG5cdFx0XHRyZXN1bHRTdHJFbmQ6IG15U2VlYXJjaGVkVGV4dEVuZEluZGV4LFxyXG5cdFx0XHRwYWdlTnVtOiBwYWdlTnVtLFxyXG5cdFx0XHRyZXN1bHRDb2RlOiAyLFxyXG5cdFx0XHRxdWFkczogW1xyXG5cdFx0XHRcdHtcclxuXHRcdFx0XHRcdGVhOiBxdWFkc1swXVsneTMnXSxcclxuXHRcdFx0XHRcdGZhOiBxdWFkc1swXVsneTQnXSxcclxuXHRcdFx0XHRcdGhhOiBxdWFkc1swXVsneDEnXSxcclxuXHRcdFx0XHRcdGlhOiBxdWFkc1swXVsneDInXSxcclxuXHRcdFx0XHRcdHBCOiBxdWFkc1swXVsneDMnXSxcclxuXHRcdFx0XHRcdHFCOiBxdWFkc1swXVsneDQnXSxcclxuXHRcdFx0XHRcdHJCOiBxdWFkc1swXVsneTEnXSxcclxuXHRcdFx0XHRcdHNCOiBxdWFkc1swXVsneTInXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XVxyXG5cdFx0fTtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzLnB1c2goc2VhcmNoUmVzdWx0T2JqZWN0KTtcclxuXHRcdGNvbnNvbGUubG9nKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHR9XHJcblxyXG5cdGRpc3BhbGF5U2VhcmNoUmVzdWx0cyhkb2NWaWV3ZXIpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRkb2NWaWV3ZXIuZGlzcGxheUFkZGl0aW9uYWxTZWFyY2hSZXN1bHRzKHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzKTtcclxuXHRcdH0sIDUwMCk7XHJcblx0fVxyXG5cclxuXHQvLyBkcmF3IGhpbGlndGhpbmcgYXJvdW5kIGNlcnRhaW4gY2hhcmF0YWN0ZXJzXHJcblx0aGlnbGlnaHRUZXh0KHF1YWRzLCBwYWdlTnVtYmVyKSB7XHJcblx0XHRjb25zdCBoaWdobGlnaHRpbmdBbm5vdCA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLlRleHRIaWdobGlnaHRBbm5vdGF0aW9uKCk7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5TdHJva2VDb2xvciA9IG5ldyB0aGlzLndlYlZpZXdlckluc3RhbmNlLkFubm90YXRpb25zLkNvbG9yKDI1MCwgMjA2LCAwLCAwLjUwMTk2KTtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LlF1YWRzID0gcXVhZHM7XHJcblx0XHRoaWdobGlnaHRpbmdBbm5vdC5QYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcclxuXHRcdGhpZ2hsaWdodGluZ0Fubm90LkF1dGhvciA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcblx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5wdXNoKGhpZ2hsaWdodGluZ0Fubm90KTtcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cclxuXHRcdC8vIG5lZWQgdG8gZHJhdyB0aGUgYW5ub3RhdGlvbiBvdGhlcndpc2UgaXQgd29uJ3Qgc2hvdyB1cCB1bnRpbCB0aGUgcGFnZSBpcyByZWZyZXNoZWRcclxuXHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oaGlnaGxpZ2h0aW5nQW5ub3QpO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoRm4gPSAoc2VhcmNoVmFsdWUsIG9wdGlvbnMpID0+IHtcclxuXHRcdHRoaXMubXlTZWFyY2hTdHJpbmdSZXN1bHRzID0gW107XHJcblx0XHRpZiAodGhpcy5zYXZlZEFub3RhdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLnNhdmVkQW5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0+IHtcclxuXHRcdFx0XHRhbm5vdGF0aW9uLkhpZGRlbiA9IHRydWU7XHJcblx0XHRcdFx0Ly8gQWx3YXlzIHJlZHJhdyBhbm5vdGF0aW9uIGlmIHJlbmRlcmluZyB3YXMgdXBkYXRlZFxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbik7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly8gZG9uJ3QgZG8gYW55IHNlYXJjaCB1bnRpbCB0aGVyZSBpcyBhIHNlYXJjaCBwYXR0ZXJuXHJcblx0XHRpZiAoc2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0aWYgKHRoaXMuZmlsZVdpdGhPY3IpIHtcclxuXHRcdFx0XHQvLyBhZGQgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggc2VhcmNoIHJlc3VsdFxyXG5cdFx0XHRcdC8vIGNvbnN0IGFubm90YXRpb24gPSBuZXcgQW5ub3RhdGlvbnMuVGV4dEhpZ2hsaWdodEFubm90YXRpb24oKTtcclxuXHRcdFx0XHRsZXQgbXlTZWFyY2ggPSBzZWFyY2hWYWx1ZS5zcGxpdCgnICcpO1xyXG5cdFx0XHRcdGlmIChteVNlYXJjaC5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggbW9yZSB0aGFuIG9uZSB3b3JkXHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VzLnBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZUhlaWdodCA9IHBhZ2UucGFnZV9oZWlnaHQ7XHJcblx0XHRcdFx0XHRcdHRoaXMucGFnZVdpZHRoID0gcGFnZS5wYWdlX3dpZHRoO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkSGVpZ2h0ID0gdGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0UGFnZUhlaWdodChpbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YW5kYXJkV2lkdGggPSB0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0cGFnZS56b25lcy5mb3JFYWNoKCh6b25lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0em9uZS5wYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0cGFyYWdyYXBoLmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxpbmUudGV4dC5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLlNlYXJjaEZvcldvcmRJbkxpbmUobXlTZWFyY2gsIGxpbmUsIGluZGV4ICsgMSwgcGFnZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyB0aGVuIGkgYW0gc2VhcmNoaW5nIHdpdGggb25seSBvbmUgd29yZFxyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hGb3JXb3JkSW5BbGxQYWdlcyhzZWFyY2hWYWx1ZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyLmNsZWFyU2VhcmNoUmVzdWx0cygpO1xyXG5cdFx0XHRcdHRoaXMuZGlzcGFsYXlTZWFyY2hSZXN1bHRzKHRoaXMud2ViVmlld2VySW5zdGFuY2UuZG9jVmlld2VyKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5kb2NWaWV3ZXIuY2xlYXJTZWFyY2hSZXN1bHRzKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNpbGVudFBkZlRyb25TZXJ2aWNlLmlzRW5hYmxlZCkge1xyXG5cdFx0XHR0aGlzLiNyZXNldCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMud2ViVmlld2VySW5zdGFuY2UpIHtcclxuXHRcdFx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmNsb3NlRG9jdW1lbnQoKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5wZGZ0cm9uU2VydmljZS5pbnN0YW5jZSA9IHRoaXMud2ViVmlld2VySW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24gPyB0aGlzLnRyYW5zZWxhdGlvblN1YnNjcml0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0I3Jlc2V0KCkge1xyXG5cdFx0dGhpcy53ZWJWaWV3ZXJJbnN0YW5jZS5jbG9zZURvY3VtZW50KCkudGhlbigoKSA9PiB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdkb2N1bWVudCBjbG9zZWQhJyk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMucGRmdHJvblNlcnZpY2UuaW5zdGFuY2UgPSBudWxsO1xyXG5cdFx0dGhpcy50cmFuc2VsYXRpb25TdWJzY3JpdGlvbiA/IHRoaXMudHJhbnNlbGF0aW9uU3Vic2NyaXRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zaWxlbnRQZGZUcm9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHR0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcblx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLnNldEhlYWRlckl0ZW1zKChoZWFkZXIpID0+IHtcclxuXHRcdFx0aGVhZGVyLmhlYWRlcnMuZGVmYXVsdCA9IGhlYWRlci5oZWFkZXJzLmRlZmF1bHQuZmlsdGVyKChxKSA9PiAhcS5pbWc/LmluY2x1ZGVzKCc8c3ZnJykpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLndlYlZpZXdlckluc3RhbmNlLmRvY1ZpZXdlci5vZmYoJ2RvY3VtZW50TG9hZGVkJywgdGhpcy4jZG9jTG9hZGVkKTtcclxuXHRcdC8vIG1heWJlIHdpbGwgbmVlZCB0byByZXNldCBzaWduYXR1cmUgJiBhbm5vdGF0aW9uc1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2ICNmaWxlVmlld2VyIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIj48L2Rpdj5cclxuIl19
|
|
@@ -238,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
238
238
|
providedIn: "root",
|
|
239
239
|
}]
|
|
240
240
|
}], ctorParameters: function () { return []; } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU16RCxNQUFNLE9BQU8sY0FBYztJQU96QjtRQU5BLFNBQUksR0FBVyxFQUFFLENBQUM7UUFFbEIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIseUJBQW9CLEdBQVUsRUFBRSxDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFaEIsdUdBQXVHO0lBQ3ZHLDRFQUE0RTtJQUN0RSw2QkFBNkI7O1lBQ2pDLEtBQUssSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDdkMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDNUI7UUFDSCxDQUFDO0tBQUE7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0ssbUNBQW1DOztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RSxDQUFDO0tBQUE7SUFFRCwwQkFBMEI7UUFDeEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxF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O2dCQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtvQkFDdEIsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFBO2dCQUNELHNDQUFzQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTs7NEdBdk9VLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBvYnNlcnZhYmxlLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZnRyb25TZXJ2aWNlIHtcclxuICBtb2RlOiBTdHJpbmcgPSBcIlwiO1xyXG4gIGluc3RhbmNlO1xyXG4gIHN0YW1wQW5ub3RzOiBhbnlbXSA9IFtdO1xyXG4gIHNpZ25hdHVyZUFubm90YXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIHBkZlRyb25TdHJlYW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgb25JbWFnZUV4dHJhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAvLyB3ZSBsZXQgdXBkYXRlIG9wZW4gc28gdXNlciBjYW4gZGVsZXRlIGl0IG9yIG1vdmUgaXQgdW50aWwgc2F2aW5nIHdoZW4gc2F2aW5nIHdlIGNsb3NlIGVkaXRpbmcgb24gaXQgXHJcbiAgLy8gdG8gcHJldmVudCB1c2VyIGZyb20gZGVsZXRpbmcgaXQgYWZ0ZXIgc2F2aW5nIGFuZCBvcGVuaW5nIGFub3RhdGlvbiBhZ2FpblxyXG4gIGFzeW5jIGRpc2FibGVRckNvZGVNb2RpZnliZWZvcmVzYXZlKCkge1xyXG4gICAgZm9yIChsZXQgc3RhbXBBbm5vdCBvZiB0aGlzLnN0YW1wQW5ub3RzKSB7XHJcbiAgICAgIHN0YW1wQW5ub3QuUmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTaWduYXR1cmVBbm5vdGF0aW9ucygpIHtcclxuICAgIHRoaXMuc2lnbmF0dXJlQW5ub3RhdGlvbnMgPSBbXTtcclxuICB9XHJcbiAgYXN5bmMgcmVtb3ZlU2lnbmF0dXJlQW5ub3RhaW9uc2JlZm9yZXNhdmUoKSB7XHJcbiAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5vZmYoXCJhbm5vdGF0aW9uQ2hhbmdlZFwiKTtcclxuICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmRlbGV0ZUFubm90YXRpb24odGhpcy5zaWduYXR1cmVBbm5vdGF0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRTaWduYXR1cmVBbm5vdGFpb25zSW5mbygpIHtcclxuICAgIGxldCBzaWduYXR1cmVJbmZvID0gdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IFBhZ2VIZWlnaHQgPSB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlSGVpZ2h0KGl0ZW0uUGFnZU51bWJlcik7XHJcbiAgICAgIGxldCBQYWdlV2lkdGggPSB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci5nZXRQYWdlV2lkdGgoaXRlbS5QYWdlTnVtYmVyKTtcclxuICAgICAgbGV0IHlDb25zdCA9IHRoaXMubW9kaWZ5U2lnbmF0dXJlQW5ub3RhaW9uSGVpZ2h0QW5kV2lkdGgoXHJcbiAgICAgICAgUGFnZUhlaWdodCxcclxuICAgICAgICBQYWdlV2lkdGhcclxuICAgICAgKS55O1xyXG4gICAgICAvLyBsZXQgeENvbnN0ID0gdGhpcy5tb2RpZnlTaWduYXR1cmVBbm5vdGFpb25IZWlnaHRBbmRXaWR0aChcclxuICAgICAgLy8gICBQYWdlSGVpZ2h0LFxyXG4gICAgICAvLyAgIFBhZ2VXaWR0aFxyXG4gICAgICAvLyApLng7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFnZW5vOiBpdGVtLlBhZ2VOdW1iZXIsXHJcbiAgICAgICAgLy94OiBpdGVtLlggKyB4Q29uc3QsXHJcbiAgICAgICAgeDogaXRlbS5YLFxyXG4gICAgICAgIHk6IGl0ZW0uWSArIHlDb25zdCxcclxuICAgICAgICBoZWlnaHQ6IGl0ZW0uZ2V0SGVpZ2h0KCksXHJcbiAgICAgICAgd2lkdGg6IGl0ZW0uZ2V0V2lkdGgoKSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNpZ25hdHVyZUluZm87XHJcbiAgfVxyXG4gIG1vZGlmeVNpZ25hdHVyZUFubm90YWlvbkhlaWdodEFuZFdpZHRoKFBhZ2VIZWlnaHQsIFBhZ2VXaWR0aCkge1xyXG4gICAgY29uc3Qgc3RhbmRhcmRIZWlnaHQgPSA4NDI7XHJcbiAgICBjb25zdCBzdGFuZGFyZFdpZHRoID0gNTk1O1xyXG4gICAgbGV0IHk6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgeDogbnVtYmVyID0gMDtcclxuICAgIC8vaGVpZ2h0XHJcbiAgICBpZiAoc3RhbmRhcmRIZWlnaHQgPiBQYWdlSGVpZ2h0IHx8IHN0YW5kYXJkSGVpZ2h0IDwgUGFnZUhlaWdodCkge1xyXG4gICAgICB5ID0gc3RhbmRhcmRIZWlnaHQgLSBQYWdlSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy8gd2lkaHRcclxuICAgIGlmIChzdGFuZGFyZFdpZHRoID4gUGFnZVdpZHRoIHx8IHN0YW5kYXJkV2lkdGggPCBQYWdlV2lkdGgpIHtcclxuICAgICAgeCA9IHN0YW5kYXJkV2lkdGggLSBQYWdlV2lkdGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyB5LCB4IH07XHJcbiAgfVxyXG4gIGFkZFNpZ25hdHVyZShiYXNlNjQpIHtcclxuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XHJcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLmdldEN1cnJlbnRQYWdlKCk7XHJcblxyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seShmYWxzZSk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuZGlzYWJsZUVsZW1lbnRzKFtcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1TaGFwZXNcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1FZGl0XCIsXHJcbiAgICAgICAgXCJ0b29sYmFyR3JvdXAtSW5zZXJ0XCIsXHJcbiAgICAgICAgXCJ0b29sYmFyR3JvdXAtQW5ub3RhdGVcIixcclxuICAgICAgXSk7XHJcbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFubm90ID0gbmV3IHRoaXMuaW5zdGFuY2UuQW5ub3RhdGlvbnMuU3RhbXBBbm5vdGF0aW9uKCk7XHJcbiAgICAgIHNpZ25hdHVyZUFubm90LlBhZ2VOdW1iZXIgPSBjdXJyZW50UGFnZTtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuWCA9IDEwMDtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuWSA9IDI1MDtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuV2lkdGggPSAxNDA7XHJcbiAgICAgIHNpZ25hdHVyZUFubm90LkhlaWdodCA9IDYwO1xyXG4gICAgICBjb25zdCBrZWVwQXNTVkcgPSBmYWxzZTtcclxuICAgICAgc2lnbmF0dXJlQW5ub3Quc2V0SW1hZ2VEYXRhKGJhc2U2NCwga2VlcEFzU1ZHKTtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuQXV0aG9yID0gdGhpcy5pbnN0YW5jZS5hbm5vdE1hbmFnZXIuZ2V0Q3VycmVudFVzZXIoKTtcclxuXHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb24oc2lnbmF0dXJlQW5ub3QpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKHNpZ25hdHVyZUFubm90KTtcclxuICAgICAgdGhpcy5wZGZUcm9uU3RyZWFtLm5leHQoeyBhY3Rpb246IFwiYWRkU3RhbXBcIiwgcGFyYW1zOiB7IGJhc2U2NCB9IH0pO1xyXG5cclxuICAgICAgdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9ucy5wdXNoKHNpZ25hdHVyZUFubm90KTtcclxuICAgICAgdGhpcy5pbnN0YW5jZS5hbm5vdE1hbmFnZXIub24oXHJcbiAgICAgICAgXCJhbm5vdGF0aW9uQ2hhbmdlZFwiLFxyXG4gICAgICAgIChhbm5vdGF0aW9ucywgYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYWN0aW9uID09PSBcIm1vZGlmeVwiKSB7XHJcbiAgICAgICAgICAgIGFubm90YXRpb25zLmZvckVhY2goKGNoYW5nZWRhbm5vdCkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMuc2lnbmF0dXJlQW5ub3RhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGkpIHtcclxuICAgICAgICAgICAgICAvLyAgIGlmIChpdGVtLklkID09IGNoYW5nZWRhbm5vdC5JZCkgaXRlbSA9IGNoYW5nZWRhbm5vdDtcclxuICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zXHJcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLklkKVxyXG4gICAgICAgICAgICAgICAgLmluZGV4T2YoY2hhbmdlZGFubm90LklkKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9uc1tpbmRleF0gPSBjaGFuZ2VkYW5ub3Q7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgIGFubm90YXRpb25zLmZvckVhY2goKGNoYW5nZWRhbm5vdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuc2lnbmF0dXJlQW5ub3RhdGlvbnNcclxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uSWQpXHJcbiAgICAgICAgICAgICAgICAuaW5kZXhPZihjaGFuZ2VkYW5ub3QuSWQpO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiTm8gcGRmVHJvbiBpbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgYWRkU3RhbXAodXJsKSB7XHJcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5zZXRSZWFkT25seShmYWxzZSk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuZGlzYWJsZUVsZW1lbnRzKFtcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1TaGFwZXNcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1FZGl0XCIsXHJcbiAgICAgICAgXCJ0b29sYmFyR3JvdXAtSW5zZXJ0XCIsXHJcbiAgICAgICAgXCJ0b29sYmFyR3JvdXAtQW5ub3RhdGVcIixcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMucGRmVHJvblN0cmVhbS5uZXh0KHsgYWN0aW9uOiBcImFkZFN0YW1wXCIsIHBhcmFtczogeyB1cmwgfSB9KTtcclxuICAgICAgbGV0IHN0YW1wQW5ub3QgPSBuZXcgdGhpcy5pbnN0YW5jZS5Bbm5vdGF0aW9ucy5TdGFtcEFubm90YXRpb24oKTtcclxuICAgICAgbGV0IHJvdGF0aW9uID0gdGhpcy5pbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0Q29tcGxldGVSb3RhdGlvbih0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci5nZXRDdXJyZW50UGFnZSgpKTtcclxuICAgICAgc3RhbXBBbm5vdC5QYWdlTnVtYmVyID0gMTtcclxuICAgICAgc3RhbXBBbm5vdC5YID0gMDtcclxuICAgICAgc3RhbXBBbm5vdC5ZID0gMDtcclxuICAgICAgc3RhbXBBbm5vdC5XaWR0aCA9IDE1MDtcclxuICAgICAgc3RhbXBBbm5vdC5IZWlnaHQgPSA3ODtcclxuICAgICAgY29uc3Qga2VlcEFzU1ZHID0gZmFsc2U7XHJcbiAgICAgIGlmIChyb3RhdGlvbiA9PSAxKSB7XHJcbiAgICAgICAgc3RhbXBBbm5vdC5Sb3RhdGlvbiA9IDkwO1xyXG4gICAgICAgIHN0YW1wQW5ub3QuV2lkdGggPSA3ODtcclxuICAgICAgICBzdGFtcEFubm90LkhlaWdodCA9IDE1MDtcclxuICAgICAgfVxyXG4gICAgICBzdGFtcEFubm90LlJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICAgIHN0YW1wQW5ub3Quc2V0SW1hZ2VEYXRhKHVybCwga2VlcEFzU1ZHKTtcclxuICAgICAgc3RhbXBBbm5vdC5BdXRob3IgPSB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5hZGRBbm5vdGF0aW9uKHN0YW1wQW5ub3QpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5yZWRyYXdBbm5vdGF0aW9uKHN0YW1wQW5ub3QpO1xyXG4gICAgICB0aGlzLnN0YW1wQW5ub3RzLnB1c2goc3RhbXBBbm5vdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiTm8gcGRmVHJvbiBpbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgYWRkV2F0ZXJtYXJrKHRleHQpIHtcclxuICAgIHRleHQgPSBuZXcgQXJyYXkoMTAwICogMikuam9pbih0ZXh0ICsgXCIgXCIpOyAvLyBudW1iZXIgb2YgbGluZXNcclxuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLnNldFdhdGVybWFyayh7XHJcbiAgICAgICAgY3VzdG9tOiAoY3R4LCBwYWdlTnVtYmVyLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpID0+IHtcclxuICAgICAgICAgIC8vIGN0eCBpcyBhbiBpbnN0YW5jZSBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBcIiNkOWRjZTJcIjtcclxuICAgICAgICAgIGN0eC5mb250ID0gXCIxNnB0IEFyaWFsXCI7XHJcbiAgICAgICAgICBjdHguZ2xvYmFsQWxwaGEgPSAwLjM7XHJcbiAgICAgICAgICBsZXQgdHh0SGVpZ2h0ID0gNTA7XHJcbiAgICAgICAgICBjb25zdCBsaW5lTnVtYmVyID0gcGFnZVdpZHRoID4gcGFnZUhlaWdodCA/IHBhZ2VXaWR0aCA6IHBhZ2VIZWlnaHQ7XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IE1hdGguY2VpbCgobGluZU51bWJlciAqIDEuNSkgLyB0eHRIZWlnaHQpOyBpKyspIHtcclxuICAgICAgICAgICAgY3R4LnNhdmUoKTtcclxuICAgICAgICAgICAgY3R4LnJvdGF0ZSgtNDUpO1xyXG4gICAgICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgMCwgaSAqIHR4dEhlaWdodCk7XHJcbiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiTm8gcGRmVHJvbiBpbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZVdhdGVybWFyaygpIHtcclxuICAgIHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLnNldFdhdGVybWFyayh7fSk7XHJcbiAgICB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci5yZWZyZXNoQWxsKCk7XHJcbiAgICB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci51cGRhdGVWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0QW5vdGF0aW9uKGFubm90YXRpb24peyBcclxuICAgIGlmKGFubm90YXRpb25bJ2ltYWdlJ10pe1xyXG4gICAgICAvLyBjb252ZXJ0IGJhc2U2NCBzaWduYXR1cmUgaW50byBmaWxlIGFuZCBlbWl0IGl0IHRvIG91dCBzaWRlIFxyXG4gICAgICBsZXQgYmFzZTY0SW1nID0gYW5ub3RhdGlvblsnaW1hZ2UnXVsnY3VycmVudFNyYyddO1xyXG4gICAgICAvLyB2YXIgYXJyID0gYmFzZTY0SW1nLnNwbGl0KCcsJyksXHJcbiAgICAgIC8vIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAgICAgLy8gYnN0ciA9IGF0b2IoYXJyWzFdKSwgXHJcbiAgICAgIC8vIG4gPSBic3RyLmxlbmd0aCwgXHJcbiAgICAgIC8vIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcbiAgICAgIC8vIHdoaWxlKG4tLSl7XHJcbiAgICAgIC8vICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBsZXQgbmFtZSA9IG1pbWUucmVwbGFjZSgnLycgLCAnLicpXHJcbiAgICAgIC8vIGxldCBteUZpbGUgPSBuZXcgRmlsZShbdThhcnJdLCAnbXlTaWduYXR1cmUucG5nJywge3R5cGU6bWltZX0pO1xyXG4gICAgICB0aGlzLm9uSW1hZ2VFeHRyYWN0aW9uLmVtaXQoYmFzZTY0SW1nKTtcclxuICAgICAgLy8gcmV0dXJuIHt0eXBlOidiYXNlNjQnICwgZmlsZSA6IGJhc2U2NEltZ31cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmV4dHJhY3RBbm5vdGF0aW9uU2lnbmF0dXJlKGFubm90YXRpb24gLCB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlcilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGV4dHJhY3RBbm5vdGF0aW9uU2lnbmF0dXJlKGFubm90YXRpb24sIGRvY1ZpZXdlcikge1xyXG4gICAgLy8gQ3JlYXRlIGEgbmV3IENhbnZhcyB0byBkcmF3IHRoZSBBbm5vdGF0aW9uIG9uXHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIC8vIFJlZmVyZW5jZSB0aGUgYW5ub3RhdGlvbiBmcm9tIHRoZSBEb2N1bWVudFxyXG4gICAgY29uc3QgcGFnZU1hdHJpeCA9IGRvY1ZpZXdlci5nZXREb2N1bWVudCgpLmdldFBhZ2VNYXRyaXgoYW5ub3RhdGlvbi5QYWdlTnVtYmVyKTtcclxuICAgIC8vIFNldCB0aGUgaGVpZ2h0ICYgd2lkdGggb2YgdGhlIGNhbnZhcyB0byBtYXRjaCB0aGUgYW5ub3RhdGlvblxyXG4gICAgY2FudmFzLmhlaWdodCA9IGFubm90YXRpb24uSGVpZ2h0O1xyXG4gICAgY2FudmFzLndpZHRoID0gYW5ub3RhdGlvbi5XaWR0aDtcclxuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgLy8gVHJhbnNsYXRlIHRoZSBBbm5vdGF0aW9uIHRvIHRoZSB0b3AgVG9wIExlZnQgQ29ybmVyIG9mIHRoZSBDYW52YXMgaWUgKDAsIDApXHJcbiAgICBjdHgudHJhbnNsYXRlKC1hbm5vdGF0aW9uLlgsIC1hbm5vdGF0aW9uLlkpO1xyXG4gICAgLy8gRHJhdyB0aGUgQW5ub3RhdGlvbiBvbnRvIHRoZSBDYW52YXNcclxuICAgIGFubm90YXRpb24uZHJhdyhjdHgsIHBhZ2VNYXRyaXgpO1xyXG4gICAgLy8gQ29udmVydCB0aGUgQ2FudmFzIHRvIGEgQmxvYiBPYmplY3QgZm9yIFVwbG9hZFxyXG4gICAgY2FudmFzLnRvQmxvYigoYmxvYikgPT4ge1xyXG4gICAgICAvLyBDYWxsIHlvdXIgQmxvYiBTdG9yYWdlIFVwbG9hZCBGdW5jdGlvblxyXG4gICAgICAvLyBsZXQgbmFtZSA9IGJsb2IudHlwZS5yZXBsYWNlKCcvJyAsICcuJylcclxuICAgICAgLy8gbGV0IG15RmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgbmFtZSk7XHJcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTsgXHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgdmFyIGJhc2U2NGRhdGEgPSByZWFkZXIucmVzdWx0OyAgICAgICAgICAgICAgICBcclxuICAgICAgICBjb25zb2xlLmxvZyhiYXNlNjRkYXRhKTtcclxuICAgICAgICB0aGlzLm9uSW1hZ2VFeHRyYWN0aW9uLmVtaXQoYmFzZTY0ZGF0YSk7IFxyXG4gICAgICB9XHJcbiAgICAgIC8vIHJldHVybiB7dHlwZTogJ2Jsb2InICwgZmlsZSA6IGJsb2J9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmdHJvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGZ0cm9uL3BkZnRyb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXpELE1BQU0sT0FBTyxjQUFjO0lBT3pCO1FBTkEsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4Qix5QkFBb0IsR0FBVSxFQUFFLENBQUM7UUFDakMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVoQix1R0FBdUc7SUFDdkcsNEVBQTRFO0lBQ3RFLDZCQUE2Qjs7WUFDakMsS0FBSyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUN2QyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUM1QjtRQUNILENBQUM7S0FBQTtJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDSyxtQ0FBbUM7O1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7S0FBQTtJQUVELDBCQUEwQjtRQUN4QixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxF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LENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO29CQUN0QixJQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDLENBQUE7Z0JBQ0Qsc0NBQXNDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBOzs0R0F2T1UsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IG9ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmdHJvblNlcnZpY2Uge1xyXG4gIG1vZGU6IFN0cmluZyA9IFwiXCI7XHJcbiAgaW5zdGFuY2U7XHJcbiAgc3RhbXBBbm5vdHM6IGFueVtdID0gW107XHJcbiAgc2lnbmF0dXJlQW5ub3RhdGlvbnM6IGFueVtdID0gW107XHJcbiAgcGRmVHJvblN0cmVhbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvbkltYWdlRXh0cmFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIC8vIHdlIGxldCB1cGRhdGUgb3BlbiBzbyB1c2VyIGNhbiBkZWxldGUgaXQgb3IgbW92ZSBpdCB1bnRpbCBzYXZpbmcgd2hlbiBzYXZpbmcgd2UgY2xvc2UgZWRpdGluZyBvbiBpdCBcclxuICAvLyB0byBwcmV2ZW50IHVzZXIgZnJvbSBkZWxldGluZyBpdCBhZnRlciBzYXZpbmcgYW5kIG9wZW5pbmcgYW5vdGF0aW9uIGFnYWluXHJcbiAgYXN5bmMgZGlzYWJsZVFyQ29kZU1vZGlmeWJlZm9yZXNhdmUoKSB7XHJcbiAgICBmb3IgKGxldCBzdGFtcEFubm90IG9mIHRoaXMuc3RhbXBBbm5vdHMpIHtcclxuICAgICAgc3RhbXBBbm5vdC5SZWFkT25seSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclNpZ25hdHVyZUFubm90YXRpb25zKCkge1xyXG4gICAgdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9ucyA9IFtdO1xyXG4gIH1cclxuICBhc3luYyByZW1vdmVTaWduYXR1cmVBbm5vdGFpb25zYmVmb3Jlc2F2ZSgpIHtcclxuICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLm9mZihcImFubm90YXRpb25DaGFuZ2VkXCIpO1xyXG4gICAgdGhpcy5pbnN0YW5jZS5hbm5vdE1hbmFnZXIuZGVsZXRlQW5ub3RhdGlvbih0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldFNpZ25hdHVyZUFubm90YWlvbnNJbmZvKCkge1xyXG4gICAgbGV0IHNpZ25hdHVyZUluZm8gPSB0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgUGFnZUhlaWdodCA9IHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VIZWlnaHQoaXRlbS5QYWdlTnVtYmVyKTtcclxuICAgICAgbGV0IFBhZ2VXaWR0aCA9IHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLmdldFBhZ2VXaWR0aChpdGVtLlBhZ2VOdW1iZXIpO1xyXG4gICAgICBsZXQgeUNvbnN0ID0gdGhpcy5tb2RpZnlTaWduYXR1cmVBbm5vdGFpb25IZWlnaHRBbmRXaWR0aChcclxuICAgICAgICBQYWdlSGVpZ2h0LFxyXG4gICAgICAgIFBhZ2VXaWR0aFxyXG4gICAgICApLnk7XHJcbiAgICAgIC8vIGxldCB4Q29uc3QgPSB0aGlzLm1vZGlmeVNpZ25hdHVyZUFubm90YWlvbkhlaWdodEFuZFdpZHRoKFxyXG4gICAgICAvLyAgIFBhZ2VIZWlnaHQsXHJcbiAgICAgIC8vICAgUGFnZVdpZHRoXHJcbiAgICAgIC8vICkueDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYWdlbm86IGl0ZW0uUGFnZU51bWJlcixcclxuICAgICAgICAvL3g6IGl0ZW0uWCArIHhDb25zdCxcclxuICAgICAgICB4OiBpdGVtLlgsXHJcbiAgICAgICAgeTogaXRlbS5ZICsgeUNvbnN0LFxyXG4gICAgICAgIGhlaWdodDogaXRlbS5nZXRIZWlnaHQoKSxcclxuICAgICAgICB3aWR0aDogaXRlbS5nZXRXaWR0aCgpLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2lnbmF0dXJlSW5mbztcclxuICB9XHJcbiAgbW9kaWZ5U2lnbmF0dXJlQW5ub3RhaW9uSGVpZ2h0QW5kV2lkdGgoUGFnZUhlaWdodCwgUGFnZVdpZHRoKSB7XHJcbiAgICBjb25zdCBzdGFuZGFyZEhlaWdodCA9IDg0MjtcclxuICAgIGNvbnN0IHN0YW5kYXJkV2lkdGggPSA1OTU7XHJcbiAgICBsZXQgeTogbnVtYmVyID0gMDtcclxuICAgIGxldCB4OiBudW1iZXIgPSAwO1xyXG4gICAgLy9oZWlnaHRcclxuICAgIGlmIChzdGFuZGFyZEhlaWdodCA+IFBhZ2VIZWlnaHQgfHwgc3RhbmRhcmRIZWlnaHQgPCBQYWdlSGVpZ2h0KSB7XHJcbiAgICAgIHkgPSBzdGFuZGFyZEhlaWdodCAtIFBhZ2VIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvLyB3aWRodFxyXG4gICAgaWYgKHN0YW5kYXJkV2lkdGggPiBQYWdlV2lkdGggfHwgc3RhbmRhcmRXaWR0aCA8IFBhZ2VXaWR0aCkge1xyXG4gICAgICB4ID0gc3RhbmRhcmRXaWR0aCAtIFBhZ2VXaWR0aDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHksIHggfTtcclxuICB9XHJcbiAgYWRkU2lnbmF0dXJlKGJhc2U2NCkge1xyXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcclxuICAgICAgbGV0IGN1cnJlbnRQYWdlID0gdGhpcy5pbnN0YW5jZS5kb2NWaWV3ZXIuZ2V0Q3VycmVudFBhZ2UoKTtcclxuXHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnNldFJlYWRPbmx5KGZhbHNlKTtcclxuICAgICAgdGhpcy5pbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoW1xyXG4gICAgICAgIFwidG9vbGJhckdyb3VwLVNoYXBlc1wiLFxyXG4gICAgICAgIFwidG9vbGJhckdyb3VwLUVkaXRcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1JbnNlcnRcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1Bbm5vdGF0ZVwiLFxyXG4gICAgICBdKTtcclxuICAgICAgY29uc3Qgc2lnbmF0dXJlQW5ub3QgPSBuZXcgdGhpcy5pbnN0YW5jZS5Bbm5vdGF0aW9ucy5TdGFtcEFubm90YXRpb24oKTtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuUGFnZU51bWJlciA9IGN1cnJlbnRQYWdlO1xyXG4gICAgICBzaWduYXR1cmVBbm5vdC5YID0gMTAwO1xyXG4gICAgICBzaWduYXR1cmVBbm5vdC5ZID0gMjUwO1xyXG4gICAgICBzaWduYXR1cmVBbm5vdC5XaWR0aCA9IDE0MDtcclxuICAgICAgc2lnbmF0dXJlQW5ub3QuSGVpZ2h0ID0gNjA7XHJcbiAgICAgIGNvbnN0IGtlZXBBc1NWRyA9IGZhbHNlO1xyXG4gICAgICBzaWduYXR1cmVBbm5vdC5zZXRJbWFnZURhdGEoYmFzZTY0LCBrZWVwQXNTVkcpO1xyXG4gICAgICBzaWduYXR1cmVBbm5vdC5BdXRob3IgPSB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5nZXRDdXJyZW50VXNlcigpO1xyXG5cclxuICAgICAgdGhpcy5pbnN0YW5jZS5hbm5vdE1hbmFnZXIuYWRkQW5ub3RhdGlvbihzaWduYXR1cmVBbm5vdCk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oc2lnbmF0dXJlQW5ub3QpO1xyXG4gICAgICB0aGlzLnBkZlRyb25TdHJlYW0ubmV4dCh7IGFjdGlvbjogXCJhZGRTdGFtcFwiLCBwYXJhbXM6IHsgYmFzZTY0IH0gfSk7XHJcblxyXG4gICAgICB0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zLnB1c2goc2lnbmF0dXJlQW5ub3QpO1xyXG4gICAgICB0aGlzLmluc3RhbmNlLmFubm90TWFuYWdlci5vbihcclxuICAgICAgICBcImFubm90YXRpb25DaGFuZ2VkXCIsXHJcbiAgICAgICAgKGFubm90YXRpb25zLCBhY3Rpb24pID0+IHtcclxuICAgICAgICAgIGlmIChhY3Rpb24gPT09IFwibW9kaWZ5XCIpIHtcclxuICAgICAgICAgICAgYW5ub3RhdGlvbnMuZm9yRWFjaCgoY2hhbmdlZGFubm90KSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0saSkge1xyXG4gICAgICAgICAgICAgIC8vICAgaWYgKGl0ZW0uSWQgPT0gY2hhbmdlZGFubm90LklkKSBpdGVtID0gY2hhbmdlZGFubm90O1xyXG4gICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuc2lnbmF0dXJlQW5ub3RhdGlvbnNcclxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uSWQpXHJcbiAgICAgICAgICAgICAgICAuaW5kZXhPZihjaGFuZ2VkYW5ub3QuSWQpO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpZ25hdHVyZUFubm90YXRpb25zW2luZGV4XSA9IGNoYW5nZWRhbm5vdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgYW5ub3RhdGlvbnMuZm9yRWFjaCgoY2hhbmdlZGFubm90KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5zaWduYXR1cmVBbm5vdGF0aW9uc1xyXG4gICAgICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5JZClcclxuICAgICAgICAgICAgICAgIC5pbmRleE9mKGNoYW5nZWRhbm5vdC5JZCk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2lnbmF0dXJlQW5ub3RhdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyBwZGZUcm9uIGluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRTdGFtcCh1cmwpIHtcclxuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnNldFJlYWRPbmx5KGZhbHNlKTtcclxuICAgICAgdGhpcy5pbnN0YW5jZS5kaXNhYmxlRWxlbWVudHMoW1xyXG4gICAgICAgIFwidG9vbGJhckdyb3VwLVNoYXBlc1wiLFxyXG4gICAgICAgIFwidG9vbGJhckdyb3VwLUVkaXRcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1JbnNlcnRcIixcclxuICAgICAgICBcInRvb2xiYXJHcm91cC1Bbm5vdGF0ZVwiLFxyXG4gICAgICBdKTtcclxuICAgICAgdGhpcy5wZGZUcm9uU3RyZWFtLm5leHQoeyBhY3Rpb246IFwiYWRkU3RhbXBcIiwgcGFyYW1zOiB7IHVybCB9IH0pO1xyXG4gICAgICBsZXQgc3RhbXBBbm5vdCA9IG5ldyB0aGlzLmluc3RhbmNlLkFubm90YXRpb25zLlN0YW1wQW5ub3RhdGlvbigpO1xyXG4gICAgICBsZXQgcm90YXRpb24gPSB0aGlzLmluc3RhbmNlLmRvY1ZpZXdlci5nZXRDb21wbGV0ZVJvdGF0aW9uKHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLmdldEN1cnJlbnRQYWdlKCkpO1xyXG4gICAgICBzdGFtcEFubm90LlBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICBzdGFtcEFubm90LlggPSAwO1xyXG4gICAgICBzdGFtcEFubm90LlkgPSAwO1xyXG4gICAgICBzdGFtcEFubm90LldpZHRoID0gMTUwO1xyXG4gICAgICBzdGFtcEFubm90LkhlaWdodCA9IDc4O1xyXG4gICAgICBjb25zdCBrZWVwQXNTVkcgPSBmYWxzZTtcclxuICAgICAgaWYgKHJvdGF0aW9uID09IDEpIHtcclxuICAgICAgICBzdGFtcEFubm90LlJvdGF0aW9uID0gOTA7XHJcbiAgICAgICAgc3RhbXBBbm5vdC5XaWR0aCA9IDc4O1xyXG4gICAgICAgIHN0YW1wQW5ub3QuSGVpZ2h0ID0gMTUwO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YW1wQW5ub3QuUmVhZE9ubHkgPSBmYWxzZTtcclxuICAgICAgc3RhbXBBbm5vdC5zZXRJbWFnZURhdGEodXJsLCBrZWVwQXNTVkcpO1xyXG4gICAgICBzdGFtcEFubm90LkF1dGhvciA9IHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLmFkZEFubm90YXRpb24oc3RhbXBBbm5vdCk7XHJcbiAgICAgIHRoaXMuaW5zdGFuY2UuYW5ub3RNYW5hZ2VyLnJlZHJhd0Fubm90YXRpb24oc3RhbXBBbm5vdCk7XHJcbiAgICAgIHRoaXMuc3RhbXBBbm5vdHMucHVzaChzdGFtcEFubm90KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyBwZGZUcm9uIGluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBhZGRXYXRlcm1hcmsodGV4dCkge1xyXG4gICAgdGV4dCA9IG5ldyBBcnJheSgxMDAgKiAyKS5qb2luKHRleHQgKyBcIiBcIik7IC8vIG51bWJlciBvZiBsaW5lc1xyXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy5pbnN0YW5jZS5kb2NWaWV3ZXIuc2V0V2F0ZXJtYXJrKHtcclxuICAgICAgICBjdXN0b206IChjdHgsIHBhZ2VOdW1iZXIsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkgPT4ge1xyXG4gICAgICAgICAgLy8gY3R4IGlzIGFuIGluc3RhbmNlIG9mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFxyXG4gICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IFwiI2Q5ZGNlMlwiO1xyXG4gICAgICAgICAgY3R4LmZvbnQgPSBcIjE2cHQgQXJpYWxcIjtcclxuICAgICAgICAgIGN0eC5nbG9iYWxBbHBoYSA9IDAuMztcclxuICAgICAgICAgIGxldCB0eHRIZWlnaHQgPSA1MDtcclxuICAgICAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBwYWdlV2lkdGggPiBwYWdlSGVpZ2h0ID8gcGFnZVdpZHRoIDogcGFnZUhlaWdodDtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTWF0aC5jZWlsKChsaW5lTnVtYmVyICogMS41KSAvIHR4dEhlaWdodCk7IGkrKykge1xyXG4gICAgICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgICAgICBjdHgucm90YXRlKC00NSk7XHJcbiAgICAgICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCAwLCBpICogdHh0SGVpZ2h0KTtcclxuICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyBwZGZUcm9uIGluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlV2F0ZXJtYXJrKCkge1xyXG4gICAgdGhpcy5pbnN0YW5jZS5kb2NWaWV3ZXIuc2V0V2F0ZXJtYXJrKHt9KTtcclxuICAgIHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLnJlZnJlc2hBbGwoKTtcclxuICAgIHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyLnVwZGF0ZVZpZXcoKTtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RBbm90YXRpb24oYW5ub3RhdGlvbil7IFxyXG4gICAgaWYoYW5ub3RhdGlvblsnaW1hZ2UnXSl7XHJcbiAgICAgIC8vIGNvbnZlcnQgYmFzZTY0IHNpZ25hdHVyZSBpbnRvIGZpbGUgYW5kIGVtaXQgaXQgdG8gb3V0IHNpZGUgXHJcbiAgICAgIGxldCBiYXNlNjRJbWcgPSBhbm5vdGF0aW9uWydpbWFnZSddWydjdXJyZW50U3JjJ107XHJcbiAgICAgIC8vIHZhciBhcnIgPSBiYXNlNjRJbWcuc3BsaXQoJywnKSxcclxuICAgICAgLy8gbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdLFxyXG4gICAgICAvLyBic3RyID0gYXRvYihhcnJbMV0pLCBcclxuICAgICAgLy8gbiA9IGJzdHIubGVuZ3RoLCBcclxuICAgICAgLy8gdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcclxuICAgICAgLy8gd2hpbGUobi0tKXtcclxuICAgICAgLy8gICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGxldCBuYW1lID0gbWltZS5yZXBsYWNlKCcvJyAsICcuJylcclxuICAgICAgLy8gbGV0IG15RmlsZSA9IG5ldyBGaWxlKFt1OGFycl0sICdteVNpZ25hdHVyZS5wbmcnLCB7dHlwZTptaW1lfSk7XHJcbiAgICAgIHRoaXMub25JbWFnZUV4dHJhY3Rpb24uZW1pdChiYXNlNjRJbWcpO1xyXG4gICAgICAvLyByZXR1cm4ge3R5cGU6J2Jhc2U2NCcgLCBmaWxlIDogYmFzZTY0SW1nfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiAsIHRoaXMuaW5zdGFuY2UuZG9jVmlld2VyKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZXh0cmFjdEFubm90YXRpb25TaWduYXR1cmUoYW5ub3RhdGlvbiwgZG9jVmlld2VyKSB7XHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgQ2FudmFzIHRvIGRyYXcgdGhlIEFubm90YXRpb24gb25cclxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgLy8gUmVmZXJlbmNlIHRoZSBhbm5vdGF0aW9uIGZyb20gdGhlIERvY3VtZW50XHJcbiAgICBjb25zdCBwYWdlTWF0cml4ID0gZG9jVmlld2VyLmdldERvY3VtZW50KCkuZ2V0UGFnZU1hdHJpeChhbm5vdGF0aW9uLlBhZ2VOdW1iZXIpO1xyXG4gICAgLy8gU2V0IHRoZSBoZWlnaHQgJiB3aWR0aCBvZiB0aGUgY2FudmFzIHRvIG1hdGNoIHRoZSBhbm5vdGF0aW9uXHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gYW5ub3RhdGlvbi5IZWlnaHQ7XHJcbiAgICBjYW52YXMud2lkdGggPSBhbm5vdGF0aW9uLldpZHRoO1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAvLyBUcmFuc2xhdGUgdGhlIEFubm90YXRpb24gdG8gdGhlIHRvcCBUb3AgTGVmdCBDb3JuZXIgb2YgdGhlIENhbnZhcyBpZSAoMCwgMClcclxuICAgIGN0eC50cmFuc2xhdGUoLWFubm90YXRpb24uWCwgLWFubm90YXRpb24uWSk7XHJcbiAgICAvLyBEcmF3IHRoZSBBbm5vdGF0aW9uIG9udG8gdGhlIENhbnZhc1xyXG4gICAgYW5ub3RhdGlvbi5kcmF3KGN0eCwgcGFnZU1hdHJpeCk7XHJcbiAgICAvLyBDb252ZXJ0IHRoZSBDYW52YXMgdG8gYSBCbG9iIE9iamVjdCBmb3IgVXBsb2FkXHJcbiAgICBjYW52YXMudG9CbG9iKChibG9iKSA9PiB7XHJcbiAgICAgIC8vIENhbGwgeW91ciBCbG9iIFN0b3JhZ2UgVXBsb2FkIEZ1bmN0aW9uXHJcbiAgICAgIC8vIGxldCBuYW1lID0gYmxvYi50eXBlLnJlcGxhY2UoJy8nICwgJy4nKVxyXG4gICAgICAvLyBsZXQgbXlGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCBuYW1lKTtcclxuICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpOyBcclxuICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcclxuICAgICAgICB2YXIgYmFzZTY0ZGF0YSA9IHJlYWRlci5yZXN1bHQ7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKGJhc2U2NGRhdGEpO1xyXG4gICAgICAgIHRoaXMub25JbWFnZUV4dHJhY3Rpb24uZW1pdChiYXNlNjRkYXRhKTsgXHJcbiAgICAgIH1cclxuICAgICAgLy8gcmV0dXJuIHt0eXBlOiAnYmxvYicgLCBmaWxlIDogYmxvYn1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
91
91
|
type: Inject,
|
|
92
92
|
args: ['environment']
|
|
93
93
|
}] }, { type: i2.NuxeoService }]; } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lsZW50LXBkZnRyb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9zaWxlbnQtcGRmdHJvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFRaEMsWUFDZ0MsUUFBZ0IsRUFDdkMsa0JBQXNDLEVBQ2YsV0FBVyxFQUNsQyxLQUFtQjtRQUhJLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWM7O1FBWDVCLDBEQUF3QjtRQUN4QixpREFBd0MsSUFBSSxFQUFDO1FBQzdDLDhDQUFpQixLQUFLLEVBQUM7UUFDdkIsc0RBQStDLElBQUksRUFBQztRQUNwRCxpREFBbUI7UUFDbkIsa0RBQW9CO0lBT2pCLENBQUM7SUFFSixJQUFJLFNBQVM7UUFDWixPQUFPLHVCQUFBLElBQUksdUNBQVcsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNKLHVCQUFBLElBQUksbUNBQWMsSUFBSSxNQUFBLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsRCx1QkFBQSxJQUFJLGtDQUFhLEdBQUcsTUFBQSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx1QkFBQSxJQUFJLDhDQUFr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Q0FBQztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLE1BQUEsQ0FBQztJQUVKLE9BQU8sdUJBQUEsSUFBSSxtREFBdUIsQ0FBQztBQUNwQyxDQUFDO2tIQWhFVyxvQkFBb0Isa0JBU3ZCLGFBQWEsK0NBRWIsYUFBYTtzSEFYVixvQkFBb0IsY0FGcEIsTUFBTTs0RkFFTixvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFVRSxNQUFNOzJCQUFDLGFBQWE7OzBCQUVwQixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfQkFTRV9IUkVGIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBXZWJWaWV3ZXIgZnJvbSAnQHBkZnRyb24vd2Vidmlld2VyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpbGVudFBkZlRyb25TZXJ2aWNlIHtcclxuXHQjd2ViVmlld2VySW5zdGFuY2U6IGFueTtcclxuXHQjd2ViVmlld2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHQjaXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cdCNpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcclxuXHQjaXNBcmFiaWM6IGJvb2xlYW47XHJcblx0I2lzRW5hYmxlZDogYm9vbGVhbjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KEFQUF9CQVNFX0hSRUYpIHByaXZhdGUgYmFzZUhyZWY6IHN0cmluZyxcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIG51eGVvOiBOdXhlb1NlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdGdldCBpc0VuYWJsZWQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy4jaXNFbmFibGVkO1xyXG5cdH1cclxuXHJcblx0c3RhcnQoKSB7XHJcblx0XHR0aGlzLiNpc0VuYWJsZWQgPSB0cnVlO1xyXG5cdFx0dGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaXNBcmFiaWMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy4jaXNBcmFiaWMgPSByZXM7XHJcblx0XHRcdGlmICghdGhpcy4jd2ViVmlld2VyRWxlbWVudCkge1xyXG5cdFx0XHRcdHRoaXMuI3dlYlZpZXdlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHRcdFx0XHR0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50LmlkID0gJ3NpbGVudC12aWV3ZXInO1xyXG5cdFx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy4jd2ViVmlld2VyRWxlbWVudC5zdHlsZSwge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogJ25vbmUnLFxyXG5cdFx0XHRcdFx0d2lkdGg6ICcxMDAlJyxcclxuXHRcdFx0XHRcdGhlaWdodDogJzEwMCUnXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLiN3ZWJWaWV3ZXJFbGVtZW50KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLiNpbml0aWFsaXplV2ViVmlld2VyKCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdCNpbml0aWFsaXplV2ViVmlld2VyKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0aWYgKHRoaXMuI2lzSW5pdGlhbGl6ZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuXHRcdGlmICh0aGlzLiNpbml0aWFsaXphdGlvblByb21pc2UpIHJldHVybiB0aGlzLiNpbml0aWFsaXphdGlvblByb21pc2U7XHJcblxyXG5cdFx0dGhpcy4jaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gV2ViVmlld2VyKFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cGF0aDogYCR7dGhpcy5iYXNlSHJlZn0vYXNzZXRzL3BkZnRyb25zYCxcclxuXHRcdFx0XHRmb3JjZUNsaWVudFNpZGVJbml0OiB0cnVlLFxyXG5cdFx0XHRcdHN0cmVhbWluZzogdHJ1ZSxcclxuXHRcdFx0XHRsaWNlbnNlS2V5OiB0aGlzLmVudmlyb25tZW50LnBkZnRyb25MaWNlbmNlS2V5LFxyXG5cdFx0XHRcdGNzczogYCR7dGhpcy5iYXNlSHJlZn0vYXNzZXRzL3N0eWxlcy8ke3RoaXMuI2lzQXJhYmljID8gJ2FyJyA6ICdlbid9LW15cGRmdHJvbi5jc3NgLFxyXG5cdFx0XHRcdGFubm90YXRpb25Vc2VyOiBgJHt0aGlzLm51eGVvLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcy5maXJzdE5hbWV9ICR7dGhpcy5udXhlby5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMubGFzdE5hbWV9YCxcclxuXHRcdFx0XHRkaXNhYmxlZEVsZW1lbnRzOiBbJ2Rvd25sb2FkQnV0dG9uJywgJ3ByaW50QnV0dG9uJ11cclxuXHRcdFx0fSxcclxuXHRcdFx0dGhpcy4jd2ViVmlld2VyRWxlbWVudFxyXG5cdFx0KVxyXG5cdFx0XHQudGhlbigoaW5zdGFuY2UpID0+IHtcclxuXHRcdFx0XHR0aGlzLiN3ZWJWaWV3ZXJJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG5cdFx0XHRcdHRoaXMuI2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGluaXRpYWxpemUgV2ViVmlld2VyOicsIGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLiNpbml0aWFsaXphdGlvblByb21pc2UgPSBudWxsO1xyXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiB0aGlzLiNpbml0aWFsaXphdGlvblByb21pc2U7XHJcblx0fVxyXG5cclxuXHRnZXRXZWJWaWV3ZXIoKTogUHJvbWlzZTxbSFRNTEVsZW1lbnQsIGFueV0+IHtcclxuXHRcdGlmICh0aGlzLiNpc0luaXRpYWxpemVkICYmIHRoaXMuI3dlYlZpZXdlckVsZW1lbnQgJiYgdGhpcy4jd2ViVmlld2VySW5zdGFuY2UpIHtcclxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbdGhpcy4jd2ViVmlld2VyRWxlbWVudCwgdGhpcy4jd2ViVmlld2VySW5zdGFuY2VdKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLiNpbml0aWFsaXplV2ViVmlld2VyKCkudGhlbigoKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy4jaXNJbml0aWFsaXplZCB8fCAhdGhpcy4jd2ViVmlld2VyRWxlbWVudCB8fCAhdGhpcy4jd2ViVmlld2VySW5zdGFuY2UpIHtcclxuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdXZWJWaWV3ZXIgaW5pdGlhbGl6YXRpb24gZmFpbGVkLicpKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gW3RoaXMuI3dlYlZpZXdlckVsZW1lbnQsIHRoaXMuI3dlYlZpZXdlckluc3RhbmNlXTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
|