verben-workflow-ui 0.5.76 → 0.5.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +13 -0
  2. package/esm2022/src/lib/components/actors/actors.component.mjs +5 -5
  3. package/esm2022/src/lib/components/actors/actors.facade.mjs +3 -3
  4. package/esm2022/src/lib/components/actors/actors.form.component.mjs +5 -5
  5. package/esm2022/src/lib/components/actors/actors.module.mjs +4 -4
  6. package/esm2022/src/lib/components/actors/actors.service.mjs +3 -3
  7. package/esm2022/src/lib/components/actors/actors.state.mjs +3 -3
  8. package/esm2022/src/lib/components/designer/components/label-editor.component.mjs +6 -6
  9. package/esm2022/src/lib/components/designer/components/node-selector.component.mjs +4 -4
  10. package/esm2022/src/lib/components/designer/components/swimlane-label.component.mjs +3 -3
  11. package/esm2022/src/lib/components/designer/components/swimlane-popup.component.mjs +3 -3
  12. package/esm2022/src/lib/components/designer/components/wf-canvas.component.mjs +6 -6
  13. package/esm2022/src/lib/components/designer/components/wf-designer.component.mjs +3 -3
  14. package/esm2022/src/lib/components/designer/components/wf-toolbar.component.mjs +6 -6
  15. package/esm2022/src/lib/components/designer/services/canvas-state.service.mjs +3 -3
  16. package/esm2022/src/lib/components/designer/services/connection-segment-interaction.service.mjs +3 -3
  17. package/esm2022/src/lib/components/designer/services/connection.service.mjs +3 -3
  18. package/esm2022/src/lib/components/designer/services/keyboard-handler.service.mjs +3 -3
  19. package/esm2022/src/lib/components/designer/services/label-management.service.mjs +3 -3
  20. package/esm2022/src/lib/components/designer/services/node-finder.service.mjs +3 -3
  21. package/esm2022/src/lib/components/designer/services/node-interaction.service.mjs +3 -3
  22. package/esm2022/src/lib/components/designer/services/node-precondition.service.mjs +3 -3
  23. package/esm2022/src/lib/components/designer/services/node-selection.service.mjs +3 -3
  24. package/esm2022/src/lib/components/designer/services/orthogonal-router.service.mjs +3 -3
  25. package/esm2022/src/lib/components/designer/services/position-update.service.mjs +3 -3
  26. package/esm2022/src/lib/components/designer/services/rendering.service.mjs +3 -3
  27. package/esm2022/src/lib/components/designer/services/swimlane-management.service.mjs +3 -3
  28. package/esm2022/src/lib/components/designer/services/swimlane-stats.service.mjs +3 -3
  29. package/esm2022/src/lib/components/designer/services/viewport.service.mjs +3 -3
  30. package/esm2022/src/lib/components/designer/services/wf-facade.service.mjs +3 -3
  31. package/esm2022/src/lib/components/designer/services/wf-mapper.service.mjs +3 -3
  32. package/esm2022/src/lib/components/designer/services/wf-persistence.service.mjs +3 -3
  33. package/esm2022/src/lib/components/designer/services/wf-state.service.mjs +3 -3
  34. package/esm2022/src/lib/components/expiration/expiration.component.mjs +3 -3
  35. package/esm2022/src/lib/components/expiration/expiration.module.mjs +4 -4
  36. package/esm2022/src/lib/components/file-render/file-render.component.mjs +5 -5
  37. package/esm2022/src/lib/components/file-render/file-render.module.mjs +4 -4
  38. package/esm2022/src/lib/components/file-upload/file-upload.component.mjs +5 -5
  39. package/esm2022/src/lib/components/file-upload/file-upload.module.mjs +4 -4
  40. package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +17 -10
  41. package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +3 -3
  42. package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +5 -5
  43. package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +4 -4
  44. package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +3 -3
  45. package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +3 -3
  46. package/esm2022/src/lib/components/form-control/form-control.component.mjs +5 -5
  47. package/esm2022/src/lib/components/form-control/form-control.module.mjs +4 -4
  48. package/esm2022/src/lib/components/form-group/base-table-style.mjs +6 -6
  49. package/esm2022/src/lib/components/form-group/form-fields/form-fields.component.mjs +5 -5
  50. package/esm2022/src/lib/components/form-group/form-fields/form-fields.module.mjs +4 -4
  51. package/esm2022/src/lib/components/form-group/form-fields/form-fields.service.mjs +3 -3
  52. package/esm2022/src/lib/components/form-group/form-group.component.mjs +5 -5
  53. package/esm2022/src/lib/components/form-group/form-group.module.mjs +4 -4
  54. package/esm2022/src/lib/components/form-group/form-group.service.mjs +3 -3
  55. package/esm2022/src/lib/components/form-response/form-response.component.mjs +5 -5
  56. package/esm2022/src/lib/components/form-response/form-response.module.mjs +4 -4
  57. package/esm2022/src/lib/components/form-response/form-response.service.mjs +3 -3
  58. package/esm2022/src/lib/components/form-timer/form-timer.component.mjs +5 -5
  59. package/esm2022/src/lib/components/form-timer/form-timer.module.mjs +4 -4
  60. package/esm2022/src/lib/components/forms/base-table-style.mjs +6 -6
  61. package/esm2022/src/lib/components/forms/forms.component.mjs +5 -5
  62. package/esm2022/src/lib/components/forms/forms.module.mjs +4 -4
  63. package/esm2022/src/lib/components/forms/forms.service.mjs +3 -3
  64. package/esm2022/src/lib/components/journal/journal.component.mjs +3 -3
  65. package/esm2022/src/lib/components/journal/journal.module.mjs +4 -4
  66. package/esm2022/src/lib/components/my-queue/my-queue.component.mjs +5 -5
  67. package/esm2022/src/lib/components/my-queue/my-queue.facade.mjs +3 -3
  68. package/esm2022/src/lib/components/my-queue/my-queue.module.mjs +4 -4
  69. package/esm2022/src/lib/components/my-queue/my-queue.service.mjs +3 -3
  70. package/esm2022/src/lib/components/my-queue/my-queue.state.mjs +3 -3
  71. package/esm2022/src/lib/components/my-queue/tasks.form.component.mjs +5 -5
  72. package/esm2022/src/lib/components/operation-popup/operation-popup.component.mjs +5 -5
  73. package/esm2022/src/lib/components/operation-popup/operation-popup.facade.mjs +3 -3
  74. package/esm2022/src/lib/components/operation-popup/operation-popup.service.mjs +3 -3
  75. package/esm2022/src/lib/components/operation-popup/operation-popup.state.mjs +3 -3
  76. package/esm2022/src/lib/components/stage-details/stage-details.component.mjs +5 -5
  77. package/esm2022/src/lib/components/stage-details/stage-details.module.mjs +4 -4
  78. package/esm2022/src/lib/components/task-form/task-form.component.mjs +5 -5
  79. package/esm2022/src/lib/components/task-form/task-form.module.mjs +4 -4
  80. package/esm2022/src/lib/components/task-history/task-history.component.mjs +5 -5
  81. package/esm2022/src/lib/components/task-history/task-history.module.mjs +4 -4
  82. package/esm2022/src/lib/components/task-history/task-history.service.mjs +3 -3
  83. package/esm2022/src/lib/components/task-notification/base-table-style.mjs +6 -6
  84. package/esm2022/src/lib/components/task-notification/task-notification.component.mjs +5 -5
  85. package/esm2022/src/lib/components/task-notification/task-notification.module.mjs +4 -4
  86. package/esm2022/src/lib/components/task-notification/task-notification.service.mjs +3 -3
  87. package/esm2022/src/lib/components/tasks/tasks.component.mjs +17 -26
  88. package/esm2022/src/lib/components/tasks/tasks.facade.mjs +3 -3
  89. package/esm2022/src/lib/components/tasks/tasks.form.component.mjs +5 -5
  90. package/esm2022/src/lib/components/tasks/tasks.module.mjs +4 -4
  91. package/esm2022/src/lib/components/tasks/tasks.service.mjs +3 -3
  92. package/esm2022/src/lib/components/tasks/tasks.state.mjs +3 -3
  93. package/esm2022/src/lib/components/wf/wf.component.mjs +3 -3
  94. package/esm2022/src/lib/components/wf/wf.module.mjs +4 -4
  95. package/esm2022/src/lib/components/wf/wf.service.mjs +3 -3
  96. package/esm2022/src/lib/components/workflow/table-style.mjs +6 -6
  97. package/esm2022/src/lib/components/workflow/workflow.component.mjs +8 -8
  98. package/esm2022/src/lib/components/workflow/workflow.module.mjs +4 -4
  99. package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +5 -5
  100. package/esm2022/src/lib/components/workflow-designer/actor-tags-dialog/actor-tags-dialog.component.mjs +5 -5
  101. package/esm2022/src/lib/components/workflow-designer/conditions-popup/conditions-popup.component.mjs +3 -3
  102. package/esm2022/src/lib/components/workflow-designer/decision-popup/decision-popup.component.mjs +4 -4
  103. package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -3
  104. package/esm2022/src/lib/components/workflow-designer/designer-toolbar/designer-toolbar.component.mjs +5 -5
  105. package/esm2022/src/lib/components/workflow-designer/escalation-dialog/escalation-dialog.component.mjs +5 -5
  106. package/esm2022/src/lib/components/workflow-designer/services/connection.service.mjs +3 -3
  107. package/esm2022/src/lib/components/workflow-designer/services/node-management.service.mjs +3 -3
  108. package/esm2022/src/lib/components/workflow-designer/services/popup.service.mjs +3 -3
  109. package/esm2022/src/lib/components/workflow-designer/services/swimlane.service.mjs +3 -3
  110. package/esm2022/src/lib/components/workflow-designer/services/transformer.service.mjs +3 -3
  111. package/esm2022/src/lib/components/workflow-designer/stage-dialog/stage-dialog.component.mjs +5 -5
  112. package/esm2022/src/lib/components/workflow-designer/stage-node/stage-node.component.mjs +5 -5
  113. package/esm2022/src/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs +5 -5
  114. package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +3 -3
  115. package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +4 -4
  116. package/esm2022/src/lib/components/workflow-designer/workflow-designer.module.mjs +4 -4
  117. package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +3 -3
  118. package/esm2022/src/lib/components/workflows/workflow-form/workflow-form.component.mjs +5 -5
  119. package/esm2022/src/lib/components/workflows/workflows.component.mjs +18 -9
  120. package/esm2022/src/lib/components/workflows/workflows.facade.mjs +3 -3
  121. package/esm2022/src/lib/components/workflows/workflows.module.mjs +4 -4
  122. package/esm2022/src/lib/components/workflows/workflows.service.mjs +3 -3
  123. package/esm2022/src/lib/components/workflows/workflows.state.mjs +3 -3
  124. package/esm2022/src/lib/pipes/async-label.pipe.mjs +3 -3
  125. package/esm2022/src/lib/services/environment.service.mjs +3 -3
  126. package/esm2022/src/lib/services/http-web-request.service.mjs +3 -3
  127. package/esm2022/src/lib/services/label.service.mjs +3 -3
  128. package/esm2022/src/lib/services/util.service.mjs +3 -3
  129. package/esm2022/src/lib/shared/base-table-style.mjs +6 -6
  130. package/esm2022/src/lib/shared/components/base-data-view.component.mjs +3 -3
  131. package/esm2022/src/lib/shared/shared.module.mjs +4 -4
  132. package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs +21 -21
  133. package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs.map +1 -1
  134. package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs +85 -85
  135. package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs.map +1 -1
  136. package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs +7 -7
  137. package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs.map +1 -1
  138. package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs +8 -8
  139. package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs.map +1 -1
  140. package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs +8 -8
  141. package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs.map +1 -1
  142. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +33 -26
  143. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -1
  144. package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs +8 -8
  145. package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs.map +1 -1
  146. package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs +27 -27
  147. package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs.map +1 -1
  148. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs +11 -11
  149. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs.map +1 -1
  150. package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs +8 -8
  151. package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs.map +1 -1
  152. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs +16 -16
  153. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs.map +1 -1
  154. package/fesm2022/verben-workflow-ui-src-lib-components-journal.mjs +7 -7
  155. package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs +21 -21
  156. package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs.map +1 -1
  157. package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs +13 -13
  158. package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs.map +1 -1
  159. package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs +8 -8
  160. package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs.map +1 -1
  161. package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs +8 -8
  162. package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs.map +1 -1
  163. package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs +11 -11
  164. package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs.map +1 -1
  165. package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs +16 -16
  166. package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs.map +1 -1
  167. package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs +33 -42
  168. package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs.map +1 -1
  169. package/fesm2022/verben-workflow-ui-src-lib-components-wf.mjs +10 -10
  170. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +67 -67
  171. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
  172. package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs +16 -16
  173. package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs.map +1 -1
  174. package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs +34 -25
  175. package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs.map +1 -1
  176. package/fesm2022/verben-workflow-ui-src-lib-pipes.mjs +3 -3
  177. package/fesm2022/verben-workflow-ui-src-lib-services.mjs +12 -12
  178. package/fesm2022/verben-workflow-ui-src-lib-shared.mjs +12 -12
  179. package/fesm2022/verben-workflow-ui-src-lib-shared.mjs.map +1 -1
  180. package/package.json +30 -30
  181. package/src/lib/components/workflow/workflow.component.d.ts +1 -1
  182. package/styles/styles.css +19 -1436
