qms-angular 1.0.55 → 1.0.56
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/qms-angular.umd.js +4003 -12241
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/app-icon/app-icon.module.js +16 -29
- package/esm2015/lib/components/app-icon/icon-registry.service.js +7 -9
- package/esm2015/lib/components/badges/qms-badges.component.js +15 -24
- package/esm2015/lib/components/badges/qms-badges.module.js +18 -33
- package/esm2015/lib/components/banner/qms-banner/qms-banner.component.js +16 -28
- package/esm2015/lib/components/banner/qms-banner/qms-banner.module.js +19 -36
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.js +16 -28
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.js +19 -36
- package/esm2015/lib/components/banner/qms-banner-loading/qms-banner-loading.component.js +13 -19
- package/esm2015/lib/components/banner/qms-banner-loading/qms-banner-loading.module.js +17 -30
- package/esm2015/lib/components/breadcrumb/breadcrumb-direction-icon.directive.js +10 -11
- package/esm2015/lib/components/breadcrumb/breadcrumb-item.directive.js +17 -20
- package/esm2015/lib/components/breadcrumb/breadcrumb.js +28 -40
- package/esm2015/lib/components/breadcrumb/breadcrumb.module.js +26 -50
- package/esm2015/lib/components/button/button-toggle.js +85 -120
- package/esm2015/lib/components/button/button.js +78 -86
- package/esm2015/lib/components/button/button.module.js +27 -51
- package/esm2015/lib/components/comment/comment.js +18 -29
- package/esm2015/lib/components/dialog/dialog.js +28 -38
- package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.js +16 -24
- package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.module.js +31 -71
- package/esm2015/lib/components/list/list.js +89 -101
- package/esm2015/lib/components/list/list.module.js +50 -94
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.component.js +29 -55
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.module.js +20 -39
- package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +22 -32
- package/esm2015/lib/components/qms-stepper/qms-stepper.module.js +25 -35
- package/esm2015/lib/components/related/content/related-content.component.js +12 -19
- package/esm2015/lib/components/related/list-other-related/list-related.component.js +25 -29
- package/esm2015/lib/components/related/popup/related-popup.component.js +33 -50
- package/esm2015/lib/components/related/related.module.js +43 -96
- package/esm2015/lib/components/related/risk/analysis/analysis.component.js +17 -23
- package/esm2015/lib/components/related/risk/list/list.component.js +18 -22
- package/esm2015/lib/components/related/risk/result/result.component.js +16 -23
- package/esm2015/lib/components/related/service/related-global.service.js +6 -7
- package/esm2015/lib/components/related/sidenav/sidenav.component.js +12 -21
- package/esm2015/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.js +18 -22
- package/esm2015/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.js +18 -22
- package/esm2015/lib/components/reports/qms-reports.module.js +20 -29
- package/esm2015/lib/components/rich-text/rich-text.js +32 -47
- package/esm2015/lib/components/rich-text/rich-text.module.js +21 -35
- package/esm2015/lib/components/select-dialog/select-dialog.js +16 -31
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +33 -47
- package/esm2015/lib/components/select-include-children/select-include-children.module.js +33 -78
- package/esm2015/lib/components/select-include-children/services/select-global.service.js +6 -7
- package/esm2015/lib/components/suffix-field/suffix-field.directive.js +21 -22
- package/esm2015/lib/components/table/table-action.js +31 -31
- package/esm2015/lib/components/table/table.module.js +21 -37
- package/esm2015/lib/components/test-only/test-only.component.js +11 -14
- package/esm2015/lib/components/tooltip/tooltip.js +19 -24
- package/esm2015/lib/components/tooltip/tooltip.module.js +20 -38
- package/esm2015/lib/components/tree/tree.component.js +33 -46
- package/esm2015/lib/components/tree/tree.module.js +30 -69
- package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.js +16 -22
- package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.module.js +31 -71
- package/esm2015/lib/directives/chip-input/chip-input-chip-list.directive.js +13 -13
- package/esm2015/lib/directives/chip-input/chip-input-field.directive.js +10 -11
- package/esm2015/lib/directives/chip-input/chip-input-select-dropdown.directive.js +10 -11
- package/esm2015/lib/directives/chip-input/chip-input-select-field.directive.js +14 -17
- package/esm2015/lib/directives/chip-input/chip-input-select-trigger.directive.js +13 -14
- package/esm2015/lib/directives/chips/chip-body.directive.js +10 -11
- package/esm2015/lib/directives/chips/chip.directive.js +13 -13
- package/esm2015/lib/directives/dropdown-menu/dropdown-item.directive.js +14 -16
- package/esm2015/lib/directives/file-upload/file-upload-attachment-list.directive.js +10 -11
- package/esm2015/lib/directives/file-upload/file-upload-display.directive.js +16 -19
- package/esm2015/lib/directives/file-upload/file-upload-multiple-display.directive.js +14 -16
- package/esm2015/lib/directives/file-upload/file-upload-multiple-selector.directive.js +20 -26
- package/esm2015/lib/directives/file-upload/file-upload-multiple.directive.js +15 -19
- package/esm2015/lib/directives/file-upload/file-upload-scrollable-attachment-list.directive.js +10 -11
- package/esm2015/lib/directives/file-upload/file-upload-selector.directive.js +18 -25
- package/esm2015/lib/directives/file-upload/file-upload.directive.js +20 -24
- package/esm2015/lib/directives/form.directive.js +51 -48
- package/esm2015/lib/directives/margin.directive.js +14 -15
- package/esm2015/lib/directives/range-slider/range-slider-lockup.directive.js +10 -11
- package/esm2015/lib/directives/range-slider/range-slider.directive.js +14 -17
- package/esm2015/lib/directives/scroll-selected/scroll-to-selected.directive.js +15 -16
- package/esm2015/lib/directives/scrollbar/scrollbar.directive.js +13 -13
- package/esm2015/lib/directives/search-field.directive.js +22 -21
- package/esm2015/lib/directives/side-sheet/drawer-content.directive.js +10 -11
- package/esm2015/lib/directives/side-sheet/drawer-header-action.directive.js +10 -11
- package/esm2015/lib/directives/side-sheet/drawer-header.directive.js +10 -11
- package/esm2015/lib/directives/side-sheet/drawer.directive.js +10 -11
- package/esm2015/lib/directives/tab/tab-group-advanced.directive.js +14 -15
- package/esm2015/lib/directives/tab/tab-group.directive.js +10 -11
- package/esm2015/lib/directives/tab/tab-label.directive.js +10 -11
- package/esm2015/lib/directives/text-block/text-block-line.directive.js +16 -20
- package/esm2015/lib/directives/text-block/text-block.directive.js +14 -17
- package/esm2015/lib/directives/tooltip/tooltip-image.directive.js +13 -14
- package/esm2015/lib/directives/tooltip/tooltip-renderer.directive.js +22 -35
- package/esm2015/lib/material-module.js +16 -35
- package/esm2015/lib/model/en.js +4 -35
- package/esm2015/lib/model/no.js +3 -34
- package/esm2015/lib/pipe/dateFormat.pipe.js +10 -11
- package/esm2015/lib/qms-angular.component.js +11 -13
- package/esm2015/lib/qms-angular.module.js +121 -232
- package/esm2015/lib/qms-angular.service.js +8 -9
- package/esm2015/lib/qms-ckeditor-components/common/bpmn/toolbar.function.js +12 -32
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.js +1 -5
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.js +1 -10
- package/esm2015/lib/qms-ckeditor-components/common/enums/document-type.enum.js +1 -2
- package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +2 -2
- package/esm2015/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.js +16 -23
- package/esm2015/lib/qms-ckeditor-components/common/module/tree/qms-ckeditor-tree.component.js +19 -34
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +53 -577
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.js +35 -69
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.js +8 -12
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +30 -39
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.js +18 -22
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +20 -29
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +18 -22
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +23 -35
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +20 -30
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +18 -27
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor-base.component.js +4 -7
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +44 -118
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +55 -131
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-base.service.js +10 -10
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-api.service.js +9 -9
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +26 -66
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-global.service.js +8 -9
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-link.service.js +9 -9
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.js +9 -9
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.js +9 -9
- package/esm2015/lib/services/translation-registry.service.js +8 -9
- package/esm2015/lib/shared.module.js +4 -9
- package/esm2015/public-api.js +1 -16
- package/esm2015/qms-angular.js +9 -1
- package/fesm2015/qms-angular.js +3031 -11134
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/app-icon/app-icon.module.d.ts +0 -7
- package/lib/components/app-icon/icon-registry.service.d.ts +0 -3
- package/lib/components/badges/qms-badges.component.d.ts +0 -3
- package/lib/components/badges/qms-badges.module.d.ts +0 -9
- package/lib/components/banner/qms-banner/qms-banner.component.d.ts +0 -3
- package/lib/components/banner/qms-banner/qms-banner.module.d.ts +0 -10
- package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.d.ts +0 -3
- package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.d.ts +0 -10
- package/lib/components/banner/qms-banner-loading/qms-banner-loading.component.d.ts +0 -3
- package/lib/components/banner/qms-banner-loading/qms-banner-loading.module.d.ts +0 -8
- package/lib/components/breadcrumb/breadcrumb-direction-icon.directive.d.ts +0 -3
- package/lib/components/breadcrumb/breadcrumb-item.directive.d.ts +0 -3
- package/lib/components/breadcrumb/breadcrumb.d.ts +0 -3
- package/lib/components/breadcrumb/breadcrumb.module.d.ts +0 -13
- package/lib/components/button/button-toggle.d.ts +0 -5
- package/lib/components/button/button.d.ts +0 -7
- package/lib/components/button/button.module.d.ts +0 -9
- package/lib/components/comment/comment.d.ts +0 -3
- package/lib/components/dialog/dialog.d.ts +0 -5
- package/lib/components/edit-file-name-dialog/edit-file-name-dialog.d.ts +0 -3
- package/lib/components/edit-file-name-dialog/edit-file-name-dialog.module.d.ts +0 -16
- package/lib/components/list/list.d.ts +0 -15
- package/lib/components/list/list.module.d.ts +0 -11
- package/lib/components/qms-app-bar/qms-app-bar.component.d.ts +0 -3
- package/lib/components/qms-app-bar/qms-app-bar.module.d.ts +0 -12
- package/lib/components/qms-stepper/qms-stepper.component.d.ts +0 -3
- package/lib/components/qms-stepper/qms-stepper.module.d.ts +0 -8
- package/lib/components/related/content/related-content.component.d.ts +0 -3
- package/lib/components/related/list-other-related/list-related.component.d.ts +0 -3
- package/lib/components/related/popup/related-popup.component.d.ts +0 -3
- package/lib/components/related/related.module.d.ts +0 -29
- package/lib/components/related/risk/analysis/analysis.component.d.ts +0 -3
- package/lib/components/related/risk/list/list.component.d.ts +0 -3
- package/lib/components/related/risk/result/result.component.d.ts +0 -3
- package/lib/components/related/service/related-global.service.d.ts +0 -3
- package/lib/components/related/sidenav/sidenav.component.d.ts +0 -3
- package/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.d.ts +0 -3
- package/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.d.ts +0 -3
- package/lib/components/reports/qms-reports.module.d.ts +0 -7
- package/lib/components/rich-text/rich-text.d.ts +0 -3
- package/lib/components/rich-text/rich-text.module.d.ts +0 -8
- package/lib/components/select-dialog/select-dialog.d.ts +0 -3
- package/lib/components/select-include-children/select-include-children.component.d.ts +0 -3
- package/lib/components/select-include-children/select-include-children.module.d.ts +0 -25
- package/lib/components/select-include-children/services/select-global.service.d.ts +0 -3
- package/lib/components/suffix-field/suffix-field.directive.d.ts +0 -5
- package/lib/components/table/table-action.d.ts +0 -5
- package/lib/components/table/table.module.d.ts +0 -8
- package/lib/components/test-only/test-only.component.d.ts +0 -3
- package/lib/components/tooltip/tooltip.d.ts +0 -3
- package/lib/components/tooltip/tooltip.module.d.ts +0 -9
- package/lib/components/tree/tree.component.d.ts +0 -3
- package/lib/components/tree/tree.module.d.ts +0 -22
- package/lib/components/upload-file-error-dialog/upload-file-error-dialog.d.ts +0 -3
- package/lib/components/upload-file-error-dialog/upload-file-error-dialog.module.d.ts +0 -16
- package/lib/directives/chip-input/chip-input-chip-list.directive.d.ts +0 -3
- package/lib/directives/chip-input/chip-input-field.directive.d.ts +0 -3
- package/lib/directives/chip-input/chip-input-select-dropdown.directive.d.ts +0 -3
- package/lib/directives/chip-input/chip-input-select-field.directive.d.ts +0 -3
- package/lib/directives/chip-input/chip-input-select-trigger.directive.d.ts +0 -3
- package/lib/directives/chips/chip-body.directive.d.ts +0 -3
- package/lib/directives/chips/chip.directive.d.ts +0 -3
- package/lib/directives/dropdown-menu/dropdown-item.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-attachment-list.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-display.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-multiple-display.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-multiple-selector.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-multiple.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-scrollable-attachment-list.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload-selector.directive.d.ts +0 -3
- package/lib/directives/file-upload/file-upload.directive.d.ts +0 -5
- package/lib/directives/form.directive.d.ts +0 -11
- package/lib/directives/margin.directive.d.ts +0 -3
- package/lib/directives/range-slider/range-slider-lockup.directive.d.ts +0 -3
- package/lib/directives/range-slider/range-slider.directive.d.ts +0 -3
- package/lib/directives/scroll-selected/scroll-to-selected.directive.d.ts +0 -3
- package/lib/directives/scrollbar/scrollbar.directive.d.ts +0 -3
- package/lib/directives/search-field.directive.d.ts +0 -5
- package/lib/directives/side-sheet/drawer-content.directive.d.ts +0 -3
- package/lib/directives/side-sheet/drawer-header-action.directive.d.ts +0 -3
- package/lib/directives/side-sheet/drawer-header.directive.d.ts +0 -3
- package/lib/directives/side-sheet/drawer.directive.d.ts +0 -3
- package/lib/directives/tab/tab-group-advanced.directive.d.ts +0 -3
- package/lib/directives/tab/tab-group.directive.d.ts +0 -3
- package/lib/directives/tab/tab-label.directive.d.ts +0 -3
- package/lib/directives/text-block/text-block-line.directive.d.ts +0 -3
- package/lib/directives/text-block/text-block.directive.d.ts +0 -3
- package/lib/directives/tooltip/tooltip-image.directive.d.ts +0 -3
- package/lib/directives/tooltip/tooltip-renderer.directive.d.ts +0 -3
- package/lib/material-module.d.ts +0 -12
- package/lib/model/en.d.ts +0 -31
- package/lib/model/no.d.ts +0 -31
- package/lib/pipe/dateFormat.pipe.d.ts +0 -3
- package/lib/qms-angular.component.d.ts +0 -3
- package/lib/qms-angular.module.d.ts +0 -49
- package/lib/qms-angular.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/common/bpmn/toolbar.function.d.ts +2 -2
- package/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.d.ts +0 -4
- package/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.d.ts +0 -9
- package/lib/qms-ckeditor-components/common/enums/document-type.enum.d.ts +0 -1
- package/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/common/module/tree/qms-ckeditor-tree.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -88
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.d.ts +2 -11
- package/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.d.ts +0 -4
- package/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/qms-ckeditor-base.component.d.ts +0 -3
- package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +0 -8
- package/lib/qms-ckeditor-components/qms-ckeditor.module.d.ts +0 -44
- package/lib/qms-ckeditor-components/services/qms-ckeditor-base.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-api.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +0 -4
- package/lib/qms-ckeditor-components/services/qms-ckeditor-global.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/services/qms-ckeditor-link.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.d.ts +0 -3
- package/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.d.ts +0 -3
- package/lib/services/translation-registry.service.d.ts +0 -3
- package/lib/shared.module.d.ts +0 -4
- package/lib.theme.scss +0 -8
- package/package.json +2 -1
- package/public-api.d.ts +0 -14
- package/qms-angular.d.ts +8 -1
- package/qms-angular.metadata.json +1 -0
- package/src/assets/jointjs/scss/bpmn.scss +35 -36
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ar.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/bg.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-gb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/he.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lt.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ne.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ro.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sq.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ug.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -1
- package/src/assets/qms-ckeditor-plugin/package-lock.json +12177 -17
- package/src/assets/qms-ckeditor-plugin/package.json +0 -1
- package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +3 -22
- package/src/assets/qms-ckeditor-plugin/src/dist/ckeditor.dev.js +173 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/qmsCKEditorBpmnPlugin.js +5 -24
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorConstant.js +1 -7
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorService.js +0 -20
- package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/dist/qmsCKEditorFullscreenPlugin.dev.js +87 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapediting.js +43 -47
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapui.js +1 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/insertimagemapcommand.js +108 -72
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/resizeimagemapcommand.js +3 -4
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/utils.js +0 -13
- package/src/assets/qms-ckeditor-plugin/src/plugins/timestamp/timestamp.js +8 -8
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipui.js +24 -23
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/information.svg +50 -1
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/timestamp.svg +1 -1
- package/src/lib/components/tree/tree.component.scss +1 -1
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +1 -15
- package/src/lib/qms-ckeditor-components/styles/_layout.scss +0 -24
- package/src/lib/qms-ckeditor-components/styles/_modules.scss +0 -8
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.js +0 -7
- package/esm2015/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.js +0 -8
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/sample/sample-graphs.js +0 -16
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/halo-service.js +0 -105
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/inspector-service.js +0 -3762
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.js +0 -68
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.js +0 -372
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/stencil-service.js +0 -1041
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/toolbar-service.js +0 -326
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/shapes/app-shapes.js +0 -318
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.js +0 -80
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.js +0 -9
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.js +0 -9
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.js +0 -3
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.js +0 -43
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.js +0 -322
- package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.js +0 -8
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.js +0 -26
- package/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.d.ts +0 -6
- package/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.d.ts +0 -6
- package/lib/qms-ckeditor-components/common/flowchart/sample/sample-graphs.d.ts +0 -14
- package/lib/qms-ckeditor-components/common/flowchart/service/halo-service.d.ts +0 -48
- package/lib/qms-ckeditor-components/common/flowchart/service/inspector-service.d.ts +0 -18
- package/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.d.ts +0 -17
- package/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.d.ts +0 -62
- package/lib/qms-ckeditor-components/common/flowchart/service/stencil-service.d.ts +0 -1183
- package/lib/qms-ckeditor-components/common/flowchart/service/toolbar-service.d.ts +0 -216
- package/lib/qms-ckeditor-components/common/flowchart/shapes/app-shapes.d.ts +0 -61
- package/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.d.ts +0 -36
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.d.ts +0 -7
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.d.ts +0 -7
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.d.ts +0 -7
- package/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.d.ts +0 -18
- package/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.d.ts +0 -44
- package/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.d.ts +0 -7
- package/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.d.ts +0 -13
- package/src/assets/images/ckeditor5.svg +0 -1
- package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Bold.ttf +0 -0
- package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Light.ttf +0 -0
- package/src/assets/jointjs/fonts/Alegreya_Sans/AlegreyaSans-Regular.ttf +0 -0
- package/src/assets/jointjs/fonts/Alegreya_Sans/OFL.txt +0 -92
- package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Bold.ttf +0 -0
- package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Light.ttf +0 -0
- package/src/assets/jointjs/fonts/Averia_Libre/AveriaLibre-Regular.ttf +0 -0
- package/src/assets/jointjs/fonts/Averia_Libre/OFL.txt +0 -93
- package/src/assets/jointjs/fonts/Roboto_Condensed/LICENSE.txt +0 -202
- package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Bold.ttf +0 -0
- package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Light.ttf +0 -0
- package/src/assets/jointjs/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf +0 -0
- package/src/assets/jointjs/images/delete-icon-modern.png +0 -0
- package/src/assets/jointjs/images/image-icon1.svg +0 -1
- package/src/assets/jointjs/images/image-icon2.svg +0 -6
- package/src/assets/jointjs/images/image-icon3.svg +0 -11
- package/src/assets/jointjs/images/image-icon4.svg +0 -8
- package/src/assets/jointjs/images/member-female.png +0 -0
- package/src/assets/jointjs/images/member-male.png +0 -0
- package/src/assets/jointjs/images/no-color-icon.svg +0 -72
- package/src/assets/jointjs/images/reset-icon-modern.png +0 -0
- package/src/assets/jointjs/images/save-icon-modern.png +0 -0
- package/src/assets/jointjs/images/to-front-icon-modern.png +0 -0
- package/src/assets/jointjs/images/toback-icon-modern.png +0 -0
- package/src/assets/jointjs/images/toolbar-icons-dark.woff +0 -0
- package/src/assets/jointjs/images/toolbar-icons-material.png +0 -0
- package/src/assets/jointjs/images/toolbar-icons-modern.png +0 -0
- package/src/assets/jointjs/images/transparent-icon.svg +0 -50
- package/src/assets/jointjs/scss/style.dark.scss +0 -233
- package/src/assets/jointjs/scss/style.material.scss +0 -234
- package/src/assets/jointjs/scss/style.modern.scss +0 -225
- package/src/assets/jointjs/scss/style.scss +0 -216
- package/src/assets/jointjs/scss/theme-picker.scss +0 -21
- package/src/assets/qms-ckeditor-plugin/src/plugins/aboutckeditor/aboutckeditor.js +0 -28
- package/src/assets/qms-ckeditor-plugin/src/plugins/flowchart/qmsCKEditorFlowchartPlugin.js +0 -63
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/openimagemapcommand.js +0 -58
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/flowchart.svg +0 -507
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/tooltip.svg +0 -1
- package/src/lib/components/select-one/select-one.component.scss +0 -240
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.scss +0 -16
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.scss +0 -5
- package/src/themes/_non-bg-srcollbar.scss +0 -4
@@ -1,83 +1,33 @@
|
|
1
1
|
import { __awaiter } from "tslib";
|
2
2
|
import { Component, HostListener, Inject } from "@angular/core";
|
3
|
-
import { MAT_DIALOG_DATA } from "@angular/material/dialog";
|
3
|
+
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
|
4
4
|
import { takeUntil } from "rxjs/operators";
|
5
|
+
import { TranslateLibraryService } from "../../../services/translation-registry.service";
|
5
6
|
import { CKEditorEventConst } from "../../common/constants/ckeditorEvent.constant";
|
6
7
|
import { FlowChartConst } from "../../common/constants/ckeditorFlowchart.const";
|
7
8
|
import guidHelper from "../../common/helper/guidHelper";
|
8
9
|
import { QMSCKEditorBpmn } from "../../common/models/qms-ckeditor-bpmn.model";
|
9
10
|
import { QMSCKEditorDialogData } from "../../common/models/qms-ckeditor-dialog.model";
|
10
|
-
import { QMSCKEditorSaveAsTemplate } from "../../common/models/qms-ckeditor-save-as-template.model";
|
11
11
|
import { QMSCKEditorConfirmComponent } from "../../common/module/confirm/qms-ckeditor-confirm.component";
|
12
|
+
import { QMSCKEditorToastService } from "../../common/toast/qms-ckeditor-toast.service";
|
12
13
|
import { QMSCKEditorBaseComponent } from "../../qms-ckeditor-base.component";
|
14
|
+
import { QMSCKEditorBpmnApiService } from "../../services/qms-ckeditor-bpmn-api.service";
|
15
|
+
import { BpmnService } from "../../services/qms-ckeditor-bpmn.service";
|
13
16
|
import { SaveTemplateComponent } from "./save-template/save-template.component";
|
14
|
-
import { TargetTypeName } from '../../common/enums/target-type.enum';
|
15
|
-
import { ShapeFlowChartConnectionType } from '../../common/enums/shape-flow-chart-connection-type';
|
16
|
-
import { QMSCKEditorRelatedComponent } from '../qms-ckeditor-relation/qmsckeditor-related.component';
|
17
|
-
import { LinkAttachmentComponent } from '../qms-ckeditor-link/attachments/link-attachment.component';
|
18
|
-
import QMSCKEditorParamter from '../../common/models/qms-ckeditor-parameter.model';
|
19
|
-
import { QMSCKEditorRelation } from '../../common/models/qms-ckeditor-relation.model';
|
20
|
-
import { QMSCKEditorDocumentType } from "../../common/enums/document-type.enum";
|
21
|
-
import { LinkAnchor } from "../../common/enums/link-anchor.enum";
|
22
|
-
import { CKEditorLinkConst } from '../../common/constants/ckeditorLink.constant';
|
23
|
-
import * as i0 from "@angular/core";
|
24
|
-
import * as i1 from "@angular/material/dialog";
|
25
|
-
import * as i2 from "../../../services/translation-registry.service";
|
26
|
-
import * as i3 from "../../services/qms-ckeditor-bpmn.service";
|
27
|
-
import * as i4 from "../../services/qms-ckeditor-bpmn-api.service";
|
28
|
-
import * as i5 from "../../services/qms-ckeditor-link.service";
|
29
|
-
import * as i6 from "@angular/material/icon";
|
30
|
-
import * as i7 from "@angular/material/expansion";
|
31
|
-
import * as i8 from "@angular/material/tabs";
|
32
|
-
import * as i9 from "@angular/material/form-field";
|
33
|
-
import * as i10 from "@angular/material/select";
|
34
|
-
import * as i11 from "@angular/material/core";
|
35
|
-
import * as i12 from "@angular/material/card";
|
36
|
-
import * as i13 from "@angular/material/button";
|
37
|
-
import * as i14 from "@angular/material/progress-bar";
|
38
|
-
import * as i15 from "@angular/common";
|
39
|
-
import * as i16 from "@angular/forms";
|
40
|
-
import * as i17 from "@angular/material/tooltip";
|
41
|
-
import * as i18 from "../../models/qms-ckeditor-bpmn-data.model";
|
42
|
-
class ILink {
|
43
|
-
constructor() {
|
44
|
-
this.target = TargetTypeName.new;
|
45
|
-
this.documentType = QMSCKEditorDocumentType.other;
|
46
|
-
this.url = '';
|
47
|
-
this.title = '';
|
48
|
-
this.icon = '';
|
49
|
-
this.content = '';
|
50
|
-
}
|
51
|
-
}
|
52
17
|
export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
53
|
-
constructor(dialog, translate, bmpnService, bpmnApiService,
|
18
|
+
constructor(dialog, translate, bmpnService, bpmnApiService, dialogRef, data) {
|
54
19
|
super();
|
55
20
|
this.dialog = dialog;
|
56
21
|
this.translate = translate;
|
57
22
|
this.bmpnService = bmpnService;
|
58
23
|
this.bpmnApiService = bpmnApiService;
|
59
|
-
this.linkService = linkService;
|
60
24
|
this.dialogRef = dialogRef;
|
61
25
|
this.data = data;
|
62
26
|
this.expandedPanel = true;
|
63
27
|
this.id = '';
|
64
|
-
this.entityId = '';
|
65
|
-
this.editorContent = '';
|
66
28
|
this.bpmn = new QMSCKEditorBpmn();
|
67
29
|
this.bpmnTemlates = [];
|
68
|
-
this.
|
69
|
-
this.connectionTypes = [];
|
70
|
-
this.selectedTarget = TargetTypeName.new;
|
71
|
-
this.linkUrl = '';
|
72
|
-
this.linkTitle = '';
|
73
|
-
this.anchorByName = '';
|
74
|
-
this.linkIcon = '';
|
75
|
-
this.linkId = '';
|
76
|
-
this.documentType = QMSCKEditorDocumentType.other;
|
77
|
-
this.id = data.id;
|
78
|
-
this.module = data.module;
|
79
|
-
this.entityId = data.entityId;
|
80
|
-
this.editorContent = data.editorContent;
|
30
|
+
this.id = data;
|
81
31
|
}
|
82
32
|
onMessage(event) {
|
83
33
|
if (event.data === FlowChartConst.SAVE_AS_TEMPLATE) {
|
@@ -87,7 +37,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
87
37
|
this.onDeleteTemplate(this.LANG.BPMN.DELETE_TEMPLATE, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_TEMPLATE);
|
88
38
|
}
|
89
39
|
else if (event.data === FlowChartConst.MUST_SELECT_TEMPLATE) {
|
90
|
-
this.
|
40
|
+
this.showInfoMessage(this.LANG.BPMN.SELECT_TEMPLATE, this.LANG.BPMN.SELECT_TEMPLATE_INFORMATION);
|
91
41
|
}
|
92
42
|
else if (event.data === FlowChartConst.CHANGING_TEMPLATE) {
|
93
43
|
this.onSelectedTemplate();
|
@@ -95,9 +45,6 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
95
45
|
else if (event.data === FlowChartConst.RESET_TEMPLATE) {
|
96
46
|
this.onResetTemplate();
|
97
47
|
}
|
98
|
-
else if (event.data === FlowChartConst.SELECTED_SHAPE_ID) {
|
99
|
-
this.onSeletedCellView();
|
100
|
-
}
|
101
48
|
}
|
102
49
|
ngOnInit() {
|
103
50
|
return __awaiter(this, void 0, void 0, function* () {
|
@@ -111,42 +58,8 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
111
58
|
this.jsonContent = yield this.getJsonContent(this.id);
|
112
59
|
}
|
113
60
|
this.bmpnService.buildDiagram(this.bpmnTemlates, null, CKEditorEventConst.QMSCK_BPMN, this.jsonContent, 1, this.LANG);
|
114
|
-
this.initDocumentIcons();
|
115
|
-
this.initTarget();
|
116
|
-
this.initConnectionType();
|
117
|
-
this.initLink();
|
118
61
|
});
|
119
62
|
}
|
120
|
-
initTarget() {
|
121
|
-
if (this.targets) {
|
122
|
-
this.targets.push({ id: TargetTypeName.new, name: this.LANG.QMSCKEDITOR.TARTGET_NEW });
|
123
|
-
this.targets.push({ id: TargetTypeName.same, name: this.LANG.QMSCKEDITOR.TARGET_SAME });
|
124
|
-
}
|
125
|
-
}
|
126
|
-
initConnectionType() {
|
127
|
-
if (this.connectionTypes) {
|
128
|
-
this.connectionTypes.push({ id: ShapeFlowChartConnectionType.DocumentOrProcess, name: this.LANG.QMSCKEDITOR.DOCUMENT_PROCESS });
|
129
|
-
this.connectionTypes.push({ id: ShapeFlowChartConnectionType.Attachment, name: this.LANG.QMSCKEDITOR.ATTACHMENT });
|
130
|
-
}
|
131
|
-
}
|
132
|
-
initDocumentIcons() {
|
133
|
-
this.documentIcons = {};
|
134
|
-
this.documentIcons[QMSCKEditorDocumentType.document] = 'text_snippet';
|
135
|
-
this.documentIcons[QMSCKEditorDocumentType.process] = 'account_tree';
|
136
|
-
this.documentIcons[QMSCKEditorDocumentType.area] = 'folder';
|
137
|
-
this.documentIcons[QMSCKEditorDocumentType.folder] = 'folder';
|
138
|
-
this.documentIcons[QMSCKEditorDocumentType.other] = 'text_snippet';
|
139
|
-
}
|
140
|
-
initLink() {
|
141
|
-
this.link = null;
|
142
|
-
this.linkId = '';
|
143
|
-
this.documentType = QMSCKEditorDocumentType.other;
|
144
|
-
this.linkIcon = this.documentIcons[QMSCKEditorDocumentType.other];
|
145
|
-
this.selectedTarget = TargetTypeName.new;
|
146
|
-
this.anchorByName = '';
|
147
|
-
this.linkTitle = '';
|
148
|
-
this.documentAnchors = [];
|
149
|
-
}
|
150
63
|
expandPanel() {
|
151
64
|
this.expandedPanel = !this.expandedPanel;
|
152
65
|
const panelStencil = document.getElementById('panel-stencil-container');
|
@@ -191,10 +104,11 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
191
104
|
});
|
192
105
|
});
|
193
106
|
}
|
194
|
-
saveImageContent(
|
107
|
+
saveImageContent() {
|
195
108
|
return __awaiter(this, void 0, void 0, function* () {
|
196
109
|
return new Promise((resolve) => {
|
197
|
-
const
|
110
|
+
const graph = window[FlowChartConst.GRAPH];
|
111
|
+
const jsonContent = JSON.stringify(graph.toJSON());
|
198
112
|
this.bpmn = {
|
199
113
|
id: this.id ? this.id : guidHelper.empty,
|
200
114
|
jsonContent: jsonContent,
|
@@ -224,209 +138,26 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
224
138
|
}
|
225
139
|
onInsertImage() {
|
226
140
|
return __awaiter(this, void 0, void 0, function* () {
|
227
|
-
const
|
141
|
+
const id = yield this.saveImageContent();
|
228
142
|
const paper = window[`paper`];
|
229
|
-
const clientRect = paper.paperToLocalRect(paper.getContentBBox());
|
230
|
-
const graphObject = graph.toJSON();
|
231
|
-
const id = yield this.saveImageContent(graphObject);
|
232
143
|
const imageContent = 'data:image/png;base64,' + (yield this.getImageContent(paper));
|
233
|
-
const
|
234
|
-
const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: imageContent, imagemap: imagemap };
|
144
|
+
const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: imageContent };
|
235
145
|
this.dialogRef.close(result);
|
236
146
|
});
|
237
147
|
}
|
238
148
|
onCloseDialog() {
|
239
149
|
this.dialogRef.close();
|
240
150
|
}
|
241
|
-
removeLink() {
|
242
|
-
let title = this.LANG.BPMN.DELETE_ATTACHMENT;
|
243
|
-
let content = this.LANG.BPMN.CONFIRM_DELETE_ATTACHMENT;
|
244
|
-
if (this.selectedConnectionType == ShapeFlowChartConnectionType.DocumentOrProcess) {
|
245
|
-
title = this.LANG.BPMN.DELETE_DOCUMENT_OR_PROCESS;
|
246
|
-
content = this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_DOCUMENT_OR_PROCESS;
|
247
|
-
}
|
248
|
-
this.showConfirmDialog(title, content, false, (value) => {
|
249
|
-
if (value) {
|
250
|
-
if (value == true || (typeof value == 'object' && value.isConfirmed == true)) {
|
251
|
-
this.link = null;
|
252
|
-
}
|
253
|
-
}
|
254
|
-
});
|
255
|
-
}
|
256
|
-
onConnectionTypeChange() {
|
257
|
-
this.selectedConnectionType = this.connectionType;
|
258
|
-
if (this.link) {
|
259
|
-
this.showConfirmDialog(this.LANG.QMSCKEDITOR.INFORMATION, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_EXISTING_CONNECTION, true, () => {
|
260
|
-
this.connectionType = 0;
|
261
|
-
});
|
262
|
-
return;
|
263
|
-
}
|
264
|
-
switch (this.connectionType) {
|
265
|
-
case ShapeFlowChartConnectionType.DocumentOrProcess:
|
266
|
-
this.openHandbookDialog(false);
|
267
|
-
break;
|
268
|
-
case ShapeFlowChartConnectionType.Attachment:
|
269
|
-
this.openAttachmentDialog();
|
270
|
-
break;
|
271
|
-
}
|
272
|
-
}
|
273
|
-
onAnchorByNameChange() {
|
274
|
-
this.updateCellViewValues();
|
275
|
-
}
|
276
|
-
openHandbookDialog(isOnlyDocument) {
|
277
|
-
const data = new QMSCKEditorRelation();
|
278
|
-
data.isOnlyDocument = isOnlyDocument;
|
279
|
-
data.isEnableFolder = !isOnlyDocument;
|
280
|
-
const dialogTemplate = this.dialog.open(QMSCKEditorRelatedComponent, {
|
281
|
-
width: '650px',
|
282
|
-
height: '650px',
|
283
|
-
data,
|
284
|
-
disableClose: true
|
285
|
-
});
|
286
|
-
dialogTemplate
|
287
|
-
.afterClosed()
|
288
|
-
.pipe(takeUntil(this.ngUnsubcribe))
|
289
|
-
.subscribe((result) => {
|
290
|
-
if (result) {
|
291
|
-
this.documentType = result.type;
|
292
|
-
this.linkId = this.getLinkId(result.url, result.type);
|
293
|
-
if (result.type == QMSCKEditorDocumentType.document) {
|
294
|
-
this.linkTitle = `${result.title}(${result.id})`;
|
295
|
-
this.getAnchorDocument(result.id);
|
296
|
-
}
|
297
|
-
else {
|
298
|
-
this.linkUrl = result.url;
|
299
|
-
if (!this.linkTitle) {
|
300
|
-
this.linkTitle = result.title;
|
301
|
-
}
|
302
|
-
}
|
303
|
-
this.selectedTarget = TargetTypeName.new;
|
304
|
-
this.updateCellViewValues();
|
305
|
-
}
|
306
|
-
this.connectionType = 0;
|
307
|
-
});
|
308
|
-
}
|
309
|
-
openAttachmentDialog() {
|
310
|
-
const data = new QMSCKEditorParamter();
|
311
|
-
data.module = this.module;
|
312
|
-
data.entityId = this.entityId;
|
313
|
-
const dialogTemplate = this.dialog.open(LinkAttachmentComponent, {
|
314
|
-
width: '650px',
|
315
|
-
height: '650px',
|
316
|
-
data,
|
317
|
-
disableClose: true
|
318
|
-
});
|
319
|
-
dialogTemplate
|
320
|
-
.afterClosed()
|
321
|
-
.pipe(takeUntil(this.ngUnsubcribe))
|
322
|
-
.subscribe((result) => {
|
323
|
-
if (result) {
|
324
|
-
this.documentType = QMSCKEditorDocumentType.other;
|
325
|
-
this.linkUrl = result.url;
|
326
|
-
if (!this.linkTitle) {
|
327
|
-
this.linkTitle = result.title;
|
328
|
-
}
|
329
|
-
this.selectedTarget = TargetTypeName.new;
|
330
|
-
this.updateCellViewValues();
|
331
|
-
}
|
332
|
-
this.connectionType = 0;
|
333
|
-
});
|
334
|
-
}
|
335
|
-
getAnchorDocument(documentId) {
|
336
|
-
this.isLoadingDocumentAnchor = true;
|
337
|
-
this.linkService
|
338
|
-
.getAnchorDocumentList(documentId)
|
339
|
-
.pipe(takeUntil(this.ngUnsubcribe))
|
340
|
-
.subscribe((documents) => {
|
341
|
-
this.documentAnchors = this.extractDocumentAnchors(documents || []);
|
342
|
-
this.isLoadingDocumentAnchor = false;
|
343
|
-
});
|
344
|
-
}
|
345
|
-
extractDocumentAnchors(anchorDocument) {
|
346
|
-
const anchors = [{ value: 0, viewValue: '', anchorValue: LinkAnchor.Blank }];
|
347
|
-
let id = 3;
|
348
|
-
if (anchorDocument) {
|
349
|
-
anchorDocument.forEach((e) => {
|
350
|
-
const div = document.createElement('div');
|
351
|
-
div.innerHTML = e.richText;
|
352
|
-
const domContent = div;
|
353
|
-
const aTags = domContent.getElementsByTagName('a');
|
354
|
-
if (aTags) {
|
355
|
-
// tslint:disable-next-line:prefer-for-of
|
356
|
-
for (let i = 0; i < aTags.length; i++) {
|
357
|
-
const tag = aTags[i];
|
358
|
-
if (tag.name) {
|
359
|
-
const index = anchors.findIndex((x) => {
|
360
|
-
return x.anchorValue === tag.name;
|
361
|
-
});
|
362
|
-
if (index < 0) {
|
363
|
-
anchors.push({
|
364
|
-
value: id,
|
365
|
-
viewValue: tag.name,
|
366
|
-
anchorValue: tag.name
|
367
|
-
});
|
368
|
-
id += 1;
|
369
|
-
}
|
370
|
-
}
|
371
|
-
}
|
372
|
-
}
|
373
|
-
});
|
374
|
-
}
|
375
|
-
anchors.push({
|
376
|
-
value: 1,
|
377
|
-
viewValue: this.LANG.QMSCKEDITOR.ANCHOR_ATTACHMENT,
|
378
|
-
anchorValue: LinkAnchor.Attachment
|
379
|
-
});
|
380
|
-
anchors.push({
|
381
|
-
value: 2,
|
382
|
-
viewValue: this.LANG.QMSCKEDITOR.ANCHOR_RELATED_DOCUMENT,
|
383
|
-
anchorValue: LinkAnchor.Related
|
384
|
-
});
|
385
|
-
return anchors;
|
386
|
-
}
|
387
|
-
reloadAnchors() {
|
388
|
-
if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document) {
|
389
|
-
this.getAnchorDocument(this.linkId);
|
390
|
-
}
|
391
|
-
}
|
392
|
-
buildLink() {
|
393
|
-
const link = new ILink();
|
394
|
-
link.target = this.selectedTarget;
|
395
|
-
link.title = this.linkTitle;
|
396
|
-
link.url = this.linkUrl;
|
397
|
-
link.documentType = this.documentType || QMSCKEditorDocumentType.other;
|
398
|
-
link.icon = this.documentIcons[link.documentType];
|
399
|
-
link.content = '';
|
400
|
-
switch (this.documentType) {
|
401
|
-
case QMSCKEditorDocumentType.document:
|
402
|
-
link.url = `${CKEditorLinkConst.DOCUMENT_PARTIAL_URL}${this.linkId}#${this.anchorByName}`;
|
403
|
-
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
404
|
-
break;
|
405
|
-
case QMSCKEditorDocumentType.process:
|
406
|
-
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
407
|
-
break;
|
408
|
-
case QMSCKEditorDocumentType.area:
|
409
|
-
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
410
|
-
break;
|
411
|
-
case QMSCKEditorDocumentType.folder:
|
412
|
-
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
413
|
-
break;
|
414
|
-
}
|
415
|
-
return link;
|
416
|
-
}
|
417
151
|
onSaveAsTemplate() {
|
418
152
|
const graph = window[FlowChartConst.GRAPH];
|
419
153
|
const jsonContent = JSON.stringify(graph.toJSON());
|
420
|
-
let
|
421
|
-
|
154
|
+
let data = new QMSCKEditorBpmn();
|
155
|
+
data = {
|
422
156
|
id: guidHelper.empty,
|
423
157
|
jsonContent: jsonContent,
|
424
158
|
isTemplate: true,
|
425
159
|
templateName: ''
|
426
160
|
};
|
427
|
-
let data = new QMSCKEditorSaveAsTemplate();
|
428
|
-
data.templateType = CKEditorEventConst.QMSCK_BPMN;
|
429
|
-
data.bpmn = template;
|
430
161
|
const dialogTemplate = this.dialog.open(SaveTemplateComponent, {
|
431
162
|
width: '450px',
|
432
163
|
height: '220px',
|
@@ -449,10 +180,6 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
449
180
|
if (graph) {
|
450
181
|
graph.fromJSON(JSON.parse(selectedJsonContent));
|
451
182
|
}
|
452
|
-
window[FlowChartConst.MY_CELL_VIEW] = null;
|
453
|
-
window[FlowChartConst.SELECTED_SHAPE_ID] = '';
|
454
|
-
window[FlowChartConst.SHAPE_TYPE] = '';
|
455
|
-
this.onSeletedCellView();
|
456
183
|
}
|
457
184
|
}
|
458
185
|
onDeleteTemplate(title, content) {
|
@@ -469,121 +196,24 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
469
196
|
.pipe(takeUntil(this.ngUnsubcribe))
|
470
197
|
.subscribe((result) => {
|
471
198
|
if (result) {
|
199
|
+
const id = window[FlowChartConst.SELECTED_FLOWCHART_ID];
|
200
|
+
this.bpmnApiService
|
201
|
+
.bpmnDeleteTemplate(id)
|
202
|
+
.pipe(takeUntil(this.ngUnsubcribe))
|
203
|
+
.subscribe((result) => {
|
204
|
+
if (result) {
|
205
|
+
this.bmpnService.removeSelectItem(id);
|
206
|
+
this.bmpnService.setDefaultSelectedValue();
|
207
|
+
window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
|
208
|
+
QMSCKEditorToastService.success(this.LANG.QMSCKEDITOR.DELETED);
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
QMSCKEditorToastService.error(this.LANG.QMSCKEDITOR.DELETE_FAILED);
|
212
|
+
}
|
213
|
+
});
|
472
214
|
}
|
473
215
|
});
|
474
216
|
}
|
475
|
-
onSeletedCellView() {
|
476
|
-
this.selectedCellView = window[FlowChartConst.MY_CELL_VIEW];
|
477
|
-
this.initLink();
|
478
|
-
if (!!this.selectedCellView) {
|
479
|
-
const attributes = this.selectedCellView.model.attributes;
|
480
|
-
if (attributes.type == 'bpmn2.Flow'
|
481
|
-
|| attributes.type == 'bpmn2.ConversationLink'
|
482
|
-
|| attributes.type == 'bpmn2.AnnotationLink'
|
483
|
-
|| attributes.type == 'bpmn2.DataAssociation') {
|
484
|
-
this.selectedCellView = null;
|
485
|
-
}
|
486
|
-
else {
|
487
|
-
this.linkUrl = attributes.linkUrl || '';
|
488
|
-
if (!!this.linkUrl) {
|
489
|
-
this.parseLinkUrl(this.linkUrl);
|
490
|
-
this.selectedTarget = attributes.linkTarget;
|
491
|
-
this.linkTitle = attributes.linkTitle;
|
492
|
-
this.link = this.buildLink();
|
493
|
-
}
|
494
|
-
}
|
495
|
-
}
|
496
|
-
}
|
497
|
-
onTabChange($event) {
|
498
|
-
window[FlowChartConst.TAB_NAME] = $event.tab.textLabel;
|
499
|
-
if ($event.tab.textLabel == this.LANG.BPMN.PROPERTIES) {
|
500
|
-
this.bmpnService.openShapeFunctionality(this.LANG);
|
501
|
-
}
|
502
|
-
}
|
503
|
-
parseLinkUrl(url) {
|
504
|
-
if (!!url) {
|
505
|
-
const hashIndex = url.indexOf('#');
|
506
|
-
this.documentType = this.getDocumentType(url);
|
507
|
-
this.linkIcon = this.documentIcons[this.documentType];
|
508
|
-
this.linkId = this.getLinkId(url, this.documentType);
|
509
|
-
if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document && hashIndex > -1) {
|
510
|
-
this.anchorByName = url.substr(hashIndex + 1, url.length - hashIndex);
|
511
|
-
this.getAnchorDocument(this.linkId);
|
512
|
-
}
|
513
|
-
}
|
514
|
-
}
|
515
|
-
getPartialUrl(type) {
|
516
|
-
switch (type) {
|
517
|
-
case QMSCKEditorDocumentType.document:
|
518
|
-
return CKEditorLinkConst.DOCUMENT_PARTIAL_URL;
|
519
|
-
case QMSCKEditorDocumentType.process:
|
520
|
-
return CKEditorLinkConst.PROCESS_PARTIAL_URL;
|
521
|
-
case QMSCKEditorDocumentType.area:
|
522
|
-
return CKEditorLinkConst.AREA_PARTIAL_URL;
|
523
|
-
case QMSCKEditorDocumentType.folder:
|
524
|
-
return CKEditorLinkConst.FOLDER_PARTIAL_URL;
|
525
|
-
default:
|
526
|
-
return '';
|
527
|
-
}
|
528
|
-
}
|
529
|
-
getLinkId(url, type) {
|
530
|
-
let partialUrlIndex = 0;
|
531
|
-
let partialUrlLength = 0;
|
532
|
-
let id = '';
|
533
|
-
let from = 0;
|
534
|
-
let urlLowerCase = !!url ? url.toLowerCase() : '';
|
535
|
-
const partialUrl = this.getPartialUrl(type).toLowerCase();
|
536
|
-
const hashIndex = urlLowerCase.indexOf('#');
|
537
|
-
if (!!partialUrl) {
|
538
|
-
partialUrlIndex = urlLowerCase.indexOf(partialUrl);
|
539
|
-
partialUrlLength = partialUrl.length;
|
540
|
-
from = partialUrlIndex + partialUrlLength;
|
541
|
-
if (type == QMSCKEditorDocumentType.document && hashIndex > -1) {
|
542
|
-
id = urlLowerCase.substr(from, hashIndex - from);
|
543
|
-
}
|
544
|
-
else {
|
545
|
-
const length = urlLowerCase.substr(from).indexOf('/');
|
546
|
-
if (length < 0) {
|
547
|
-
id = urlLowerCase.substr(from);
|
548
|
-
}
|
549
|
-
else {
|
550
|
-
id = urlLowerCase.substr(from, length);
|
551
|
-
}
|
552
|
-
}
|
553
|
-
}
|
554
|
-
if (type == QMSCKEditorDocumentType.document) {
|
555
|
-
try {
|
556
|
-
parseInt(id, 10);
|
557
|
-
}
|
558
|
-
catch (_a) {
|
559
|
-
id = '';
|
560
|
-
}
|
561
|
-
}
|
562
|
-
return id;
|
563
|
-
}
|
564
|
-
getDocumentType(url) {
|
565
|
-
if (url.indexOf(CKEditorLinkConst.DOCUMENT_PARTIAL_URL) > -1) {
|
566
|
-
return QMSCKEditorDocumentType.document;
|
567
|
-
}
|
568
|
-
else if (url.indexOf(CKEditorLinkConst.PROCESS_PARTIAL_URL) > -1) {
|
569
|
-
return QMSCKEditorDocumentType.process;
|
570
|
-
}
|
571
|
-
else if (url.indexOf(CKEditorLinkConst.AREA_PARTIAL_URL) > -1) {
|
572
|
-
return QMSCKEditorDocumentType.area;
|
573
|
-
}
|
574
|
-
else if (url.indexOf(CKEditorLinkConst.FOLDER_PARTIAL_URL) > -1) {
|
575
|
-
return QMSCKEditorDocumentType.folder;
|
576
|
-
}
|
577
|
-
return QMSCKEditorDocumentType.other;
|
578
|
-
}
|
579
|
-
updateCellViewValues() {
|
580
|
-
if (!!this.selectedCellView) {
|
581
|
-
this.link = this.buildLink();
|
582
|
-
this.selectedCellView.model.prop('linkUrl', this.link.url);
|
583
|
-
this.selectedCellView.model.prop('linkTarget', this.link.target);
|
584
|
-
this.selectedCellView.model.prop('linkTitle', this.link.title);
|
585
|
-
}
|
586
|
-
}
|
587
217
|
onResetTemplate() {
|
588
218
|
const ogrJsonContent = window[FlowChartConst.ORG_JSONCONTENT];
|
589
219
|
if (ogrJsonContent) {
|
@@ -593,17 +223,13 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
593
223
|
this.bmpnService.setDefaultSelectedValue();
|
594
224
|
window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
|
595
225
|
}
|
596
|
-
window[FlowChartConst.MY_CELL_VIEW] = null;
|
597
|
-
window[FlowChartConst.SELECTED_SHAPE_ID] = '';
|
598
|
-
window[FlowChartConst.SHAPE_TYPE] = '';
|
599
|
-
this.onSeletedCellView();
|
600
226
|
}
|
601
227
|
}
|
602
|
-
|
228
|
+
showInfoMessage(title, content) {
|
603
229
|
const data = new QMSCKEditorDialogData();
|
604
230
|
data.title = title;
|
605
231
|
data.content = content;
|
606
|
-
data.isMessage =
|
232
|
+
data.isMessage = true;
|
607
233
|
const dialogRef = this.dialog.open(QMSCKEditorConfirmComponent, {
|
608
234
|
width: '500px',
|
609
235
|
minHeight: '175px',
|
@@ -613,178 +239,28 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
613
239
|
.afterClosed()
|
614
240
|
.pipe(takeUntil(this.ngUnsubcribe))
|
615
241
|
.subscribe((result) => {
|
616
|
-
if (
|
617
|
-
|
618
|
-
}
|
619
|
-
});
|
620
|
-
}
|
621
|
-
toImageMap(id, cells, clientRect) {
|
622
|
-
const map = { name: id, id: id, areas: [], imageHeight: 0, imageWidth: 0 };
|
623
|
-
map.imageHeight = clientRect.height;
|
624
|
-
map.imageWidth = clientRect.width;
|
625
|
-
if (cells && cells.length != 0) {
|
626
|
-
var isVerticalPool = false;
|
627
|
-
for (var i = 0; i < cells.length; i++) {
|
628
|
-
let shape = cells[i];
|
629
|
-
let size = shape['size'] || { width: 0, height: 0 };
|
630
|
-
let bbox = shape['bbox'] || { x: 0, y: 0 };
|
631
|
-
let position = shape['position'] || { x: 0, y: 0 };
|
632
|
-
bbox.x = position.x;
|
633
|
-
bbox.y = position.y;
|
634
|
-
bbox.width = size.width;
|
635
|
-
bbox.height = size.height;
|
636
|
-
shape['bbox'] = bbox;
|
637
|
-
shape['additionalWidth'] = (bbox.width > size.width) ? (bbox.width - size.width) : 0;
|
638
|
-
}
|
639
|
-
var offsetX = this.getMinXOffset(cells);
|
640
|
-
var offsetY = this.getMinYOffset(cells);
|
641
|
-
var additionalOffsetY = 0;
|
642
|
-
for (var i = 0; i < cells.length; i++) {
|
643
|
-
let shape = cells[i];
|
644
|
-
let href = shape.linkUrl;
|
645
|
-
let target = shape.linkTarget;
|
646
|
-
let alt = shape.linkTitle;
|
647
|
-
if (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') {
|
648
|
-
additionalOffsetY = (shape.additionalWidth / 2);
|
649
|
-
isVerticalPool = (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') && shape.angle != 0 ? true : false;
|
650
|
-
}
|
651
|
-
if (!!href && href.length > 0) {
|
652
|
-
var size = shape['size'] || { width: 0, height: 0 };
|
653
|
-
var bbox = shape['bbox'] || { x: 0, y: 0 };
|
654
|
-
var position = shape['position'] || { x: 0, y: 0 };
|
655
|
-
bbox.x = position.x;
|
656
|
-
bbox.y = position.y;
|
657
|
-
bbox.width = size.width;
|
658
|
-
bbox.height = size.height;
|
659
|
-
var additionalOffsetX = (shape.additionalWidth / 2);
|
660
|
-
var x1, y1, x2, y2;
|
661
|
-
if (shape.includeTextInClickableArea == true) {
|
662
|
-
x1 = (bbox.x - offsetX - additionalOffsetX);
|
663
|
-
y1 = (bbox.y - offsetY);
|
664
|
-
x2 = (x1 + shape.bbox.width - 1);
|
665
|
-
y2 = (y1 + shape.bbox.height);
|
666
|
-
}
|
667
|
-
else {
|
668
|
-
var transformX = offsetX, transformY = offsetY;
|
669
|
-
if (offsetX < 0 && isVerticalPool) {
|
670
|
-
transformX = offsetX + size.height;
|
671
|
-
transformY = offsetY - size.height;
|
672
|
-
}
|
673
|
-
if (offsetY < 0 && isVerticalPool) {
|
674
|
-
transformY = offsetY + additionalOffsetY;
|
675
|
-
}
|
676
|
-
x1 = (bbox.x - transformX);
|
677
|
-
y1 = (bbox.y - transformY);
|
678
|
-
x2 = (x1 + size.width - 1);
|
679
|
-
y2 = (y1 + size.height);
|
680
|
-
}
|
681
|
-
let coords = `${x1},${y1},${x2},${y2}`;
|
682
|
-
switch (shape.type) {
|
683
|
-
case 'bpmn2.Activity':
|
684
|
-
case 'bpmn2.Gateway':
|
685
|
-
case 'bpmn2.Event':
|
686
|
-
case 'bpmn2.Conversation':
|
687
|
-
case 'bpmn2.DataObject':
|
688
|
-
case 'bpmn2.DataStore':
|
689
|
-
case 'bpmn.Choreography':
|
690
|
-
case 'bpmn.Message':
|
691
|
-
map.areas.push({
|
692
|
-
shape: 'rect',
|
693
|
-
coords: coords,
|
694
|
-
href: href,
|
695
|
-
target: target,
|
696
|
-
alt: alt
|
697
|
-
});
|
698
|
-
break;
|
699
|
-
default:
|
700
|
-
map.areas.push({
|
701
|
-
shape: 'rect',
|
702
|
-
coords: coords,
|
703
|
-
href: href,
|
704
|
-
target: target,
|
705
|
-
alt: alt
|
706
|
-
});
|
707
|
-
break;
|
708
|
-
}
|
709
|
-
}
|
242
|
+
if (result) {
|
243
|
+
//TODO
|
710
244
|
}
|
711
|
-
}
|
712
|
-
return map;
|
713
|
-
}
|
714
|
-
getMinXOffset(shapes) {
|
715
|
-
var filterShapes = shapes.filter(function (s) {
|
716
|
-
return s.type !== 'bpmn2.Flow'
|
717
|
-
&& s.type != 'bpmn2.ConversationLink'
|
718
|
-
&& s.type != 'bpmn2.DataAssociation'
|
719
|
-
&& s.type != 'bpmn2.AnnotationLink';
|
720
245
|
});
|
721
|
-
var minValue;
|
722
|
-
var minObject;
|
723
|
-
if (!filterShapes || !filterShapes.length) {
|
724
|
-
minValue = this.getXPosition(shapes[0]);
|
725
|
-
minObject = shapes[0];
|
726
|
-
}
|
727
|
-
else {
|
728
|
-
minValue = this.getXPosition(filterShapes[0]);
|
729
|
-
minObject = filterShapes[0];
|
730
|
-
}
|
731
|
-
for (var i = 1; i < filterShapes.length; i++) {
|
732
|
-
var xPosition = this.getXPosition(filterShapes[i]);
|
733
|
-
if (xPosition < minValue) {
|
734
|
-
minValue = xPosition;
|
735
|
-
minObject = filterShapes[i];
|
736
|
-
}
|
737
|
-
}
|
738
|
-
return minValue;
|
739
|
-
}
|
740
|
-
getXPosition(shape) {
|
741
|
-
return shape.bbox.x - (shape.additionalWidth / 2);
|
742
|
-
}
|
743
|
-
getYPosition(shape) {
|
744
|
-
return shape.bbox.y - (shape.additionalWidth / 2);
|
745
|
-
}
|
746
|
-
getMinYOffset(shapes) {
|
747
|
-
var filterShapes = shapes.filter(function (s) {
|
748
|
-
return s.type !== 'bpmn2.Flow'
|
749
|
-
&& s.type != 'bpmn2.ConversationLink'
|
750
|
-
&& s.type != 'bpmn2.DataAssociation'
|
751
|
-
&& s.type != 'bpmn2.AnnotationLink';
|
752
|
-
});
|
753
|
-
var minValue;
|
754
|
-
var minObject;
|
755
|
-
if (!filterShapes || !filterShapes.length) {
|
756
|
-
minValue = shapes[0].bbox.y;
|
757
|
-
minObject = shapes[0];
|
758
|
-
}
|
759
|
-
else {
|
760
|
-
minValue = filterShapes[0].bbox.y;
|
761
|
-
minObject = filterShapes[0];
|
762
|
-
}
|
763
|
-
for (var i = 1; i < filterShapes.length; i++) {
|
764
|
-
var yPosition = this.getYPosition(filterShapes[i]);
|
765
|
-
if (yPosition < minValue) {
|
766
|
-
minValue = yPosition;
|
767
|
-
minObject = filterShapes[i];
|
768
|
-
}
|
769
|
-
}
|
770
|
-
return minValue;
|
771
246
|
}
|
772
|
-
;
|
773
247
|
}
|
774
|
-
QMSCKEditorBpmnComponent
|
775
|
-
QMSCKEditorBpmnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: QMSCKEditorBpmnComponent, selector: "qms-bpmn", host: { listeners: { "window:message": "onMessage($event)" } }, usesInheritance: true, ngImport: i0, template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-bpmn-header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span id=\"qmsckeditor-bpmn-header_002\" mat-icon-button class=\"qmsckeditor button__done\" (click)=\"onInsertImage()\">\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel id=\"panel-stencil-container\" [expanded]=\"expandedPanel\" (click)=\"expandPanel()\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <mat-tab-group mat-stretch-tabs mat-align-tabs=\"center\" (selectedTabChange)=\"onTabChange($event)\">\r\n <mat-tab [label]=\"LANG.BPMN.PROPERTIES\" id=\"qmsckeditor_bpmn_properties\">\r\n <div id=\"inspector-container\">\r\n </div>\r\n <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}</h1>\r\n </div>\r\n </mat-tab>\r\n <mat-tab [label]=\"LANG.BPMN.CONNECTION\" id=\"qmsckeditor_bpmn_connection\">\r\n <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION}}</h1>\r\n </div>\r\n <mat-expansion-panel id=\"qmsckeditor_bpmn_connection_panel\" [expanded]=\"true\" (opened)=\"true\" (closed)=\"false\"\r\n hideToggle *ngIf=\"!!selectedCellView\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.BPMN.CONNECTION }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_001\" class=\"col-12 mt8\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"connectionType\" name=\"connectionType\"\r\n (ngModelChange)=\"onConnectionTypeChange()\">\r\n <mat-option *ngFor=\"let item of connectionTypes\" [value]=\"item.id\" disableOptionCentering>\r\n {{ item.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_002\" class=\"col-12 mt8\" *ngIf=\"!!link\">\r\n <mat-card>\r\n <div class=\"row\">\r\n <div class=\"col-1 mt-n4\">\r\n <mat-icon aria-hidden=\"true\" class=\"fs32\">{{link.icon}}</mat-icon>\r\n </div>\r\n <div class=\"col-10\">\r\n <mat-card-title class=\"fs16\">{{link.title}}</mat-card-title>\r\n <mat-card-subtitle>{{link.content}}</mat-card-subtitle>\r\n </div>\r\n <div class=\"col-1 pa0 mt-n4\">\r\n <button mat-icon-button>\r\n <mat-icon (click)=\"removeLink()\">close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_003\" class=\"col-12 mt24\"\r\n *ngIf=\"!!link && link.documentType === 1\">\r\n <div class=\"row\">\r\n <div class=\"col-10\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.BPMN.CHOOSE_ANCHOR_IN_TEXT_OPTIONAL }}</mat-label>\r\n <mat-label *ngIf=\"isLoadingDocumentAnchor\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" name=\"anchorByName\" (ngModelChange)=\"onAnchorByNameChange()\"\r\n disableOptionCentering>\r\n <mat-option *ngIf=\"documentAnchors === null || documentAnchors.length == 0\" disabled></mat-option>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-2 mt8 pa0\">\r\n <button mat-raised-button [matTooltip]=\"LANG.BPMN.RELOAD_ANCHORS\" (click)=\"reloadAnchors()\"\r\n [disabled]=\"isLoadingDocumentAnchor\">\r\n <mat-icon>autorenew</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_004\" class=\"col-12 mt8\" *ngIf=\"!!link\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" name=\"selectedTarget\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </div>\r\n </div>\r\n</div>", styles: [".qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}.qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}.qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}.qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:16px;height:50px;width:100%}.qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}.qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}.qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}.qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}.qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}.qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}.qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}.qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}.qmsckeditor__bpmn__container #panel-stencil-container ::ng-deep .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}.qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}.qmsckeditor__bpmn__container ::ng-deep .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}.qmsckeditor__bpmn__container ::ng-deep .object-property[data-property$=\"/fill\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .object-property[data-property$=\"/stroke\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .field[data-field$=\"/fill\"]{width:100%}.qmsckeditor__bpmn__container ::ng-deep .field[data-field$=\"/stroke\"]{width:100%}"], components: [{ type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight"] }, { type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i8.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i9.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i12.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i13.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], directives: [{ type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatLabel, selector: "mat-label" }, { type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i12.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { type: i17.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
776
|
-
|
777
|
-
|
778
|
-
args: [{
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYnBtbi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLFVBQVUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yRXZlbnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRXZlbnQuY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgRmxvd0NoYXJ0Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdFwiO1xyXG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9ndWlkSGVscGVyXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4ubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRpYWxvZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclNhdmVBc1RlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLWFwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJwbW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2F2ZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4vc2F2ZS10ZW1wbGF0ZS9zYXZlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9zaGFwZS1mbG93LWNoYXJ0LWNvbm5lY3Rpb24tdHlwZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi9xbXNja2VkaXRvci1yZWxhdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItbGluay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2RvY3VtZW50LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yTGlua0NvbnN0IH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckxpbmsuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQ29ubmVjdGlvblR5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSUFuY2hvciB7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxuICB2aWV3VmFsdWU6IHN0cmluZztcclxuICBhbmNob3JWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5jbGFzcyBJTGluayB7XHJcbiAgdGFyZ2V0OiBUYXJnZXRUeXBlTmFtZTtcclxuICB1cmw6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGU7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICB0aGlzLnRpdGxlID0gJyc7XHJcbiAgICB0aGlzLmljb24gPSAnJztcclxuICAgIHRoaXMuY29udGVudCA9ICcnO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtYnBtbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckJwbW5Db21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBqc29uQ29udGVudDogc3RyaW5nO1xyXG4gIGV4cGFuZGVkUGFuZWwgPSB0cnVlO1xyXG4gIGlkID0gJyc7XHJcbiAgbW9kdWxlOiBudW1iZXI7XHJcbiAgZW50aXR5SWQgPSAnJztcclxuICBlZGl0b3JDb250ZW50ID0gJyc7XHJcblxyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29ubmVjdGlvblR5cGU6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGU7XHJcbiAgc2VsZWN0ZWRDb25uZWN0aW9uVHlwZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBjb25uZWN0aW9uVHlwZXM6IElDb25uZWN0aW9uVHlwZVtdID0gW107XHJcblxyXG4gIHNlbGVjdGVkVGFyZ2V0OiBUYXJnZXRUeXBlTmFtZSA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICBsaW5rVXJsID0gJyc7XHJcbiAgbGlua1RpdGxlID0gJyc7XHJcbiAgYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgbGlua0ljb24gPSAnJztcclxuICBsaW5rSWQ6IHN0cmluZyA9ICcnO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICBkb2N1bWVudEljb25zOiBhbnk7XHJcblxyXG4gIGxpbms6IElMaW5rO1xyXG4gIGRvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGlzTG9hZGluZ0RvY3VtZW50QW5jaG9yOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkQ2VsbFZpZXc6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckJwbW5Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckJwbW5EYXRhXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGEuaWQ7XHJcbiAgICB0aGlzLm1vZHVsZSA9IGRhdGEubW9kdWxlO1xyXG4gICAgdGhpcy5lbnRpdHlJZCA9IGRhdGEuZW50aXR5SWQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkRFTEVURV9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlVGVtcGxhdGUodGhpcy5MQU5HLkJQTU4uREVMRVRFX1RFTVBMQVRFLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9URU1QTEFURSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURSwgdGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFX0lORk9STUFUSU9OLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkNIQU5HSU5HX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25TZWxlY3RlZFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5SRVNFVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uUmVzZXRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSUQpIHtcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJwbW5UZW1sYXRlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVzKCk7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuYm1wblNlcnZpY2UuYnVpbGREaWFncmFtKFxyXG4gICAgICB0aGlzLmJwbW5UZW1sYXRlcyxcclxuICAgICAgbnVsbCxcclxuICAgICAgQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU4sXHJcbiAgICAgIHRoaXMuanNvbkNvbnRlbnQsXHJcbiAgICAgIDEsXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERvY3VtZW50SWNvbnMoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0Q29ubmVjdGlvblR5cGUoKTtcclxuICAgIHRoaXMuaW5pdExpbmsoKTtcclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Q29ubmVjdGlvblR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uVHlwZXMpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUyB9KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BVFRBQ0hNRU5UIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERvY3VtZW50SWNvbnMoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnMgPSB7fTtcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudF0gPSAndGV4dF9zbmlwcGV0JztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzXSA9ICdhY2NvdW50X3RyZWUnO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWFdID0gJ2ZvbGRlcic7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyXSA9ICdmb2xkZXInO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXSA9ICd0ZXh0X3NuaXBwZXQnO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmsoKSB7XHJcbiAgICB0aGlzLmxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5saW5rSWQgPSAnJztcclxuICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXVxyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgICB0aGlzLmxpbmtUaXRsZSA9ICcnO1xyXG4gICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGV4cGFuZFBhbmVsKCkge1xyXG4gICAgdGhpcy5leHBhbmRlZFBhbmVsID0gIXRoaXMuZXhwYW5kZWRQYW5lbDtcclxuICAgIGNvbnN0IHBhbmVsU3RlbmNpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYW5lbC1zdGVuY2lsLWNvbnRhaW5lcicpO1xyXG4gICAgY29uc3QgcGFwZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwZXJwYW5lbCcpO1xyXG4gICAgY29uc3Qgc3RlbmNpbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVuY2lscGFuZWwnKTtcclxuICAgIGlmIChwYW5lbFN0ZW5jaWwpIHtcclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkUGFuZWwpIHtcclxuICAgICAgICBzdGVuY2lsQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MDBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhbmVsU3RlbmNpbC5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc0MDBweCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5HZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRKc29uQ29udGVudChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJwbW5CeUlkKGlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb25Db250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaE9iamVjdCk7XHJcbiAgICAgIHRoaXMuYnBtbiA9IHtcclxuICAgICAgICBpZDogdGhpcy5pZCA/IHRoaXMuaWQgOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgICBpc1RlbXBsYXRlOiBmYWxzZSxcclxuICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEltYWdlQ29udGVudChwYXBlcjogYW55KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgcGFwZXIudG9QTkcoKGltYWdlRGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFyclN0cmluZyA9IGltYWdlRGF0YS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHJlc29sdmUoYXJyU3RyaW5nWzFdKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uSW5zZXJ0SW1hZ2UoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBwYXBlciA9IHdpbmRvd1tgcGFwZXJgXTtcclxuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBwYXBlci5wYXBlclRvTG9jYWxSZWN0KHBhcGVyLmdldENvbnRlbnRCQm94KCkpO1xyXG4gICAgY29uc3QgZ3JhcGhPYmplY3QgPSBncmFwaC50b0pTT04oKTtcclxuICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5zYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KTtcclxuICAgIGNvbnN0IGltYWdlQ29udGVudCA9ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGF3YWl0IHRoaXMuZ2V0SW1hZ2VDb250ZW50KHBhcGVyKTtcclxuICAgIGNvbnN0IGltYWdlbWFwID0gdGhpcy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IGtleTogYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCwgdmFsdWVzOiBpbWFnZUNvbnRlbnQsIGltYWdlbWFwOiBpbWFnZW1hcCB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVMaW5rKCkge1xyXG4gICAgbGV0IHRpdGxlID0gdGhpcy5MQU5HLkJQTU4uREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuTEFORy5CUE1OLkNPTkZJUk1fREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3MpIHtcclxuICAgICAgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcclxuICAgICAgY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0RPQ1VNRU5UX09SX1BST0NFU1M7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRpdGxlLCBjb250ZW50LCBmYWxzZSwgKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0cnVlIHx8ICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgdmFsdWUuaXNDb25maXJtZWQgPT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIHRoaXMubGluayA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25Db25uZWN0aW9uVHlwZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IHRoaXMuY29ubmVjdGlvblR5cGU7XHJcbiAgICBpZiAodGhpcy5saW5rKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGhpcy5MQU5HLlFNU0NLRURJVE9SLklORk9STUFUSU9OLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9FWElTVElOR19DT05ORUNUSU9OLCB0cnVlLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29ubmVjdGlvblR5cGUpIHtcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzOlxyXG4gICAgICAgIHRoaXMub3BlbkhhbmRib29rRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ6XHJcbiAgICAgICAgdGhpcy5vcGVuQXR0YWNobWVudERpYWxvZygpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuY2hvckJ5TmFtZUNoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5IYW5kYm9va0RpYWxvZyhpc09ubHlEb2N1bWVudDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclJlbGF0aW9uKCk7XHJcbiAgICBkYXRhLmlzT25seURvY3VtZW50ID0gaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBkYXRhLmlzRW5hYmxlRm9sZGVyID0gIWlzT25seURvY3VtZW50O1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSByZXN1bHQudHlwZTtcclxuICAgICAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQocmVzdWx0LnVybCwgcmVzdWx0LnR5cGUpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gYCR7cmVzdWx0LnRpdGxlfSgke3Jlc3VsdC5pZH0pYDtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5saW5rVGl0bGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpbmtUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkF0dGFjaG1lbnREaWFsb2coKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUGFyYW10ZXIoKTtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5lbnRpdHlJZDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihMaW5rQXR0YWNobWVudENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICBpZiAoIXRoaXMubGlua1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdEb2N1bWVudEFuY2hvciA9IHRydWU7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoZG9jdW1lbnRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmV4dHJhY3REb2N1bWVudEFuY2hvcnMoZG9jdW1lbnRzIHx8IFtdKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0RvY3VtZW50QW5jaG9yID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdERvY3VtZW50QW5jaG9ycyhhbmNob3JEb2N1bWVudDogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSkge1xyXG4gICAgY29uc3QgYW5jaG9yczogSUFuY2hvcltdID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xyXG4gICAgbGV0IGlkID0gMztcclxuICAgIGlmIChhbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XHJcbiAgICAgICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcclxuICAgICAgICBjb25zdCBhVGFncyA9IGRvbUNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTtcclxuICAgICAgICBpZiAoYVRhZ3MpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IGFUYWdzW2ldO1xyXG4gICAgICAgICAgICBpZiAodGFnLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkLFxyXG4gICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWQgKz0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDEsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XHJcbiAgICB9KTtcclxuICAgIGFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAyLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYW5jaG9ycztcclxuICB9XHJcblxyXG4gIHJlbG9hZEFuY2hvcnMoKSB7XHJcbiAgICBpZiAoISF0aGlzLmxpbmtJZCAmJiB0aGlzLmRvY3VtZW50VHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCkge1xyXG4gICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHRoaXMubGlua0lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1aWxkTGluaygpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgSUxpbmsoKTtcclxuICAgIGxpbmsudGFyZ2V0ID0gdGhpcy5zZWxlY3RlZFRhcmdldDtcclxuICAgIGxpbmsudGl0bGUgPSB0aGlzLmxpbmtUaXRsZTtcclxuICAgIGxpbmsudXJsID0gdGhpcy5saW5rVXJsO1xyXG4gICAgbGluay5kb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZSB8fCBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIGxpbmsuaWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1tsaW5rLmRvY3VtZW50VHlwZV07XHJcbiAgICBsaW5rLmNvbnRlbnQgPSAnJztcclxuICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudFR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke0NLRWRpdG9yTGlua0NvbnN0LkRPQ1VNRU5UX1BBUlRJQUxfVVJMfSR7dGhpcy5saW5rSWR9IyR7dGhpcy5hbmNob3JCeU5hbWV9YDtcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuYXJlYTpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlQXNUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgbGV0IHRlbXBsYXRlID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgdGVtcGxhdGUgPSB7XHJcbiAgICAgIGlkOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgIGlzVGVtcGxhdGU6IHRydWUsXHJcbiAgICAgIHRlbXBsYXRlTmFtZTogJydcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIGRhdGEudGVtcGxhdGVUeXBlID0gQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU47XHJcbiAgICBkYXRhLmJwbW4gPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihTYXZlVGVtcGxhdGVDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc0NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzIyMHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vIFRET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX0pTT05fQ09OVEVOVF07XHJcbiAgICBpZiAoc2VsZWN0ZWRKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uoc2VsZWN0ZWRKc29uQ29udGVudCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EZWxldGVUZW1wbGF0ZSh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcclxuICAgIGRhdGEudGl0bGUgPSB0aXRsZTtcclxuICAgIGRhdGEuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGV0ZWRDZWxsVmlldygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xyXG4gICAgdGhpcy5pbml0TGluaygpO1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcubW9kZWwuYXR0cmlidXRlcztcclxuICAgICAgaWYgKGF0dHJpYnV0ZXMudHlwZSA9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICB8fCBhdHRyaWJ1dGVzLnR5cGUgPT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgfHwgYXR0cmlidXRlcy50eXBlID09ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgICAgICB8fCBhdHRyaWJ1dGVzLnR5cGUgPT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbicpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcgPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGlua1VybCA9IGF0dHJpYnV0ZXMubGlua1VybCB8fCAnJztcclxuICAgICAgICBpZiAoISF0aGlzLmxpbmtVcmwpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMubGlua1VybCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gYXR0cmlidXRlcy5saW5rVGFyZ2V0O1xyXG4gICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSBhdHRyaWJ1dGVzLmxpbmtUaXRsZTtcclxuICAgICAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZSgkZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XHJcbiAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuVEFCX05BTUVdID0gJGV2ZW50LnRhYi50ZXh0TGFiZWw7XHJcbiAgICBpZiAoJGV2ZW50LnRhYi50ZXh0TGFiZWwgPT0gdGhpcy5MQU5HLkJQTU4uUFJPUEVSVElFUykge1xyXG4gICAgICB0aGlzLmJtcG5TZXJ2aWNlLm9wZW5TaGFwZUZ1bmN0aW9uYWxpdHkodGhpcy5MQU5HKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCEhdXJsKSB7XHJcbiAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gdGhpcy5nZXREb2N1bWVudFR5cGUodXJsKTtcclxuICAgICAgdGhpcy5saW5rSWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1t0aGlzLmRvY3VtZW50VHlwZV07XHJcbiAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQodXJsLCB0aGlzLmRvY3VtZW50VHlwZSk7XHJcbiAgICAgIGlmICghIXRoaXMubGlua0lkICYmIHRoaXMuZG9jdW1lbnRUeXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JCeU5hbWUgPSB1cmwuc3Vic3RyKGhhc2hJbmRleCArIDEsIHVybC5sZW5ndGggLSBoYXNoSW5kZXgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQodGhpcy5saW5rSWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXJ0aWFsVXJsKHR5cGU6IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkw7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTDtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5BUkVBX1BBUlRJQUxfVVJMO1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRk9MREVSX1BBUlRJQUxfVVJMO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldExpbmtJZCh1cmw6IHN0cmluZywgdHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUpIHtcclxuICAgIGxldCBwYXJ0aWFsVXJsSW5kZXggPSAwO1xyXG4gICAgbGV0IHBhcnRpYWxVcmxMZW5ndGggPSAwO1xyXG4gICAgbGV0IGlkID0gJyc7XHJcbiAgICBsZXQgZnJvbSA9IDA7XHJcbiAgICBsZXQgdXJsTG93ZXJDYXNlID0gISF1cmwgPyB1cmwudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG5cclxuICAgIGNvbnN0IHBhcnRpYWxVcmwgPSB0aGlzLmdldFBhcnRpYWxVcmwodHlwZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKCcjJyk7XHJcblxyXG4gICAgaWYgKCEhcGFydGlhbFVybCkge1xyXG4gICAgICBwYXJ0aWFsVXJsSW5kZXggPSB1cmxMb3dlckNhc2UuaW5kZXhPZihwYXJ0aWFsVXJsKTtcclxuXHJcbiAgICAgIHBhcnRpYWxVcmxMZW5ndGggPSBwYXJ0aWFsVXJsLmxlbmd0aDtcclxuICAgICAgZnJvbSA9IHBhcnRpYWxVcmxJbmRleCArIHBhcnRpYWxVcmxMZW5ndGg7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCAmJiBoYXNoSW5kZXggPiAtMSkge1xyXG4gICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBoYXNoSW5kZXggLSBmcm9tKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pLmluZGV4T2YoJy8nKTtcclxuICAgICAgICBpZiAobGVuZ3RoIDwgMCkge1xyXG4gICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBsZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcGFyc2VJbnQoaWQsIDEwKTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCB7XHJcbiAgICAgICAgaWQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRUeXBlKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNlbGxWaWV3VmFsdWVzKCkge1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVXJsJywgdGhpcy5saW5rLnVybCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGFyZ2V0JywgdGhpcy5saW5rLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGl0bGUnLCB0aGlzLmxpbmsudGl0bGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXNldFRlbXBsYXRlKCkge1xyXG4gICAgY29uc3Qgb2dySnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuT1JHX0pTT05DT05URU5UXTtcclxuICAgIGlmIChvZ3JKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uob2dySnNvbkNvbnRlbnQpKTtcclxuICAgICAgICB0aGlzLmJtcG5TZXJ2aWNlLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LklTX1NFTEVDVEVEX1RFTVBMQVRFXSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1EaWFsb2codGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBpc01lc3NhZ2U6IGJvb2xlYW4sIGNhbGxiYWNrPzogKHJlc3VsdD86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gaXNNZXNzYWdlO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b0ltYWdlTWFwKGlkOiBhbnksIGNlbGxzOiBhbnlbXSwgY2xpZW50UmVjdDogYW55KSB7XHJcbiAgICBjb25zdCBtYXAgPSB7IG5hbWU6IGlkLCBpZDogaWQsIGFyZWFzOiBbXSwgaW1hZ2VIZWlnaHQ6IDAsIGltYWdlV2lkdGg6IDAgfTtcclxuICAgIG1hcC5pbWFnZUhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xyXG4gICAgbWFwLmltYWdlV2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xyXG4gICAgaWYgKGNlbGxzICYmIGNlbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHZhciBpc1ZlcnRpY2FsUG9vbCA9IGZhbHNlO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IHNpemUgPSBzaGFwZVsnc2l6ZSddIHx8IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGxldCBiYm94ID0gc2hhcGVbJ2Jib3gnXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBiYm94LnggPSBwb3NpdGlvbi54O1xyXG4gICAgICAgIGJib3gueSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBzaGFwZVsnYmJveCddID0gYmJveDtcclxuICAgICAgICBzaGFwZVsnYWRkaXRpb25hbFdpZHRoJ10gPSAoYmJveC53aWR0aCA+IHNpemUud2lkdGgpID8gKGJib3gud2lkdGggLSBzaXplLndpZHRoKSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIG9mZnNldFggPSB0aGlzLmdldE1pblhPZmZzZXQoY2VsbHMpO1xyXG4gICAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0TWluWU9mZnNldChjZWxscyk7XHJcblxyXG4gICAgICB2YXIgYWRkaXRpb25hbE9mZnNldFkgPSAwO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IGhyZWYgPSBzaGFwZS5saW5rVXJsO1xyXG4gICAgICAgIGxldCB0YXJnZXQgPSBzaGFwZS5saW5rVGFyZ2V0O1xyXG4gICAgICAgIGxldCBhbHQgPSBzaGFwZS5saW5rVGl0bGU7XHJcblxyXG4gICAgICAgIGlmIChzaGFwZS50eXBlID09ICdicG1uMi5Qb29sJyB8fCBzaGFwZS50eXBlID09ICdicG1uMi5IZWFkZXJlZFBvb2wnKSB7XHJcbiAgICAgICAgICBhZGRpdGlvbmFsT2Zmc2V0WSA9IChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICAgICAgICAgIGlzVmVydGljYWxQb29sID0gKHNoYXBlLnR5cGUgPT0gJ2JwbW4yLlBvb2wnIHx8IHNoYXBlLnR5cGUgPT0gJ2JwbW4yLkhlYWRlcmVkUG9vbCcpICYmIHNoYXBlLmFuZ2xlICE9IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghIWhyZWYgJiYgaHJlZi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgc2l6ZSA9IHNoYXBlWydzaXplJ10gfHwgeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XHJcbiAgICAgICAgICB2YXIgYmJveCA9IHNoYXBlWydiYm94J10gfHwgeyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICB2YXIgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICAgIGJib3gueCA9IHBvc2l0aW9uLng7XHJcbiAgICAgICAgICBiYm94LnkgPSBwb3NpdGlvbi55O1xyXG4gICAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgICBiYm94LmhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgdmFyIGFkZGl0aW9uYWxPZmZzZXRYID0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG5cclxuICAgICAgICAgIHZhciB4MSwgeTEsIHgyLCB5MjtcclxuXHJcbiAgICAgICAgICBpZiAoc2hhcGUuaW5jbHVkZVRleHRJbkNsaWNrYWJsZUFyZWEgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB4MSA9IChiYm94LnggLSBvZmZzZXRYIC0gYWRkaXRpb25hbE9mZnNldFgpO1xyXG4gICAgICAgICAgICB5MSA9IChiYm94LnkgLSBvZmZzZXRZKTtcclxuICAgICAgICAgICAgeDIgPSAoeDEgKyBzaGFwZS5iYm94LndpZHRoIC0gMSk7XHJcbiAgICAgICAgICAgIHkyID0gKHkxICsgc2hhcGUuYmJveC5oZWlnaHQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIHRyYW5zZm9ybVggPSBvZmZzZXRYLCB0cmFuc2Zvcm1ZID0gb2Zmc2V0WTtcclxuICAgICAgICAgICAgaWYgKG9mZnNldFggPCAwICYmIGlzVmVydGljYWxQb29sKSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtWCA9IG9mZnNldFggKyBzaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1ZID0gb2Zmc2V0WSAtIHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvZmZzZXRZIDwgMCAmJiBpc1ZlcnRpY2FsUG9vbCkge1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybVkgPSBvZmZzZXRZICsgYWRkaXRpb25hbE9mZnNldFk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeDEgPSAoYmJveC54IC0gdHJhbnNmb3JtWCk7XHJcbiAgICAgICAgICAgIHkxID0gKGJib3gueSAtIHRyYW5zZm9ybVkpO1xyXG4gICAgICAgICAgICB4MiA9ICh4MSArIHNpemUud2lkdGggLSAxKTtcclxuICAgICAgICAgICAgeTIgPSAoeTEgKyBzaXplLmhlaWdodCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY29vcmRzID0gYCR7eDF9LCR7eTF9LCR7eDJ9LCR7eTJ9YDtcclxuICAgICAgICAgIHN3aXRjaCAoc2hhcGUudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5BY3Rpdml0eSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkdhdGV3YXknOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5FdmVudCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkNvbnZlcnNhdGlvbic6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkRhdGFPYmplY3QnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5EYXRhU3RvcmUnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uLkNob3Jlb2dyYXBoeSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4uTWVzc2FnZSc6XHJcbiAgICAgICAgICAgICAgbWFwLmFyZWFzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2hhcGU6ICdyZWN0JyxcclxuICAgICAgICAgICAgICAgIGNvb3JkczogY29vcmRzLFxyXG4gICAgICAgICAgICAgICAgaHJlZjogaHJlZixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgICAgICAgICAgYWx0OiBhbHRcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBtYXAuYXJlYXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICAgICAgY29vcmRzOiBjb29yZHMsXHJcbiAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBhbHQ6IGFsdFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIGdldE1pblhPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBtaW5WYWx1ZTtcclxuICAgIHZhciBtaW5PYmplY3Q7XHJcblxyXG4gICAgaWYgKCFmaWx0ZXJTaGFwZXMgfHwgIWZpbHRlclNoYXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWluVmFsdWUgPSB0aGlzLmdldFhQb3NpdGlvbihzaGFwZXNbMF0pO1xyXG4gICAgICBtaW5PYmplY3QgPSBzaGFwZXNbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5WYWx1ZSA9IHRoaXMuZ2V0WFBvc2l0aW9uKGZpbHRlclNoYXBlc1swXSk7XHJcbiAgICAgIG1pbk9iamVjdCA9IGZpbHRlclNoYXBlc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGZpbHRlclNoYXBlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgeFBvc2l0aW9uID0gdGhpcy5nZXRYUG9zaXRpb24oZmlsdGVyU2hhcGVzW2ldKTtcclxuICAgICAgaWYgKHhQb3NpdGlvbiA8IG1pblZhbHVlKSB7XHJcbiAgICAgICAgbWluVmFsdWUgPSB4UG9zaXRpb247XHJcbiAgICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFhQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueCAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldFlQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueSAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldE1pbllPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG4gICAgdmFyIG1pblZhbHVlO1xyXG4gICAgdmFyIG1pbk9iamVjdDtcclxuXHJcbiAgICBpZiAoIWZpbHRlclNoYXBlcyB8fCAhZmlsdGVyU2hhcGVzLmxlbmd0aCkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHNoYXBlc1swXS5iYm94Lnk7XHJcbiAgICAgIG1pbk9iamVjdCA9IHNoYXBlc1swXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1pblZhbHVlID0gZmlsdGVyU2hhcGVzWzBdLmJib3gueTtcclxuICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmlsdGVyU2hhcGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB5UG9zaXRpb24gPSB0aGlzLmdldFlQb3NpdGlvbihmaWx0ZXJTaGFwZXNbaV0pO1xyXG4gICAgICBpZiAoeVBvc2l0aW9uIDwgbWluVmFsdWUpIHtcclxuICAgICAgICBtaW5WYWx1ZSA9IHlQb3NpdGlvbjtcclxuICAgICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9O1xyXG59XHJcbiIsIjxkaXYgaWQ9XCJxbXNja2VkaXRvci1icG1uXCIgY2xhc3M9XCJxbXNja2VkaXRvciBxbXNja2VkaXRvcl9fYnBtbl9fY29udGFpbmVyXCI+XHJcbiAgPGRpdiBpZD1cInFtc2NrZWRpdG9yLWxvYWQtdGVtcGxhdGUtaGVhZGVyXCI+XHJcbiAgICA8c3BhbiBpZD1cInFtc2NrZWRpdG9yLWJwbW4taGVhZGVyXzAwMVwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInFtc2NrZWRpdG9yIGJ1dHRvbl9fY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZURpYWxvZygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBpZD1cInFtc2NrZWRpdG9yLWJwbW4taGVhZGVyXzAwMlwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInFtc2NrZWRpdG9yIGJ1dHRvbl9fZG9uZVwiIChjbGljayk9XCJvbkluc2VydEltYWdlKClcIj5cclxuICAgICAgPG1hdC1pY29uPmRvbmU8L21hdC1pY29uPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yLWxvYWQtdGVtcGxhdGUtaGVhZGVyXzAwMlwiIG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgICAgPGgyIGlkPVwicW1zY2tlZGl0b3ItdGVtcGxhdGVfMDAyXzAwMVwiPlxyXG4gICAgICAgIHt7TEFORy5CUE1OLkJVU0lORVNTX1BST0NFU1NfTU9ERUxfQU5EX05PVEFUSU9OfX1cclxuICAgICAgPC9oMj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGlkPVwiYnBtblwiIGNsYXNzPVwiYnBtbl9fZWRpdG9yXCI+XHJcbiAgICA8ZGl2IGlkPVwidG9vbGJhcnBhbmVsXCI+XHJcbiAgICAgIDxkaXYgaWQ9XCJ0b29sYmFyLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGlkPVwibGVmdHBhbmVsXCI+XHJcbiAgICAgIDxkaXYgaWQ9XCJwYXBlcnBhbmVsXCI+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcGVyLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBpZD1cInN0ZW5jaWxwYW5lbFwiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwicGFuZWwtc3RlbmNpbC1jb250YWluZXJcIiBbZXhwYW5kZWRdPVwiZXhwYW5kZWRQYW5lbFwiIChjbGljayk9XCJleHBhbmRQYW5lbCgpXCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+IDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJzdGVuY2lsLWNvbnRhaW5lclwiPjwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdGVuY2lsLWNvbnRhaW5lclwiPjwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJyaWdodHBhbmVsXCI+XHJcbiAgICAgIDxtYXQtdGFiLWdyb3VwIG1hdC1zdHJldGNoLXRhYnMgbWF0LWFsaWduLXRhYnM9XCJjZW50ZXJcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJMQU5HLkJQTU4uUFJPUEVSVElFU1wiIGlkPVwicW1zY2tlZGl0b3JfYnBtbl9wcm9wZXJ0aWVzXCI+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwiaW5zcGVjdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJvdXRcIiAqbmdJZj1cIiFzZWxlY3RlZENlbGxWaWV3XCI+XHJcbiAgICAgICAgICAgIDxoMT57e0xBTkcuQlBNTi5CVVNJTkVTU19QUk9DRVNTX01PREVMX0FORF9OT1RBVElPTn19PC9oMT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiTEFORy5CUE1OLkNPTk5FQ1RJT05cIiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0XCIgKm5nSWY9XCIhc2VsZWN0ZWRDZWxsVmlld1wiPlxyXG4gICAgICAgICAgICA8aDE+e3tMQU5HLkJQTU4uQlVTSU5FU1NfUFJPQ0VTU19NT0RFTF9BTkRfTk9UQVRJT059fTwvaDE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwicW1zY2tlZGl0b3JfYnBtbl9jb25uZWN0aW9uX3BhbmVsXCIgW2V4cGFuZGVkXT1cInRydWVcIiAob3BlbmVkKT1cInRydWVcIiAoY2xvc2VkKT1cImZhbHNlXCJcclxuICAgICAgICAgICAgaGlkZVRvZ2dsZSAqbmdJZj1cIiEhc2VsZWN0ZWRDZWxsVmlld1wiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgIHt7IExBTkcuQlBNTi5DT05ORUNUSU9OIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJxbXNja2VkaXRvcl9icG1uX2Nvbm5lY3Rpb25fcGFuZWxfMDAxXCIgY2xhc3M9XCJjb2wtMTIgbXQ4XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJjb2wtMTIgcGwtM1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBMQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9CWV9OQU1FIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cImNvbm5lY3Rpb25UeXBlXCIgbmFtZT1cImNvbm5lY3Rpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Db25uZWN0aW9uVHlwZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbm5lY3Rpb25UeXBlc1wiIFt2YWx1ZV09XCJpdGVtLmlkXCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwicW1zY2tlZGl0b3JfYnBtbl9jb25uZWN0aW9uX3BhbmVsXzAwMlwiIGNsYXNzPVwiY29sLTEyIG10OFwiICpuZ0lmPVwiISFsaW5rXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgbXQtbjRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmczMyXCI+e3tsaW5rLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZnMxNlwiPnt7bGluay50aXRsZX19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+e3tsaW5rLmNvbnRlbnR9fTwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgcGEwIG10LW40XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJlbW92ZUxpbmsoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L21hdC1jYXJkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvbl9wYW5lbF8wMDNcIiBjbGFzcz1cImNvbC0xMiBtdDI0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiEhbGluayAmJiBsaW5rLmRvY3VtZW50VHlwZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IExBTkcuQlBNTi5DSE9PU0VfQU5DSE9SX0lOX1RFWFRfT1BUSU9OQUwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiaXNMb2FkaW5nRG9jdW1lbnRBbmNob3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiYW5jaG9yQnlOYW1lXCIgbmFtZT1cImFuY2hvckJ5TmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW5jaG9yQnlOYW1lQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiZG9jdW1lbnRBbmNob3JzID09PSBudWxsIHx8IGRvY3VtZW50QW5jaG9ycy5sZW5ndGggPT0gMFwiIGRpc2FibGVkPjwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkb2NBbmNob3Igb2YgZG9jdW1lbnRBbmNob3JzXCIgW3ZhbHVlXT1cImRvY0FuY2hvci5hbmNob3JWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2NBbmNob3Iudmlld1ZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgbXQ4IHBhMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRUb29sdGlwXT1cIkxBTkcuQlBNTi5SRUxPQURfQU5DSE9SU1wiIChjbGljayk9XCJyZWxvYWRBbmNob3JzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdEb2N1bWVudEFuY2hvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvcmVuZXc8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInFtc2NrZWRpdG9yX2JwbW5fY29ubmVjdGlvbl9wYW5lbF8wMDRcIiBjbGFzcz1cImNvbC0xMiBtdDhcIiAqbmdJZj1cIiEhbGlua1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IExBTkcuUU1TQ0tFRElUT1IuVEFSR0VUIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGFyZ2V0XCIgbmFtZT1cInNlbGVjdGVkVGFyZ2V0XCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHRhcmdldCBvZiB0YXJnZXRzXCIgW3ZhbHVlXT1cInRhcmdldC5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHRhcmdldC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
248
|
+
QMSCKEditorBpmnComponent.decorators = [
|
249
|
+
{ type: Component, args: [{
|
250
|
+
selector: 'qms-bpmn',
|
251
|
+
template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n Business Process Model and Notation\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel\r\n id=\"panel-stencil-container\"\r\n [expanded]=\"expandedPanel\"\r\n (click)=\"expandPanel()\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <div id=\"inspector-container\">\r\n <div class=\"about\">\r\n <h1>Business Process Model and Notation</h1>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
252
|
+
styles: [".qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}.qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}.qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}.qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:17px;height:50px;width:100%}.qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}.qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}.qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}.qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}.qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}.qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}.qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}.qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}.qmsckeditor__bpmn__container #panel-stencil-container ::ng-deep .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}.qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}.qmsckeditor__bpmn__container ::ng-deep .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}"]
|
253
|
+
},] }
|
254
|
+
];
|
255
|
+
QMSCKEditorBpmnComponent.ctorParameters = () => [
|
256
|
+
{ type: MatDialog },
|
257
|
+
{ type: TranslateLibraryService },
|
258
|
+
{ type: BpmnService },
|
259
|
+
{ type: QMSCKEditorBpmnApiService },
|
260
|
+
{ type: MatDialogRef },
|
261
|
+
{ type: String, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
262
|
+
];
|
263
|
+
QMSCKEditorBpmnComponent.propDecorators = {
|
264
|
+
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
265
|
+
};
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUs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cnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEZsb3dDaGFydENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JGbG93Y2hhcnQuY29uc3RcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3RvYXN0L3Ftcy1ja2VkaXRvci10b2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNhdmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuL3NhdmUtdGVtcGxhdGUvc2F2ZS10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWJwbW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBMQU5HOiBhbnk7XHJcbiAganNvbkNvbnRlbnQ6IHN0cmluZztcclxuICBleHBhbmRlZFBhbmVsID0gdHJ1ZTtcclxuICBpZCA9ICcnO1xyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuaWQgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LlNBVkVfQVNfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5ERUxFVEVfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vbkRlbGV0ZVRlbXBsYXRlKHRoaXMuTEFORy5CUE1OLkRFTEVURV9URU1QTEFURSwgdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfVEVNUExBVEUpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dJbmZvTWVzc2FnZSh0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEUsIHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURV9JTkZPUk1BVElPTik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5DSEFOR0lOR19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuUkVTRVRfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblJlc2V0VGVtcGxhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icG1uVGVtbGF0ZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5qc29uQ29udGVudCA9IGF3YWl0IHRoaXMuZ2V0SnNvbkNvbnRlbnQodGhpcy5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJtcG5TZXJ2aWNlLmJ1aWxkRGlhZ3JhbShcclxuICAgICAgdGhpcy5icG1uVGVtbGF0ZXMsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OLFxyXG4gICAgICB0aGlzLmpzb25Db250ZW50LFxyXG4gICAgICAxLFxyXG4gICAgICB0aGlzLkxBTkdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRQYW5lbCgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWRQYW5lbCA9ICF0aGlzLmV4cGFuZGVkUGFuZWw7XHJcbiAgICBjb25zdCBwYW5lbFN0ZW5jaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtc3RlbmNpbC1jb250YWluZXInKTtcclxuICAgIGNvbnN0IHBhcGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcGVycGFuZWwnKTtcclxuICAgIGNvbnN0IHN0ZW5jaWxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlbmNpbHBhbmVsJyk7XHJcbiAgICBpZiAocGFuZWxTdGVuY2lsKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZFBhbmVsKSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTBweCc7XHJcbiAgICAgICAgcGFuZWxTdGVuY2lsLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTAwcHgnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0ZW5jaWxDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNDAwcHgnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRUZW1wbGF0ZXMoKTogUHJvbWlzZTxRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5icG1uR2V0VGVtcGxhdGVzKClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5nZXRCcG1uQnlJZChpZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uQ29udGVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUltYWdlQ29udGVudCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgICB0aGlzLmJwbW4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbWFnZUNvbnRlbnQocGFwZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBhcnJTdHJpbmcgPSBpbWFnZURhdGEuc3BsaXQoJywnKTtcclxuICAgICAgICByZXNvbHZlKGFyclN0cmluZ1sxXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoKTtcclxuICAgIGNvbnN0IHBhcGVyID0gd2luZG93W2BwYXBlcmBdO1xyXG4gICAgY29uc3QgaW1hZ2VDb250ZW50ID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgYXdhaXQgdGhpcy5nZXRJbWFnZUNvbnRlbnQocGFwZXIpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OfSMke2lkfWAsIHZhbHVlczogaW1hZ2VDb250ZW50IH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZUFzVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBqc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGdyYXBoLnRvSlNPTigpKTtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgZGF0YSA9IHtcclxuICAgICAgaWQ6IGd1aWRIZWxwZXIuZW1wdHksXHJcbiAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcclxuICAgIGlmIChzZWxlY3RlZEpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlVGVtcGxhdGUodGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfRkxPV0NIQVJUX0lEXTtcclxuICAgICAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAgICAgLmJwbW5EZWxldGVUZW1wbGF0ZShpZClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ibXBuU2VydmljZS5yZW1vdmVTZWxlY3RJdGVtKGlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm1wblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLmVycm9yKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVfRkFJTEVEKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IG9nckpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk9SR19KU09OQ09OVEVOVF07XHJcbiAgICBpZiAob2dySnNvbkNvbnRlbnQpIHtcclxuICAgICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgICBpZiAoZ3JhcGgpIHtcclxuICAgICAgICBncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKG9nckpzb25Db250ZW50KSk7XHJcbiAgICAgICAgdGhpcy5ibXBuU2VydmljZS5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0luZm9NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vVE9ET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|