@@ -76,8 +76,8 @@ export class NodeSelectorComponent {
76
76
  onModalClose(event) {
77
77
  this.preconditionService.clearPendingNode();
78
78
  }
79
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NodeSelectorComponent, isStandalone: true, selector: "wf-node-selector", outputs: { select: "select" }, ngImport: i0, template: `
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: NodeSelectorComponent, isStandalone: true, selector: "wf-node-selector", outputs: { select: "select" }, ngImport: i0, template: `
81
81
  <verben-dialogue
82
82
  [isVisible]="!!preconditionService.pendingNode()"
83
83
  [showCloseIcon]="true"
@@ -190,9 +190,9 @@ export class NodeSelectorComponent {
190
190
  } }
191
191
  </div>
192
192
  </ng-template>
193
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: VerbenDialogueModule }, { kind: "component", type: i1.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["dialogueWidth", "headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "width", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DropDownModule }, { kind: "component", type: i1.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
193
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: VerbenDialogueModule }, { kind: "component", type: i1.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["dialogueWidth", "headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "width", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DropDownModule }, { kind: "component", type: i1.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }] });
194
194
  }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeSelectorComponent, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeSelectorComponent, decorators: [{
196
196
  type: Component,
197
197
  args: [{
198
198
  selector: 'wf-node-selector',
@@ -15,8 +15,8 @@ export class SwimlaneLabelComponent {
15
15
  onLabelChange(newLabel) {
16
16
  this.labelChange.emit(newLabel);
17
17
  }
18
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SwimlaneLabelComponent, isStandalone: true, selector: "[wf-swimlane-label]", inputs: { label: "label", count: "count" }, outputs: { addClick: "addClick", labelChange: "labelChange" }, ngImport: i0, template: `
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SwimlaneLabelComponent, isStandalone: true, selector: "[wf-swimlane-label]", inputs: { label: "label", count: "count" }, outputs: { addClick: "addClick", labelChange: "labelChange" }, ngImport: i0, template: `
20
20
  <svg:g>
21
21
  <!-- Plus icon at top -->
22
22
  <svg:g
@@ -82,7 +82,7 @@ export class SwimlaneLabelComponent {
82
82
  </svg:g>
83
83
  `, isInline: true, styles: [":host{display:block}circle:hover{fill:#f3e8ff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: LabelEditorComponent, selector: "wf-label-editor", inputs: ["label", "x", "y", "isConnection", "isSwimlane"], outputs: ["labelChange", "openDialog"] }] });
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneLabelComponent, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneLabelComponent, decorators: [{
86
86
  type: Component,
87
87
  args: [{ selector: '[wf-swimlane-label]', standalone: true, imports: [CommonModule, LabelEditorComponent], template: `
88
88
  <svg:g>
@@ -16,8 +16,8 @@ export class SwimLanePopupComponent {
16
16
  this.actionSelected.emit(action.id);
17
17
  this.close.emit();
18
18
  }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimLanePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SwimLanePopupComponent, isStandalone: true, selector: "wf-swimlane-popup", inputs: { position: "position" }, outputs: { close: "close", actionSelected: "actionSelected" }, ngImport: i0, template: `
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimLanePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SwimLanePopupComponent, isStandalone: true, selector: "wf-swimlane-popup", inputs: { position: "position" }, outputs: { close: "close", actionSelected: "actionSelected" }, ngImport: i0, template: `
21
21
  <div
22
22
  class="fixed bg-white rounded-lg shadow-lg border border-slate-200 p-4 min-w-[200px]"
23
23
  [style.left.px]="position.x"
@@ -43,7 +43,7 @@ export class SwimLanePopupComponent {
43
43
  </div>
44
44
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimLanePopupComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimLanePopupComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{
49
49
  selector: 'wf-swimlane-popup',
@@ -91,8 +91,8 @@ export class WFCanvasComponent {
91
91
  onNodeSelectionCancelled() {
92
92
  this.facade.preconditionService.clearPendingNode();
93
93
  }
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFCanvasComponent, deps: [{ token: i1.WorkflowFacadeService }], target: i0.ɵɵFactoryTarget.Component });
95
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WFCanvasComponent, isStandalone: true, selector: "wf-canvas", host: { listeners: { "window:keydown": "onKeyDown($event)", "click": "onClick()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: `
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFCanvasComponent, deps: [{ token: i1.WorkflowFacadeService }], target: i0.ɵɵFactoryTarget.Component });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WFCanvasComponent, isStandalone: true, selector: "wf-canvas", host: { listeners: { "window:keydown": "onKeyDown($event)", "click": "onClick()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: `
96
96
  <div
97
97
  class="canvas-container"
98
98
  #container
@@ -390,9 +390,9 @@ export class WFCanvasComponent {
390
390
  (select)="onNodeSelected($event)"
391
391
  (cancel)="onNodeSelectionCancelled()"
392
392
  />
393
- `, isInline: true, styles: [".canvas-container{flex:1;overflow:auto;position:relative;background:#fff}.canvas-container.connecting{cursor:crosshair}.connection path{stroke:#d36cff;stroke-width:2;fill:none;pointer-events:none}.connection.selected path{stroke-width:3}.selected :not(text){stroke-width:3}.dragging{cursor:grabbing}.connection{pointer-events:none}.segment-group{pointer-events:all}.segment-hitarea{stroke:transparent;stroke-width:10;fill:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: LabelEditorComponent, selector: "wf-label-editor", inputs: ["label", "x", "y", "isConnection", "isSwimlane"], outputs: ["labelChange", "openDialog"] }, { kind: "component", type: SwimlaneLabelComponent, selector: "[wf-swimlane-label]", inputs: ["label", "count"], outputs: ["addClick", "labelChange"] }, { kind: "component", type: SwimLanePopupComponent, selector: "wf-swimlane-popup", inputs: ["position"], outputs: ["close", "actionSelected"] }, { kind: "component", type: NodeSelectorComponent, selector: "wf-node-selector", outputs: ["select"] }] });
393
+ `, isInline: true, styles: [".canvas-container{flex:1;overflow:auto;position:relative;background:#fff;&.connecting{cursor:crosshair}}.connection{path{stroke:#d36cff;stroke-width:2;fill:none;pointer-events:none}&.selected path{stroke-width:3}}.selected{:not(text){stroke-width:3}}.dragging{cursor:grabbing}.connection{pointer-events:none}.segment-group{pointer-events:all}.segment-hitarea{stroke:transparent;stroke-width:10;fill:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: LabelEditorComponent, selector: "wf-label-editor", inputs: ["label", "x", "y", "isConnection", "isSwimlane"], outputs: ["labelChange", "openDialog"] }, { kind: "component", type: SwimlaneLabelComponent, selector: "[wf-swimlane-label]", inputs: ["label", "count"], outputs: ["addClick", "labelChange"] }, { kind: "component", type: SwimLanePopupComponent, selector: "wf-swimlane-popup", inputs: ["position"], outputs: ["close", "actionSelected"] }, { kind: "component", type: NodeSelectorComponent, selector: "wf-node-selector", outputs: ["select"] }] });
394
394
  }
395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFCanvasComponent, decorators: [{
395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFCanvasComponent, decorators: [{
396
396
  type: Component,
397
397
  args: [{ selector: 'wf-canvas', standalone: true, imports: [
398
398
  CommonModule,
@@ -698,7 +698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
698
698
  (select)="onNodeSelected($event)"
699
699
  (cancel)="onNodeSelectionCancelled()"
700
700
  />
701
- `, styles: [".canvas-container{flex:1;overflow:auto;position:relative;background:#fff}.canvas-container.connecting{cursor:crosshair}.connection path{stroke:#d36cff;stroke-width:2;fill:none;pointer-events:none}.connection.selected path{stroke-width:3}.selected :not(text){stroke-width:3}.dragging{cursor:grabbing}.connection{pointer-events:none}.segment-group{pointer-events:all}.segment-hitarea{stroke:transparent;stroke-width:10;fill:none}\n"] }]
701
+ `, styles: [".canvas-container{flex:1;overflow:auto;position:relative;background:#fff;&.connecting{cursor:crosshair}}.connection{path{stroke:#d36cff;stroke-width:2;fill:none;pointer-events:none}&.selected path{stroke-width:3}}.selected{:not(text){stroke-width:3}}.dragging{cursor:grabbing}.connection{pointer-events:none}.segment-group{pointer-events:all}.segment-hitarea{stroke:transparent;stroke-width:10;fill:none}\n"] }]
702
702
  }], ctorParameters: () => [{ type: i1.WorkflowFacadeService }], propDecorators: { containerRef: [{
703
703
  type: ViewChild,
704
704
  args: ['container']
@@ -712,4 +712,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
712
712
  type: HostListener,
713
713
  args: ['click']
714
714
  }] } });
715
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtY2FudmFzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduZXIvY29tcG9uZW50cy93Zi1jYW52YXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFLVCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUEyVy9DLE1BQU0sT0FBTyxpQkFBaUI7SUFXVDtJQVZLLFlBQVksQ0FBOEI7SUFDN0MsU0FBUyxDQUEwQjtJQUU5QyxZQUFZLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9DLGVBQWUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvQyxt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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwU1Q7MEZBc0R1QixZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsU0FBUztzQkFBN0IsU0FBUzt1QkFBQyxRQUFRO2dCQVluQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTFDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy93b3JrZmxvdy9jYW52YXMvd2YtY2FudmFzLmNvbXBvbmVudC50c1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdvcmtmbG93RmFjYWRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dmLWZhY2FkZS5zZXJ2aWNlJztcbmltcG9ydCB7IExhYmVsRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9sYWJlbC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IExhYmVsTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sYWJlbC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3dpbWxhbmVMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vc3dpbWxhbmUtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aW1MYW5lUG9wdXBDb21wb25lbnQgfSBmcm9tICcuL3N3aW1sYW5lLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2ltbGFuZVN0YXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N3aW1sYW5lLXN0YXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2tleWJvYXJkLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL25vZGUtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE5vZGVQcmVjb25kaXRpb25TZXJ2aWNlLFxuICBQcmVjb25kaXRpb25EYXRhLFxufSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLXByZWNvbmRpdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2YtY2FudmFzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMYWJlbEVkaXRvckNvbXBvbmVudCxcbiAgICBTd2ltbGFuZUxhYmVsQ29tcG9uZW50LFxuICAgIFN3aW1MYW5lUG9wdXBDb21wb25lbnQsXG4gICAgTm9kZVNlbGVjdG9yQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FudmFzLWNvbnRhaW5lclwiXG4gICAgICAjY29udGFpbmVyXG4gICAgICBbY2xhc3MuY29ubmVjdGluZ109XCJmYWNhZGUuY2FudmFzU3RhdGUoKS5pc0Nvbm5lY3RpbmdcIlxuICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICAjY2FudmFzXG4gICAgICAgIFthdHRyLndpZHRoXT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLndpZHRoXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLmhlaWdodFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gR3JpZCBQYXR0ZXJuIC0tPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8cGF0dGVyblxuICAgICAgICAgICAgaWQ9XCJncmlkXCJcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLmdyaWRTaXplXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJmYWNhZGUuY2FudmFzU3RhdGUoKS5ncmlkU2l6ZVwiXG4gICAgICAgICAgICBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0R3JpZFBhdHRlcm4oKS5wYXRoLmRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUuZ2V0R3JpZFBhdHRlcm4oKS5wYXRoLnN0eWxlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICA8L2RlZnM+XG5cbiAgICAgICAgPCEtLSBCYWNrZ3JvdW5kIGdyaWQgLS0+XG4gICAgICAgIDxyZWN0IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBmaWxsPVwidXJsKCNncmlkKVwiIC8+XG5cbiAgICAgICAgPCEtLSBTd2ltbGFuZXMgLS0+XG4gICAgICAgIEBmb3IgKHN3aW1sYW5lIG9mIGZhY2FkZS5zd2ltbGFuZXMoKTsgdHJhY2sgc3dpbWxhbmUuaWQpIHtcbiAgICAgICAgPGcgW2F0dHIudHJhbnNmb3JtXT1cImZhY2FkZS5nZXROb2RlVHJhbnNmb3Jtcyhzd2ltbGFuZSkubm9kZVwiPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBbYXR0ci53aWR0aF09XCJzd2ltbGFuZS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJzd2ltbGFuZS5zaXplLmhlaWdodFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldFN3aW1sYW5lU3R5bGUoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIDx0ZXh0XG4gICAgICAgICAgICB4PVwiMTAwXCJcbiAgICAgICAgICAgIHk9XCIyMFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldExhYmVsU3R5bGUoJ3N3aW1sYW5lJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHN3aW1sYW5lLmxhYmVsIH19XG4gICAgICAgICAgPC90ZXh0PiAtLT5cbiAgICAgICAgICA8IS0tIDxmb3JlaWduT2JqZWN0XG4gICAgICAgICAgICBbYXR0ci54XT1cImxhYmVsU2VydmljZS5nZXRMYWJlbFBvc2l0aW9uKHN3aW1sYW5lKS54XCJcbiAgICAgICAgICAgIFthdHRyLnldPVwibGFiZWxTZXJ2aWNlLmdldExhYmVsUG9zaXRpb24oc3dpbWxhbmUpLnlcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNTBcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogdmlzaWJsZTtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx3Zi1sYWJlbC1lZGl0b3JcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInN3aW1sYW5lLmxhYmVsIHx8ICdOZXcgU3dpbWxhbmUnXCJcbiAgICAgICAgICAgICAgW3hdPVwiMFwiXG4gICAgICAgICAgICAgIFt5XT1cIjBcIlxuICAgICAgICAgICAgICBbaXNTd2ltbGFuZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKHN3aW1sYW5lLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9mb3JlaWduT2JqZWN0PiAtLT5cblxuICAgICAgICAgIDwhLS0gPGdcbiAgICAgICAgICAgIHdmLXN3aW1sYW5lLWxhYmVsXG4gICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWxcIlxuICAgICAgICAgICAgW2NvdW50XT1cInN3aW1sYW5lU3RhdHMuZ2V0Tm9kZUNvdW50KHN3aW1sYW5lLmlkKVwiXG4gICAgICAgICAgICBbeF09XCIyMFwiXG4gICAgICAgICAgICBbeV09XCJzd2ltbGFuZS5zaXplLmhlaWdodCAtIDIwXCJcbiAgICAgICAgICAgIChhZGRDbGljayk9XCJvblN3aW1sYW5lQWRkQ2xpY2soJGV2ZW50LCBzd2ltbGFuZSlcIlxuICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKHN3aW1sYW5lLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAvPiAtLT5cblxuICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzMCwgMjApXCI+XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB3Zi1zd2ltbGFuZS1sYWJlbFxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWxcIlxuICAgICAgICAgICAgICBbY291bnRdPVwic3dpbWxhbmVTdGF0cy5nZXROb2RlQ291bnQoc3dpbWxhbmUuaWQpXCJcbiAgICAgICAgICAgICAgKGFkZENsaWNrKT1cIm9uU3dpbWxhbmVBZGRDbGljaygkZXZlbnQsIHN3aW1sYW5lKVwiXG4gICAgICAgICAgICAgIChsYWJlbENoYW5nZSk9XCJ1cGRhdGVMYWJlbChzd2ltbGFuZS5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cblxuICAgICAgICAgIDwhLS0gPGZvcmVpZ25PYmplY3RcbiAgICAgICAgICAgIFthdHRyLnhdPVwiNTBcIlxuICAgICAgICAgICAgW2F0dHIueV09XCIyMFwiXG4gICAgICAgICAgICB3aWR0aD1cIjE1MFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiB2aXNpYmxlO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHdmLWxhYmVsLWVkaXRvclxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWwgfHwgJ05ldyBTd2ltbGFuZSdcIlxuICAgICAgICAgICAgICBbeF09XCIwXCJcbiAgICAgICAgICAgICAgW3ldPVwiMFwiXG4gICAgICAgICAgICAgIFtpc1N3aW1sYW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAobGFiZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoc3dpbWxhbmUuaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+IC0tPlxuICAgICAgICA8L2c+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIENvbm5lY3Rpb25zIHdpdGggbGFiZWxzIC0tPlxuICAgICAgICBAZm9yIChjb25uZWN0aW9uIG9mIGZhY2FkZS5jb25uZWN0aW9ucygpOyB0cmFjayBjb25uZWN0aW9uLmlkKSB7XG4gICAgICAgIDxnXG4gICAgICAgICAgY2xhc3M9XCJjb25uZWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGNvbm5lY3Rpb24uaWQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gPHBhdGhcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmFjYWRlLmdldENvbm5lY3Rpb25QYXRoKGNvbm5lY3Rpb24ucG9pbnRzKVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldENvbm5lY3Rpb25TdHlsZShcbiAgICAgICAgICAgICAgICBmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY29ubmVjdGlvbi5pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPiAtLT5cbiAgICAgICAgICA8IS0tIENvbXBsZXRlIGNvbm5lY3Rpb24gcGF0aCB3aXRoIGFycm93aGVhZCAtLT5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0Q29ubmVjdGlvblBhdGgoY29ubmVjdGlvbi5wb2ludHMpXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Q29ubmVjdGlvblN0eWxlKFxuICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPCEtLSBSZW5kZXIgc2VnbWVudHMgLS0+XG4gICAgICAgICAgQGZvciAocG9pbnQgb2YgY29ubmVjdGlvbi5wb2ludHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7IEBpZiAoaSA8XG4gICAgICAgICAgY29ubmVjdGlvbi5wb2ludHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIDwhLS0gSW50ZXJhY3RpdmUgc2VnbWVudCAtLT5cbiAgICAgICAgICA8IS0tIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImdldFNlZ21lbnRQYXRoKHBvaW50LCBjb25uZWN0aW9uLnBvaW50c1tpICsgMV0pXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Q29ubmVjdGlvblN0eWxlKFxuICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJmYWNhZGUuZ2V0U2VnbWVudEN1cnNvcihjb25uZWN0aW9uLmlkLCBpKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VnbWVudE1vdXNlRG93bigkZXZlbnQsIGNvbm5lY3Rpb24uaWQsIGkpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29ubmVjdGlvbi1zZWdtZW50XCJcbiAgICAgICAgICAvPiAtLT5cbiAgICAgICAgICA8Z1xuICAgICAgICAgICAgY2xhc3M9XCJzZWdtZW50LWdyb3VwXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIlxuICAgICAgICAgICAgICBob3ZlcmVkU2VnbWVudCA9IHsgY29ubmVjdGlvbklkOiBjb25uZWN0aW9uLmlkLCBpbmRleDogaSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZFNlZ21lbnQgPSBudWxsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIEhpdCBkZXRlY3Rpb24gYXJlYSAtLT5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIFthdHRyLmRdPVwiZ2V0U2VnbWVudFBhdGgocG9pbnQsIGNvbm5lY3Rpb24ucG9pbnRzW2kgKyAxXSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlZ21lbnQtaGl0YXJlYVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiZmFjYWRlLmdldFNlZ21lbnRDdXJzb3IoY29ubmVjdGlvbi5pZCwgaSlcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VnbWVudE1vdXNlRG93bigkZXZlbnQsIGNvbm5lY3Rpb24uaWQsIGkpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDwhLS0gVmlzaWJsZSBzZWdtZW50IC0tPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgW2F0dHIuZF09XCJnZXRTZWdtZW50UGF0aChwb2ludCwgY29ubmVjdGlvbi5wb2ludHNbaSArIDFdKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIGZhY2FkZS5yZW5kZXJpbmcuZ2V0Q29ubmVjdGlvblNlZ21lbnRTdHlsZShcbiAgICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKSxcbiAgICAgICAgICAgICAgICAgIGlzU2VnbWVudEhvdmVyZWQoY29ubmVjdGlvbi5pZCwgaSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICB9IH1cbiAgICAgICAgICA8IS0tIENvbm5lY3Rpb24gTGFiZWwgLS0+XG4gICAgICAgICAgQGlmIChjb25uZWN0aW9uLmZyb21JZCAmJiBjb25uZWN0aW9uLnRvSWQpIHtcbiAgICAgICAgICA8Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgW2F0dHIueF09XCJsYWJlbFNlcnZpY2UuZ2V0TGFiZWxQb3NpdGlvbihjb25uZWN0aW9uKS54XCJcbiAgICAgICAgICAgIFthdHRyLnldPVwibGFiZWxTZXJ2aWNlLmdldExhYmVsUG9zaXRpb24oY29ubmVjdGlvbikueVwiXG4gICAgICAgICAgICB3aWR0aD1cIjE1MFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiB2aXNpYmxlOyBwb2ludGVyLWV2ZW50czogYWxsO1wiXG4gICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgtMTAsIC0xMCknXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8d2YtbGFiZWwtZWRpdG9yXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjb25uZWN0aW9uLmxhYmVsIHx8ICdOZXcgQWN0aW9uJ1wiXG4gICAgICAgICAgICAgIFt4XT1cIjBcIlxuICAgICAgICAgICAgICBbeV09XCIwXCJcbiAgICAgICAgICAgICAgW2lzQ29ubmVjdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGNvbm5lY3Rpb24uaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG4gICAgICAgICAgfVxuICAgICAgICA8L2c+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5vZGVzIC0tPlxuICAgICAgICBAZm9yIChub2RlIG9mIGZhY2FkZS5ub2RlcygpOyB0cmFjayBub2RlLmlkKSB7XG4gICAgICAgIDxnXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImZhY2FkZS5nZXROb2RlVHJhbnNmb3Jtcyhub2RlKS5ub2RlXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUuaWQpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiXG4gICAgICAgICAgICBmYWNhZGUuY2FudmFzU3RhdGUoKS5pc0RyYWdnaW5nICYmXG4gICAgICAgICAgICBmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZClcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgQHN3aXRjaCAobm9kZS50eXBlKSB7IEBjYXNlICgnc3RhcnQnKSB7XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmFjYWRlLmdldFN0YXJ0Tm9kZVBhdGhzKCkuY2lyY2xlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Tm9kZVN0eWxlKGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlLmlkKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAaWYgKCFmYWNhZGUuaGFzT3V0Z29pbmdDb25uZWN0aW9ucyhub2RlLmlkKSkge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImZhY2FkZS5nZXRTdGFydE5vZGVQYXRocygpLmFycm93XCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJmYWNhZGUuZ2V0Tm9kZVRyYW5zZm9ybXMobm9kZSkuYXJyb3dcIlxuICAgICAgICAgICAgZmlsbD1cIiNEMzZDRkZcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSB9QGNhc2UgKCdmb3JtJykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImZhY2FkZS5yZW5kZXJpbmcuZ2VuZXJhdGVOb2RlUGF0aChub2RlKVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldE5vZGVTdHlsZShmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAY2FzZSAoJ2RlY2lzaW9uJykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUucmVuZGVyaW5nLmdldERlY2lzaW9uUGF0aChcbiAgICAgICAgICAgICAgICBub2RlLnNpemUud2lkdGgsXG4gICAgICAgICAgICAgICAgbm9kZS5zaXplLmhlaWdodFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgIGZhY2FkZS5nZXROb2RlU3R5bGUoZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUuaWQpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGNhc2UgKCdzdWJmbG93Jykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUucmVuZGVyaW5nLmdldFN1YmZsb3dQYXRoKG5vZGUuc2l6ZS53aWR0aCwgbm9kZS5zaXplLmhlaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldE5vZGVTdHlsZShmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAZGVmYXVsdCB7XG4gICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIm5vZGUuc2l6ZS53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwibm9kZS5zaXplLmhlaWdodFwiXG4gICAgICAgICAgICBbYXR0ci5yeF09XCI0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Tm9kZVN0eWxlKGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlLmlkKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB9IH1cblxuICAgICAgICAgIDwhLS0gTm9kZSBsYWJlbCAtLT5cbiAgICAgICAgICA8IS0tIDx0ZXh0XG4gICAgICAgICAgICBbYXR0ci54XT1cIm5vZGUuc2l6ZS53aWR0aCAvIDJcIlxuICAgICAgICAgICAgW2F0dHIueV09XCJub2RlLnNpemUuaGVpZ2h0IC8gMlwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldExhYmVsU3R5bGUobm9kZS50eXBlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB9fVxuICAgICAgICAgIDwvdGV4dD4gLS0+XG4gICAgICAgICAgPGZvcmVpZ25PYmplY3RcbiAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwibm9kZS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJub2RlLnNpemUuaGVpZ2h0XCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IHZpc2libGU7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8d2YtbGFiZWwtZWRpdG9yXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJub2RlLmxhYmVsXCJcbiAgICAgICAgICAgICAgW3hdPVwibGFiZWxTZXJ2aWNlLmdldFNWR1RleHRQb3NpdGlvbihub2RlKS54XCJcbiAgICAgICAgICAgICAgW3ldPVwibGFiZWxTZXJ2aWNlLmdldFNWR1RleHRQb3NpdGlvbihub2RlKS55XCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKG5vZGUuaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG4gICAgICAgIDwvZz5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29ubmVjdGlvbiBwcmV2aWV3IHdpdGggYXJyb3doZWFkIC0tPlxuICAgICAgICBAaWYgKGZhY2FkZS5jYW52YXNTdGF0ZSgpLmNvbm5lY3Rpb25QcmV2aWV3KSB7XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0Q29ubmVjdGlvblByZXZpZXdQYXRoKClcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImZhY2FkZS5yZW5kZXJpbmcuZ2V0Q29ubmVjdGlvblByZXZpZXdTdHlsZSgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9zdmc+XG5cbiAgICAgIEBpZiAoc3dpbWxhbmVTdGF0cy5wb3B1cFN0YXR1cygpLmlzT3Blbikge1xuICAgICAgPHdmLXN3aW1sYW5lLXBvcHVwXG4gICAgICAgIFtwb3NpdGlvbl09XCJzd2ltbGFuZVN0YXRzLnBvcHVwU3RhdHVzKCkucG9zaXRpb25cIlxuICAgICAgICAoY2xvc2UpPVwic3dpbWxhbmVTdGF0cy5jbG9zZVBvcHVwKClcIlxuICAgICAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib25Qb3B1cEFjdGlvbigkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8d2Ytbm9kZS1zZWxlY3RvclxuICAgICAgKHNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjYW5jZWwpPVwib25Ob2RlU2VsZWN0aW9uQ2FuY2VsbGVkKClcIlxuICAgIC8+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5jYW52YXMtY29udGFpbmVyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG5cbiAgICAgICAgJi5jb25uZWN0aW5nIHtcbiAgICAgICAgICBjdXJzb3I6IGNyb3NzaGFpcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29ubmVjdGlvbiB7XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIHN0cm9rZTogI2QzNmNmZjtcbiAgICAgICAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgICAgICAgZmlsbDogbm9uZTtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0ZWQgcGF0aCB7XG4gICAgICAgICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zZWxlY3RlZCB7XG4gICAgICAgICYgOm5vdCh0ZXh0KSB7XG4gICAgICAgICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5kcmFnZ2luZyB7XG4gICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gICAgICB9XG5cbiAgICAgIC5jb25uZWN0aW9uIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5zZWdtZW50LWdyb3VwIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICAgIH1cblxuICAgICAgLnNlZ21lbnQtaGl0YXJlYSB7XG4gICAgICAgIHN0cm9rZTogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHN0cm9rZS13aWR0aDogMTA7XG4gICAgICAgIGZpbGw6IG5vbmU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV0ZDYW52YXNDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzUmVmITogRWxlbWVudFJlZjxTVkdFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgbGFiZWxTZXJ2aWNlID0gaW5qZWN0KExhYmVsTWFuYWdlbWVudFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc3dpbWxhbmVTdGF0cyA9IGluamVjdChTd2ltbGFuZVN0YXRzU2VydmljZSk7XG4gIHByaXZhdGUga2V5Ym9hcmRIYW5kbGVyID0gaW5qZWN0KEtleWJvYXJkSGFuZGxlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcHJlY29uZGl0aW9uU2VydmljZSA9IGluamVjdChOb2RlUHJlY29uZGl0aW9uU2VydmljZSk7XG5cbiAgaG92ZXJlZFNlZ21lbnQ6IHsgY29ubmVjdGlvbklkOiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmYWNhZGU6IFdvcmtmbG93RmFjYWRlU2VydmljZSkge31cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIE9ubHkgaGFuZGxlIGtleWJvYXJkIGV2ZW50cyBpZiB0aGUgY2FudmFzIGlzIGZvY3VzZWRcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgdGhpcy5rZXlib2FyZEhhbmRsZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGNsaWNrIGhhbmRsZXIgdG8gZW5zdXJlIHRoZSBjYW52YXMgY2FuIHJlY2VpdmUga2V5Ym9hcmQgZXZlbnRzXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICB1cGRhdGVMYWJlbChvYmplY3RJZDogc3RyaW5nLCBuZXdMYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbFNlcnZpY2UudXBkYXRlTGFiZWwob2JqZWN0SWQsIG5ld0xhYmVsKTtcbiAgfVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mYWNhZGUuaGFuZGxlTW91c2VEb3duKGV2ZW50LCB0aGlzLmNhbnZhc1JlZik7XG4gIH1cblxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZU1vdXNlTW92ZShldmVudCwgdGhpcy5jYW52YXNSZWYpO1xuICB9XG5cbiAgb25Nb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mYWNhZGUuaGFuZGxlTW91c2VVcChldmVudCwgdGhpcy5jYW52YXNSZWYpO1xuICB9XG5cbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZU1vdXNlTGVhdmUoKTtcbiAgfVxuXG4gIG9uU3dpbWxhbmVBZGRDbGljayhldmVudDogTW91c2VFdmVudCwgc3dpbWxhbmU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvc2l0aW9uOiBQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQgKyAyMCxcbiAgICAgIHk6IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCxcbiAgICB9O1xuXG4gICAgdGhpcy5zd2ltbGFuZVN0YXRzLm9wZW5Qb3B1cChwb3NpdGlvbiwgc3dpbWxhbmUuaWQpO1xuICB9XG5cbiAgb25Qb3B1cEFjdGlvbihhY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3dpbWxhbmVJZCA9IHRoaXMuc3dpbWxhbmVTdGF0cy5wb3B1cFN0YXR1cygpLnN3aW1sYW5lSWQ7XG4gICAgaWYgKCFzd2ltbGFuZUlkKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKGFjdGlvbklkKSB7XG4gICAgICBjYXNlICdhZGQtYWJvdmUnOlxuICAgICAgICAvLyBIYW5kbGUgYWRkaW5nIHN3aW1sYW5lIGFib3ZlXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkLWJlbG93JzpcbiAgICAgICAgLy8gSGFuZGxlIGFkZGluZyBzd2ltbGFuZSBiZWxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIC8vIEhhbmRsZSBkZWxldGlvblxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRTZWdtZW50UGF0aChzdGFydDogUG9zaXRpb24sIGVuZDogUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBgTSAke3N0YXJ0Lnh9ICR7c3RhcnQueX0gTCAke2VuZC54fSAke2VuZC55fWA7XG4gIH1cblxuICBpc1NlZ21lbnRIb3ZlcmVkKGNvbm5lY3Rpb25JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaG92ZXJlZFNlZ21lbnQ/LmNvbm5lY3Rpb25JZCA9PT0gY29ubmVjdGlvbklkICYmXG4gICAgICB0aGlzLmhvdmVyZWRTZWdtZW50Py5pbmRleCA9PT0gaW5kZXhcbiAgICApO1xuICB9XG5cbiAgb25TZWdtZW50TW91c2VEb3duKFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIGNvbm5lY3Rpb25JZDogc3RyaW5nLFxuICAgIHNlZ21lbnRJbmRleDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZVNlZ21lbnRNb3VzZURvd24oXG4gICAgICBldmVudCxcbiAgICAgIHRoaXMuY2FudmFzUmVmLFxuICAgICAgY29ubmVjdGlvbklkLFxuICAgICAgc2VnbWVudEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIG9uTm9kZVNlbGVjdGVkKGRhdGE6IFByZWNvbmRpdGlvbkRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5maW5hbGl6ZU5vZGVDcmVhdGlvbihkYXRhKTtcbiAgfVxuXG4gIG9uTm9kZVNlbGVjdGlvbkNhbmNlbGxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5wcmVjb25kaXRpb25TZXJ2aWNlLmNsZWFyUGVuZGluZ05vZGUoKTtcbiAgfVxufVxuIl19
715
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtY2FudmFzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduZXIvY29tcG9uZW50cy93Zi1jYW52YXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFLVCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUEyVy9DLE1BQU0sT0FBTyxpQkFBaUI7SUFXVDtJQVZLLFlBQVksQ0FBOEI7SUFDN0MsU0FBUyxDQUEwQjtJQUU5QyxZQUFZLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9DLGVBQWUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvQyxt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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwU1Q7MEZBc0R1QixZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsU0FBUztzQkFBN0IsU0FBUzt1QkFBQyxRQUFRO2dCQVluQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTFDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy93b3JrZmxvdy9jYW52YXMvd2YtY2FudmFzLmNvbXBvbmVudC50c1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdvcmtmbG93RmFjYWRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dmLWZhY2FkZS5zZXJ2aWNlJztcbmltcG9ydCB7IExhYmVsRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9sYWJlbC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IExhYmVsTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sYWJlbC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3dpbWxhbmVMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vc3dpbWxhbmUtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aW1MYW5lUG9wdXBDb21wb25lbnQgfSBmcm9tICcuL3N3aW1sYW5lLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2ltbGFuZVN0YXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N3aW1sYW5lLXN0YXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2tleWJvYXJkLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL25vZGUtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE5vZGVQcmVjb25kaXRpb25TZXJ2aWNlLFxuICBQcmVjb25kaXRpb25EYXRhLFxufSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLXByZWNvbmRpdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2YtY2FudmFzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMYWJlbEVkaXRvckNvbXBvbmVudCxcbiAgICBTd2ltbGFuZUxhYmVsQ29tcG9uZW50LFxuICAgIFN3aW1MYW5lUG9wdXBDb21wb25lbnQsXG4gICAgTm9kZVNlbGVjdG9yQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FudmFzLWNvbnRhaW5lclwiXG4gICAgICAjY29udGFpbmVyXG4gICAgICBbY2xhc3MuY29ubmVjdGluZ109XCJmYWNhZGUuY2FudmFzU3RhdGUoKS5pc0Nvbm5lY3RpbmdcIlxuICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICAjY2FudmFzXG4gICAgICAgIFthdHRyLndpZHRoXT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLndpZHRoXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLmhlaWdodFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gR3JpZCBQYXR0ZXJuIC0tPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8cGF0dGVyblxuICAgICAgICAgICAgaWQ9XCJncmlkXCJcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImZhY2FkZS5jYW52YXNTdGF0ZSgpLmdyaWRTaXplXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJmYWNhZGUuY2FudmFzU3RhdGUoKS5ncmlkU2l6ZVwiXG4gICAgICAgICAgICBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0R3JpZFBhdHRlcm4oKS5wYXRoLmRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUuZ2V0R3JpZFBhdHRlcm4oKS5wYXRoLnN0eWxlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICA8L2RlZnM+XG5cbiAgICAgICAgPCEtLSBCYWNrZ3JvdW5kIGdyaWQgLS0+XG4gICAgICAgIDxyZWN0IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBmaWxsPVwidXJsKCNncmlkKVwiIC8+XG5cbiAgICAgICAgPCEtLSBTd2ltbGFuZXMgLS0+XG4gICAgICAgIEBmb3IgKHN3aW1sYW5lIG9mIGZhY2FkZS5zd2ltbGFuZXMoKTsgdHJhY2sgc3dpbWxhbmUuaWQpIHtcbiAgICAgICAgPGcgW2F0dHIudHJhbnNmb3JtXT1cImZhY2FkZS5nZXROb2RlVHJhbnNmb3Jtcyhzd2ltbGFuZSkubm9kZVwiPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBbYXR0ci53aWR0aF09XCJzd2ltbGFuZS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJzd2ltbGFuZS5zaXplLmhlaWdodFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldFN3aW1sYW5lU3R5bGUoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIDx0ZXh0XG4gICAgICAgICAgICB4PVwiMTAwXCJcbiAgICAgICAgICAgIHk9XCIyMFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldExhYmVsU3R5bGUoJ3N3aW1sYW5lJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHN3aW1sYW5lLmxhYmVsIH19XG4gICAgICAgICAgPC90ZXh0PiAtLT5cbiAgICAgICAgICA8IS0tIDxmb3JlaWduT2JqZWN0XG4gICAgICAgICAgICBbYXR0ci54XT1cImxhYmVsU2VydmljZS5nZXRMYWJlbFBvc2l0aW9uKHN3aW1sYW5lKS54XCJcbiAgICAgICAgICAgIFthdHRyLnldPVwibGFiZWxTZXJ2aWNlLmdldExhYmVsUG9zaXRpb24oc3dpbWxhbmUpLnlcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNTBcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogdmlzaWJsZTtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx3Zi1sYWJlbC1lZGl0b3JcbiAgICAgICAgICAgICAgW2xhYmVsXT1cInN3aW1sYW5lLmxhYmVsIHx8ICdOZXcgU3dpbWxhbmUnXCJcbiAgICAgICAgICAgICAgW3hdPVwiMFwiXG4gICAgICAgICAgICAgIFt5XT1cIjBcIlxuICAgICAgICAgICAgICBbaXNTd2ltbGFuZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKHN3aW1sYW5lLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9mb3JlaWduT2JqZWN0PiAtLT5cblxuICAgICAgICAgIDwhLS0gPGdcbiAgICAgICAgICAgIHdmLXN3aW1sYW5lLWxhYmVsXG4gICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWxcIlxuICAgICAgICAgICAgW2NvdW50XT1cInN3aW1sYW5lU3RhdHMuZ2V0Tm9kZUNvdW50KHN3aW1sYW5lLmlkKVwiXG4gICAgICAgICAgICBbeF09XCIyMFwiXG4gICAgICAgICAgICBbeV09XCJzd2ltbGFuZS5zaXplLmhlaWdodCAtIDIwXCJcbiAgICAgICAgICAgIChhZGRDbGljayk9XCJvblN3aW1sYW5lQWRkQ2xpY2soJGV2ZW50LCBzd2ltbGFuZSlcIlxuICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKHN3aW1sYW5lLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAvPiAtLT5cblxuICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzMCwgMjApXCI+XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB3Zi1zd2ltbGFuZS1sYWJlbFxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWxcIlxuICAgICAgICAgICAgICBbY291bnRdPVwic3dpbWxhbmVTdGF0cy5nZXROb2RlQ291bnQoc3dpbWxhbmUuaWQpXCJcbiAgICAgICAgICAgICAgKGFkZENsaWNrKT1cIm9uU3dpbWxhbmVBZGRDbGljaygkZXZlbnQsIHN3aW1sYW5lKVwiXG4gICAgICAgICAgICAgIChsYWJlbENoYW5nZSk9XCJ1cGRhdGVMYWJlbChzd2ltbGFuZS5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cblxuICAgICAgICAgIDwhLS0gPGZvcmVpZ25PYmplY3RcbiAgICAgICAgICAgIFthdHRyLnhdPVwiNTBcIlxuICAgICAgICAgICAgW2F0dHIueV09XCIyMFwiXG4gICAgICAgICAgICB3aWR0aD1cIjE1MFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiB2aXNpYmxlO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHdmLWxhYmVsLWVkaXRvclxuICAgICAgICAgICAgICBbbGFiZWxdPVwic3dpbWxhbmUubGFiZWwgfHwgJ05ldyBTd2ltbGFuZSdcIlxuICAgICAgICAgICAgICBbeF09XCIwXCJcbiAgICAgICAgICAgICAgW3ldPVwiMFwiXG4gICAgICAgICAgICAgIFtpc1N3aW1sYW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAobGFiZWxDaGFuZ2UpPVwidXBkYXRlTGFiZWwoc3dpbWxhbmUuaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+IC0tPlxuICAgICAgICA8L2c+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIENvbm5lY3Rpb25zIHdpdGggbGFiZWxzIC0tPlxuICAgICAgICBAZm9yIChjb25uZWN0aW9uIG9mIGZhY2FkZS5jb25uZWN0aW9ucygpOyB0cmFjayBjb25uZWN0aW9uLmlkKSB7XG4gICAgICAgIDxnXG4gICAgICAgICAgY2xhc3M9XCJjb25uZWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGNvbm5lY3Rpb24uaWQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gPHBhdGhcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmFjYWRlLmdldENvbm5lY3Rpb25QYXRoKGNvbm5lY3Rpb24ucG9pbnRzKVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldENvbm5lY3Rpb25TdHlsZShcbiAgICAgICAgICAgICAgICBmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY29ubmVjdGlvbi5pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPiAtLT5cbiAgICAgICAgICA8IS0tIENvbXBsZXRlIGNvbm5lY3Rpb24gcGF0aCB3aXRoIGFycm93aGVhZCAtLT5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0Q29ubmVjdGlvblBhdGgoY29ubmVjdGlvbi5wb2ludHMpXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Q29ubmVjdGlvblN0eWxlKFxuICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPCEtLSBSZW5kZXIgc2VnbWVudHMgLS0+XG4gICAgICAgICAgQGZvciAocG9pbnQgb2YgY29ubmVjdGlvbi5wb2ludHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7IEBpZiAoaSA8XG4gICAgICAgICAgY29ubmVjdGlvbi5wb2ludHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIDwhLS0gSW50ZXJhY3RpdmUgc2VnbWVudCAtLT5cbiAgICAgICAgICA8IS0tIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImdldFNlZ21lbnRQYXRoKHBvaW50LCBjb25uZWN0aW9uLnBvaW50c1tpICsgMV0pXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Q29ubmVjdGlvblN0eWxlKFxuICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJmYWNhZGUuZ2V0U2VnbWVudEN1cnNvcihjb25uZWN0aW9uLmlkLCBpKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VnbWVudE1vdXNlRG93bigkZXZlbnQsIGNvbm5lY3Rpb24uaWQsIGkpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29ubmVjdGlvbi1zZWdtZW50XCJcbiAgICAgICAgICAvPiAtLT5cbiAgICAgICAgICA8Z1xuICAgICAgICAgICAgY2xhc3M9XCJzZWdtZW50LWdyb3VwXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIlxuICAgICAgICAgICAgICBob3ZlcmVkU2VnbWVudCA9IHsgY29ubmVjdGlvbklkOiBjb25uZWN0aW9uLmlkLCBpbmRleDogaSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZFNlZ21lbnQgPSBudWxsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIEhpdCBkZXRlY3Rpb24gYXJlYSAtLT5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIFthdHRyLmRdPVwiZ2V0U2VnbWVudFBhdGgocG9pbnQsIGNvbm5lY3Rpb24ucG9pbnRzW2kgKyAxXSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNlZ21lbnQtaGl0YXJlYVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiZmFjYWRlLmdldFNlZ21lbnRDdXJzb3IoY29ubmVjdGlvbi5pZCwgaSlcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU2VnbWVudE1vdXNlRG93bigkZXZlbnQsIGNvbm5lY3Rpb24uaWQsIGkpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDwhLS0gVmlzaWJsZSBzZWdtZW50IC0tPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgW2F0dHIuZF09XCJnZXRTZWdtZW50UGF0aChwb2ludCwgY29ubmVjdGlvbi5wb2ludHNbaSArIDFdKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIGZhY2FkZS5yZW5kZXJpbmcuZ2V0Q29ubmVjdGlvblNlZ21lbnRTdHlsZShcbiAgICAgICAgICAgICAgICAgIGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChjb25uZWN0aW9uLmlkKSxcbiAgICAgICAgICAgICAgICAgIGlzU2VnbWVudEhvdmVyZWQoY29ubmVjdGlvbi5pZCwgaSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICB9IH1cbiAgICAgICAgICA8IS0tIENvbm5lY3Rpb24gTGFiZWwgLS0+XG4gICAgICAgICAgQGlmIChjb25uZWN0aW9uLmZyb21JZCAmJiBjb25uZWN0aW9uLnRvSWQpIHtcbiAgICAgICAgICA8Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgW2F0dHIueF09XCJsYWJlbFNlcnZpY2UuZ2V0TGFiZWxQb3NpdGlvbihjb25uZWN0aW9uKS54XCJcbiAgICAgICAgICAgIFthdHRyLnldPVwibGFiZWxTZXJ2aWNlLmdldExhYmVsUG9zaXRpb24oY29ubmVjdGlvbikueVwiXG4gICAgICAgICAgICB3aWR0aD1cIjE1MFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiB2aXNpYmxlOyBwb2ludGVyLWV2ZW50czogYWxsO1wiXG4gICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgtMTAsIC0xMCknXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8d2YtbGFiZWwtZWRpdG9yXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjb25uZWN0aW9uLmxhYmVsIHx8ICdOZXcgQWN0aW9uJ1wiXG4gICAgICAgICAgICAgIFt4XT1cIjBcIlxuICAgICAgICAgICAgICBbeV09XCIwXCJcbiAgICAgICAgICAgICAgW2lzQ29ubmVjdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKGNvbm5lY3Rpb24uaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG4gICAgICAgICAgfVxuICAgICAgICA8L2c+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5vZGVzIC0tPlxuICAgICAgICBAZm9yIChub2RlIG9mIGZhY2FkZS5ub2RlcygpOyB0cmFjayBub2RlLmlkKSB7XG4gICAgICAgIDxnXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImZhY2FkZS5nZXROb2RlVHJhbnNmb3Jtcyhub2RlKS5ub2RlXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUuaWQpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiXG4gICAgICAgICAgICBmYWNhZGUuY2FudmFzU3RhdGUoKS5pc0RyYWdnaW5nICYmXG4gICAgICAgICAgICBmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZClcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgQHN3aXRjaCAobm9kZS50eXBlKSB7IEBjYXNlICgnc3RhcnQnKSB7XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmFjYWRlLmdldFN0YXJ0Tm9kZVBhdGhzKCkuY2lyY2xlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Tm9kZVN0eWxlKGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlLmlkKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAaWYgKCFmYWNhZGUuaGFzT3V0Z29pbmdDb25uZWN0aW9ucyhub2RlLmlkKSkge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImZhY2FkZS5nZXRTdGFydE5vZGVQYXRocygpLmFycm93XCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJmYWNhZGUuZ2V0Tm9kZVRyYW5zZm9ybXMobm9kZSkuYXJyb3dcIlxuICAgICAgICAgICAgZmlsbD1cIiNEMzZDRkZcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSB9QGNhc2UgKCdmb3JtJykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cImZhY2FkZS5yZW5kZXJpbmcuZ2VuZXJhdGVOb2RlUGF0aChub2RlKVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldE5vZGVTdHlsZShmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAY2FzZSAoJ2RlY2lzaW9uJykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUucmVuZGVyaW5nLmdldERlY2lzaW9uUGF0aChcbiAgICAgICAgICAgICAgICBub2RlLnNpemUud2lkdGgsXG4gICAgICAgICAgICAgICAgbm9kZS5zaXplLmhlaWdodFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgIGZhY2FkZS5nZXROb2RlU3R5bGUoZmFjYWRlLnNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUuaWQpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGNhc2UgKCdzdWJmbG93Jykge1xuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBbYXR0ci5kXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUucmVuZGVyaW5nLmdldFN1YmZsb3dQYXRoKG5vZGUuc2l6ZS53aWR0aCwgbm9kZS5zaXplLmhlaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgZmFjYWRlLmdldE5vZGVTdHlsZShmYWNhZGUuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZS5pZCkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAZGVmYXVsdCB7XG4gICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIm5vZGUuc2l6ZS53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwibm9kZS5zaXplLmhlaWdodFwiXG4gICAgICAgICAgICBbYXR0ci5yeF09XCI0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICBmYWNhZGUuZ2V0Tm9kZVN0eWxlKGZhY2FkZS5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlLmlkKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB9IH1cblxuICAgICAgICAgIDwhLS0gTm9kZSBsYWJlbCAtLT5cbiAgICAgICAgICA8IS0tIDx0ZXh0XG4gICAgICAgICAgICBbYXR0ci54XT1cIm5vZGUuc2l6ZS53aWR0aCAvIDJcIlxuICAgICAgICAgICAgW2F0dHIueV09XCJub2RlLnNpemUuaGVpZ2h0IC8gMlwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJmYWNhZGUucmVuZGVyaW5nLmdldExhYmVsU3R5bGUobm9kZS50eXBlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB9fVxuICAgICAgICAgIDwvdGV4dD4gLS0+XG4gICAgICAgICAgPGZvcmVpZ25PYmplY3RcbiAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwibm9kZS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJub2RlLnNpemUuaGVpZ2h0XCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IHZpc2libGU7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8d2YtbGFiZWwtZWRpdG9yXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJub2RlLmxhYmVsXCJcbiAgICAgICAgICAgICAgW3hdPVwibGFiZWxTZXJ2aWNlLmdldFNWR1RleHRQb3NpdGlvbihub2RlKS54XCJcbiAgICAgICAgICAgICAgW3ldPVwibGFiZWxTZXJ2aWNlLmdldFNWR1RleHRQb3NpdGlvbihub2RlKS55XCJcbiAgICAgICAgICAgICAgKGxhYmVsQ2hhbmdlKT1cInVwZGF0ZUxhYmVsKG5vZGUuaWQsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG4gICAgICAgIDwvZz5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29ubmVjdGlvbiBwcmV2aWV3IHdpdGggYXJyb3doZWFkIC0tPlxuICAgICAgICBAaWYgKGZhY2FkZS5jYW52YXNTdGF0ZSgpLmNvbm5lY3Rpb25QcmV2aWV3KSB7XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgW2F0dHIuZF09XCJmYWNhZGUuZ2V0Q29ubmVjdGlvblByZXZpZXdQYXRoKClcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImZhY2FkZS5yZW5kZXJpbmcuZ2V0Q29ubmVjdGlvblByZXZpZXdTdHlsZSgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9zdmc+XG5cbiAgICAgIEBpZiAoc3dpbWxhbmVTdGF0cy5wb3B1cFN0YXR1cygpLmlzT3Blbikge1xuICAgICAgPHdmLXN3aW1sYW5lLXBvcHVwXG4gICAgICAgIFtwb3NpdGlvbl09XCJzd2ltbGFuZVN0YXRzLnBvcHVwU3RhdHVzKCkucG9zaXRpb25cIlxuICAgICAgICAoY2xvc2UpPVwic3dpbWxhbmVTdGF0cy5jbG9zZVBvcHVwKClcIlxuICAgICAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib25Qb3B1cEFjdGlvbigkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8d2Ytbm9kZS1zZWxlY3RvclxuICAgICAgKHNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjYW5jZWwpPVwib25Ob2RlU2VsZWN0aW9uQ2FuY2VsbGVkKClcIlxuICAgIC8+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5jYW52YXMtY29udGFpbmVyIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG5cbiAgICAgICAgJi5jb25uZWN0aW5nIHtcbiAgICAgICAgICBjdXJzb3I6IGNyb3NzaGFpcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29ubmVjdGlvbiB7XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIHN0cm9rZTogI2QzNmNmZjtcbiAgICAgICAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgICAgICAgZmlsbDogbm9uZTtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0ZWQgcGF0aCB7XG4gICAgICAgICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5zZWxlY3RlZCB7XG4gICAgICAgICYgOm5vdCh0ZXh0KSB7XG4gICAgICAgICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5kcmFnZ2luZyB7XG4gICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gICAgICB9XG5cbiAgICAgIC5jb25uZWN0aW9uIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5zZWdtZW50LWdyb3VwIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICAgIH1cblxuICAgICAgLnNlZ21lbnQtaGl0YXJlYSB7XG4gICAgICAgIHN0cm9rZTogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHN0cm9rZS13aWR0aDogMTA7XG4gICAgICAgIGZpbGw6IG5vbmU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV0ZDYW52YXNDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzUmVmITogRWxlbWVudFJlZjxTVkdFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgbGFiZWxTZXJ2aWNlID0gaW5qZWN0KExhYmVsTWFuYWdlbWVudFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgc3dpbWxhbmVTdGF0cyA9IGluamVjdChTd2ltbGFuZVN0YXRzU2VydmljZSk7XG4gIHByaXZhdGUga2V5Ym9hcmRIYW5kbGVyID0gaW5qZWN0KEtleWJvYXJkSGFuZGxlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcHJlY29uZGl0aW9uU2VydmljZSA9IGluamVjdChOb2RlUHJlY29uZGl0aW9uU2VydmljZSk7XG5cbiAgaG92ZXJlZFNlZ21lbnQ6IHsgY29ubmVjdGlvbklkOiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmYWNhZGU6IFdvcmtmbG93RmFjYWRlU2VydmljZSkge31cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIE9ubHkgaGFuZGxlIGtleWJvYXJkIGV2ZW50cyBpZiB0aGUgY2FudmFzIGlzIGZvY3VzZWRcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgdGhpcy5rZXlib2FyZEhhbmRsZXIuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGNsaWNrIGhhbmRsZXIgdG8gZW5zdXJlIHRoZSBjYW52YXMgY2FuIHJlY2VpdmUga2V5Ym9hcmQgZXZlbnRzXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICB1cGRhdGVMYWJlbChvYmplY3RJZDogc3RyaW5nLCBuZXdMYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbFNlcnZpY2UudXBkYXRlTGFiZWwob2JqZWN0SWQsIG5ld0xhYmVsKTtcbiAgfVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mYWNhZGUuaGFuZGxlTW91c2VEb3duKGV2ZW50LCB0aGlzLmNhbnZhc1JlZik7XG4gIH1cblxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZU1vdXNlTW92ZShldmVudCwgdGhpcy5jYW52YXNSZWYpO1xuICB9XG5cbiAgb25Nb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mYWNhZGUuaGFuZGxlTW91c2VVcChldmVudCwgdGhpcy5jYW52YXNSZWYpO1xuICB9XG5cbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZU1vdXNlTGVhdmUoKTtcbiAgfVxuXG4gIG9uU3dpbWxhbmVBZGRDbGljayhldmVudDogTW91c2VFdmVudCwgc3dpbWxhbmU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvc2l0aW9uOiBQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQgKyAyMCxcbiAgICAgIHk6IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCxcbiAgICB9O1xuXG4gICAgdGhpcy5zd2ltbGFuZVN0YXRzLm9wZW5Qb3B1cChwb3NpdGlvbiwgc3dpbWxhbmUuaWQpO1xuICB9XG5cbiAgb25Qb3B1cEFjdGlvbihhY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3dpbWxhbmVJZCA9IHRoaXMuc3dpbWxhbmVTdGF0cy5wb3B1cFN0YXR1cygpLnN3aW1sYW5lSWQ7XG4gICAgaWYgKCFzd2ltbGFuZUlkKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKGFjdGlvbklkKSB7XG4gICAgICBjYXNlICdhZGQtYWJvdmUnOlxuICAgICAgICAvLyBIYW5kbGUgYWRkaW5nIHN3aW1sYW5lIGFib3ZlXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkLWJlbG93JzpcbiAgICAgICAgLy8gSGFuZGxlIGFkZGluZyBzd2ltbGFuZSBiZWxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIC8vIEhhbmRsZSBkZWxldGlvblxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRTZWdtZW50UGF0aChzdGFydDogUG9zaXRpb24sIGVuZDogUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBgTSAke3N0YXJ0Lnh9ICR7c3RhcnQueX0gTCAke2VuZC54fSAke2VuZC55fWA7XG4gIH1cblxuICBpc1NlZ21lbnRIb3ZlcmVkKGNvbm5lY3Rpb25JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaG92ZXJlZFNlZ21lbnQ/LmNvbm5lY3Rpb25JZCA9PT0gY29ubmVjdGlvbklkICYmXG4gICAgICB0aGlzLmhvdmVyZWRTZWdtZW50Py5pbmRleCA9PT0gaW5kZXhcbiAgICApO1xuICB9XG5cbiAgb25TZWdtZW50TW91c2VEb3duKFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIGNvbm5lY3Rpb25JZDogc3RyaW5nLFxuICAgIHNlZ21lbnRJbmRleDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmFjYWRlLmhhbmRsZVNlZ21lbnRNb3VzZURvd24oXG4gICAgICBldmVudCxcbiAgICAgIHRoaXMuY2FudmFzUmVmLFxuICAgICAgY29ubmVjdGlvbklkLFxuICAgICAgc2VnbWVudEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIG9uTm9kZVNlbGVjdGVkKGRhdGE6IFByZWNvbmRpdGlvbkRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5maW5hbGl6ZU5vZGVDcmVhdGlvbihkYXRhKTtcbiAgfVxuXG4gIG9uTm9kZVNlbGVjdGlvbkNhbmNlbGxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhY2FkZS5wcmVjb25kaXRpb25TZXJ2aWNlLmNsZWFyUGVuZGluZ05vZGUoKTtcbiAgfVxufVxuIl19
@@ -59,8 +59,8 @@ export class WFDesignerComponent {
59
59
  // The node selection was canceled, clear the pending node
60
60
  this.facade.preconditionService.clearPendingNode();
61
61
  }
62
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: WFDesignerComponent, isStandalone: true, selector: "wf-designer", inputs: { workflowId: { classPropertyName: "workflowId", publicName: "workflowId", isSignal: true, isRequired: true, transformFunction: null } }, providers: [EnvironmentService], ngImport: i0, template: `
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: WFDesignerComponent, isStandalone: true, selector: "wf-designer", inputs: { workflowId: { classPropertyName: "workflowId", publicName: "workflowId", isSignal: true, isRequired: true, transformFunction: null } }, providers: [EnvironmentService], ngImport: i0, template: `
64
64
  <div class="workflow-designer">
65
65
  <div class="workflow-header">
66
66
  <h1 class="workflow-title">{{ workflowName() }}</h1>
@@ -94,7 +94,7 @@ export class WFDesignerComponent {
94
94
  </div>
95
95
  `, isInline: true, styles: [".workflow-designer{display:flex;flex-direction:column;height:100vh;background:#fff}.workflow-header{padding:1rem;border-bottom:1px solid #e5e7eb}.workflow-title{font-size:1.25rem;font-weight:600;color:#111827}.workflow-description{font-size:.875rem;color:#6b7280;margin-top:.25rem}.workflow-actions{padding:.75rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}.save-button{padding:.5rem 1rem;background-color:#9333ea;color:#fff;font-weight:500;border-radius:.375rem;border:none;cursor:pointer;transition:background-color .2s}.save-button:hover{background-color:#7e22ce}.save-button:disabled{background-color:#d8b4fe;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WFToolbarComponent, selector: "wf-toolbar", inputs: ["selectedTool"], outputs: ["toolSelected"] }, { kind: "component", type: WFCanvasComponent, selector: "wf-canvas" }, { kind: "component", type: NodeSelectorComponent, selector: "wf-node-selector", outputs: ["select"] }] });
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFDesignerComponent, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFDesignerComponent, decorators: [{
98
98
  type: Component,
99
99
  args: [{ selector: 'wf-designer', standalone: true, imports: [
100
100
  CommonModule,
@@ -18,8 +18,8 @@ export class WFToolbarComponent {
18
18
  // If same tool is selected, deselect it
19
19
  this.toolSelected.emit(this.selectedTool === toolId ? null : toolId);
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WFToolbarComponent, isStandalone: true, selector: "wf-toolbar", inputs: { selectedTool: "selectedTool" }, outputs: { toolSelected: "toolSelected" }, ngImport: i0, template: `
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WFToolbarComponent, isStandalone: true, selector: "wf-toolbar", inputs: { selectedTool: "selectedTool" }, outputs: { toolSelected: "toolSelected" }, ngImport: i0, template: `
23
23
  <div class="toolbar">
24
24
  @for (item of toolbarItems; track item.id) {
25
25
  <button
@@ -31,9 +31,9 @@ export class WFToolbarComponent {
31
31
  </button>
32
32
  }
33
33
  </div>
34
- `, isInline: true, styles: [".toolbar{display:flex;padding:.5rem;gap:.5rem;background:#fff;border:1px solid #aa00ff;border-radius:7px;box-shadow:4px 4px 4px 3px #00000040}.tool-button{display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;border-radius:.375rem;background:#fff;cursor:pointer;transition:all .2s}.tool-button:hover{background:#f9fafb}.tool-button.active{background:#f3e8ff;border-color:#d8b4fe}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
34
+ `, isInline: true, styles: [".toolbar{display:flex;padding:.5rem;gap:.5rem;background:#fff;border:1px solid #aa00ff;border-radius:7px;box-shadow:4px 4px 4px 3px #00000040}.tool-button{display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;border-radius:.375rem;background:#fff;cursor:pointer;transition:all .2s;&:hover{background:#f9fafb}&.active{background:#f3e8ff;border-color:#d8b4fe}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFToolbarComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WFToolbarComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'wf-toolbar', standalone: true, imports: [CommonModule], template: `
39
39
  <div class="toolbar">
@@ -47,10 +47,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
47
47
  </button>
48
48
  }
49
49
  </div>
50
- `, styles: [".toolbar{display:flex;padding:.5rem;gap:.5rem;background:#fff;border:1px solid #aa00ff;border-radius:7px;box-shadow:4px 4px 4px 3px #00000040}.tool-button{display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;border-radius:.375rem;background:#fff;cursor:pointer;transition:all .2s}.tool-button:hover{background:#f9fafb}.tool-button.active{background:#f3e8ff;border-color:#d8b4fe}\n"] }]
50
+ `, styles: [".toolbar{display:flex;padding:.5rem;gap:.5rem;background:#fff;border:1px solid #aa00ff;border-radius:7px;box-shadow:4px 4px 4px 3px #00000040}.tool-button{display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;border-radius:.375rem;background:#fff;cursor:pointer;transition:all .2s;&:hover{background:#f9fafb}&.active{background:#f3e8ff;border-color:#d8b4fe}}\n"] }]
51
51
  }], propDecorators: { selectedTool: [{
52
52
  type: Input
53
53
  }], toolSelected: [{
54
54
  type: Output
55
55
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL2NvbXBvbmVudHMvd2YtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQStEL0MsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixZQUFZLEdBQThCLElBQUksQ0FBQztJQUM5QyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFFdkUsWUFBWSxHQUFrQjtRQUM1QixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7UUFDakUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1FBQ3hELEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtRQUMzRCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDckQscUVBQXFFO1FBQ3JFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtRQUM5RCxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7S0FDL0QsQ0FBQztJQUVGLFlBQVksQ0FBQyxNQUEwQjtRQUNyQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQzt3R0FqQlUsa0JBQWtCOzRGQUFsQixrQkFBa0IsMkpBbERuQjs7Ozs7Ozs7Ozs7O0dBWVQsZ2VBYlMsWUFBWTs7NEZBbURYLGtCQUFrQjtrQkF0RDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7R0FZVDs4QkF1Q1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy93b3JrZmxvdy90b29sYmFyL3dmLXRvb2xiYXIuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdvcmtmbG93T2JqZWN0VHlwZSB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5cbmludGVyZmFjZSBUb29sYmFySXRlbSB7XG4gIGlkOiBXb3JrZmxvd09iamVjdFR5cGU7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2YtdG9vbGJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIHRvb2xiYXJJdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInRvb2wtYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZFRvb2wgPT09IGl0ZW0uaWRcIlxuICAgICAgICAoY2xpY2spPVwib25Ub29sU2VsZWN0KGl0ZW0uaWQpXCJcbiAgICAgID5cbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIFthbHRdPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwidG9vbC1pY29uXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAudG9vbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWEwMGZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDRweCA0cHggNHB4IDNweCAjMDAwMDAwNDA7XG4gICAgICB9XG5cbiAgICAgIC50b29sLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogI2Y5ZmFmYjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNlOGZmO1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogI2Q4YjRmZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAudG9vbC1pY29uIHtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXRlRvb2xiYXJDb21wb25lbnQge1xuICBASW5wdXQoKSBzZWxlY3RlZFRvb2w6IFdvcmtmbG93T2JqZWN0VHlwZSB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgdG9vbFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxXb3JrZmxvd09iamVjdFR5cGUgfCBudWxsPigpO1xuXG4gIHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSA9IFtcbiAgICB7IGlkOiAnc3dpbWxhbmUnLCBsYWJlbDogJ1N3aW1sYW5lJywgaWNvbjogJ2ljb25zL3N3aW1sYW5lLnN2ZycgfSxcbiAgICB7IGlkOiAnc3RhZ2UnLCBsYWJlbDogJ1N0YWdlJywgaWNvbjogJ2ljb25zL3N0YWdlLnN2ZycgfSxcbiAgICB7IGlkOiAnYWN0aW9uJywgbGFiZWw6ICdBY3Rpb24nLCBpY29uOiAnaWNvbnMvYWN0aW9uLnN2ZycgfSxcbiAgICB7IGlkOiAnZm9ybScsIGxhYmVsOiAnRm9ybScsIGljb246ICdpY29ucy9mb3JtLnN2ZycgfSxcbiAgICAvLyB7IGlkOiAnZGVjaXNpb24nLCBsYWJlbDogJ0RlY2lzaW9uJywgaWNvbjogJ2ljb25zL2RlY2lzaW9uLnN2ZycgfSxcbiAgICB7IGlkOiAnZGVjaXNpb24nLCBsYWJlbDogJ0RlY2lzaW9uJywgaWNvbjogJ2ljb25zL3N0YWdlLnN2ZycgfSxcbiAgICB7IGlkOiAnc3ViZmxvdycsIGxhYmVsOiAnU3ViZmxvdycsIGljb246ICdpY29ucy9zdWJmbG93LnN2ZycgfSxcbiAgXTtcblxuICBvblRvb2xTZWxlY3QodG9vbElkOiBXb3JrZmxvd09iamVjdFR5cGUpOiB2b2lkIHtcbiAgICAvLyBJZiBzYW1lIHRvb2wgaXMgc2VsZWN0ZWQsIGRlc2VsZWN0IGl0XG4gICAgdGhpcy50b29sU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkVG9vbCA9PT0gdG9vbElkID8gbnVsbCA6IHRvb2xJZCk7XG4gIH1cbn1cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL2NvbXBvbmVudHMvd2YtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQStEL0MsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixZQUFZLEdBQThCLElBQUksQ0FBQztJQUM5QyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFFdkUsWUFBWSxHQUFrQjtRQUM1QixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7UUFDakUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1FBQ3hELEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtRQUMzRCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDckQscUVBQXFFO1FBQ3JFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtRQUM5RCxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7S0FDL0QsQ0FBQztJQUVGLFlBQVksQ0FBQyxNQUEwQjtRQUNyQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQzt3R0FqQlUsa0JBQWtCOzRGQUFsQixrQkFBa0IsMkpBbERuQjs7Ozs7Ozs7Ozs7O0dBWVQsMmNBYlMsWUFBWTs7NEZBbURYLGtCQUFrQjtrQkF0RDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7R0FZVDs4QkF1Q1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy93b3JrZmxvdy90b29sYmFyL3dmLXRvb2xiYXIuY29tcG9uZW50LnRzXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdvcmtmbG93T2JqZWN0VHlwZSB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5cbmludGVyZmFjZSBUb29sYmFySXRlbSB7XG4gIGlkOiBXb3JrZmxvd09iamVjdFR5cGU7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2YtdG9vbGJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIHRvb2xiYXJJdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInRvb2wtYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZFRvb2wgPT09IGl0ZW0uaWRcIlxuICAgICAgICAoY2xpY2spPVwib25Ub29sU2VsZWN0KGl0ZW0uaWQpXCJcbiAgICAgID5cbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIFthbHRdPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwidG9vbC1pY29uXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAudG9vbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWEwMGZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDRweCA0cHggNHB4IDNweCAjMDAwMDAwNDA7XG4gICAgICB9XG5cbiAgICAgIC50b29sLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogI2Y5ZmFmYjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNlOGZmO1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogI2Q4YjRmZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAudG9vbC1pY29uIHtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXRlRvb2xiYXJDb21wb25lbnQge1xuICBASW5wdXQoKSBzZWxlY3RlZFRvb2w6IFdvcmtmbG93T2JqZWN0VHlwZSB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgdG9vbFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxXb3JrZmxvd09iamVjdFR5cGUgfCBudWxsPigpO1xuXG4gIHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSA9IFtcbiAgICB7IGlkOiAnc3dpbWxhbmUnLCBsYWJlbDogJ1N3aW1sYW5lJywgaWNvbjogJ2ljb25zL3N3aW1sYW5lLnN2ZycgfSxcbiAgICB7IGlkOiAnc3RhZ2UnLCBsYWJlbDogJ1N0YWdlJywgaWNvbjogJ2ljb25zL3N0YWdlLnN2ZycgfSxcbiAgICB7IGlkOiAnYWN0aW9uJywgbGFiZWw6ICdBY3Rpb24nLCBpY29uOiAnaWNvbnMvYWN0aW9uLnN2ZycgfSxcbiAgICB7IGlkOiAnZm9ybScsIGxhYmVsOiAnRm9ybScsIGljb246ICdpY29ucy9mb3JtLnN2ZycgfSxcbiAgICAvLyB7IGlkOiAnZGVjaXNpb24nLCBsYWJlbDogJ0RlY2lzaW9uJywgaWNvbjogJ2ljb25zL2RlY2lzaW9uLnN2ZycgfSxcbiAgICB7IGlkOiAnZGVjaXNpb24nLCBsYWJlbDogJ0RlY2lzaW9uJywgaWNvbjogJ2ljb25zL3N0YWdlLnN2ZycgfSxcbiAgICB7IGlkOiAnc3ViZmxvdycsIGxhYmVsOiAnU3ViZmxvdycsIGljb246ICdpY29ucy9zdWJmbG93LnN2ZycgfSxcbiAgXTtcblxuICBvblRvb2xTZWxlY3QodG9vbElkOiBXb3JrZmxvd09iamVjdFR5cGUpOiB2b2lkIHtcbiAgICAvLyBJZiBzYW1lIHRvb2wgaXMgc2VsZWN0ZWQsIGRlc2VsZWN0IGl0XG4gICAgdGhpcy50b29sU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkVG9vbCA9PT0gdG9vbElkID8gbnVsbCA6IHRvb2xJZCk7XG4gIH1cbn1cbiJdfQ==
@@ -38,10 +38,10 @@ export class CanvasStateService {
38
38
  connectionPreview: null,
39
39
  }));
40
40
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CanvasStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CanvasStateService, providedIn: 'root' });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CanvasStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CanvasStateService, providedIn: 'root' });
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CanvasStateService, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CanvasStateService, decorators: [{
45
45
  type: Injectable,
46
46
  args: [{
47
47
  providedIn: 'root',
@@ -96,10 +96,10 @@ export class ConnectionSegmentInteractionService {
96
96
  // Return appropriate cursor based on segment orientation
97
97
  return point.y === nextPoint.y ? 'ns-resize' : 'ew-resize';
98
98
  }
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionSegmentInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionSegmentInteractionService, providedIn: 'root' });
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionSegmentInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionSegmentInteractionService, providedIn: 'root' });
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionSegmentInteractionService, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionSegmentInteractionService, decorators: [{
103
103
  type: Injectable,
104
104
  args: [{
105
105
  providedIn: 'root',
@@ -254,10 +254,10 @@ export class ConnectionService {
254
254
  findTargetNode(point) {
255
255
  return this.nodeFinder.findNodeAtPoint(point);
256
256
  }
257
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
258
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionService, providedIn: 'root' });
257
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
258
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionService, providedIn: 'root' });
259
259
  }
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConnectionService, decorators: [{
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectionService, decorators: [{
261
261
  type: Injectable,
262
262
  args: [{
263
263
  providedIn: 'root',
@@ -31,10 +31,10 @@ export class KeyboardHandlerService {
31
31
  // Remove the object and its connections
32
32
  this.selection.deleteSelectedObject();
33
33
  }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, providedIn: 'root' });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KeyboardHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KeyboardHandlerService, providedIn: 'root' });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KeyboardHandlerService, decorators: [{
38
38
  type: Injectable,
39
39
  args: [{
40
40
  providedIn: 'root',
@@ -54,10 +54,10 @@ export class LabelManagementService {
54
54
  }
55
55
  return { x: centerX, y: centerY };
56
56
  }
57
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelManagementService, providedIn: 'root' });
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LabelManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LabelManagementService, providedIn: 'root' });
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelManagementService, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LabelManagementService, decorators: [{
61
61
  type: Injectable,
62
62
  args: [{
63
63
  providedIn: 'root',
@@ -18,10 +18,10 @@ export class NodeFinderService {
18
18
  isProtectedNode(node) {
19
19
  return ['start', 'swimlane'].includes(node.type);
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeFinderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeFinderService, providedIn: 'root' });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeFinderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeFinderService, providedIn: 'root' });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeFinderService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeFinderService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root',
@@ -96,10 +96,10 @@ export class NodeInteractionService {
96
96
  isProtectedNode(node) {
97
97
  return ['start', 'swimlane'].includes(node.type);
98
98
  }
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeInteractionService, providedIn: 'root' });
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeInteractionService, providedIn: 'root' });
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeInteractionService, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeInteractionService, decorators: [{
103
103
  type: Injectable,
104
104
  args: [{
105
105
  providedIn: 'root',
@@ -97,10 +97,10 @@ export class NodePreconditionService {
97
97
  },
98
98
  ];
99
99
  }
100
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodePreconditionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
101
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodePreconditionService, providedIn: 'root' });
100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodePreconditionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
101
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodePreconditionService, providedIn: 'root' });
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodePreconditionService, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodePreconditionService, decorators: [{
104
104
  type: Injectable,
105
105
  args: [{
106
106
  providedIn: 'root',
@@ -84,10 +84,10 @@ export class NodeSelectionService {
84
84
  // Clear the selection
85
85
  this.clearSelection();
86
86
  }
87
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
88
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeSelectionService, providedIn: 'root' });
87
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
88
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeSelectionService, providedIn: 'root' });
89
89
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NodeSelectionService, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NodeSelectionService, decorators: [{
91
91
  type: Injectable,
92
92
  args: [{
93
93
  providedIn: 'root',
@@ -155,10 +155,10 @@ export class OrthogonalRouterService {
155
155
  }
156
156
  return false;
157
157
  }
158
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrthogonalRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
159
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrthogonalRouterService, providedIn: 'root' });
158
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrthogonalRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
159
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrthogonalRouterService, providedIn: 'root' });
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrthogonalRouterService, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrthogonalRouterService, decorators: [{
162
162
  type: Injectable,
163
163
  args: [{
164
164
  providedIn: 'root',
@@ -33,10 +33,10 @@ export class PositionUpdateService {
33
33
  })
34
34
  .filter((update) => update !== null);
35
35
  }
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PositionUpdateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
37
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PositionUpdateService, providedIn: 'root' });
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PositionUpdateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
37
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PositionUpdateService, providedIn: 'root' });
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PositionUpdateService, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PositionUpdateService, decorators: [{
40
40
  type: Injectable,
41
41
  args: [{
42
42
  providedIn: 'root',
@@ -224,10 +224,10 @@ export class RenderingService {
224
224
  // Using the exact dimensions from your SVG
225
225
  return `M1.19873 ${height * 0.252887}L${width / 2} 0.57735L${width - 1.19873} ${height * 0.252887}V${height * 0.747113}L${width / 2} ${height - 0.57735}L1.19873 ${height * 0.747113}V${height * 0.252887}`;
226
226
  }
227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
228
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenderingService, providedIn: 'root' });
227
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
228
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RenderingService, providedIn: 'root' });
229
229
  }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenderingService, decorators: [{
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RenderingService, decorators: [{
231
231
  type: Injectable,
232
232
  args: [{
233
233
  providedIn: 'root',
@@ -133,10 +133,10 @@ export class SwimlaneManagementService {
133
133
  // If no swimlane is below, add to the end
134
134
  return sortedSwimlanes.length * sortedSwimlanes[0].size.height;
135
135
  }
136
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
137
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneManagementService, providedIn: 'root' });
136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
137
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneManagementService, providedIn: 'root' });
138
138
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneManagementService, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneManagementService, decorators: [{
140
140
  type: Injectable,
141
141
  args: [{
142
142
  providedIn: 'root',
@@ -32,10 +32,10 @@ export class SwimlaneStatsService {
32
32
  closePopup() {
33
33
  this.popupState.update((state) => ({ ...state, isOpen: false }));
34
34
  }
35
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneStatsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
36
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneStatsService, providedIn: 'root' });
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneStatsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
36
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneStatsService, providedIn: 'root' });
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwimlaneStatsService, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwimlaneStatsService, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{
41
41
  providedIn: 'root',
@@ -18,10 +18,10 @@ export class ViewportService {
18
18
  getObjectTransform(position) {
19
19
  return `translate(${position.x}, ${position.y})`;
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewportService, providedIn: 'root' });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewportService, providedIn: 'root' });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewportService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewportService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root',
@@ -227,10 +227,10 @@ export class WorkflowFacadeService {
227
227
  initializeWorkflow() {
228
228
  this.workflowState.initializeWorkflow();
229
229
  }
230
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowFacadeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
231
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowFacadeService, providedIn: 'root' });
230
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkflowFacadeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
231
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkflowFacadeService, providedIn: 'root' });
232
232
  }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkflowFacadeService, decorators: [{
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkflowFacadeService, decorators: [{
234
234
  type: Injectable,
235
235
  args: [{
236
236
  providedIn: 'root',