@foblex/flow 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/{lib/directives → directives}/f-containers/f-items-container/f-items-container.directive.d.ts +2 -2
  2. package/esm2022/common-behaviours/change-position.mjs +15 -0
  3. package/esm2022/common-behaviours/change-zoom/change-zoom.mjs +25 -0
  4. package/esm2022/common-behaviours/change-zoom/i-can-change-zoom.mjs +2 -0
  5. package/esm2022/common-behaviours/change-zoom/index.mjs +3 -0
  6. package/esm2022/common-behaviours/constructor.mjs +2 -0
  7. package/esm2022/common-behaviours/fit-to-parent/fit-to-parent.mjs +27 -0
  8. package/esm2022/common-behaviours/fit-to-parent/i-can-fit-to-parent.mjs +2 -0
  9. package/esm2022/common-behaviours/fit-to-parent/index.mjs +3 -0
  10. package/esm2022/common-behaviours/index.mjs +6 -0
  11. package/esm2022/common-behaviours/one-to-one-centering/i-can-one-to-one-centering.mjs +2 -0
  12. package/esm2022/common-behaviours/one-to-one-centering/index.mjs +3 -0
  13. package/esm2022/common-behaviours/one-to-one-centering/one-to-one-centering.mjs +24 -0
  14. package/esm2022/components/f-connection/f-connection-base.mjs +33 -0
  15. package/esm2022/components/f-connection/f-connection-identifiers.mjs +21 -0
  16. package/esm2022/components/f-connection/f-connection-text/f-connection-text-path.directive.mjs +38 -0
  17. package/esm2022/components/f-connection/f-connection-text/f-connection-text.component.mjs +55 -0
  18. package/esm2022/components/f-connection/f-connection-text/index.mjs +3 -0
  19. package/esm2022/components/f-connection/f-connection.component.mjs +91 -0
  20. package/esm2022/components/f-connection/f-connection.module.mjs +47 -0
  21. package/esm2022/components/f-connection/f-drag-handle/f-connection-drag-handle.component.mjs +30 -0
  22. package/esm2022/components/f-connection/f-drag-handle/index.mjs +2 -0
  23. package/esm2022/components/f-connection/f-gradient/f-connection-gradient.component.mjs +59 -0
  24. package/esm2022/components/f-connection/f-gradient/index.mjs +2 -0
  25. package/esm2022/components/f-connection/f-path/f-connection-path.component.mjs +58 -0
  26. package/esm2022/components/f-connection/f-path/index.mjs +2 -0
  27. package/esm2022/components/f-connection/f-selection/f-connection-selection.component.mjs +34 -0
  28. package/esm2022/components/f-connection/f-selection/index.mjs +2 -0
  29. package/esm2022/components/f-connection/f-temp-connection/f-temp-connection.component.mjs +61 -0
  30. package/esm2022/components/f-connection/f-temp-connection/index.mjs +3 -0
  31. package/esm2022/components/f-connection/f-temp-connection/temp-connection-input-output-model.mjs +7 -0
  32. package/esm2022/components/f-connection/get-connection-intersect.mjs +10 -0
  33. package/esm2022/components/f-connection/i-input-output-model.mjs +2 -0
  34. package/esm2022/components/f-connection/index.mjs +13 -0
  35. package/esm2022/components/f-connection/public-api.mjs +4 -0
  36. package/esm2022/components/f-connectors/f-connector-base.mjs +14 -0
  37. package/esm2022/components/f-connectors/f-node-input/f-node-input-base.mjs +19 -0
  38. package/esm2022/components/f-connectors/f-node-input/f-node-input.directive.mjs +58 -0
  39. package/esm2022/components/f-connectors/f-node-input/index.mjs +4 -0
  40. package/esm2022/components/f-connectors/f-node-input/is-node-input.mjs +4 -0
  41. package/esm2022/components/f-connectors/f-node-input/public-api.mjs +2 -0
  42. package/esm2022/components/f-connectors/f-node-outlet/f-node-outlet-base.mjs +22 -0
  43. package/esm2022/components/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +56 -0
  44. package/esm2022/components/f-connectors/f-node-outlet/index.mjs +4 -0
  45. package/esm2022/components/f-connectors/f-node-outlet/is-node-outlet.mjs +4 -0
  46. package/esm2022/components/f-connectors/f-node-outlet/public-api.mjs +2 -0
  47. package/esm2022/components/f-connectors/f-node-output/f-node-output-base.mjs +19 -0
  48. package/esm2022/components/f-connectors/f-node-output/f-node-output.directive.mjs +54 -0
  49. package/esm2022/components/f-connectors/f-node-output/index.mjs +4 -0
  50. package/esm2022/components/f-connectors/f-node-output/is-node-output.mjs +4 -0
  51. package/esm2022/components/f-connectors/f-node-output/public-api.mjs +2 -0
  52. package/esm2022/components/f-connectors/f-out-connector-base.mjs +4 -0
  53. package/esm2022/components/f-connectors/get-element-rect-in-canvas.mjs +8 -0
  54. package/esm2022/components/f-connectors/index.mjs +7 -0
  55. package/esm2022/components/f-connectors/public-api.mjs +4 -0
  56. package/esm2022/components/f-flow/f-flow-base.mjs +49 -0
  57. package/esm2022/components/f-flow/f-flow.component.mjs +67 -0
  58. package/esm2022/components/f-flow/index.mjs +3 -0
  59. package/esm2022/components/f-flow/public-api.mjs +2 -0
  60. package/esm2022/components/f-node/f-drag-handle/f-drag-handle.directive.mjs +54 -0
  61. package/esm2022/components/f-node/f-drag-handle/index.mjs +3 -0
  62. package/esm2022/components/f-node/f-drag-handle/is-drag-handle.mjs +20 -0
  63. package/esm2022/components/f-node/f-drag-handle/public-api.mjs +2 -0
  64. package/esm2022/components/f-node/f-foreign-object/f-foreign-object-base.mjs +40 -0
  65. package/esm2022/components/f-node/f-foreign-object/f-foreign-object.component.mjs +49 -0
  66. package/esm2022/components/f-node/f-foreign-object/index.mjs +3 -0
  67. package/esm2022/components/f-node/f-foreign-object/public-api.mjs +2 -0
  68. package/esm2022/components/f-node/f-node-base.mjs +33 -0
  69. package/esm2022/components/f-node/f-node.component.mjs +62 -0
  70. package/esm2022/components/f-node/index.mjs +6 -0
  71. package/esm2022/components/f-node/is-node.mjs +4 -0
  72. package/esm2022/components/f-node/public-api.mjs +4 -0
  73. package/esm2022/components/index.mjs +6 -0
  74. package/esm2022/components/public-api.mjs +5 -0
  75. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.mjs +58 -0
  76. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.mjs +6 -0
  77. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/index.mjs +3 -0
  78. package/esm2022/directives/f-connect-if-intersect/f-connect-if-intersect.directive.mjs +41 -0
  79. package/esm2022/directives/f-connect-if-intersect/index.mjs +3 -0
  80. package/esm2022/directives/f-connect-if-intersect/public-api.mjs +2 -0
  81. package/esm2022/directives/f-containers/f-connections-container/f-connections-container-base.mjs +32 -0
  82. package/esm2022/directives/f-containers/f-connections-container/f-connections-container.component.mjs +30 -0
  83. package/esm2022/directives/f-containers/f-connections-container/index.mjs +3 -0
  84. package/esm2022/directives/f-containers/f-connections-container/public-api.mjs +2 -0
  85. package/esm2022/directives/f-containers/f-items-container/canvas-change.event.mjs +7 -0
  86. package/esm2022/directives/f-containers/f-items-container/f-items-container-base.mjs +45 -0
  87. package/esm2022/directives/f-containers/f-items-container/f-items-container.directive.mjs +48 -0
  88. package/esm2022/directives/f-containers/f-items-container/index.mjs +4 -0
  89. package/esm2022/directives/f-containers/f-items-container/public-api.mjs +3 -0
  90. package/esm2022/directives/f-containers/f-nodes-container/f-nodes-container-base.mjs +39 -0
  91. package/esm2022/directives/f-containers/f-nodes-container/f-nodes-container.component.mjs +25 -0
  92. package/esm2022/directives/f-containers/f-nodes-container/index.mjs +3 -0
  93. package/esm2022/directives/f-containers/f-nodes-container/public-api.mjs +2 -0
  94. package/esm2022/directives/f-containers/index.mjs +4 -0
  95. package/esm2022/directives/f-containers/public-api.mjs +4 -0
  96. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.mjs +24 -0
  97. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.mjs +6 -0
  98. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/index.mjs +3 -0
  99. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.mjs +20 -0
  100. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-move/index.mjs +2 -0
  101. package/esm2022/directives/f-draggable/canvas/index.mjs +3 -0
  102. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.mjs +7 -0
  103. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.mjs +78 -0
  104. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.mjs +3 -0
  105. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.mjs +7 -0
  106. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.mjs +31 -0
  107. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.mjs +3 -0
  108. package/esm2022/directives/f-draggable/connections/create-connection/create-connection.event.mjs +7 -0
  109. package/esm2022/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.mjs +28 -0
  110. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.mjs +20 -0
  111. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.mjs +6 -0
  112. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.mjs +3 -0
  113. package/esm2022/directives/f-draggable/connections/create-connection/index.mjs +6 -0
  114. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +25 -0
  115. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.mjs +7 -0
  116. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.mjs +20 -0
  117. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.mjs +6 -0
  118. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.mjs +3 -0
  119. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/index.mjs +5 -0
  120. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.mjs +3 -0
  121. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.mjs +14 -0
  122. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.mjs +6 -0
  123. package/esm2022/directives/f-draggable/connections/index.mjs +4 -0
  124. package/esm2022/directives/f-draggable/connections/reassign-connection/index.mjs +5 -0
  125. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-connection.event.mjs +9 -0
  126. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.mjs +3 -0
  127. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.mjs +7 -0
  128. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.mjs +36 -0
  129. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.mjs +2 -0
  130. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.mjs +31 -0
  131. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.mjs +3 -0
  132. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.mjs +7 -0
  133. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.mjs +26 -0
  134. package/esm2022/directives/f-draggable/default-drag-handler/default-drag.handler.mjs +11 -0
  135. package/esm2022/directives/f-draggable/default-drag-handler/index.mjs +2 -0
  136. package/esm2022/directives/f-draggable/e-draggable-type.mjs +12 -0
  137. package/esm2022/directives/f-draggable/external-item/create-node.event.mjs +7 -0
  138. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.mjs +28 -0
  139. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.mjs +6 -0
  140. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/index.mjs +3 -0
  141. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.mjs +30 -0
  142. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-move/index.mjs +2 -0
  143. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.mjs +26 -0
  144. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.mjs +7 -0
  145. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/index.mjs +3 -0
  146. package/esm2022/directives/f-draggable/external-item/index.mjs +5 -0
  147. package/esm2022/directives/f-draggable/f-draggable-base.mjs +103 -0
  148. package/esm2022/directives/f-draggable/f-draggable.directive.mjs +52 -0
  149. package/esm2022/directives/f-draggable/f-draggable.module.mjs +49 -0
  150. package/esm2022/directives/f-draggable/f-draggable.service.mjs +23 -0
  151. package/esm2022/directives/f-draggable/i-drag-handler.mjs +2 -0
  152. package/esm2022/directives/f-draggable/i-draggable-item.mjs +2 -0
  153. package/esm2022/directives/f-draggable/index.mjs +14 -0
  154. package/esm2022/directives/f-draggable/node/index.mjs +4 -0
  155. package/esm2022/directives/f-draggable/node/node-on-pointer-down/index.mjs +3 -0
  156. package/esm2022/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.mjs +9 -0
  157. package/esm2022/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.mjs +88 -0
  158. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.mjs +24 -0
  159. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.mjs +24 -0
  160. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.mjs +22 -0
  161. package/esm2022/directives/f-draggable/node/node-on-pointer-move/index.mjs +5 -0
  162. package/esm2022/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.mjs +23 -0
  163. package/esm2022/directives/f-draggable/node/node-on-pointer-up/index.mjs +3 -0
  164. package/esm2022/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.mjs +7 -0
  165. package/esm2022/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.mjs +28 -0
  166. package/esm2022/directives/f-draggable/public-api.mjs +2 -0
  167. package/esm2022/directives/f-draggable/selection/index.mjs +4 -0
  168. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/index.mjs +3 -0
  169. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.mjs +8 -0
  170. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.mjs +61 -0
  171. package/esm2022/directives/f-draggable/selection/selection-on-pointer-move/index.mjs +2 -0
  172. package/esm2022/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.mjs +54 -0
  173. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/index.mjs +3 -0
  174. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.mjs +8 -0
  175. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.mjs +22 -0
  176. package/esm2022/directives/f-external-item/f-external-item-base.mjs +11 -0
  177. package/esm2022/directives/f-external-item/f-external-item.directive.mjs +44 -0
  178. package/esm2022/directives/f-external-item/f-external-item.service.mjs +25 -0
  179. package/esm2022/directives/f-external-item/index.mjs +5 -0
  180. package/esm2022/directives/f-external-item/is-external-item.mjs +7 -0
  181. package/esm2022/directives/f-external-item/public-api.mjs +2 -0
  182. package/esm2022/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.mjs +40 -0
  183. package/esm2022/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.mjs +40 -0
  184. package/esm2022/directives/f-line-alignment/domain/i-line-alignment-result.mjs +2 -0
  185. package/esm2022/directives/f-line-alignment/domain/i-nearest-coordinate-result.mjs +2 -0
  186. package/esm2022/directives/f-line-alignment/domain/index.mjs +5 -0
  187. package/esm2022/directives/f-line-alignment/f-line-alignment.directive.mjs +105 -0
  188. package/esm2022/directives/f-line-alignment/index.mjs +3 -0
  189. package/esm2022/directives/f-line-alignment/public-api.mjs +2 -0
  190. package/esm2022/directives/f-selection/f-selection.directive.mjs +40 -0
  191. package/esm2022/directives/f-selection/index.mjs +2 -0
  192. package/esm2022/directives/f-selection/public-api.mjs +2 -0
  193. package/esm2022/directives/f-zoom/f-zoom-base.mjs +89 -0
  194. package/esm2022/directives/f-zoom/f-zoom.directive.mjs +57 -0
  195. package/esm2022/directives/f-zoom/index.mjs +3 -0
  196. package/esm2022/directives/f-zoom/public-api.mjs +2 -0
  197. package/esm2022/directives/index.mjs +8 -0
  198. package/esm2022/directives/public-api.mjs +8 -0
  199. package/esm2022/f-flow.module.mjs +79 -0
  200. package/esm2022/i-has-state-changes.mjs +2 -0
  201. package/esm2022/i-selectable.mjs +2 -0
  202. package/esm2022/internal/f-backgroud/f-background-base.mjs +25 -0
  203. package/esm2022/internal/f-backgroud/f-background.directive.mjs +24 -0
  204. package/esm2022/internal/f-backgroud/index.mjs +3 -0
  205. package/esm2022/internal/f-canvas/f-canvas-base.mjs +25 -0
  206. package/esm2022/internal/f-canvas/f-canvas.directive.mjs +19 -0
  207. package/esm2022/internal/f-canvas/index.mjs +3 -0
  208. package/esm2022/internal/index.mjs +3 -0
  209. package/esm2022/public-api.mjs +5 -2
  210. package/fesm2022/foblex-flow.mjs +6 -0
  211. package/fesm2022/foblex-flow.mjs.map +1 -1
  212. package/package.json +9 -6
  213. package/public-api.d.ts +4 -1
  214. package/esm2022/lib/common-behaviours/change-position.mjs +0 -15
  215. package/esm2022/lib/common-behaviours/change-zoom/change-zoom.mjs +0 -25
  216. package/esm2022/lib/common-behaviours/change-zoom/i-can-change-zoom.mjs +0 -2
  217. package/esm2022/lib/common-behaviours/change-zoom/index.mjs +0 -3
  218. package/esm2022/lib/common-behaviours/constructor.mjs +0 -2
  219. package/esm2022/lib/common-behaviours/fit-to-parent/fit-to-parent.mjs +0 -27
  220. package/esm2022/lib/common-behaviours/fit-to-parent/i-can-fit-to-parent.mjs +0 -2
  221. package/esm2022/lib/common-behaviours/fit-to-parent/index.mjs +0 -3
  222. package/esm2022/lib/common-behaviours/index.mjs +0 -6
  223. package/esm2022/lib/common-behaviours/one-to-one-centering/i-can-one-to-one-centering.mjs +0 -2
  224. package/esm2022/lib/common-behaviours/one-to-one-centering/index.mjs +0 -3
  225. package/esm2022/lib/common-behaviours/one-to-one-centering/one-to-one-centering.mjs +0 -24
  226. package/esm2022/lib/components/f-connection/f-connection-base.mjs +0 -33
  227. package/esm2022/lib/components/f-connection/f-connection-identifiers.mjs +0 -21
  228. package/esm2022/lib/components/f-connection/f-connection-text/f-connection-text-path.directive.mjs +0 -38
  229. package/esm2022/lib/components/f-connection/f-connection-text/f-connection-text.component.mjs +0 -55
  230. package/esm2022/lib/components/f-connection/f-connection-text/index.mjs +0 -3
  231. package/esm2022/lib/components/f-connection/f-connection.component.mjs +0 -91
  232. package/esm2022/lib/components/f-connection/f-connection.module.mjs +0 -47
  233. package/esm2022/lib/components/f-connection/f-drag-handle/f-connection-drag-handle.component.mjs +0 -30
  234. package/esm2022/lib/components/f-connection/f-drag-handle/index.mjs +0 -2
  235. package/esm2022/lib/components/f-connection/f-gradient/f-connection-gradient.component.mjs +0 -59
  236. package/esm2022/lib/components/f-connection/f-gradient/index.mjs +0 -2
  237. package/esm2022/lib/components/f-connection/f-path/f-connection-path.component.mjs +0 -58
  238. package/esm2022/lib/components/f-connection/f-path/index.mjs +0 -2
  239. package/esm2022/lib/components/f-connection/f-selection/f-connection-selection.component.mjs +0 -34
  240. package/esm2022/lib/components/f-connection/f-selection/index.mjs +0 -2
  241. package/esm2022/lib/components/f-connection/f-temp-connection/f-temp-connection.component.mjs +0 -61
  242. package/esm2022/lib/components/f-connection/f-temp-connection/index.mjs +0 -3
  243. package/esm2022/lib/components/f-connection/f-temp-connection/temp-connection-input-output-model.mjs +0 -7
  244. package/esm2022/lib/components/f-connection/get-connection-intersect.mjs +0 -10
  245. package/esm2022/lib/components/f-connection/i-input-output-model.mjs +0 -2
  246. package/esm2022/lib/components/f-connection/index.mjs +0 -13
  247. package/esm2022/lib/components/f-connection/public-api.mjs +0 -4
  248. package/esm2022/lib/components/f-connectors/f-connector-base.mjs +0 -14
  249. package/esm2022/lib/components/f-connectors/f-node-input/f-node-input-base.mjs +0 -19
  250. package/esm2022/lib/components/f-connectors/f-node-input/f-node-input.directive.mjs +0 -58
  251. package/esm2022/lib/components/f-connectors/f-node-input/index.mjs +0 -4
  252. package/esm2022/lib/components/f-connectors/f-node-input/is-node-input.mjs +0 -4
  253. package/esm2022/lib/components/f-connectors/f-node-input/public-api.mjs +0 -2
  254. package/esm2022/lib/components/f-connectors/f-node-outlet/f-node-outlet-base.mjs +0 -22
  255. package/esm2022/lib/components/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +0 -56
  256. package/esm2022/lib/components/f-connectors/f-node-outlet/index.mjs +0 -4
  257. package/esm2022/lib/components/f-connectors/f-node-outlet/is-node-outlet.mjs +0 -4
  258. package/esm2022/lib/components/f-connectors/f-node-outlet/public-api.mjs +0 -2
  259. package/esm2022/lib/components/f-connectors/f-node-output/f-node-output-base.mjs +0 -19
  260. package/esm2022/lib/components/f-connectors/f-node-output/f-node-output.directive.mjs +0 -54
  261. package/esm2022/lib/components/f-connectors/f-node-output/index.mjs +0 -4
  262. package/esm2022/lib/components/f-connectors/f-node-output/is-node-output.mjs +0 -4
  263. package/esm2022/lib/components/f-connectors/f-node-output/public-api.mjs +0 -2
  264. package/esm2022/lib/components/f-connectors/f-out-connector-base.mjs +0 -4
  265. package/esm2022/lib/components/f-connectors/get-element-rect-in-canvas.mjs +0 -8
  266. package/esm2022/lib/components/f-connectors/index.mjs +0 -7
  267. package/esm2022/lib/components/f-connectors/public-api.mjs +0 -4
  268. package/esm2022/lib/components/f-flow/f-flow-base.mjs +0 -49
  269. package/esm2022/lib/components/f-flow/f-flow.component.mjs +0 -67
  270. package/esm2022/lib/components/f-flow/index.mjs +0 -3
  271. package/esm2022/lib/components/f-flow/public-api.mjs +0 -2
  272. package/esm2022/lib/components/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -54
  273. package/esm2022/lib/components/f-node/f-drag-handle/index.mjs +0 -3
  274. package/esm2022/lib/components/f-node/f-drag-handle/is-drag-handle.mjs +0 -20
  275. package/esm2022/lib/components/f-node/f-drag-handle/public-api.mjs +0 -2
  276. package/esm2022/lib/components/f-node/f-foreign-object/f-foreign-object-base.mjs +0 -40
  277. package/esm2022/lib/components/f-node/f-foreign-object/f-foreign-object.component.mjs +0 -49
  278. package/esm2022/lib/components/f-node/f-foreign-object/index.mjs +0 -3
  279. package/esm2022/lib/components/f-node/f-foreign-object/public-api.mjs +0 -2
  280. package/esm2022/lib/components/f-node/f-node-base.mjs +0 -33
  281. package/esm2022/lib/components/f-node/f-node.component.mjs +0 -62
  282. package/esm2022/lib/components/f-node/index.mjs +0 -6
  283. package/esm2022/lib/components/f-node/is-node.mjs +0 -4
  284. package/esm2022/lib/components/f-node/public-api.mjs +0 -4
  285. package/esm2022/lib/components/index.mjs +0 -6
  286. package/esm2022/lib/components/public-api.mjs +0 -5
  287. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.mjs +0 -58
  288. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.mjs +0 -6
  289. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/index.mjs +0 -3
  290. package/esm2022/lib/directives/f-connect-if-intersect/f-connect-if-intersect.directive.mjs +0 -41
  291. package/esm2022/lib/directives/f-connect-if-intersect/index.mjs +0 -3
  292. package/esm2022/lib/directives/f-connect-if-intersect/public-api.mjs +0 -2
  293. package/esm2022/lib/directives/f-containers/f-connections-container/f-connections-container-base.mjs +0 -32
  294. package/esm2022/lib/directives/f-containers/f-connections-container/f-connections-container.component.mjs +0 -30
  295. package/esm2022/lib/directives/f-containers/f-connections-container/index.mjs +0 -3
  296. package/esm2022/lib/directives/f-containers/f-connections-container/public-api.mjs +0 -2
  297. package/esm2022/lib/directives/f-containers/f-items-container/canvas-change.event.mjs +0 -7
  298. package/esm2022/lib/directives/f-containers/f-items-container/f-items-container-base.mjs +0 -45
  299. package/esm2022/lib/directives/f-containers/f-items-container/f-items-container.directive.mjs +0 -42
  300. package/esm2022/lib/directives/f-containers/f-items-container/index.mjs +0 -4
  301. package/esm2022/lib/directives/f-containers/f-items-container/public-api.mjs +0 -3
  302. package/esm2022/lib/directives/f-containers/f-nodes-container/f-nodes-container-base.mjs +0 -39
  303. package/esm2022/lib/directives/f-containers/f-nodes-container/f-nodes-container.component.mjs +0 -25
  304. package/esm2022/lib/directives/f-containers/f-nodes-container/index.mjs +0 -3
  305. package/esm2022/lib/directives/f-containers/f-nodes-container/public-api.mjs +0 -2
  306. package/esm2022/lib/directives/f-containers/index.mjs +0 -4
  307. package/esm2022/lib/directives/f-containers/public-api.mjs +0 -4
  308. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.mjs +0 -24
  309. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.mjs +0 -6
  310. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/index.mjs +0 -3
  311. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.mjs +0 -20
  312. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-move/index.mjs +0 -2
  313. package/esm2022/lib/directives/f-draggable/canvas/index.mjs +0 -3
  314. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.mjs +0 -7
  315. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.mjs +0 -78
  316. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.mjs +0 -3
  317. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.mjs +0 -7
  318. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.mjs +0 -31
  319. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.mjs +0 -3
  320. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection.event.mjs +0 -7
  321. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.mjs +0 -28
  322. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.mjs +0 -20
  323. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.mjs +0 -6
  324. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.mjs +0 -3
  325. package/esm2022/lib/directives/f-draggable/connections/create-connection/index.mjs +0 -6
  326. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +0 -25
  327. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.mjs +0 -7
  328. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.mjs +0 -20
  329. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.mjs +0 -6
  330. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.mjs +0 -3
  331. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/index.mjs +0 -5
  332. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.mjs +0 -3
  333. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.mjs +0 -14
  334. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.mjs +0 -6
  335. package/esm2022/lib/directives/f-draggable/connections/index.mjs +0 -4
  336. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/index.mjs +0 -5
  337. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-connection.event.mjs +0 -9
  338. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.mjs +0 -3
  339. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.mjs +0 -7
  340. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.mjs +0 -36
  341. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.mjs +0 -2
  342. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.mjs +0 -31
  343. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.mjs +0 -3
  344. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.mjs +0 -7
  345. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.mjs +0 -26
  346. package/esm2022/lib/directives/f-draggable/default-drag-handler/default-drag.handler.mjs +0 -11
  347. package/esm2022/lib/directives/f-draggable/default-drag-handler/index.mjs +0 -2
  348. package/esm2022/lib/directives/f-draggable/e-draggable-type.mjs +0 -12
  349. package/esm2022/lib/directives/f-draggable/external-item/create-node.event.mjs +0 -7
  350. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.mjs +0 -28
  351. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.mjs +0 -6
  352. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/index.mjs +0 -3
  353. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.mjs +0 -30
  354. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-move/index.mjs +0 -2
  355. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.mjs +0 -26
  356. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.mjs +0 -7
  357. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/index.mjs +0 -3
  358. package/esm2022/lib/directives/f-draggable/external-item/index.mjs +0 -5
  359. package/esm2022/lib/directives/f-draggable/f-draggable-base.mjs +0 -103
  360. package/esm2022/lib/directives/f-draggable/f-draggable.directive.mjs +0 -52
  361. package/esm2022/lib/directives/f-draggable/f-draggable.module.mjs +0 -49
  362. package/esm2022/lib/directives/f-draggable/f-draggable.service.mjs +0 -23
  363. package/esm2022/lib/directives/f-draggable/i-drag-handler.mjs +0 -2
  364. package/esm2022/lib/directives/f-draggable/i-draggable-item.mjs +0 -2
  365. package/esm2022/lib/directives/f-draggable/index.mjs +0 -14
  366. package/esm2022/lib/directives/f-draggable/node/index.mjs +0 -4
  367. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/index.mjs +0 -3
  368. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.mjs +0 -9
  369. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.mjs +0 -88
  370. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.mjs +0 -24
  371. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.mjs +0 -24
  372. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.mjs +0 -22
  373. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/index.mjs +0 -5
  374. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.mjs +0 -23
  375. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/index.mjs +0 -3
  376. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.mjs +0 -7
  377. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.mjs +0 -28
  378. package/esm2022/lib/directives/f-draggable/public-api.mjs +0 -2
  379. package/esm2022/lib/directives/f-draggable/selection/index.mjs +0 -4
  380. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/index.mjs +0 -3
  381. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.mjs +0 -8
  382. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.mjs +0 -61
  383. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-move/index.mjs +0 -2
  384. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.mjs +0 -54
  385. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/index.mjs +0 -3
  386. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.mjs +0 -8
  387. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.mjs +0 -22
  388. package/esm2022/lib/directives/f-external-item/f-external-item-base.mjs +0 -11
  389. package/esm2022/lib/directives/f-external-item/f-external-item.directive.mjs +0 -44
  390. package/esm2022/lib/directives/f-external-item/f-external-item.service.mjs +0 -25
  391. package/esm2022/lib/directives/f-external-item/index.mjs +0 -5
  392. package/esm2022/lib/directives/f-external-item/is-external-item.mjs +0 -7
  393. package/esm2022/lib/directives/f-external-item/public-api.mjs +0 -2
  394. package/esm2022/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.mjs +0 -40
  395. package/esm2022/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.mjs +0 -40
  396. package/esm2022/lib/directives/f-line-alignment/domain/i-line-alignment-result.mjs +0 -2
  397. package/esm2022/lib/directives/f-line-alignment/domain/i-nearest-coordinate-result.mjs +0 -2
  398. package/esm2022/lib/directives/f-line-alignment/domain/index.mjs +0 -5
  399. package/esm2022/lib/directives/f-line-alignment/f-line-alignment.directive.mjs +0 -105
  400. package/esm2022/lib/directives/f-line-alignment/index.mjs +0 -3
  401. package/esm2022/lib/directives/f-line-alignment/public-api.mjs +0 -2
  402. package/esm2022/lib/directives/f-selection/f-selection.directive.mjs +0 -40
  403. package/esm2022/lib/directives/f-selection/index.mjs +0 -2
  404. package/esm2022/lib/directives/f-selection/public-api.mjs +0 -2
  405. package/esm2022/lib/directives/f-zoom/f-zoom-base.mjs +0 -89
  406. package/esm2022/lib/directives/f-zoom/f-zoom.directive.mjs +0 -57
  407. package/esm2022/lib/directives/f-zoom/index.mjs +0 -3
  408. package/esm2022/lib/directives/f-zoom/public-api.mjs +0 -2
  409. package/esm2022/lib/directives/index.mjs +0 -8
  410. package/esm2022/lib/directives/public-api.mjs +0 -8
  411. package/esm2022/lib/f-flow.module.mjs +0 -79
  412. package/esm2022/lib/i-has-state-changes.mjs +0 -2
  413. package/esm2022/lib/i-selectable.mjs +0 -2
  414. package/esm2022/lib/internal/f-backgroud/f-background-base.mjs +0 -25
  415. package/esm2022/lib/internal/f-backgroud/f-background.directive.mjs +0 -24
  416. package/esm2022/lib/internal/f-backgroud/index.mjs +0 -3
  417. package/esm2022/lib/internal/f-canvas/f-canvas-base.mjs +0 -25
  418. package/esm2022/lib/internal/f-canvas/f-canvas.directive.mjs +0 -19
  419. package/esm2022/lib/internal/f-canvas/index.mjs +0 -3
  420. package/esm2022/lib/internal/index.mjs +0 -3
  421. package/esm2022/lib/public-api.mjs +0 -5
  422. package/lib/public-api.d.ts +0 -4
  423. /package/{lib/common-behaviours → common-behaviours}/change-position.d.ts +0 -0
  424. /package/{lib/common-behaviours → common-behaviours}/change-zoom/change-zoom.d.ts +0 -0
  425. /package/{lib/common-behaviours → common-behaviours}/change-zoom/i-can-change-zoom.d.ts +0 -0
  426. /package/{lib/common-behaviours → common-behaviours}/change-zoom/index.d.ts +0 -0
  427. /package/{lib/common-behaviours → common-behaviours}/constructor.d.ts +0 -0
  428. /package/{lib/common-behaviours → common-behaviours}/fit-to-parent/fit-to-parent.d.ts +0 -0
  429. /package/{lib/common-behaviours → common-behaviours}/fit-to-parent/i-can-fit-to-parent.d.ts +0 -0
  430. /package/{lib/common-behaviours → common-behaviours}/fit-to-parent/index.d.ts +0 -0
  431. /package/{lib/common-behaviours → common-behaviours}/index.d.ts +0 -0
  432. /package/{lib/common-behaviours → common-behaviours}/one-to-one-centering/i-can-one-to-one-centering.d.ts +0 -0
  433. /package/{lib/common-behaviours → common-behaviours}/one-to-one-centering/index.d.ts +0 -0
  434. /package/{lib/common-behaviours → common-behaviours}/one-to-one-centering/one-to-one-centering.d.ts +0 -0
  435. /package/{lib/components → components}/f-connection/f-connection-base.d.ts +0 -0
  436. /package/{lib/components → components}/f-connection/f-connection-identifiers.d.ts +0 -0
  437. /package/{lib/components → components}/f-connection/f-connection-text/f-connection-text-path.directive.d.ts +0 -0
  438. /package/{lib/components → components}/f-connection/f-connection-text/f-connection-text.component.d.ts +0 -0
  439. /package/{lib/components → components}/f-connection/f-connection-text/index.d.ts +0 -0
  440. /package/{lib/components → components}/f-connection/f-connection.component.d.ts +0 -0
  441. /package/{lib/components → components}/f-connection/f-connection.module.d.ts +0 -0
  442. /package/{lib/components → components}/f-connection/f-drag-handle/f-connection-drag-handle.component.d.ts +0 -0
  443. /package/{lib/components → components}/f-connection/f-drag-handle/index.d.ts +0 -0
  444. /package/{lib/components → components}/f-connection/f-gradient/f-connection-gradient.component.d.ts +0 -0
  445. /package/{lib/components → components}/f-connection/f-gradient/index.d.ts +0 -0
  446. /package/{lib/components → components}/f-connection/f-path/f-connection-path.component.d.ts +0 -0
  447. /package/{lib/components → components}/f-connection/f-path/index.d.ts +0 -0
  448. /package/{lib/components → components}/f-connection/f-selection/f-connection-selection.component.d.ts +0 -0
  449. /package/{lib/components → components}/f-connection/f-selection/index.d.ts +0 -0
  450. /package/{lib/components → components}/f-connection/f-temp-connection/f-temp-connection.component.d.ts +0 -0
  451. /package/{lib/components → components}/f-connection/f-temp-connection/index.d.ts +0 -0
  452. /package/{lib/components → components}/f-connection/f-temp-connection/temp-connection-input-output-model.d.ts +0 -0
  453. /package/{lib/components → components}/f-connection/get-connection-intersect.d.ts +0 -0
  454. /package/{lib/components → components}/f-connection/i-input-output-model.d.ts +0 -0
  455. /package/{lib/components → components}/f-connection/index.d.ts +0 -0
  456. /package/{lib/components → components}/f-connection/public-api.d.ts +0 -0
  457. /package/{lib/components → components}/f-connectors/f-connector-base.d.ts +0 -0
  458. /package/{lib/components → components}/f-connectors/f-node-input/f-node-input-base.d.ts +0 -0
  459. /package/{lib/components → components}/f-connectors/f-node-input/f-node-input.directive.d.ts +0 -0
  460. /package/{lib/components → components}/f-connectors/f-node-input/index.d.ts +0 -0
  461. /package/{lib/components → components}/f-connectors/f-node-input/is-node-input.d.ts +0 -0
  462. /package/{lib/components → components}/f-connectors/f-node-input/public-api.d.ts +0 -0
  463. /package/{lib/components → components}/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +0 -0
  464. /package/{lib/components → components}/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +0 -0
  465. /package/{lib/components → components}/f-connectors/f-node-outlet/index.d.ts +0 -0
  466. /package/{lib/components → components}/f-connectors/f-node-outlet/is-node-outlet.d.ts +0 -0
  467. /package/{lib/components → components}/f-connectors/f-node-outlet/public-api.d.ts +0 -0
  468. /package/{lib/components → components}/f-connectors/f-node-output/f-node-output-base.d.ts +0 -0
  469. /package/{lib/components → components}/f-connectors/f-node-output/f-node-output.directive.d.ts +0 -0
  470. /package/{lib/components → components}/f-connectors/f-node-output/index.d.ts +0 -0
  471. /package/{lib/components → components}/f-connectors/f-node-output/is-node-output.d.ts +0 -0
  472. /package/{lib/components → components}/f-connectors/f-node-output/public-api.d.ts +0 -0
  473. /package/{lib/components → components}/f-connectors/f-out-connector-base.d.ts +0 -0
  474. /package/{lib/components → components}/f-connectors/get-element-rect-in-canvas.d.ts +0 -0
  475. /package/{lib/components → components}/f-connectors/index.d.ts +0 -0
  476. /package/{lib/components → components}/f-connectors/public-api.d.ts +0 -0
  477. /package/{lib/components → components}/f-flow/f-flow-base.d.ts +0 -0
  478. /package/{lib/components → components}/f-flow/f-flow.component.d.ts +0 -0
  479. /package/{lib/components → components}/f-flow/index.d.ts +0 -0
  480. /package/{lib/components → components}/f-flow/public-api.d.ts +0 -0
  481. /package/{lib/components → components}/f-node/f-drag-handle/f-drag-handle.directive.d.ts +0 -0
  482. /package/{lib/components → components}/f-node/f-drag-handle/index.d.ts +0 -0
  483. /package/{lib/components → components}/f-node/f-drag-handle/is-drag-handle.d.ts +0 -0
  484. /package/{lib/components → components}/f-node/f-drag-handle/public-api.d.ts +0 -0
  485. /package/{lib/components → components}/f-node/f-foreign-object/f-foreign-object-base.d.ts +0 -0
  486. /package/{lib/components → components}/f-node/f-foreign-object/f-foreign-object.component.d.ts +0 -0
  487. /package/{lib/components → components}/f-node/f-foreign-object/index.d.ts +0 -0
  488. /package/{lib/components → components}/f-node/f-foreign-object/public-api.d.ts +0 -0
  489. /package/{lib/components → components}/f-node/f-node-base.d.ts +0 -0
  490. /package/{lib/components → components}/f-node/f-node.component.d.ts +0 -0
  491. /package/{lib/components → components}/f-node/index.d.ts +0 -0
  492. /package/{lib/components → components}/f-node/is-node.d.ts +0 -0
  493. /package/{lib/components → components}/f-node/public-api.d.ts +0 -0
  494. /package/{lib/components → components}/index.d.ts +0 -0
  495. /package/{lib/components → components}/public-api.d.ts +0 -0
  496. /package/{lib/directives → directives}/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.d.ts +0 -0
  497. /package/{lib/directives → directives}/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.d.ts +0 -0
  498. /package/{lib/directives → directives}/f-connect-if-intersect/connect-if-intersect/index.d.ts +0 -0
  499. /package/{lib/directives → directives}/f-connect-if-intersect/f-connect-if-intersect.directive.d.ts +0 -0
  500. /package/{lib/directives → directives}/f-connect-if-intersect/index.d.ts +0 -0
  501. /package/{lib/directives → directives}/f-connect-if-intersect/public-api.d.ts +0 -0
  502. /package/{lib/directives → directives}/f-containers/f-connections-container/f-connections-container-base.d.ts +0 -0
  503. /package/{lib/directives → directives}/f-containers/f-connections-container/f-connections-container.component.d.ts +0 -0
  504. /package/{lib/directives → directives}/f-containers/f-connections-container/index.d.ts +0 -0
  505. /package/{lib/directives → directives}/f-containers/f-connections-container/public-api.d.ts +0 -0
  506. /package/{lib/directives → directives}/f-containers/f-items-container/canvas-change.event.d.ts +0 -0
  507. /package/{lib/directives → directives}/f-containers/f-items-container/f-items-container-base.d.ts +0 -0
  508. /package/{lib/directives → directives}/f-containers/f-items-container/index.d.ts +0 -0
  509. /package/{lib/directives → directives}/f-containers/f-items-container/public-api.d.ts +0 -0
  510. /package/{lib/directives → directives}/f-containers/f-nodes-container/f-nodes-container-base.d.ts +0 -0
  511. /package/{lib/directives → directives}/f-containers/f-nodes-container/f-nodes-container.component.d.ts +0 -0
  512. /package/{lib/directives → directives}/f-containers/f-nodes-container/index.d.ts +0 -0
  513. /package/{lib/directives → directives}/f-containers/f-nodes-container/public-api.d.ts +0 -0
  514. /package/{lib/directives → directives}/f-containers/index.d.ts +0 -0
  515. /package/{lib/directives → directives}/f-containers/public-api.d.ts +0 -0
  516. /package/{lib/directives → directives}/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.d.ts +0 -0
  517. /package/{lib/directives → directives}/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.d.ts +0 -0
  518. /package/{lib/directives → directives}/f-draggable/canvas/canvas-on-pointer-down/index.d.ts +0 -0
  519. /package/{lib/directives → directives}/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.d.ts +0 -0
  520. /package/{lib/directives → directives}/f-draggable/canvas/canvas-on-pointer-move/index.d.ts +0 -0
  521. /package/{lib/directives → directives}/f-draggable/canvas/index.d.ts +0 -0
  522. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.d.ts +0 -0
  523. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.d.ts +0 -0
  524. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.d.ts +0 -0
  525. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.d.ts +0 -0
  526. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.d.ts +0 -0
  527. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.d.ts +0 -0
  528. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection.event.d.ts +0 -0
  529. /package/{lib/directives → directives}/f-draggable/connections/create-connection/create-connection.on-pointer-move.d.ts +0 -0
  530. /package/{lib/directives → directives}/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.d.ts +0 -0
  531. /package/{lib/directives → directives}/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.d.ts +0 -0
  532. /package/{lib/directives → directives}/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.d.ts +0 -0
  533. /package/{lib/directives → directives}/f-draggable/connections/create-connection/index.d.ts +0 -0
  534. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.d.ts +0 -0
  535. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.d.ts +0 -0
  536. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.d.ts +0 -0
  537. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.d.ts +0 -0
  538. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.d.ts +0 -0
  539. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/index.d.ts +0 -0
  540. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.d.ts +0 -0
  541. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.d.ts +0 -0
  542. /package/{lib/directives → directives}/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.d.ts +0 -0
  543. /package/{lib/directives → directives}/f-draggable/connections/index.d.ts +0 -0
  544. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/index.d.ts +0 -0
  545. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-connection.event.d.ts +0 -0
  546. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.d.ts +0 -0
  547. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.d.ts +0 -0
  548. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.d.ts +0 -0
  549. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.d.ts +0 -0
  550. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.d.ts +0 -0
  551. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.d.ts +0 -0
  552. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.d.ts +0 -0
  553. /package/{lib/directives → directives}/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.d.ts +0 -0
  554. /package/{lib/directives → directives}/f-draggable/default-drag-handler/default-drag.handler.d.ts +0 -0
  555. /package/{lib/directives → directives}/f-draggable/default-drag-handler/index.d.ts +0 -0
  556. /package/{lib/directives → directives}/f-draggable/e-draggable-type.d.ts +0 -0
  557. /package/{lib/directives → directives}/f-draggable/external-item/create-node.event.d.ts +0 -0
  558. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.d.ts +0 -0
  559. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.d.ts +0 -0
  560. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-down/index.d.ts +0 -0
  561. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.d.ts +0 -0
  562. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-move/index.d.ts +0 -0
  563. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.d.ts +0 -0
  564. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.d.ts +0 -0
  565. /package/{lib/directives → directives}/f-draggable/external-item/external-item-on-pointer-up/index.d.ts +0 -0
  566. /package/{lib/directives → directives}/f-draggable/external-item/index.d.ts +0 -0
  567. /package/{lib/directives → directives}/f-draggable/f-draggable-base.d.ts +0 -0
  568. /package/{lib/directives → directives}/f-draggable/f-draggable.directive.d.ts +0 -0
  569. /package/{lib/directives → directives}/f-draggable/f-draggable.module.d.ts +0 -0
  570. /package/{lib/directives → directives}/f-draggable/f-draggable.service.d.ts +0 -0
  571. /package/{lib/directives → directives}/f-draggable/i-drag-handler.d.ts +0 -0
  572. /package/{lib/directives → directives}/f-draggable/i-draggable-item.d.ts +0 -0
  573. /package/{lib/directives → directives}/f-draggable/index.d.ts +0 -0
  574. /package/{lib/directives → directives}/f-draggable/node/index.d.ts +0 -0
  575. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-down/index.d.ts +0 -0
  576. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.d.ts +0 -0
  577. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-down/node.on-pointer-down.d.ts +0 -0
  578. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.d.ts +0 -0
  579. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.d.ts +0 -0
  580. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.d.ts +0 -0
  581. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-move/index.d.ts +0 -0
  582. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-move/node.on-pointer-move.d.ts +0 -0
  583. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-up/index.d.ts +0 -0
  584. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.d.ts +0 -0
  585. /package/{lib/directives → directives}/f-draggable/node/node-on-pointer-up/node.on-pointer-up.d.ts +0 -0
  586. /package/{lib/directives → directives}/f-draggable/public-api.d.ts +0 -0
  587. /package/{lib/directives → directives}/f-draggable/selection/index.d.ts +0 -0
  588. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-down/index.d.ts +0 -0
  589. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.d.ts +0 -0
  590. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.d.ts +0 -0
  591. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-move/index.d.ts +0 -0
  592. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.d.ts +0 -0
  593. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-up/index.d.ts +0 -0
  594. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.d.ts +0 -0
  595. /package/{lib/directives → directives}/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.d.ts +0 -0
  596. /package/{lib/directives → directives}/f-external-item/f-external-item-base.d.ts +0 -0
  597. /package/{lib/directives → directives}/f-external-item/f-external-item.directive.d.ts +0 -0
  598. /package/{lib/directives → directives}/f-external-item/f-external-item.service.d.ts +0 -0
  599. /package/{lib/directives → directives}/f-external-item/index.d.ts +0 -0
  600. /package/{lib/directives → directives}/f-external-item/is-external-item.d.ts +0 -0
  601. /package/{lib/directives → directives}/f-external-item/public-api.d.ts +0 -0
  602. /package/{lib/directives → directives}/f-line-alignment/domain/find-nearest-coordinate-by-x.d.ts +0 -0
  603. /package/{lib/directives → directives}/f-line-alignment/domain/find-nearest-coordinate-by-y.d.ts +0 -0
  604. /package/{lib/directives → directives}/f-line-alignment/domain/i-line-alignment-result.d.ts +0 -0
  605. /package/{lib/directives → directives}/f-line-alignment/domain/i-nearest-coordinate-result.d.ts +0 -0
  606. /package/{lib/directives → directives}/f-line-alignment/domain/index.d.ts +0 -0
  607. /package/{lib/directives → directives}/f-line-alignment/f-line-alignment.directive.d.ts +0 -0
  608. /package/{lib/directives → directives}/f-line-alignment/index.d.ts +0 -0
  609. /package/{lib/directives → directives}/f-line-alignment/public-api.d.ts +0 -0
  610. /package/{lib/directives → directives}/f-selection/f-selection.directive.d.ts +0 -0
  611. /package/{lib/directives → directives}/f-selection/index.d.ts +0 -0
  612. /package/{lib/directives → directives}/f-selection/public-api.d.ts +0 -0
  613. /package/{lib/directives → directives}/f-zoom/f-zoom-base.d.ts +0 -0
  614. /package/{lib/directives → directives}/f-zoom/f-zoom.directive.d.ts +0 -0
  615. /package/{lib/directives → directives}/f-zoom/index.d.ts +0 -0
  616. /package/{lib/directives → directives}/f-zoom/public-api.d.ts +0 -0
  617. /package/{lib/directives → directives}/index.d.ts +0 -0
  618. /package/{lib/directives → directives}/public-api.d.ts +0 -0
  619. /package/{lib/f-flow.module.d.ts → f-flow.module.d.ts} +0 -0
  620. /package/{lib/i-has-state-changes.d.ts → i-has-state-changes.d.ts} +0 -0
  621. /package/{lib/i-selectable.d.ts → i-selectable.d.ts} +0 -0
  622. /package/{lib/internal → internal}/f-backgroud/f-background-base.d.ts +0 -0
  623. /package/{lib/internal → internal}/f-backgroud/f-background.directive.d.ts +0 -0
  624. /package/{lib/internal → internal}/f-backgroud/index.d.ts +0 -0
  625. /package/{lib/internal → internal}/f-canvas/f-canvas-base.d.ts +0 -0
  626. /package/{lib/internal → internal}/f-canvas/f-canvas.directive.d.ts +0 -0
  627. /package/{lib/internal → internal}/f-canvas/index.d.ts +0 -0
  628. /package/{lib/internal → internal}/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/lib/i-selectable.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection-base.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection-identifiers.ts","../../../projects/f-flow/src/lib/components/f-connection/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/lib/components/f-connection/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/lib/components/f-connection/f-temp-connection/f-temp-connection.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-temp-connection/f-temp-connection.component.html","../../../projects/f-flow/src/lib/components/f-connection/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/lib/internal/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/lib/internal/f-canvas/f-canvas.directive.ts","../../../projects/f-flow/src/lib/internal/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/lib/internal/f-backgroud/f-background.directive.ts","../../../projects/f-flow/src/lib/components/f-connection/f-temp-connection/temp-connection-input-output-model.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection.module.ts","../../../projects/f-flow/src/lib/components/f-connection/get-connection-intersect.ts","../../../projects/f-flow/src/lib/components/f-connectors/get-element-rect-in-canvas.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-input/is-node-input.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-out-connector-base.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/lib/components/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/lib/components/f-node/f-node-base.ts","../../../projects/f-flow/src/lib/components/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/lib/components/f-node/f-drag-handle/is-drag-handle.ts","../../../projects/f-flow/src/lib/components/f-node/f-foreign-object/f-foreign-object-base.ts","../../../projects/f-flow/src/lib/components/f-node/f-foreign-object/f-foreign-object.component.ts","../../../projects/f-flow/src/lib/components/f-node/f-foreign-object/f-foreign-object.component.html","../../../projects/f-flow/src/lib/components/f-node/f-node.component.ts","../../../projects/f-flow/src/lib/components/f-node/f-node.component.html","../../../projects/f-flow/src/lib/components/f-node/is-node.ts","../../../projects/f-flow/src/lib/directives/f-selection/f-selection.directive.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-connections-container/f-connections-container-base.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-connections-container/f-connections-container.component.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-connections-container/f-connections-container.component.html","../../../projects/f-flow/src/lib/common-behaviours/change-zoom/change-zoom.ts","../../../projects/f-flow/src/lib/common-behaviours/fit-to-parent/fit-to-parent.ts","../../../projects/f-flow/src/lib/common-behaviours/one-to-one-centering/one-to-one-centering.ts","../../../projects/f-flow/src/lib/common-behaviours/change-position.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-items-container/canvas-change.event.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-items-container/f-items-container-base.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-items-container/f-items-container.directive.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-nodes-container/f-nodes-container-base.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-nodes-container/f-nodes-container.component.ts","../../../projects/f-flow/src/lib/directives/f-containers/f-nodes-container/f-nodes-container.component.html","../../../projects/f-flow/src/lib/directives/f-draggable/e-draggable-type.ts","../../../projects/f-flow/src/lib/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.ts","../../../projects/f-flow/src/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection.event.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-connection.event.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.ts","../../../projects/f-flow/src/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/default-drag-handler/default-drag.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/lib/directives/f-external-item/is-external-item.ts","../../../projects/f-flow/src/lib/directives/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/lib/directives/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/create-node.event.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.ts","../../../projects/f-flow/src/lib/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.ts","../../../projects/f-flow/src/lib/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.ts","../../../projects/f-flow/src/lib/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.ts","../../../projects/f-flow/src/lib/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.ts","../../../projects/f-flow/src/lib/directives/f-draggable/f-draggable.service.ts","../../../projects/f-flow/src/lib/directives/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.ts","../../../projects/f-flow/src/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.ts","../../../projects/f-flow/src/lib/directives/f-line-alignment/f-line-alignment.directive.ts","../../../projects/f-flow/src/lib/directives/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/lib/directives/f-draggable/f-draggable.module.ts","../../../projects/f-flow/src/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.ts","../../../projects/f-flow/src/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.ts","../../../projects/f-flow/src/lib/directives/f-connect-if-intersect/f-connect-if-intersect.directive.ts","../../../projects/f-flow/src/lib/directives/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/lib/directives/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/lib/components/f-flow/f-flow-base.ts","../../../projects/f-flow/src/lib/components/f-flow/f-flow.component.ts","../../../projects/f-flow/src/lib/components/f-flow/f-flow.component.html","../../../projects/f-flow/src/lib/components/f-connection/f-connection.component.ts","../../../projects/f-flow/src/lib/components/f-connection/f-connection.component.html","../../../projects/f-flow/src/lib/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["export interface ISelectable {\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement, IVector, VectorExtensions } from '@foblex/core';\nimport { FNodeOutputBase } from '../f-connectors';\nimport { IInputOutputModel } from './i-input-output-model';\nimport { F_SELECTED_CLASS, ISelectable } from '../../i-selectable';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { Subject } from 'rxjs';\n\nexport const F_CONNECTION_COMPONENT = new InjectionToken<FConnectionBase>('F_CONNECTION_COMPONENT');\n\n@Directive()\nexport abstract class FConnectionBase<TOutput = FNodeOutputBase> implements IHasHostElement, ISelectable, IHasStateChanges {\n\n public abstract id: any;\n\n public abstract hostElement: SVGGElement;\n\n public abstract outputId: any;\n\n public abstract inputId: any;\n\n public fromTo: IInputOutputModel<TOutput> | undefined;\n\n public abstract fPath: FConnectionPathComponent;\n\n public path: string = '';\n\n public vector: IVector = VectorExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public initialize(): void {\n\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public abstract initializeDrag(): void;\n\n public abstract redraw(): void;\n\n public abstract setVector(vector: IVector): void;\n\n public abstract completeDrag(): void;\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n}\n","export const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return 'connection_text_' + connectionId;\n },\n connectionForSelectionId(connectionId: string): string {\n return 'connection_for_selection_' + connectionId;\n },\n connectionId(connectionId: string): string {\n return 'connection_' + connectionId;\n },\n gradientId(connectionId: string): string {\n return 'connection_gradient_' + connectionId;\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, OnInit\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\nimport { F_SELECTED_CLASS, ISelectable } from '../../../i-selectable';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.stroke]': 'linkToGradient',\n },\n})\nexport class FConnectionPathComponent implements IHasHostElement, ISelectable, OnInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start-selected)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-selected)`);\n }\n\n public deselect(): void {\n if (this.fromTo?.input) {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start-${ this.fromTo?.output?.color })`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-${ this.fromTo?.input?.color })`);\n } else {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end)`);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.getAttribute('marker-start') === `url(#connection-marker-start-selected)`\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, Point } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n})\nexport class FConnectionGradientComponent implements IHasHostElement, AfterContentInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n ) {\n }\n\n public ngAfterContentInit(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.fromTo?.output.color);\n this.setToColor(this.fromTo?.input?.color);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(vector: IVector): void {\n const x: number = vector.point2.x - vector.point1.x;\n const y: number = vector.point2.y - vector.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n public setOffset(offset: number): void {\n this.hostElement.setAttribute('startOffset', offset.toString());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, ViewChild\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, PointExtensions } from '@foblex/core';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n})\nexport class FConnectionTextComponent implements IHasHostElement {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>\n ) {\n }\n\n public redraw(vector: IVector): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(vector);\n\n this.hostElement.setAttribute('dy', isTextReverse ? '15' : '-8');\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(vector, this.fromTo?.output.name || '');\n // this.textPathDirective.setOffset(startOffset);\n\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private static isTextReverse(vector: IVector): boolean {\n return vector.point1.x > vector.point2.x;\n }\n\n private static getTextStartOffset(vector: IVector, name: string): number {\n const symbolWidth: number = 8;\n const vectorLength: number = PointExtensions.hypotenuse(vector.point1, vector.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path [fromTo]=\"fromTo\">\n {{ fromTo?.output?.name }}\n </svg:textPath>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ElementRef, InjectionToken, ViewChild\n} from \"@angular/core\";\nimport { FConnectionBase } from '../f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\nimport { FConnectionPathComponent } from '../f-path/f-connection-path.component';\nimport { FConnectionGradientComponent } from '../f-gradient/f-connection-gradient.component';\nimport { FConnectionTextComponent } from '../f-connection-text/f-connection-text.component';\nimport { IVector } from '@foblex/core';\n\nexport const F_TEMP_CONNECTION_COMPONENT = new InjectionToken<FConnectionBase>('F_TEMP_CONNECTION_COMPONENT');\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fTempConnection]\",\n templateUrl: \"./f-temp-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-temp-connection\"\n },\n providers: [\n { provide: F_TEMP_CONNECTION_COMPONENT, useExisting: FTempConnectionComponent }\n ],\n})\nexport class FTempConnectionComponent\n extends FConnectionBase<FNodeOutputBase | FNodeOutletBase> implements AfterViewInit {\n\n public override id: string = `f-temp-connection-${ uniqueId++ }`;\n\n public override outputId: any;\n\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n super();\n }\n\n public ngAfterViewInit(): void {\n this.hostElement.style.display = \"none\";\n }\n\n public initializeDrag(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fText.redraw(this.vector);\n }\n\n public completeDrag(): void {\n this.hostElement.style.display = \"none\";\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:g>\n <svg:path f-connection-path stroke-dasharray=\"10,10\" [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint } from '@foblex/core';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>,\n ) {\n }\n\n public redraw(point: IPoint): void {\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n}\n\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>\n ) {\n this.initialize();\n }\n\n protected initialize(): void {\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n this.hostElement.setAttribute('version', '1.1');\n this.hostElement.setAttribute('baseProfile', 'full');\n this.hostElement.style.cssText = 'user-select:none; width:100%; height:100%;';\n }\n}\n","import {\n Directive, ElementRef\n} from \"@angular/core\";\nimport { F_CANVAS, FCanvasBase } from './f-canvas-base';\n\n@Directive({\n selector: \"svg[fCanvas]\",\n standalone: true,\n providers: [ { provide: F_CANVAS, useExisting: FCanvasDirective } ],\n})\nexport class FCanvasDirective extends FCanvasBase {\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>\n ) {\n super(elementReference);\n }\n}\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement, ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasBase } from '../f-canvas';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public transform: ITransformModel = TransformModelExtensions.default();\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fCanvas: FCanvasBase\n ) {\n console.log('FBackgroundBase');\n }\n\n public isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement === element || this.hostElement.contains(element) || this.fCanvas.hostElement.contains(element);\n }\n}\n","import {\n Directive, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { F_CANVAS, FCanvasBase } from '../f-canvas';\n\n@Directive({\n selector: \"g[fBackground]\",\n standalone: true,\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundDirective } ],\n})\nexport class FBackgroundDirective extends FBackgroundBase {\n\n constructor(\n elementReference: ElementRef<SVGGElement>,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(elementReference, fCanvas);\n }\n}\n","import { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\nexport class TempConnectionInputOutputModel\n implements IInputOutputModel<FNodeOutputBase | FNodeOutletBase, null> {\n\n public input = null;\n\n public constructor(\n public output: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FConnectionComponent } from './f-connection.component';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection/f-connection-selection.component';\nimport { FConnectionTextPathDirective } from './f-connection-text';\nimport { FConnectionTextComponent } from './f-connection-text';\nimport { FConnectionGradientComponent } from './f-gradient/f-connection-gradient.component';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { FTempConnectionComponent } from './f-temp-connection';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [\n FTempConnectionComponent,\n FConnectionComponent,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionSelectionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n FTempConnectionComponent,\n FConnectionComponent\n ]\n})\nexport class FConnectionModule {\n}\n","import { IRect, IVector, RectExtensions } from '@foblex/core';\n\nexport function getConnectionIntersect(fromRect: IRect, toRect: IRect): IVector {\n\n const fromResult = RectExtensions.intersectionWithVector(fromRect, fromRect.gravityCenter, toRect.gravityCenter);\n const toResult = RectExtensions.intersectionWithVector(toRect, fromRect.gravityCenter, toRect.gravityCenter);\n\n return {\n point1: fromResult ? fromResult[ 1 ] : fromRect.gravityCenter,\n point2: toResult ? toResult[ 0 ] : toRect.gravityCenter,\n }\n}\n","import { IRect, ITransformModel, Point, RectExtensions, SizeExtensions } from '@foblex/core';\n\nexport function getElementRectInCanvas(element: HTMLElement | SVGElement, transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n const rect = RectExtensions.fromElement(element);\n const position = Point.fromPoint(rect).matrixTransform(svgHost).sub(transform.scaledPosition).sub(transform.position).div(transform.scale);\n const size = SizeExtensions.initialize(rect.width / transform.scale, rect.height / transform.scale);\n return RectExtensions.initialize(position.x, position.y, size.width, size.height);\n}\n","import { Subject } from 'rxjs';\nimport { IHasHostElement, IRect, ITransformModel } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { getElementRectInCanvas } from './get-element-rect-in-canvas';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: any;\n\n public abstract color: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public getElementRectInCanvas(transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n return getElementRectInCanvas(this.hostElement, transform, svgHost);\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT_DIRECTIVE = new InjectionToken<FNodeInputBase>('F_NODE_INPUT_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_INPUT_DIRECTIVE, FNodeInputBase } from './f-node-input-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT_DIRECTIVE, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase {\n\n @Input()\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fNodeInputColor')\n public fNodeInputColor: string | undefined;\n\n public get color(): string {\n return this.fNodeInputColor || 'black';\n }\n\n @Input('fNodeInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fNodeInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { FConnectorBase } from './f-connector-base';\n\nexport abstract class FOutConnectorBase extends FConnectorBase {\n\n public abstract name: string;\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTLET_DIRECTIVE = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FOutConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n\n private outputs: FOutConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled;\n }\n\n public setOutputs(outputs: FOutConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_OUTLET_DIRECTIVE, FNodeOutletBase } from './f-node-outlet-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET_DIRECTIVE, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase {\n\n @Input()\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fNodeOutletColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTPUT_DIRECTIVE = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FOutConnectorBase {\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && !this.isConnected;\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT_DIRECTIVE } from './f-node-output-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-connected]': 'isConnected'\n },\n providers: [ { provide: F_NODE_OUTPUT_DIRECTIVE, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase {\n\n @Input()\n public override id: any = `f-node-output-${ uniqueId++ }`;\n\n @Input('fNodeOutputColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { EventEmitter, InjectionToken, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, PointExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { F_SELECTED_CLASS, ISelectable } from '../../i-selectable';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FForeignObjectBase } from './f-foreign-object';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\n\nexport const F_NODE_COMPONENT = new InjectionToken<FNodeBase>('F_NODE_COMPONENT');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract id: any;\n\n public abstract handles: QueryList<FDragHandleDirective>;\n\n public abstract fForeignObject: FForeignObjectBase;\n\n public abstract hostElement: SVGGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n public abstract refresh(): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n this.hostElement.setAttribute('transform', 'translate(' + this.position.x + ',' + this.position.y + ')');\n }\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public completeDrag(): void {\n this.positionChange.emit(this.position)\n }\n}\n","import {\n Directive, ElementRef, Inject, InjectionToken, Input, OnDestroy, Optional, SkipSelf\n} from \"@angular/core\";\nimport { Subject } from 'rxjs';\nimport { BooleanExtensions, IHasHostElement } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\nimport { F_NODE_COMPONENT } from '../f-node-base';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\",\n '[class.f-drag-handle-disabled]': 'disabled'\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement, IHasStateChanges, OnDestroy {\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public _parentNode: {} | undefined;\n\n @Input('fDragHandleDisabled')\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","export function isNodeDragHandle(element: HTMLElement | SVGElement): boolean {\n const dragHandle = getClosestDragHandle(element);\n return !!dragHandle && !isElementOrParentExcluded(element);\n}\n\nfunction isElementOrParentExcluded(element: HTMLElement | SVGElement): boolean {\n const isContains = isElementContainsClass(element);\n const parentElement = (element.parentElement as HTMLElement);\n const dragHandle = getClosestDragHandle(parentElement);\n if (!isContains && !!dragHandle) {\n return isElementOrParentExcluded(parentElement);\n }\n return isContains;\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement): HTMLElement {\n return element.closest('[fDragHandle]') as HTMLElement;\n}\n\nfunction isElementContainsClass(element: HTMLElement | SVGElement): boolean {\n return element.classList.contains('f-drag-handle-disabled');\n}\n","import {\n AfterViewInit, Directive, InjectionToken, OnDestroy\n} from '@angular/core';\nimport { debounceTime, startWith, Subject, Subscription } from 'rxjs';\nimport { FResizeObserver, IHasHostElement, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_FOREIGN_OBJECT_COMPONENT = new InjectionToken<FForeignObjectBase>('F_FOREIGN_OBJECT_COMPONENT');\n\n@Directive()\nexport abstract class FForeignObjectBase implements AfterViewInit, IHasStateChanges, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public _parentNode: {} | undefined;\n\n public abstract hostElement: SVGForeignObjectElement;\n\n public stateChanges: Subject<void> = new Subject<void>();\n\n public abstract transform: ITransformModel;\n\n protected constructor(\n _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return new FResizeObserver(this.hostElement.firstChild as HTMLElement).pipe(startWith(null), debounceTime(10)).subscribe(() => {\n this.redraw();\n this.stateChanges.next();\n });\n }\n\n public redraw(): void {\n const element = this.hostElement.firstChild as HTMLElement;\n if (element && !!element.getBoundingClientRect) {\n const rect = RectExtensions.fromElement(element);\n const scale = this.transform.scale;\n this.hostElement.setAttribute(\"width\", `${ rect.width / scale }`);\n this.hostElement.setAttribute(\"height\", `${ rect.height / scale }`);\n }\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, Input, Optional, SkipSelf\n} from \"@angular/core\";\nimport {\n FForeignObjectBase, F_FOREIGN_OBJECT_COMPONENT\n} from './f-foreign-object-base';\nimport { FFlowComponent } from '../../f-flow';\nimport { ITransformModel } from '@foblex/core';\nimport { F_NODE_COMPONENT } from '../index';\n\n@Component({\n selector: \"foreignObject[fForeignObject]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-foreign-object.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-foreign-object f-component\",\n '[attr.width]': 'defaultWidth',\n '[attr.height]': 'defaultHeight'\n },\n providers: [\n { provide: F_FOREIGN_OBJECT_COMPONENT, useExisting: FForeignObjectComponent }\n ]\n})\nexport class FForeignObjectComponent extends FForeignObjectBase {\n\n @Input('fDefaultWidth')\n public defaultWidth: number = 100;\n\n @Input('fDefaultHeight')\n public defaultHeight: number = 100;\n\n public get hostElement(): SVGForeignObjectElement {\n return this.elementReference.nativeElement;\n }\n\n public get transform(): ITransformModel {\n return this.flow.transform;\n }\n\n constructor(\n private elementReference: ElementRef<SVGForeignObjectElement>,\n private flow: FFlowComponent,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n super(_parentNode);\n this.hostElement.style.cssText = 'overflow:visible;';\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output, QueryList,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, PointExtensions, PointInput } from '@foblex/core';\nimport {\n FNodeBase, F_NODE_COMPONENT\n} from './f-node-base';\nimport { F_DRAG_HANDLE, FDragHandleDirective } from './f-drag-handle';\nimport { F_FOREIGN_OBJECT_COMPONENT, FForeignObjectBase } from './f-foreign-object';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fNode]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-node.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-node f-component\"\n },\n providers: [\n { provide: F_NODE_COMPONENT, useExisting: FNodeComponent }\n ]\n})\nexport class FNodeComponent extends FNodeBase implements OnInit, IHasHostElement, OnDestroy {\n\n @Input()\n public override id: any = `f-node-${ uniqueId++ }`;\n\n @ContentChildren(F_DRAG_HANDLE, { descendants: true })\n public override handles!: QueryList<FDragHandleDirective>;\n\n @ContentChild(F_FOREIGN_OBJECT_COMPONENT, { static: true })\n public override fForeignObject!: FForeignObjectBase;\n\n @Input('fNodePosition')\n public override set position(value: PointInput) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n super.redraw();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IRectElementModel, RectFElement } from '@foblex/core';\n\nexport const F_SELECTION = new InjectionToken<FSelectionDirective>('F_SELECTION');\n\n@Directive({\n selector: \"g[fSelection]\",\n host: {\n 'class': 'f-selection f-component'\n },\n providers: [\n { provide: F_SELECTION, useExisting: FSelectionDirective }\n ],\n})\nexport class FSelectionDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fElement: RectFElement = new RectFElement();\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fElement.hostElement);\n }\n\n public hide(): void {\n this.fElement.hide();\n }\n\n public show(): void {\n this.fElement.show();\n }\n\n public draw(object: Partial<IRectElementModel>): void {\n this.fElement.draw(object);\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken, QueryList } from '@angular/core';\nimport { FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../../../components';\n\nexport const F_CONNECTIONS_CONTAINER: InjectionToken<FConnectionsContainerBase> = new InjectionToken<FConnectionsContainerBase>('F_CONNECTIONS_CONTAINER');\n\n@Directive()\nexport abstract class FConnectionsContainerBase implements IHasHostElement {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fConnections: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n public abstract fTempConnection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public findConnectionWithElement(element: HTMLElement | SVGElement): FConnectionBase<FNodeOutputBase> | undefined {\n return this.fConnections.toArray().find((x) => {\n return x.isContains(element);\n });\n }\n\n public findOutgoingConnections(outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findOutgoingConnections(this.fConnections.toArray(), outputs);\n }\n\n public findIncomingConnections(inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findIncomingConnections(this.fConnections.toArray(), inputs);\n }\n}\n\nexport function findIncomingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return inputs.includes(x.fromTo!.input);\n })!;\n}\n\nexport function findOutgoingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return outputs.includes(x.fromTo!.output);\n })!;\n}\n","import { Component, ContentChildren, ElementRef, QueryList, ViewChild } from \"@angular/core\";\nimport { F_CONNECTIONS_CONTAINER, FConnectionsContainerBase } from './f-connections-container-base';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../components';\nimport { F_TEMP_CONNECTION_COMPONENT } from '../../../components';\n\n@Component({\n selector: \"g[fConnectionsContainer]\",\n templateUrl: './f-connections-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-connections-container'\n },\n providers: [ { provide: F_CONNECTIONS_CONTAINER, useExisting: FConnectionsContainerComponent } ],\n})\nexport class FConnectionsContainerComponent extends FConnectionsContainerBase {\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public override fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n @ViewChild(F_TEMP_CONNECTION_COMPONENT, { static: true })\n public override fTempConnection!: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fConnection]\"></ng-content>\n <svg:g fTempConnection></svg:g>\n</ng-container>\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanChangeZoom } from './i-can-change-zoom';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanChangeZoomConstructor = Constructor<ICanChangeZoom> & AbstractConstructor<ICanChangeZoom>;\n\nexport function mixinChangeZoom<T extends AbstractConstructor<ITransformable>>(base: T): CanChangeZoomConstructor & T;\nexport function mixinChangeZoom<T extends Constructor<ITransformable>>(base: T): CanChangeZoomConstructor & T {\n return class extends base {\n\n public setZoom(scaleValue: number, toPosition: IPoint): void {\n if (scaleValue !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = toPosition.x - (toPosition.x - summaryPosition.x) * scaleValue / this.transform.scale;\n const newY = toPosition.y - (toPosition.y - summaryPosition.y) * scaleValue / this.transform.scale;\n\n this.transform.scale = scaleValue;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n\n public setScalePosition(value: IPoint): void {\n this.transform.scaledPosition = value;\n }\n\n public resetZoom(): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanFitToParent } from './i-can-fit-to-parent';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanFitToParentConstructor = Constructor<ICanFitToParent> & AbstractConstructor<ICanFitToParent>;\n\nexport function mixinFitToParent<T extends AbstractConstructor<ITransformable>>(base: T): CanFitToParentConstructor & T;\nexport function mixinFitToParent<T extends Constructor<ITransformable>>(base: T): CanFitToParentConstructor & T {\n return class extends base {\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanOneToOneCentering } from './i-can-one-to-one-centering';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanOneToOneCenteringConstructor = Constructor<ICanOneToOneCentering> & AbstractConstructor<ICanOneToOneCentering>;\n\nexport function mixinOneToOneCentering<T extends AbstractConstructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T;\nexport function mixinOneToOneCentering<T extends Constructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T {\n return class extends base {\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n this.transform.scale = 1;\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from './constructor';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\nexport interface ICanChangePosition {\n\n setPosition(position: IPoint): void;\n\n getPosition(): IPoint;\n}\n\ntype CanChangePositionConstructor = Constructor<ICanChangePosition> & AbstractConstructor<ICanChangePosition>;\n\nexport function mixinChangePosition<T extends AbstractConstructor<ITransformable>>(base: T): CanChangePositionConstructor & T;\nexport function mixinChangePosition<T extends Constructor<ITransformable>>(base: T): CanChangePositionConstructor & T {\n return class extends base {\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = PointExtensions.copy(position);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IPoint } from '@foblex/core';\n\nexport class CanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport {\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering\n} from '../../../common-behaviours';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\nexport const F_ITEMS_CONTAINER = new InjectionToken<FItemsContainerBase>('F_ITEMS_CONTAINER');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FItemsContainerBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\n\n public abstract canvasChange: EventEmitter<CanvasChangeEvent>;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super(TransformModelExtensions.default());\n this.parseData();\n }\n\n public parseData(): void {\n const transform = TransformModelExtensions.fromString(this.hostElement.getAttribute(\"transform\"));\n this.transform = transform ? transform : this.transform;\n }\n\n public redraw(): void {\n this.hostElement.setAttribute(\"transform\", TransformModelExtensions.toString(this.transform));\n }\n\n public redrawWithAnimation(): void {\n this.hostElement.setAttribute(\"style\", 'transition: transform 0.15s ease-in-out');\n this.redraw();\n setTimeout(() => {\n this.hostElement.removeAttribute(\"style\");\n }, 150)\n }\n\n public completeDrag(): void {\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n this.canvasChange.emit(\n new CanvasChangeEvent(position, this.transform.scale)\n );\n }\n}\n","import {\n Directive, ElementRef, EventEmitter, Input, Output,\n} from \"@angular/core\";\nimport {\n FItemsContainerBase, F_ITEMS_CONTAINER\n} from './f-items-container-base';\nimport { IPoint, PointExtensions } from '@foblex/core';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\n@Directive({\n selector: \"g[fItemsContainer]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-items-container'\n },\n providers: [ { provide: F_ITEMS_CONTAINER, useExisting: FItemsContainerDirective } ],\n})\nexport class FItemsContainerDirective extends FItemsContainerBase {\n\n @Output()\n public override canvasChange: EventEmitter<CanvasChangeEvent> = new EventEmitter<CanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint) {\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number) {\n this.transform.scale = value;\n this.redraw();\n }\n\n constructor(\n elementReference: ElementRef<SVGGElement>\n ) {\n super(elementReference);\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, ElementRef, InjectionToken, NgZone, QueryList } from '@angular/core';\nimport { defer, merge, Observable, startWith, switchMap, take } from 'rxjs';\nimport { FNodeBase } from '../../../components';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_NODES_CONTAINER = new InjectionToken<FNodesContainerBase>('F_NODES_CONTAINER');\n\n@Directive()\nexport abstract class FNodesContainerBase implements IHasHostElement, IHasStateChanges {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fNodes: QueryList<FNodeBase>;\n\n public readonly stateChanges: Observable<void> = defer(() => {\n const items = this.fNodes;\n\n if (items) {\n return items.changes.pipe(\n startWith(items),\n switchMap(() => merge(...items.map(x => merge(x.fForeignObject.stateChanges, x.stateChanges)))),\n );\n }\n\n return this.ngZone.onStable.pipe(\n take(1),\n switchMap(() => this.stateChanges),\n );\n }) as Observable<void>;\n\n protected constructor(\n\n private ngZone: NgZone\n ) {\n }\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find((x) => {\n return x.isContains!(element);\n });\n }\n\n public setNodeToTopLayer(node: FNodeBase): void {\n const elements = Array.from(this.hostElement.children);\n const elementsCount = elements.length;\n const targetIndex: number = elements.findIndex((x) => x === node.hostElement);\n if (targetIndex !== elementsCount - 1) {\n const afterElements = elements.splice(targetIndex + 1);\n afterElements.forEach((x) => {\n this.hostElement.removeChild(x);\n this.hostElement.insertBefore(x, node.hostElement);\n });\n }\n }\n}\n","import {\n Component, ContentChildren, ElementRef, NgZone, QueryList\n} from \"@angular/core\";\nimport { F_NODES_CONTAINER, FNodesContainerBase } from './f-nodes-container-base';\nimport { F_NODE_COMPONENT, FNodeBase } from '../../../components';\n\n@Component({\n selector: \"g[fNodesContainer]\",\n templateUrl: './f-nodes-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-nodes-container'\n },\n providers: [ { provide: F_NODES_CONTAINER, useExisting: FNodesContainerComponent } ],\n})\nexport class FNodesContainerComponent extends FNodesContainerBase {\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChildren(F_NODE_COMPONENT, { descendants: true })\n public override fNodes!: QueryList<FNodeBase>;\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ngZone: NgZone\n ) {\n super(ngZone);\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fNode]\"></ng-content>\n</ng-container>\n","export enum EDraggableType {\n\n NODE = 'node',\n\n REASSIGN_CONNECTION = 'reassign-connection',\n\n TEMP_CONNECTION = 'temp-connection',\n\n CONNECTION = 'connection',\n\n CANVAS = 'canvas',\n\n PALETTE_ITEM = 'palette-item',\n\n DEFAULT = 'default',\n\n SELECTION = 'selection'\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { FItemsContainerBase } from '../../../f-containers/f-items-container';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class CanvasOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CANVAS;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fItemsContainer: FItemsContainerBase\n ) {\n this.onPointerDownPosition = this.fItemsContainer.transform.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n this.fItemsContainer.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fItemsContainer.redraw();\n }\n\n public complete(): void {\n this.fItemsContainer.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { CanvasOnPointerDownRequest } from './canvas-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FItemsContainerBase } from '../../../f-containers';\nimport { FBackgroundBase } from '../../../../internal';\nimport { CanvasOnPointerMove } from '../canvas-on-pointer-move';\n\nexport class CanvasOnPointerDownHandler\n implements IHandler<CanvasOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fBackground: FBackgroundBase,\n private fItemsContainer: FItemsContainerBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CanvasOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (this.fBackground.isBackgroundElement(payload.event.targetElement) && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new CanvasOnPointerMove(this.fItemsContainer)\n ]\n };\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nexport class CanvasOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class CreateConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n ) {\n }\n}\n","import {\n IPoint,\n IRect,\n ITransformModel,\n Point,\n RectExtensions,\n} from '@foblex/core';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\n\nexport class CreateConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.TEMP_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>,\n private mouseDownPoint: IPoint,\n transform: ITransformModel,\n hostElement: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(transform, hostElement);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.mouseDownPoint.x, this.mouseDownPoint.y, 0, 0);\n }\n\n public initialize(): void {\n this.connection.initializeDrag();\n this.move(new Point(0, 0));\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(\n this.onPointerDownFromConnectorRect,\n toPoint\n );\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.completeDrag();\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindFirstCanBeConnectedOutputByOutletRequest } from './find-first-can-be-connected-output-by-outlet.request';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletHandler\n implements IHandler<FindFirstCanBeConnectedOutputByOutletRequest, FNodeOutputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindFirstCanBeConnectedOutputByOutletRequest): FNodeOutputBase | undefined {\n let result: FNodeOutputBase | undefined;\n\n const node = this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(payload.outlet.hostElement));\n if (!node) {\n throw new Error('Node not found');\n }\n\n const outputsOfNode = this.fFlow.outputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n\n if (outputsOfNode.length > 0) {\n result = outputsOfNode[ 0 ];\n }\n\n return result;\n }\n}\n","import { FNodeOutletBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler, IPoint, Point } from '@foblex/core';\nimport { CreateConnectionOnPointerDownRequest } from './create-connection-on-pointer-down.request';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport {\n FFlowBase, FNodeBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet, isNodeOutput, TempConnectionInputOutputModel\n} from '../../../../../components';\nimport { FNodesContainerBase } from '../../../../f-containers/f-nodes-container';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport {\n FConnectionsContainerBase\n} from '../../../../f-containers/f-connections-container/f-connections-container-base';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerDown\n implements IHandler<CreateConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (node) {\n\n if (isNodeOutlet(payload.event.targetElement)) {\n const outlet = this.fFlow.outlets.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n outlet.setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n if (outlet.isConnectionFromOutlet) {\n console.log('outlet', outlet.hostElement);\n const outletCenter = outlet.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n console.log('outletCenter', outletCenter);\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, outlet, outletCenter);\n } else {\n const output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(outlet)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n\n const outputCenter = output.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outputCenter);\n }\n }\n } else if (this.isNodeOutput(payload.event.targetElement, node)) {\n const output = this.fFlow.outputs.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n const outputCenter = output.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outputCenter);\n }\n }\n }\n\n return result;\n }\n\n private createConnectionHandler(\n payload: CreateConnectionOnPointerDownRequest,\n pointerPositionInCanvas: Point,\n output: FNodeOutputBase | FNodeOutletBase,\n outputCenter: IPoint\n ): IDragHandler {\n\n // @ts-ignore\n this.fConnectionsContainer.fTempConnection.fromTo = new TempConnectionInputOutputModel(output);\n\n return {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new CreateConnectionOnPointerMove(\n this.fConnectionsContainer.fTempConnection, outputCenter, payload.transform, this.hostElement\n )\n ]\n };\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n const outlets = this.fFlow.outlets.filter((x) => node.isContains(x.hostElement));\n return isNodeOutput(targetElement) && !outlets.length;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeBase, FNodeInputBase } from '../../../../../components';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer.request';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerHandler\n implements IHandler<FirstNotConnectedInputOfNodeUnderPointerRequest, FNodeInputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FirstNotConnectedInputOfNodeUnderPointerRequest): FNodeInputBase | undefined {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n\n const nodes = elementsFromPoint.map((element) => {\n return this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(element))\n }).filter((x) => !!x) as FNodeBase[];\n\n const inputs = nodes.map((x) => {\n return this.fFlow.inputs.filter((i) => x.isContains(i.hostElement)).find((i) => {\n return !i.isConnected && i.canBeConnected;\n });\n });\n const result = inputs.find((x) => !!x);\n\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeInputBase, isNodeInput } from '../../../../../components';\nimport {\n InputsUnderPointerRequest\n} from './inputs-under-pointer.request';\n\nexport class InputsUnderPointerHandler\n implements IHandler<InputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: InputsUnderPointerRequest): FNodeInputBase[] {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n return elementsFromPoint.filter((x) => isNodeInput(x as HTMLElement)).map((element) => {\n return this.fFlow.inputs.find((x) => x.isContains(element))!\n }).filter((x) => !!x);\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class InputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { ReassignConnectionOnPointerMove } from '../reassign-connection';\nimport { CreateConnectionOnPointerMove } from '../create-connection';\n\nexport class FindInputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionOnPointerMove | ReassignConnectionOnPointerMove\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindInputsUnderPointerRequest } from './find-inputs-under-pointer.request';\nimport { FFlowBase, FNodeInputBase } from '../../../../components';\nimport { InputsUnderPointerHandler, InputsUnderPointerRequest } from './inputs-under-pointer';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerHandler,\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer';\n\nexport class FindInputsUnderPointerHandler\n implements IHandler<FindInputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n const inputsUnderPointer = this.getInputsUnderPointer(payload);\n\n return inputsUnderPointer.filter((x) => {\n const targetNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(x.hostElement));\n const sourceNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(payload.dragHandler.connection.fromTo!.output.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n });\n }\n\n private getInputsUnderPointer(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n let inputs = new InputsUnderPointerHandler(this.fFlow).handle(\n new InputsUnderPointerRequest(payload.event)\n );\n\n const input = new FirstNotConnectedInputOfNodeUnderPointerHandler(this.fFlow).handle(\n new FirstNotConnectedInputOfNodeUnderPointerRequest(payload.event)\n );\n\n if (input) {\n inputs.push(input);\n }\n inputs = inputs.filter((x) => x.canBeConnected);\n return inputs;\n }\n}\n","export class CreateConnectionEvent<T = any> {\n\n constructor(\n public outputId: T,\n public inputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../../components';\nimport { CreateConnectionOnPointerUpRequest } from './create-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport { EventEmitter } from '@angular/core';\nimport { CreateConnectionEvent } from '../create-connection.event';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerUp\n implements IHandler<CreateConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateConnection: EventEmitter<CreateConnectionEvent>\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerUpRequest): void {\n const isCreateConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.TEMP_CONNECTION);\n if (isCreateConnection) {\n const handler = payload.dragHandler.draggableItems[ 0 ] as CreateConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n\n if (inputsUnderPointer.length > 0) {\n let output: FNodeOutputBase | FNodeOutletBase | undefined = handler.connection.fromTo!.output;\n\n const isOutlet = isNodeOutlet(output.hostElement);\n if (isOutlet) {\n\n output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n }\n this.onCreateConnection.emit(new CreateConnectionEvent(output.id, inputsUnderPointer[ 0 ]?.id));\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class CreateConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { FConnectionBase } from '../../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../../components';\nimport { getConnectionIntersect } from '../../../../../components/f-connection/get-connection-intersect';\nimport { IDraggableItem } from '../../../i-draggable-item';\nimport { EDraggableType } from '../../../e-draggable-type';\n\nexport class ReassignConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.REASSIGN_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n private canvasTransform: ITransformModel,\n private canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.connection.vector.point2.x, this.connection.vector.point2.y, 0, 0);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toRect = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toRect);\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const toConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const vector = getConnectionIntersect(fromConnectorRect, toConnectorRect);\n\n this.connection.setVector(vector);\n this.connection.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS } from '../../../../../components/f-connection/f-drag-handle';\nimport { FConnectionBase } from '../../../../../components/f-connection/f-connection-base';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move';\nimport { ReassignConnectionOnPointerDownRequest } from './reassign-connection-on-pointer-down.request';\nimport { FConnectionsContainerBase } from '../../../../f-containers/f-connections-container/f-connections-container-base';\n\nexport class ReassignConnectionOnPointerDown\n implements IHandler<ReassignConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n const position = payload.event.getPosition();\n const allElements = document.elementsFromPoint(position.x, position.y);\n\n const dragHandlesOfConnections = allElements.filter((x) => {\n return !!this.fConnectionsContainer.findConnectionWithElement(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n\n let connectionToReassign: FConnectionBase<FNodeOutputBase> | undefined;\n if (dragHandlesOfConnections.length) {\n connectionToReassign = this.fConnectionsContainer.findConnectionWithElement(dragHandlesOfConnections[ 0 ] as HTMLElement);\n }\n\n if (connectionToReassign && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new ReassignConnectionOnPointerMove(\n connectionToReassign, payload.transform, this.hostElement\n )\n ]\n }\n }\n\n return result;\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class ReassignConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel\n ) {\n }\n}\n","export class ReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public outputId: T,\n public oldInputId: T,\n public newInputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move/reassign-connection.on-pointer-move';\nimport { ReassignConnectionOnPointerUpRequest } from './reassign-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { EventEmitter } from '@angular/core';\nimport { ReassignConnectionEvent } from '../reassign-connection.event';\n\nexport class ReassignConnectionOnPointerUp\n implements IHandler<ReassignConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onReassignConnection: EventEmitter<ReassignConnectionEvent>\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerUpRequest): void {\n console.log('ReassignConnectionOnPointerUp', payload);\n const isReassignConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.REASSIGN_CONNECTION);\n if (isReassignConnection) {\n console.log('ReassignConnectionOnPointerUp - isReassignConnection');\n const handler = payload.dragHandler.draggableItems[ 0 ] as ReassignConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n console.log(inputsUnderPointer);\n\n if (inputsUnderPointer.length > 0) {\n if (handler.connection.fromTo?.input?.id !== inputsUnderPointer[ 0 ]?.id) {\n\n this.onReassignConnection.emit(\n new ReassignConnectionEvent(\n handler.connection.id, handler.connection.fromTo?.output.id,\n handler.connection.fromTo?.input?.id,\n inputsUnderPointer[ 0 ]?.id\n )\n );\n }\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class ReassignConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../i-drag-handler';\n\nexport class DefaultDragHandler\n implements IHandler<void, IDragHandler> {\n\n public handle(): IDragHandler {\n\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: new Point(0, 0),\n draggableItems: []\n };\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase implements IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract data: any;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable()\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-external-item\",\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective extends FExternalItemBase implements OnInit, OnDestroy {\n\n @Input()\n public override id: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override data: any;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { DomElementExtensions, IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FExternalItemBase } from '../../../f-external-item';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class ExternalItemOnPointerMoveHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.PALETTE_ITEM;\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = RectExtensions.fromElement(this.externalItem.hostElement);\n this.placeholder = DomElementExtensions.deepCloneNode(this.externalItem.hostElement);\n document.body.appendChild(this.placeholder);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public getPlaceholderRect(): IRect {\n return RectExtensions.fromElement(this.placeholder!);\n }\n\n public complete(): void {\n document.body.removeChild(this.placeholder!);\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerDownRequest } from './external-item-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport {\n ExternalItemOnPointerMoveHandler\n} from '../external-item-on-pointer-move';\n\nexport class ExternalItemOnPointerDownHandler\n implements IHandler<ExternalItemOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fExternalItemService: FExternalItemService,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n if (isExternalItem(payload.event.targetElement)) {\n const item = this.fExternalItemService.getItem(getExternalItem(payload.event.targetElement));\n if (!item) {\n throw new Error('External item not found');\n }\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new ExternalItemOnPointerMoveHandler(item)\n ]\n };\n }\n return result;\n }\n}\n","import { IRect } from '@foblex/core';\n\nexport class CreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerUpRequest } from './external-item-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ExternalItemOnPointerMoveHandler } from '../external-item-on-pointer-move';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\nimport { EventEmitter } from '@angular/core';\nimport { CreateNodeEvent } from '../create-node.event';\n\nexport class ExternalItemOnPointerUpHandler\n implements IHandler<ExternalItemOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateNode: EventEmitter<CreateNodeEvent>\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.fFlow.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragPaletteItem = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.PALETTE_ITEM);\n\n if (isDragPaletteItem) {\n const dragHandler = payload.dragHandler.draggableItems[ 0 ] as ExternalItemOnPointerMoveHandler\n dragHandler.move(difference);\n\n const isPointerInCanvasRect = document.elementsFromPoint(payload.event.getPosition().x, payload.event.getPosition().y).some((x) => x === this.fFlow.hostElement);\n if (isPointerInCanvasRect) {\n const rectInCanvas = getElementRectInCanvas(dragHandler.placeholder!, this.fFlow.transform, this.fFlow.hostElement);\n this.onCreateNode.emit(\n new CreateNodeEvent(rectInCanvas, dragHandler.externalItem.data)\n );\n }\n dragHandler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class ExternalItemOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class NodeOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[],\n public isMoveCurrentNode: boolean = false\n ) {\n }\n}\n","import { IPoint, ITransformModel, IVector, Point, VectorExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionDragHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.CONNECTION;\n\n private onPointerDownVector: IVector = VectorExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownVector = getConnectionIntersect(\n this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost),\n this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost)\n );\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = Point.fromPoint(this.onPointerDownVector.point1).add(difference);\n const toPoint = Point.fromPoint(this.onPointerDownVector.point2).add(difference);\n\n this.connection.setVector(VectorExtensions.initialize(fromPoint, toPoint));\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionSourceDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = RectExtensions.addPoint(this.onPointerDownFromConnectorRect, difference);\n const vector = getConnectionIntersect(fromPoint, this.onPointerDownToConnectorRect);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionTargetDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toPoint);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FNodeBase } from '../../../../components';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.NODE;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n public fNode: FNodeBase\n ) {\n this.onPointerDownPosition = this.fNode.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const position = Point.fromPoint(this.onPointerDownPosition).add(difference);\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n this.fLineAlignment?.handle(difference);\n }\n\n public complete(): void {\n this.fNode.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerDownRequest } from './node-on-pointer-down.request';\nimport { FFlowBase, isNodeDragHandle } from '../../../../components';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FNodesContainerBase } from '../../../f-containers';\nimport { FConnectionsContainerBase } from '../../../f-containers';\nimport { FNodeInputBase, FNodeOutputBase } from '../../../../components';\nimport { FNodeBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n FConnectionDragHandler,\n FConnectionSourceDragHandler,\n FConnectionTargetDragHandler,\n NodeOnPointerMove\n} from '../node-on-pointer-move';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerDown\n implements IHandler<NodeOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: NodeOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (node) {\n if (isNodeDragHandle(payload.event.targetElement)) {\n if (!payload.selectedItems.includes(node) && payload.isMoveCurrentNode) {\n payload.selectedItems.push(node);\n node.select();\n }\n this.fNodesContainer.setNodeToTopLayer(node!);\n const itemsToDrag: IDraggableItem[] = this.calculateDraggableConnectionsAndNodes(payload);\n\n const draggedNodes = itemsToDrag.filter((x) => {\n return x.type === EDraggableType.NODE;\n }).map((x) => (x as NodeOnPointerMove).fNode);\n\n this.fLineAlignment?.initialize(this.fNodesContainer.fNodes.toArray(), draggedNodes);\n\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: itemsToDrag\n }\n }\n }\n\n return result;\n }\n\n private calculateDraggableConnectionsAndNodes(payload: NodeOnPointerDownRequest): IDraggableItem[] {\n let itemsToDrag: IDraggableItem[] = [];\n\n const selectedNodes = payload.selectedItems.map((x) => {\n return this.fNodesContainer.findNode(x.hostElement);\n }).filter((x) => !!x) as FNodeBase[];\n\n const nodeDragHandlers = selectedNodes.map((x) => new NodeOnPointerMove(this.fLineAlignment, x));\n itemsToDrag = nodeDragHandlers;\n\n const allOutputs: FNodeOutputBase[] = selectedNodes.reduce((result: FNodeOutputBase[], x: FNodeBase) => {\n return result.concat(this.getOutputsForNode(x));\n }, []);\n\n const allInputs: FNodeInputBase[] = selectedNodes.reduce((result: FNodeInputBase[], x: FNodeBase) => {\n return result.concat(this.getInputsForNode(x));\n }, []);\n\n nodeDragHandlers.forEach((nodeHandler) => {\n const outputConnections = this.fConnectionsContainer.findOutgoingConnections(this.getOutputsForNode(nodeHandler.fNode));\n outputConnections.forEach((c) => {\n if (allInputs.includes(c.fromTo!.input!)) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n } else {\n itemsToDrag.push(new FConnectionSourceDragHandler(c, payload.transform, this.hostElement));\n }\n });\n const inputConnections = this.fConnectionsContainer.findIncomingConnections(this.getInputsForNode(nodeHandler.fNode));\n inputConnections.forEach((c) => {\n if (allOutputs.includes(c.fromTo!.output! as FNodeOutputBase)) {\n const index = itemsToDrag.findIndex((x) => x.type === EDraggableType.CONNECTION && (x as FConnectionDragHandler).connection.id === c.id);\n if (index !== -1) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n }\n } else {\n itemsToDrag.push(new FConnectionTargetDragHandler(c, payload.transform, this.hostElement));\n }\n });\n //itemsToDrag.push(new NodeOnPointerMove(this.fLineAlignment, x.fNode));\n });\n return itemsToDrag;\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.toArray().filter((x) => node.isContains(x.hostElement));\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.toArray().filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerUpRequest } from './node-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectIfIntersectDirective } from '../../../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerUp\n implements IHandler<NodeOnPointerUpRequest, void> {\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fConnectIfIntersect: FConnectIfIntersectDirective | undefined,\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: NodeOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragNodes = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n\n if (isDragNodes) {\n const nearestIntersection = this.fLineAlignment?.findNearestCoordinate(difference);\n if (nearestIntersection) {\n difference.x = nearestIntersection.xResult.value ? (difference.x - nearestIntersection.xResult.distance!) : difference.x;\n difference.y = nearestIntersection.yResult.value ? (difference.y - nearestIntersection.yResult.distance!) : difference.y;\n }\n\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n this.fConnectIfIntersect?.handle(payload.dragHandler.draggableItems);\n this.fLineAlignment?.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class NodeOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FSelectionDirective } from '../../../f-selection';\nimport { ISelectable } from '../../../../i-selectable';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\n\nexport class SelectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.SELECTION;\n\n public selectedItems: ISelectable[] = [];\n\n private items: { element: ISelectable, rect: IRect }[] = [];\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private selectedOnStart: ISelectable[],\n private onPointerDownPosition: IPoint = PointExtensions.initialize()\n ) {\n const nodeRects = fFlow.fNodesContainer.fNodes.map((x) => {\n return {\n element: x,\n rect: getElementRectInCanvas(x.hostElement, fFlow.transform, this.fFlow.hostElement)\n };\n });\n\n const lineRects = fFlow.fConnectionsContainer.fConnections.map((x) => {\n return {\n element: x,\n rect: getElementRectInCanvas(x.fPath.hostElement, fFlow.transform, this.fFlow.hostElement)\n };\n });\n this.items = [ ...nodeRects, ...lineRects ].filter((x) => {\n return !selectedOnStart.includes(x.element);\n });\n }\n\n public initialize(): void {\n this.fSelection?.show();\n this.fSelection?.draw({ ...this.onPointerDownPosition, width: 0, height: 0 });\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.onPointerDownPosition);\n\n const x: number = Math.min(this.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelection?.draw({ x, y, width, height });\n this.selectedItems = [];\n this.items.forEach((item) => {\n item.element.deselect();\n if (\n RectExtensions.intersectionWithRect(item.rect, RectExtensions.initialize(x, y, width, height))\n ) {\n item.element.select();\n this.selectedItems.push(item.element);\n }\n });\n }\n\n public complete(): void {\n this.fSelection?.hide();\n this.selectedItems.push(...this.selectedOnStart || [])\n }\n}\n","import { IHandler, MouseEventExtensions, Point } from '@foblex/core';\nimport { FFlowBase, FSelectionDirective, isNodeOutlet, isNodeOutput } from '../../../../components';\nimport { ISelectable } from '../../../../i-selectable';\nimport { SelectionOnPointerDownRequest } from './selection-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class SelectionOnPointerDown implements IHandler<SelectionOnPointerDownRequest, IDragHandler> {\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: SelectionOnPointerDownRequest): IDragHandler {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n let node = this.fFlow.fNodesContainer.findNode(payload.event.targetElement);\n const connection = this.fFlow.fConnectionsContainer.findConnectionWithElement(payload.event.targetElement);\n\n payload.selectedItems.forEach((x) => {\n if (x !== node || (!isNodeOutlet(payload.event.targetElement) && !isNodeOutput(payload.event.targetElement))) {\n x.deselect();\n }\n });\n const isMultiselect =\n MouseEventExtensions.isCommandButton(payload.event.originalEvent) ||\n MouseEventExtensions.isShiftPressed(payload.event.originalEvent);\n if (!isMultiselect) {\n payload.selectedItems = [];\n }\n if (node) {\n if (node) {\n if (!payload.selectedItems.includes(node)) {\n payload.selectedItems.push(node);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(node), 1);\n }\n }\n\n } else if (connection) {\n if (!payload.selectedItems.includes(connection)) {\n payload.selectedItems.push(connection);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(connection), 1);\n }\n }\n payload.selectedItems.forEach((x) => {\n if (!x.isSelected()) {\n x.select();\n }\n });\n\n let draggableItems: IDraggableItem[] = [];\n if (MouseEventExtensions.isShiftPressed(payload.event.originalEvent)) {\n draggableItems = [\n new SelectionOnPointerMove(this.fFlow, this.fSelection, payload.selectedItems, pointerPositionInCanvas)\n ];\n }\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: draggableItems,\n selectedItems: payload.selectedItems\n }\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { SelectionOnPointerUpRequest } from './selection-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ISelectable } from '../../../../i-selectable';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\n\nexport class SelectionOnPointerUp\n implements IHandler<SelectionOnPointerUpRequest, ISelectable[]> {\n\n constructor(\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: SelectionOnPointerUpRequest): ISelectable[] {\n let result: ISelectable[] = payload.selectedItems;\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isSelection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.SELECTION);\n\n if (isSelection) {\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n result = (payload.dragHandler.draggableItems[ 0 ] as SelectionOnPointerMove).selectedItems;\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FFlowBase } from '../../components';\nimport { ITransformModel } from '@foblex/core';\n\n@Injectable()\nexport class FDraggableService {\n\n private fFlow: FFlowBase | undefined;\n\n public get hostElement(): SVGSVGElement {\n return this.fFlow!.hostElement;\n }\n\n public get transform(): ITransformModel {\n return this.fFlow!.transform;\n }\n\n constructor(\n ) {\n }\n\n public setFlow(fFlow: FFlowBase): void {\n this.fFlow = fFlow;\n }\n\n public onPointerDown(event: PointerEvent): void {\n\n }\n}\n","import {\n IDragAndDropBase, IHasHostElement, IPointerEvent, ITransformModel, Point\n} from '@foblex/core';\nimport { Subscription } from 'rxjs';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy } from '@angular/core';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FBackgroundBase } from '../../internal';\nimport { FFlowBase, FSelectionDirective } from '../../components';\nimport { CanvasOnPointerDownHandler, CanvasOnPointerDownRequest } from './canvas';\nimport { IDragHandler } from './i-drag-handler';\nimport { DefaultDragHandler } from './default-drag-handler';\nimport {\n SelectionOnPointerDown,\n SelectionOnPointerDownRequest,\n SelectionOnPointerUp,\n SelectionOnPointerUpRequest\n} from './selection';\nimport {\n ReassignConnectionEvent, ReassignConnectionOnPointerDown,\n ReassignConnectionOnPointerDownRequest, ReassignConnectionOnPointerUp, ReassignConnectionOnPointerUpRequest\n} from './connections';\nimport { NodeOnPointerDown, NodeOnPointerDownRequest, NodeOnPointerUp, NodeOnPointerUpRequest } from './node';\nimport {\n CreateConnectionEvent, CreateConnectionOnPointerDown,\n CreateConnectionOnPointerDownRequest, CreateConnectionOnPointerUp, CreateConnectionOnPointerUpRequest\n} from './connections';\nimport { EDraggableType } from './e-draggable-type';\nimport { FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../f-line-alignment';\nimport { ISelectable } from '../../i-selectable';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport {\n CreateNodeEvent,\n ExternalItemOnPointerDownHandler,\n ExternalItemOnPointerDownRequest,\n ExternalItemOnPointerUpHandler, ExternalItemOnPointerUpRequest\n} from './external-item';\n\nexport const F_DND_DIRECTIVE = new InjectionToken<FDraggableBase>('F_DND_DIRECTIVE');\n\n@Directive()\nexport abstract class FDraggableBase extends IDragAndDropBase implements IHasHostElement, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n private get fItemsContainer(): FItemsContainerBase {\n return this.fFlow.fItemsContainer;\n }\n\n private get fBackground(): FBackgroundBase {\n return this.fFlow.fBackground;\n }\n\n private dragHandler: IDragHandler = new DefaultDragHandler().handle();\n\n private dragSelection!: SelectionOnPointerDown;\n private reassignConnection!: ReassignConnectionOnPointerDown;\n private dragCanvas!: CanvasOnPointerDownHandler;\n private dragNode!: NodeOnPointerDown;\n private createConnection!: CreateConnectionOnPointerDown;\n private dragExternalItem!: ExternalItemOnPointerDownHandler;\n\n public abstract onCreateConnection: EventEmitter<CreateConnectionEvent>;\n\n public abstract onReassignConnection: EventEmitter<ReassignConnectionEvent>;\n\n public abstract onCreateNode: EventEmitter<CreateNodeEvent>;\n\n public abstract fLineAlignment: FLineAlignmentDirective | undefined;\n public abstract fConnectIfIntersect: FConnectIfIntersectDirective | undefined;\n public abstract fSelection: FSelectionDirective | undefined;\n\n private selectedItems: ISelectable[] = [];\n\n protected constructor(\n protected fFlow: FFlowBase,\n protected fDNDService: FDraggableService,\n protected fExternalItemService: FExternalItemService,\n private elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone,\n ) {\n super(ngZone);\n this.fDNDService.setFlow(this.fFlow);\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(document);\n\n this.dragSelection = new SelectionOnPointerDown(this.fFlow, this.fSelection, this.hostElement);\n this.reassignConnection = new ReassignConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragCanvas = new CanvasOnPointerDownHandler(this.fBackground, this.fItemsContainer, this.hostElement);\n this.dragNode = new NodeOnPointerDown(this.fLineAlignment, this.fFlow, this.hostElement);\n this.createConnection = new CreateConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragExternalItem = new ExternalItemOnPointerDownHandler(this.fExternalItemService, this.hostElement);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n let result: boolean = event.isMouseLeftButton();\n const selection = this.dragSelection.handle(\n new SelectionOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n this.selectedItems = selection.selectedItems || [];\n\n const reassignConnection = this.reassignConnection.handle(\n new ReassignConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const createConnection = this.createConnection.handle(\n new CreateConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const dragNode = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n\n const dragCanvas = this.dragCanvas.handle(\n new CanvasOnPointerDownRequest(event)\n );\n\n const dragExternalItem = this.dragExternalItem.handle(\n new ExternalItemOnPointerDownRequest(event)\n );\n\n const dragSelection = selection.draggableItems.length ? selection : undefined;\n\n const dragHandle = dragSelection || reassignConnection || createConnection || dragNode || dragCanvas || dragExternalItem;\n if (!dragHandle) {\n this.dragHandler = new DefaultDragHandler().handle();\n result = false;\n } else {\n this.dragHandler = dragHandle;\n }\n\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n const isDragNodes = this.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n if (isDragNodes) {\n this.dragHandler = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems, true)\n )!;\n }\n this.dragHandler.draggableItems.forEach((item) => {\n item.initialize();\n });\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).matrixTransform(this.hostElement);\n const difference = pointerPositionInCanvas.div(this.dragHandler.onPointerDownScale).sub(this.dragHandler.onPointerDownPosition);\n this.dragHandler.draggableItems.forEach((item) => {\n item.move(difference);\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n new ReassignConnectionOnPointerUp(this.fFlow, this.onReassignConnection).handle(\n new ReassignConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new CreateConnectionOnPointerUp(this.fFlow, this.onCreateConnection).handle(\n new CreateConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new NodeOnPointerUp(this.fLineAlignment, this.fConnectIfIntersect, this.hostElement).handle(\n new NodeOnPointerUpRequest(event, this.dragHandler)\n );\n\n this.selectedItems = new SelectionOnPointerUp(this.hostElement).handle(\n new SelectionOnPointerUpRequest(event, this.dragHandler, this.selectedItems)\n );\n\n new ExternalItemOnPointerUpHandler(this.fFlow, this.onCreateNode).handle(\n new ExternalItemOnPointerUpRequest(event, this.dragHandler)\n );\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByX(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceLeftLeft = target.x - element.x;\n const distanceLeftRight = target.x - (element.x + element.width);\n const distanceCenterCenter = target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (target.x + target.width) - element.x;\n const distanceRightRight = (target.x + target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceLeftRight) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightRight) <= ALIGN_THRESHOLD\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByY(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceTopTop = target.y - element.y;\n const distanceTopBottom = target.y - (element.y + element.height);\n const distanceCenterCenter = target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (target.y + target.height) - element.y;\n const distanceBottomBottom = (target.y + target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceTopBottom) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomBottom) <= ALIGN_THRESHOLD\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n}\n","import { Directive, ElementRef, Inject, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, LineFElement, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { F_FLOW_COMPONENT, FFlowBase, FNodeBase, getElementRectInCanvas } from '../../components';\nimport { findNearestCoordinateByX, findNearestCoordinateByY, ILineAlignmentResult } from './domain';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentDirective>('F_LINE_ALIGNMENT');\n\n@Directive({\n selector: \"g[fLineAlignment]\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentDirective }\n ],\n})\nexport class FLineAlignmentDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fHorizontalLine: LineFElement = new LineFElement();\n\n private fVerticalLine: LineFElement = new LineFElement();\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fFlow.fItemsContainer.transform;\n }\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fHorizontalLine.hostElement);\n this.hostElement.appendChild(this.fVerticalLine.hostElement);\n }\n\n public initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.fFlow.hostElement.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects);\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n }\n\n public handle(difference: IPoint): void {\n this.drawIntersections(difference);\n }\n\n private drawIntersections(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n x1: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n x2: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n y1: 0,\n y2: this.size.height\n });\n } else {\n this.fVerticalLine.hide();\n }\n if (intersect.yResult.value !== undefined) {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n x1: 0,\n x2: this.size.width,\n y1: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n y2: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n });\n } else {\n this.fHorizontalLine.hide();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n let result: ILineAlignmentResult = {\n xResult: { value: undefined, distance: undefined },\n yResult: { value: undefined, distance: undefined }\n };\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const xResult = findNearestCoordinateByX(this.rects, rect);\n const yResult = findNearestCoordinateByY(this.rects, rect);\n result = { xResult, yResult };\n return result;\n }\n\n public complete(): void {\n this.fVerticalLine.hide();\n this.fHorizontalLine.hide();\n }\n}\n","import { ContentChild, Directive, ElementRef, EventEmitter, Inject, Input, NgZone, Output } from \"@angular/core\";\nimport { F_DND_DIRECTIVE, FDraggableBase } from './f-draggable-base';\nimport { F_FLOW_COMPONENT, F_SELECTION, FFlowBase, FSelectionDirective } from '../../components';\nimport { F_CONNECT_IF_INTERSECT, FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { F_LINE_ALIGNMENT, FLineAlignmentDirective } from '../f-line-alignment';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport { CreateConnectionEvent, ReassignConnectionEvent } from './connections';\nimport { CreateNodeEvent } from './external-item';\n\n@Directive({\n selector: \"svg[fDraggable]\",\n providers: [\n { provide: F_DND_DIRECTIVE, useExisting: FDraggableDirective }\n ]\n})\nexport class FDraggableDirective extends FDraggableBase {\n\n @Input()\n public override disabled: boolean = false;\n\n @ContentChild(F_LINE_ALIGNMENT, { static: true })\n public override fLineAlignment: FLineAlignmentDirective | undefined;\n\n @ContentChild(F_CONNECT_IF_INTERSECT, { static: true })\n public override fConnectIfIntersect: FConnectIfIntersectDirective | undefined;\n\n @ContentChild(F_SELECTION, { static: true })\n public override fSelection: FSelectionDirective | undefined;\n\n @Output()\n public override onCreateConnection: EventEmitter<CreateConnectionEvent> = new EventEmitter<CreateConnectionEvent>();\n\n @Output()\n public override onReassignConnection: EventEmitter<ReassignConnectionEvent> = new EventEmitter<ReassignConnectionEvent>();\n\n @Output()\n public override onCreateNode: EventEmitter<CreateNodeEvent> = new EventEmitter<CreateNodeEvent>();\n\n constructor(\n @Inject(F_FLOW_COMPONENT) fFlow: FFlowBase,\n fDNDService: FDraggableService,\n fExternalItemService: FExternalItemService,\n elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone\n ) {\n super(fFlow, fDNDService, fExternalItemService, elementReference, ngZone);\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { FDraggableDirective } from './f-draggable.directive';\nimport { FExternalItemDirective, FExternalItemService } from '../f-external-item';\nimport { FLineAlignmentDirective } from '../f-line-alignment';\nimport { FSelectionDirective } from '../f-selection';\nimport { FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { FDraggableService } from './f-draggable.service';\n\n@NgModule({\n declarations: [\n FDraggableDirective,\n FExternalItemDirective,\n FLineAlignmentDirective,\n FSelectionDirective,\n FConnectIfIntersectDirective\n ],\n imports: [],\n providers: [\n FExternalItemService,\n FDraggableService\n ],\n exports: [\n FDraggableDirective,\n FExternalItemDirective,\n FLineAlignmentDirective,\n FSelectionDirective,\n FConnectIfIntersectDirective\n ]\n})\nexport class FDraggableModule {\n\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\nimport { ConnectIfIntersectRequest } from './connect-if-intersect.request';\nimport { FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FFlowBase, FNodeBase, FNodeInputBase, FNodeOutputBase, getElementRectInCanvas } from '../../../components';\nimport { FItemsContainerBase } from '../../f-containers';\nimport { findIncomingConnections, findOutgoingConnections } from '../../f-containers';\nimport { EDraggableType } from '../../f-draggable';\nimport { NodeOnPointerMove } from '../../f-draggable';\n\nexport class ConnectIfIntersectHandler implements IHandler<ConnectIfIntersectRequest> {\n\n constructor(\n private connections: FConnectionBase<FNodeOutputBase>[],\n private fFlow: FFlowBase,\n private fItemsContainer: FItemsContainerBase\n ) {\n }\n\n public handle(request: ConnectIfIntersectRequest): void {\n const isValid = this.isValidRequest(request);\n if (!isValid) {\n return;\n }\n const fNode = (request.draggableItems[ 0 ] as NodeOnPointerMove).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n const isCantBeConnectedByInput = this.connections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fromTo?.input?.id);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n const outgoingConnections = findOutgoingConnections(this.connections, [ output ]);\n const incomingConnections = findIncomingConnections(this.connections, [ input ]);\n if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n const connections = this.findConnectionsUnderNode(fNode);\n\n console.log('connections', connections);\n\n // if (connections.length) {\n // const connectedTo = (connections[ 0 ].fromTo?.output as FNodeOutputBase).connectedTo;\n // (connections[ 0 ].fromTo?.output as FNodeOutputBase).connectTo(input.id);\n // output.connectTo(connectedTo);\n // }\n }\n }\n }\n\n private isValidRequest(request: ConnectIfIntersectRequest): boolean {\n const result =\n request?.draggableItems.length === 1 &&\n request?.draggableItems[ 0 ].type === EDraggableType.NODE;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase<FNodeOutputBase>[] {\n const nodeRect = getElementRectInCanvas(node.hostElement, this.fItemsContainer.transform, this.fFlow.hostElement);\n return this.connections.filter((x) => {\n const intersection = RectExtensions.intersectionWithVector(nodeRect, x.vector.point1, x.vector.point2);\n return (intersection || []).length > 0\n });\n }\n}\n","import { IDraggableItem } from '../../f-draggable';\n\nexport class ConnectIfIntersectRequest {\n\n constructor(\n public readonly draggableItems: IDraggableItem[]\n ) {\n }\n}\n","import { ContentChildren, Directive, Inject, InjectionToken, QueryList } from '@angular/core';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from '../../components/f-connection/f-connection-base';\nimport { F_FLOW_COMPONENT, FFlowBase, FNodeOutputBase } from '../../components';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { IDraggableItem } from '../f-draggable';\nimport { ConnectIfIntersectHandler, ConnectIfIntersectRequest } from './connect-if-intersect';\n\nexport const F_CONNECT_IF_INTERSECT = new InjectionToken<FConnectIfIntersectDirective>('F_CONNECT_IF_INTERSECT');\n\n@Directive({\n selector: \"g[fConnectIfIntersect]\",\n providers: [\n { provide: F_CONNECT_IF_INTERSECT, useExisting: FConnectIfIntersectDirective }\n ]\n})\nexport class FConnectIfIntersectDirective {\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n @Inject(F_ITEMS_CONTAINER) private fItemsContainer: FItemsContainerBase\n ) {\n }\n\n public handle(draggableItems: IDraggableItem[]): void {\n new ConnectIfIntersectHandler(\n this.fConnections.toArray(), this.fFlow, this.fItemsContainer\n ).handle(\n new ConnectIfIntersectRequest(draggableItems)\n );\n }\n}\n","import { EventExtensions, Point, RectExtensions } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../../internal';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FDraggableBase } from '../f-draggable';\nimport { isNode } from '../../components';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n private minimum: number = 0.3;\n private maximum: number = 4;\n\n private step: number = 1.1;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n protected constructor(\n private fItemsContainer: FItemsContainerBase,\n private fDnd: FDraggableBase,\n private fCanvas: FCanvasBase,\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled && this.fCanvas.hostElement) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n\n this.fCanvas.hostElement.addEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.fCanvas.hostElement.removeEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fItemsContainer.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (event.deltaY > 0) {\n if (this.getScale() / this.step >= this.minimum) {\n result = this.getScale() / this.step;\n }\n } else if (event.deltaY < 0) {\n if (this.getScale() * this.step <= this.maximum) {\n result = this.getScale() * this.step;\n }\n }\n\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n public onZoomToCenter(deltaY: number): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.fCanvas.hostElement);\n\n this.onWheel({\n deltaY, preventDefault, clientX: rect.gravityCenter.x, clientY: rect.gravityCenter.y\n } as WheelEvent);\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted || isNode(event.target as HTMLElement)) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (this.getScale() * 1.7 <= this.maximum) {\n result = this.getScale() * 1.7;\n }\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redrawWithAnimation();\n this.fItemsContainer.completeDrag();\n }\n\n public reset(): void {\n this.fItemsContainer.resetZoom();\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Inject, Input, OnDestroy\n} from \"@angular/core\";\nimport { BooleanExtensions } from '@foblex/core';\nimport { FZoomBase, F_ZOOM } from './f-zoom-base';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { F_CANVAS, FCanvasBase } from '../../internal';\nimport { F_DND_DIRECTIVE, FDraggableBase } from '../f-draggable';\n\n@Directive({\n selector: \"g[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-flow-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n constructor(\n @Inject(F_ITEMS_CONTAINER) fItemsContainer: FItemsContainerBase,\n @Inject(F_DND_DIRECTIVE) fDnd: FDraggableBase,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(fItemsContainer, fDnd, fCanvas);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, InjectionToken, NgZone, OnDestroy, QueryList } from '@angular/core';\nimport { IHasHostElement, ITransformModel } from '@foblex/core';\nimport { FItemsContainerBase } from '../../directives';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\nimport { merge, startWith, Subject, takeUntil } from 'rxjs';\nimport { FBackgroundBase } from '../../internal';\nimport { FConnectionsContainerBase } from '../../directives';\nimport { FNodesContainerBase } from '../../directives';\n\nexport const F_FLOW_COMPONENT = new InjectionToken<FFlowBase>('F_FLOW_COMPONENT');\n\n@Directive()\nexport abstract class FFlowBase implements IHasHostElement, AfterContentInit, OnDestroy {\n\n public abstract id: any;\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private readonly onDestroy: Subject<void> = new Subject<void>();\n\n\n public abstract fNodesContainer: FNodesContainerBase;\n\n public abstract fConnectionsContainer: FConnectionsContainerBase;\n\n\n public abstract fItemsContainer: FItemsContainerBase;\n\n public abstract fBackground: FBackgroundBase;\n\n public abstract transform: ITransformModel;\n\n public abstract outlets: QueryList<FNodeOutletBase>;\n\n public abstract outputs: QueryList<FNodeOutputBase>;\n\n public abstract inputs: QueryList<FNodeInputBase>;\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n }\n\n public ngAfterContentInit(): void {\n this.subscribeOnComponentsChanges();\n }\n\n protected subscribeOnComponentsChanges(): void {\n const changes = [\n this.fNodesContainer.fNodes.changes,\n this.fConnectionsContainer.fConnections.changes,\n this.outlets.changes,\n this.outputs.changes,\n this.inputs.changes\n ];\n\n merge(...changes).pipe(startWith(null), takeUntil(this.onDestroy)).subscribe(() => {\n const changedOrDestroyed = merge(...changes, this.onDestroy);\n\n merge(this.fNodesContainer.stateChanges).pipe(startWith(null), takeUntil(changedOrDestroyed)).subscribe(() => {\n\n this.fConnectionsContainer.fConnections.forEach((connection) => {\n connection.fromTo = {\n output: this.outputs.find((x) => x.id === connection.outputId)!,\n input: this.inputs.find((x) => x.id === connection.inputId)!\n };\n connection.initialize();\n });\n });\n\n });\n }\n\n public ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import {\n ChangeDetectorRef,\n Component, ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n NgZone,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { FCanvasDirective } from '../../internal';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../../directives';\nimport { F_FLOW_COMPONENT, FFlowBase } from './f-flow-base';\nimport { ITransformModel } from '@foblex/core';\nimport {\n F_NODE_INPUT_DIRECTIVE, F_NODE_OUTLET_DIRECTIVE,\n F_NODE_OUTPUT_DIRECTIVE,\n FNodeInputBase,\n FNodeOutletBase,\n FNodeOutputBase\n} from '../f-connectors';\nimport { F_NODES_CONTAINER, FNodesContainerBase } from '../../directives';\nimport {\n F_CONNECTIONS_CONTAINER,\n FConnectionsContainerBase\n} from '../../directives';\nimport { F_BACKGROUND, FBackgroundBase } from '../../internal';\n\nlet uniqueId: number = 0;\n\nexport const CONNECTION_MARKER_START = \"connection-marker-start\";\nexport const CONNECTION_MARKER_END = \"connection-marker-end\";\nexport const CONNECTION_MARKER_START_SELECTED = \"connection-marker-start-selected\";\nexport const CONNECTION_MARKER_END_SELECTED = \"connection-marker-end-selected\";\n@Component({\n selector: 'svg[fFlow]',\n templateUrl: './f-flow.component.html',\n hostDirectives: [\n {\n directive: FCanvasDirective\n }\n ],\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-flow\"\n },\n providers: [ { provide: F_FLOW_COMPONENT, useExisting: FFlowComponent } ],\n})\nexport class FFlowComponent extends FFlowBase {\n\n public readonly CONNECTION_MARKER_START = CONNECTION_MARKER_START;\n public readonly CONNECTION_MARKER_END = CONNECTION_MARKER_END;\n public readonly CONNECTION_MARKER_START_SELECTED = CONNECTION_MARKER_START_SELECTED;\n public readonly CONNECTION_MARKER_END_SELECTED = CONNECTION_MARKER_END_SELECTED;\n\n @Input()\n public override id: string = `f-flow-${ uniqueId++ }`;\n\n @ContentChild(F_NODES_CONTAINER, { static: true })\n public override fNodesContainer!: FNodesContainerBase;\n\n @ContentChild(F_CONNECTIONS_CONTAINER, { descendants: true })\n public override fConnectionsContainer!: FConnectionsContainerBase;\n\n @ContentChild(F_ITEMS_CONTAINER, { static: true })\n public override fItemsContainer!: FItemsContainerBase;\n\n @ViewChild(F_BACKGROUND, { static: true })\n public override fBackground!: FBackgroundBase;\n\n @ContentChildren(F_NODE_OUTLET_DIRECTIVE, { descendants: true })\n public override outlets!: QueryList<FNodeOutletBase>;\n\n @ContentChildren(F_NODE_OUTPUT_DIRECTIVE, { descendants: true })\n public override outputs!: QueryList<FNodeOutputBase>;\n\n @ContentChildren(F_NODE_INPUT_DIRECTIVE, { descendants: true })\n public override inputs!: QueryList<FNodeInputBase>;\n\n public override get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>,\n changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone\n ) {\n super(elementReference, changeDetectorRef, ngZone);\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild\n} from \"@angular/core\";\nimport { IVector } from '@foblex/core';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from './f-connection-base';\nimport { FConnectionTextComponent } from './f-connection-text/f-connection-text.component';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection/f-connection-selection.component';\nimport { FConnectionGradientComponent } from './f-gradient/f-connection-gradient.component';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { F_FLOW_COMPONENT, FFlowBase } from '../f-flow';\nimport { getConnectionIntersect } from './get-connection-intersect';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fConnection]\",\n templateUrl: \"./f-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-connection\"\n },\n providers: [ { provide: F_CONNECTION_COMPONENT, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent extends FConnectionBase {\n\n @Input()\n public override id: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override outputId: any;\n\n @Input()\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n @Inject(F_FLOW_COMPONENT) private flow: FFlowBase\n ) {\n super();\n }\n\n public override initialize(): void {\n const vector = getConnectionIntersect(\n this.fromTo!.output.getElementRectInCanvas(this.flow.transform, this.flow.hostElement),\n this.fromTo!.input.getElementRectInCanvas(this.flow.transform, this.flow.hostElement)\n );\n this.setVector(vector);\n this.redraw();\n }\n\n public initializeDrag(): void {\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fDragHandle.redraw(this.vector.point2);\n this.fText.redraw(this.vector);\n }\n\n public override select(): void {\n this.fPath.select();\n super.select();\n }\n\n public override deselect(): void {\n this.fPath.deselect();\n super.deselect();\n }\n\n public completeDrag(): void {\n this.redraw();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:path fConnectionSelection [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:g>\n <svg:path f-connection-path [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:circle f-connection-drag-handle r=\"8\"></svg:circle>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { FFlowComponent } from './components';\nimport { FConnectionModule } from './components';\nimport { FNodeInputDirective, FNodeOutletDirective, FNodeOutputDirective } from './components';\nimport { FDragHandleDirective, FForeignObjectComponent, FNodeComponent } from './components';\nimport { CommonModule } from '@angular/common';\nimport {\n FConnectionsContainerComponent,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FZoomDirective\n} from './directives';\nimport { FBackgroundDirective, FCanvasDirective } from './internal';\n\n@NgModule({\n declarations: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ],\n imports: [\n CommonModule,\n FConnectionModule,\n FCanvasDirective,\n FBackgroundDirective,\n ],\n providers: [],\n exports: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FConnectionModule,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FConnectionTextPathDirective","uniqueId","i1.FConnectionGradientComponent","i2.FConnectionPathComponent","i3.FConnectionTextComponent","i1.FCanvasBase","i1.FTempConnectionComponent","i1.FExternalItemService","i1.FFlowBase","i2.FDraggableService","i3.FExternalItemService","ALIGN_THRESHOLD","i1.FDraggableService","i2.FExternalItemService","i1.FCanvasDirective","i3.FBackgroundDirective","i1.FConnectionDragHandleComponent","i2.FConnectionGradientComponent","i3.FConnectionPathComponent","i4.FConnectionTextComponent","i5.FConnectionSelectionComponent"],"mappings":";;;;;;;AAWO,MAAM,gBAAgB,GAAG,YAAY;;ACFrC,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAkB,wBAAwB,CAAC,CAAC;MAG9E,eAAe,CAAA;AADrC,IAAA,WAAA,GAAA;QAeS,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAElB,QAAA,IAAA,CAAA,MAAM,GAAY,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AA6BnE,KAAA;IA3BQ,UAAU,GAAA;KAEhB;AAEM,IAAA,UAAU,CAAC,OAAiC,EAAA;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC3C;IAUM,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KACrD;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;KAClD;IAEM,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;KAC9D;8GA9CmB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;;ACXH,MAAM,wBAAwB,GAAG;AAEtC,IAAA,MAAM,CAAC,YAAoB,EAAA;QACzB,OAAO,kBAAkB,GAAG,YAAY,CAAC;KAC1C;AACD,IAAA,wBAAwB,CAAC,YAAoB,EAAA;QAC3C,OAAO,2BAA2B,GAAG,YAAY,CAAC;KACnD;AACD,IAAA,YAAY,CAAC,YAAoB,EAAA;QAC/B,OAAO,aAAa,GAAG,YAAY,CAAC;KACrC;AACD,IAAA,UAAU,CAAC,YAAoB,EAAA;QAC7B,OAAO,sBAAsB,GAAG,YAAY,CAAC;KAC9C;AACD,IAAA,cAAc,CAAC,YAAoB,EAAA;QACjC,OAAO,CAAA,KAAA,EAAS,wBAAwB,CAAC,UAAU,CAAC,YAAY,CAAE,GAAG,CAAC;KACvE;AACD,IAAA,gBAAgB,CAAC,YAAoB,EAAA;QACnC,OAAO,CAAA,CAAA,EAAK,wBAAwB,CAAC,YAAY,CAAC,YAAY,CAAE,EAAE,CAAC;KACpE;CACF;;MCAY,wBAAwB,CAAA;AAKnC,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,wBAAwB,CAAC,cAAc,CAC1C,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAClD,CAAC;KACH;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,wBAAwB,CAAC,YAAY,CACxC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAClD,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACY,gBAA4C,EAAA;QAA5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;KAEvD;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,CAAI,EAAA,IAAK,CAAE,CAAA,CAAC,CAAC;KACjD;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,CAAwC,sCAAA,CAAA,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,CAAsC,oCAAA,CAAA,CAAC,CAAC;KACrF;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA,6BAAA,EAAiC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAM,CAAA,CAAA,CAAG,CAAC,CAAC;AAC/G,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,CAAA,2BAAA,EAA+B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAM,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3G,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,EAAE,CAA+B,6BAAA,CAAA,CAAC,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,CAA6B,2BAAA,CAAA,CAAC,CAAC;AAC5E,SAAA;KACF;IAEM,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAA,sCAAA,CAAwC,CAAA;KAClG;8GAnDU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,wOARzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAQD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,+BAA+B;AACtC,wBAAA,WAAW,EAAE,kBAAkB;AAC/B,wBAAA,eAAe,EAAE,gBAAgB;AAClC,qBAAA;AACF,iBAAA,CAAA;iGAIQ,MAAM,EAAA,CAAA;sBADZ,KAAK;;;MCHK,4BAA4B,CAAA;AAKvC,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,wBAAwB,CAAC,UAAU,CACxC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAChD,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAmB,CAAC;KAC/E;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAmB,CAAC;KAC/E;AAED,IAAA,WAAA,CACU,gBAAsD,EAAA;QAAtD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAsC;KAE/D;IAEM,kBAAkB,GAAA;QACvB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC5C;AAEO,IAAA,YAAY,CAAC,KAAyB,EAAA;QAC5C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC;KACtE;AAEO,IAAA,UAAU,CAAC,KAAyB,EAAA;QAC1C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC;KACtE;AAEM,IAAA,MAAM,CAAC,MAAe,EAAA;AAC3B,QAAA,MAAM,CAAC,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,CAAC,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAE1D,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;AAE/E,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;8GA5DU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,iNCnBzC,8GAIA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDea,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,EAE9B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,mCAAmC;AAC1C,wBAAA,WAAW,EAAE,YAAY;AAC1B,qBAAA,EAAA,QAAA,EAAA,8GAAA,EAAA,CAAA;iGAKM,MAAM,EAAA,CAAA;sBADZ,KAAK;;;METK,4BAA4B,CAAA;AAKvC,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,wBAAwB,CAAC,gBAAgB,CAC5C,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAClD,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAA4C,EAAA;QAA5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;KAErD;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,CAAQ,MAAA,CAAA,CAAC,CAAC;KACxD;IAEM,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;KACnC;AAEM,IAAA,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;KACjE;8GA/BU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,kBAAkB;AAClC,qBAAA;AACF,iBAAA,CAAA;iGAIQ,MAAM,EAAA,CAAA;sBADZ,KAAK;;;MCKK,wBAAwB,CAAA;AAKnC,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,wBAAwB,CAAC,MAAM,CACpC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAChD,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAKD,IAAA,WAAA,CACU,gBAA4C,EAAA;QAA5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;KAErD;AAEM,IAAA,MAAM,CAAC,MAAe,EAAA;QAE3B,MAAM,aAAa,GAAY,wBAAwB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAE9E,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,CAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;AAC7F,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,GAAG,CAAA,YAAA,EAAgB,cAAe,CAAG,CAAA,CAAA,GAAG,EAAE,CAAC,CAAC;AACpG,QAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;;QAGxG,IAAI,WAAW,GAAG,CAAC,EAAE;YAEnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACzC,SAAA;AAAM,aAAA;YAEL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1C,SAAA;KACF;IAEO,OAAO,aAAa,CAAC,MAAe,EAAA;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC1C;AAEO,IAAA,OAAO,kBAAkB,CAAC,MAAe,EAAE,IAAY,EAAA;QAC7D,MAAM,WAAW,GAAW,CAAC,CAAC;AAC9B,QAAA,MAAM,YAAY,GAAW,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACtF,QAAA,OAAO,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,WAAW,IAAI,CAAC,CAAC;KACnE;8GApDU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAexB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCzC,oMAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,4BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAElB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,+BAA+B;AACtC,wBAAA,WAAW,EAAE,QAAQ;AACtB,qBAAA,EAAA,QAAA,EAAA,oMAAA,EAAA,CAAA;iGAKM,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAcC,iBAAiB,EAAA,CAAA;sBADvB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEtB9C,2BAA2B,GAAG,IAAI,cAAc,CAAkB,6BAA6B,EAAE;AAE9G,IAAIC,UAAQ,GAAW,CAAC,CAAC;AAanB,MAAO,wBACX,SAAQ,eAAkD,CAAA;AAiB1D,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAFA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AApBnC,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,kBAAA,EAAsBA,UAAQ,EAAG,EAAE,CAAC;KAuBhE;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KACzC;IAEM,cAAc,GAAA;QACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1C;AAEM,IAAA,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,CAAA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAE,CAAK,CAAA,EAAA,MAAM,CAAC,MAAM,CAAC,CAAE,CAAA,CAAA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAO,CAAK,CAAA,EAAA,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAO,EAAE,CAAC;KACtH;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChC;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KACzC;8GAjDU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAJxB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4CAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAChF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWU,wBAAwB,EAGxB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,4BAA4B,EAG5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,qFC1CrC,iXAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDoBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAEb,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,4CAA4C;qBACpD,EACU,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,0BAA0B,EAAE;AAChF,qBAAA,EAAA,QAAA,EAAA,iXAAA,EAAA,CAAA;iGAYe,KAAK,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI9C,SAAS,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIlD,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEpChD,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;MAU5D,8BAA8B,CAAA;AAIzC,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACY,gBAA8C,EAAA;QAA9C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA8B;QAP1C,IAAK,CAAA,KAAA,GAAW,8BAA8B,CAAC;KAS9D;AAEM,IAAA,MAAM,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;KACzD;8GAhBU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oHAN/B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAMD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAR1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,OAAO;AACnB,qBAAA;AACF,iBAAA,CAAA;;;MCGY,6BAA6B,CAAA;AAKxC,IAAA,IAAW,wBAAwB,GAAA;QACjC,OAAO,wBAAwB,CAAC,wBAAwB,CACpD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAClD,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACY,gBAA4C,EAAA;QAA5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;KAEvD;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,CAAI,EAAA,IAAK,CAAE,CAAA,CAAC,CAAC;KACjD;8GAtBU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uNAP9B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAOD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oCAAoC;AAC3C,wBAAA,WAAW,EAAE,0BAA0B;AACxC,qBAAA;AACF,iBAAA,CAAA;iGAIQ,MAAM,EAAA,CAAA;sBADZ,KAAK;;;ACjBD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAc,UAAU,CAAC,CAAC;MAG9C,WAAW,CAAA;AAE/B,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACY,gBAA2C,EAAA;QAA3C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA2B;QAErD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAES,UAAU,GAAA;QAClB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,+BAA+B,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,+BAA+B,EAAE,aAAa,EAAE,8BAA8B,CAAC,CAAC;QAChH,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,4CAA4C,CAAC;KAC/E;8GAlBmB,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;;;ACKJ,MAAO,gBAAiB,SAAQ,WAAW,CAAA;AAE/C,IAAA,WAAA,CACE,gBAA2C,EAAA;QAE3C,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACzB;8GANU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAFhB,CAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAExD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAkB,gBAAA,EAAE,CAAE;AACpE,iBAAA,CAAA;;;ACLM,MAAM,YAAY,GAAG,IAAI,cAAc,CAAkB,cAAc,CAAC,CAAC;MAG1D,eAAe,CAAA;AAInC,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;IAED,WACU,CAAA,gBAAyC,EACzC,OAAoB,EAAA;QADpB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QACzC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;AARvB,QAAA,IAAA,CAAA,SAAS,GAAoB,wBAAwB,CAAC,OAAO,EAAE,CAAC;AAUrE,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAChC;AAEM,IAAA,mBAAmB,CAAC,OAAiC,EAAA;QAC1D,OAAO,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACzH;8GAjBmB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;;ACKJ,MAAO,oBAAqB,SAAQ,eAAe,CAAA;IAEvD,WACI,CAAA,gBAAyC,EACvB,OAAoB,EAAA;AAExC,QAAA,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;KAClC;AAPU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4CAInB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAJT,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAFpB,CAAE,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAE;AAC5E,iBAAA,CAAA;;0BAKM,MAAM;2BAAC,QAAQ,CAAA;;;MCZT,8BAA8B,CAAA;AAKzC,IAAA,WAAA,CACS,MAAyC,EAAA;QAAzC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmC;QAH3C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;KAKnB;AACF;;MCkBY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAjB1B,wBAAwB;YACxB,oBAAoB;YACpB,8BAA8B;YAC9B,4BAA4B;YAC5B,wBAAwB;YACxB,wBAAwB;YACxB,4BAA4B;YAC5B,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAG7B,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,wBAAwB;YACxB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAP1B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAOH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,oBAAoB;wBACpB,8BAA8B;wBAC9B,4BAA4B;wBAC5B,wBAAwB;wBACxB,wBAAwB;wBACxB,4BAA4B;wBAC5B,6BAA6B;AAC9B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;AC3Be,SAAA,sBAAsB,CAAC,QAAe,EAAE,MAAa,EAAA;AAEnE,IAAA,MAAM,UAAU,GAAG,cAAc,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;AACjH,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAE7G,OAAO;AACL,QAAA,MAAM,EAAE,UAAU,GAAG,UAAU,CAAE,CAAC,CAAE,GAAG,QAAQ,CAAC,aAAa;AAC7D,QAAA,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAE,CAAC,CAAE,GAAG,MAAM,CAAC,aAAa;KACxD,CAAA;AACH;;SCTgB,sBAAsB,CAAC,OAAiC,EAAE,SAA0B,EAAE,OAAsB,EAAA;IAC1H,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3I,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACpG,OAAO,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACpF;;MCFsB,cAAc,CAAA;AAApC,IAAA,WAAA,GAAA;AAUkB,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAWnE;IAPQ,sBAAsB,CAAC,SAA0B,EAAE,OAAsB,EAAA;QAC9E,OAAO,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KACrE;AAEM,IAAA,UAAU,CAAC,OAAiC,EAAA;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC3C;AACF;;ACvBM,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAiB,wBAAwB,CAAC,CAAC;AAG7F,MAAgB,cAAe,SAAQ,cAAc,CAAA;AAD3D,IAAA,WAAA,GAAA;;QAKS,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAKrC,KAAA;AAHC,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrE;8GARmB,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;;;ACLJ,SAAU,WAAW,CAAC,OAAiC,EAAA;IAC3D,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3C;;ACEA,IAAIJ,UAAQ,GAAW,CAAC,CAAC;AAanB,MAAO,mBAAoB,SAAQ,cAAc,CAAA;AAQrD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC;KACxC;AAKD,IAAA,IACoB,QAAQ,GAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAoB,QAAQ,CAAC,UAAwC,EAAA;QACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACF;AAID,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACY,gBAAyC,EAAA;AAEnD,QAAA,KAAK,EAAE,CAAC;QAFE,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAhCrC,QAAA,IAAA,CAAA,EAAE,GAAQ,CAAA,aAAA,EAAiBA,UAAQ,EAAG,EAAE,CAAC;QAUzC,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QAejC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;KAUnC;8GAtCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,oCAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAFnB,CAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEzE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAX/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,0BAA0B;AACjC,wBAAA,+BAA+B,EAAE,UAAU;AAC3C,wBAAA,+BAA+B,EAAE,UAAU;AAC3C,wBAAA,sCAAsC,EAAE,iBAAiB;AAC1D,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAqB,mBAAA,EAAE,CAAE;AACrF,iBAAA,CAAA;iGAIiB,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIC,eAAe,EAAA,CAAA;sBADrB,KAAK;uBAAC,iBAAiB,CAAA;gBAQR,QAAQ,EAAA,CAAA;sBADvB,KAAK;uBAAC,oBAAoB,CAAA;gBAIP,QAAQ,EAAA,CAAA;sBAD3B,KAAK;uBAAC,oBAAoB,CAAA;;;AC9BvB,MAAgB,iBAAkB,SAAQ,cAAc,CAAA;AAG7D;;ACFM,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAkB,yBAAyB,CAAC,CAAC;AAGhG,MAAgB,eAAgB,SAAQ,iBAAiB,CAAA;AAD/D,IAAA,WAAA,GAAA;;QAMU,IAAO,CAAA,OAAA,GAAwB,EAAE,CAAC;AAS3C,KAAA;AAPC,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvB;AAEM,IAAA,UAAU,CAAC,OAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;8GAbmB,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;;ACLJ,SAAU,YAAY,CAAC,OAAiC,EAAA;IAC5D,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;;ACEA,IAAIA,UAAQ,GAAW,CAAC,CAAC;AAWnB,MAAO,oBAAqB,SAAQ,eAAe,CAAA;AAWvD,IAAA,IACoB,QAAQ,GAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAoB,QAAQ,CAAC,UAAwC,EAAA;QACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACF;AAOD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAFA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AA/BnC,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,cAAA,EAAkBA,UAAQ,EAAG,EAAE,CAAC;QAG7C,IAAK,CAAA,KAAA,GAAW,OAAO,CAAC;QAGxB,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAe1B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAGpB,IAAsB,CAAA,sBAAA,GAAY,KAAK,CAAA;KAUtD;8GArCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EAFpB,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAE3E,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,gCAAgC,EAAE,UAAU;AAC7C,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAE;AACvF,iBAAA,CAAA;iGAIiB,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIU,KAAK,EAAA,CAAA;sBADpB,KAAK;uBAAC,kBAAkB,CAAA;gBAIT,IAAI,EAAA,CAAA;sBADnB,KAAK;gBAIc,QAAQ,EAAA,CAAA;sBAD3B,KAAK;uBAAC,qBAAqB,CAAA;gBAgBZ,sBAAsB,EAAA,CAAA;sBADrC,KAAK;;;ACtCD,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAkB,yBAAyB,CAAC,CAAC;AAGhG,MAAgB,eAAgB,SAAQ,iBAAiB,CAAA;AAD/D,IAAA,WAAA,GAAA;;QAGS,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAKrC,KAAA;AAHC,IAAA,IAAoB,cAAc,GAAA;QAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;KAC5C;8GANmB,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;;ACLJ,SAAU,YAAY,CAAC,OAAiC,EAAA;IAC5D,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;;ACEA,IAAIA,UAAQ,GAAW,CAAC,CAAC;AAYnB,MAAO,oBAAqB,SAAQ,eAAe,CAAA;AAWvD,IAAA,IACoB,QAAQ,GAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAoB,QAAQ,CAAC,UAAwC,EAAA;QACnE,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACF;AAID,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAFA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AA5BnC,QAAA,IAAA,CAAA,EAAE,GAAQ,CAAA,cAAA,EAAkBA,UAAQ,EAAG,EAAE,CAAC;QAG1C,IAAK,CAAA,KAAA,GAAW,OAAO,CAAC;QAGxB,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAe1B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;KAUnC;8GAlCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EAFpB,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAE3E,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,gCAAgC,EAAE,UAAU;AAC5C,wBAAA,iCAAiC,EAAE,aAAa;AACjD,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAE;AACvF,iBAAA,CAAA;iGAIiB,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIU,KAAK,EAAA,CAAA;sBADpB,KAAK;uBAAC,kBAAkB,CAAA;gBAIT,IAAI,EAAA,CAAA;sBADnB,KAAK;gBAIc,QAAQ,EAAA,CAAA;sBAD3B,KAAK;uBAAC,qBAAqB,CAAA;;;AClBvB,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAY,kBAAkB,CAAC,CAAC;MAE5D,SAAS,CAAA;AAA/B,IAAA,WAAA,GAAA;AAUkB,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAMxD,QAAA,IAAA,CAAA,SAAS,GAAW,eAAe,CAAC,UAAU,EAAE,CAAC;KA+B5D;AA3BQ,IAAA,UAAU,CAAC,OAAiC,EAAA;QACjD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC3C;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC1G;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KACrD;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;KAClD;IAEM,UAAU,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;KAC9D;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACxC;AACF;;MClDY,aAAa,GAAyC,IAAI,cAAc,CAAuB,eAAe,EAAE;MAUhH,oBAAoB,CAAA;AAM/B,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAW,QAAQ,CAAC,UAAwC,EAAA;QAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;KACF;AAID,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;IAED,WACU,CAAA,gBAAyC,EACC,WAAiB,EAAA;QAD3D,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAxBnC,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAiB1D,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAUlC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAlCU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4CA2BrB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGA3Bf,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EAFpB,CAAE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAE,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,gCAAgC,EAAE,UAAU;AAC7C,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAE;AAC7E,iBAAA,CAAA;;0BA4BI,MAAM;2BAAC,gBAAgB,CAAA;;0BAAG,QAAQ;;0BAAI,QAAQ;4CApBtC,QAAQ,EAAA,CAAA;sBADlB,KAAK;uBAAC,qBAAqB,CAAA;;;ACxBxB,SAAU,gBAAgB,CAAC,OAAiC,EAAA;AAChE,IAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAiC,EAAA;AAClE,IAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACnD,IAAA,MAAM,aAAa,GAAI,OAAO,CAAC,aAA6B,CAAC;AAC7D,IAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACvD,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE;AAC/B,QAAA,OAAO,yBAAyB,CAAC,aAAa,CAAC,CAAC;AACjD,KAAA;AACD,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAiC,EAAA;AAC7D,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAgB,CAAC;AACzD,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAiC,EAAA;IAC/D,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC9D;;ACdO,MAAM,0BAA0B,GAAG,IAAI,cAAc,CAAqB,4BAA4B,CAAC,CAAC;MAGzF,kBAAkB,CAAA;AAYtC,IAAA,WAAA,CACE,WAAiB,EAAA;AAXX,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,YAAY,EAAE,CAAC;AAMnD,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAOvD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,wBAAwB,EAAE,CAChC,CAAC;KACH;IAEO,wBAAwB,GAAA;QAC9B,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,UAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC5H,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAEM,MAAM,GAAA;AACX,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAyB,CAAC;AAC3D,QAAA,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE;YAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,CAAI,EAAA,IAAI,CAAC,KAAK,GAAG,KAAM,CAAA,CAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAI,EAAA,IAAI,CAAC,MAAM,GAAG,KAAM,CAAA,CAAE,CAAC,CAAC;AACrE,SAAA;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;8GA5CmB,kBAAkB,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;;;ACgBJ,MAAO,uBAAwB,SAAQ,kBAAkB,CAAA;AAQ7D,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KAC5B;AAED,IAAA,WAAA,CACU,gBAAqD,EACrD,IAAoB,EACsB,WAAiB,EAAA;QAEnE,KAAK,CAAC,WAAW,CAAC,CAAC;QAJX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqC;QACrD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QAfvB,IAAY,CAAA,YAAA,GAAW,GAAG,CAAC;QAG3B,IAAa,CAAA,aAAA,GAAW,GAAG,CAAC;QAgBjC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,mBAAmB,CAAC;KACtD;AAvBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,uEAmBxB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAnBf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,eAAA,EAAA,cAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,uBAAuB,EAAE;AAC9E,SAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBH,yGAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDsBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,YAC/B,YAAY,EAAA,eAAA,EAEL,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,cAAc,EAAE,cAAc;AAC9B,wBAAA,eAAe,EAAE,eAAe;qBACjC,EACU,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,yBAAyB,EAAE;AAC9E,qBAAA,EAAA,QAAA,EAAA,yGAAA,EAAA,CAAA;;0BAqBE,MAAM;2BAAC,gBAAgB,CAAA;;0BAAG,QAAQ;;0BAAI,QAAQ;4CAhB1C,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,eAAe,CAAA;gBAIf,aAAa,EAAA,CAAA;sBADnB,KAAK;uBAAC,gBAAgB,CAAA;;;AEnBzB,IAAIA,UAAQ,GAAW,CAAC,CAAC;AAenB,MAAO,cAAe,SAAQ,SAAS,CAAA;IAW3C,IACoB,QAAQ,CAAC,KAAiB,EAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAED,IAAA,IAAoB,QAAQ,GAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAKD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAFA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AA1BnC,QAAA,IAAA,CAAA,EAAE,GAAQ,CAAA,OAAA,EAAWA,UAAQ,EAAG,EAAE,CAAC;AAmBnC,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAU,CAAC;KAUjF;IAEM,QAAQ,GAAA;QACb,KAAK,CAAC,MAAM,EAAE,CAAC;KAChB;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;8GA5CU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAJd,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;AAC3D,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUa,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAHvB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BhC,yGAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDuBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,YACV,YAAY,EAAA,eAAA,EAEL,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,oBAAoB;qBAC5B,EACU,SAAA,EAAA;AACT,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,gBAAgB,EAAE;AAC3D,qBAAA,EAAA,QAAA,EAAA,yGAAA,EAAA,CAAA;iGAKe,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIU,OAAO,EAAA,CAAA;sBADtB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAIrC,cAAc,EAAA,CAAA;sBAD7B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAItC,QAAQ,EAAA,CAAA;sBAD3B,KAAK;uBAAC,eAAe,CAAA;gBAWN,cAAc,EAAA,CAAA;sBAD7B,MAAM;uBAAC,qBAAqB,CAAA;;;AE/CzB,SAAU,MAAM,CAAC,OAAiC,EAAA;IACtD,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC;;MCCa,WAAW,GAAG,IAAI,cAAc,CAAsB,aAAa,EAAE;MAWrE,mBAAmB,CAAA;AAE9B,IAAA,IAAY,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAID,IAAA,WAAA,CACY,gBAAyC,EAAA;QAAzC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAH7C,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,YAAY,EAAE,CAAC;QAKlD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KACzD;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;AAEM,IAAA,IAAI,CAAC,MAAkC,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;8GAxBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAJnB,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC3D,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,yBAAyB;AACnC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,qBAAqB,EAAE;AAC3D,qBAAA;AACF,iBAAA,CAAA;;;ACRM,MAAM,uBAAuB,GAA8C,IAAI,cAAc,CAA4B,yBAAyB,CAAC,CAAC;MAGrI,yBAAyB,CAAA;AAQtC,IAAA,yBAAyB,CAAC,OAAiC,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC5C,YAAA,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,uBAAuB,CAAC,OAA0B,EAAA;QACvD,OAAO,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;KACtE;AAEM,IAAA,uBAAuB,CAAC,MAAwB,EAAA;QACrD,OAAO,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;KACrE;8GApBmB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;;AAwBM,SAAA,uBAAuB,CAAC,cAAkD,EAAE,MAAwB,EAAA;AAClH,IAAA,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;QACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAC,CAAE,CAAC;AACN,CAAC;AAEe,SAAA,uBAAuB,CAAC,cAAkD,EAAE,OAA0B,EAAA;AACpH,IAAA,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;QACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,KAAC,CAAE,CAAC;AACN;;AC1BM,MAAO,8BAA+B,SAAQ,yBAAyB,CAAA;AAQ3E,IAAA,IAAoB,WAAW,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAFA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;KAGlD;8GAhBU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,wGAF9B,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAI/E,sBAAsB,EAG5B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,2BAA2B,+GCpBxC,qKAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDWa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAT1C,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAE1B,YAAY,EAChB,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,yBAAyB;qBACnC,EACU,SAAA,EAAA,CAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAgC,8BAAA,EAAE,CAAE,EAAA,QAAA,EAAA,qKAAA,EAAA,CAAA;iGAKhF,YAAY,EAAA,CAAA;sBAD3B,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAI9C,eAAe,EAAA,CAAA;sBAD9B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEbpD,SAAU,eAAe,CAAwC,IAAO,EAAA;IAC5E,OAAO,cAAc,IAAI,CAAA;QAEhB,OAAO,CAAC,UAAkB,EAAE,UAAkB,EAAA;AACnD,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAEvC,gBAAA,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAEpG,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnG,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEnG,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtH,aAAA;SACF;AAEM,QAAA,gBAAgB,CAAC,KAAa,EAAA;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC;SACvC;QAEM,SAAS,GAAA;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;SAC9D;AAED,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;KACF,CAAC;AACJ;;AC7BM,SAAU,gBAAgB,CAAwC,IAAO,EAAA;IAC7E,OAAO,cAAc,IAAI,CAAA;AAEhB,QAAA,WAAW,CAAC,IAAW,EAAE,UAAiB,EAAE,MAAgB,EAAA;YACjE,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YACnE,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9D,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAChE,YAAA,IACI,CAAC,mBAAmB,GAAG,UAAU,CAAC,KAAK,IAAI,oBAAoB,GAAG,UAAU,CAAC,MAAM;gBACnF,mBAAmB,GAAG,UAAU,CAAC,KAAK,IAAI,oBAAoB,GAAG,UAAU,CAAC,MAAM,EACpF;gBACA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,mBAAmB,EAAE,UAAU,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC;AACnH,aAAA;AAED,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpI,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEtI,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClE;AAEO,QAAA,2BAA2B,CAAC,MAAgB,EAAA;AAClD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/E,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/E,OAAO,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAClD;AAED,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;KACF,CAAC;AACJ;;AC/BM,SAAU,sBAAsB,CAAwC,IAAO,EAAA;IACnF,OAAO,cAAc,IAAI,CAAA;AAEhB,QAAA,iBAAiB,CAAC,IAAW,EAAE,UAAiB,EAAE,MAAgB,EAAA;YACvE,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YACnE,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9D,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAChE,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAEzB,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpI,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEtI,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClE;AAEO,QAAA,2BAA2B,CAAC,MAAgB,EAAA;AAClD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/E,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/E,OAAO,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAClD;AAED,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;KACF,CAAC;AACJ;;ACpBM,SAAU,mBAAmB,CAAwC,IAAO,EAAA;IAChF,OAAO,cAAc,IAAI,CAAA;QAEhB,WAAW,GAAA;AAChB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAChC;AAEM,QAAA,WAAW,CAAC,QAAgB,EAAA;YACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1D;AAED,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;KACF,CAAC;AACJ;;MC1Ba,iBAAiB,CAAA;IAC1B,WACoB,CAAA,QAAgB,EAChB,KAAa,EAAA;QADb,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;KAEhC;AACJ;;ACOM,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAsB,mBAAmB,CAAC,CAAC;AAE9F,MAAM,UAAU,GAAG,mBAAmB,CACpC,gBAAgB,CACd,sBAAsB,CACpB,eAAe,CACb,MAAA;AACE,IAAA,WAAA,CACS,SAA0B,EAAA;QAA1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAElC;CACF,CAAC,CAAC,CAAC,CAAC,CAAC;AAGR,MAAgB,mBACpB,SAAQ,UAAU,CAAA;AAKlB,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,WAAA,CACU,gBAAyC,EAAA;AAEjD,QAAA,KAAK,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC;QAFlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QAGjD,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAEM,SAAS,GAAA;AACd,QAAA,MAAM,SAAS,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;KACzD;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/F;IAEM,mBAAmB,GAAA;QACxB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC3C,EAAE,GAAG,CAAC,CAAA;KACR;IAEM,YAAY,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACxD,CAAC;KACH;8GAvCmB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;;;ACXJ,MAAO,wBAAyB,SAAQ,mBAAmB,CAAA;IAK/D,IACW,QAAQ,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC7F,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;KACF;IAED,IACW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED,IAAA,WAAA,CACI,gBAAyC,EAAA;QAE3C,KAAK,CAAC,gBAAgB,CAAC,CAAC;AArBV,QAAA,IAAA,CAAA,YAAY,GAAoC,IAAI,YAAY,EAAqB,CAAC;KAsBrG;8GAzBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAFxB,CAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAE,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEzE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,mBAAmB;AAC7B,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAA0B,wBAAA,EAAE,CAAE;AACrF,iBAAA,CAAA;iGAIiB,YAAY,EAAA,CAAA;sBAD3B,MAAM;gBAII,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAWK,KAAK,EAAA,CAAA;sBADf,KAAK;;;AC1BD,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAsB,mBAAmB,CAAC,CAAC;MAGxE,mBAAmB,CAAA;AAsBvC,IAAA,WAAA,CAEU,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAlBR,QAAA,IAAA,CAAA,YAAY,GAAqB,KAAK,CAAC,MAAK;AAC1D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAE1B,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CACvB,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAChG,CAAC;AACH,aAAA;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAC9B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CACnC,CAAC;AACJ,SAAC,CAAqB,CAAC;KAMtB;AAEM,IAAA,QAAQ,CAAC,OAAiC,EAAA;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC5B,YAAA,OAAO,CAAC,CAAC,UAAW,CAAC,OAAO,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,iBAAiB,CAAC,IAAe,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AACtC,QAAA,MAAM,WAAW,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9E,QAAA,IAAI,WAAW,KAAK,aAAa,GAAG,CAAC,EAAE;YACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACvD,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;8GA7CmB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;;;ACOJ,MAAO,wBAAyB,SAAQ,mBAAmB,CAAA;AAE/D,IAAA,IAAoB,WAAW,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;IAKD,WACU,CAAA,gBAAyC,EACjD,MAAc,EAAA;QAEd,KAAK,CAAC,MAAM,CAAC,CAAC;QAHN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;KAIlD;8GAdU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAFxB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,CAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAE,EAQnE,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAgB,iGCrBnC,4HAGA,EAAA,CAAA,CAAA,EAAA;;2FDYa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAEpB,YAAY,EAChB,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,mBAAmB;qBAC7B,EACU,SAAA,EAAA,CAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAA0B,wBAAA,EAAE,CAAE,EAAA,QAAA,EAAA,4HAAA,EAAA,CAAA;sHASpE,MAAM,EAAA,CAAA;sBADrB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;AErB1D,IAAY,cAiBX,CAAA;AAjBD,CAAA,UAAY,cAAc,EAAA;AAExB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AAEb,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAE3C,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AAEnC,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAEzB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AAEjB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAE7B,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AAEnB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EAjBW,cAAc,KAAd,cAAc,GAiBzB,EAAA,CAAA,CAAA;;MCZY,mBAAmB,CAAA;AAM9B,IAAA,WAAA,CACY,eAAoC,EAAA;QAApC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;AALhC,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM,CAAC;AAErD,QAAA,IAAA,CAAA,qBAAqB,GAAW,eAAe,CAAC,UAAU,EAAE,CAAC;QAKnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;KACtE;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;KAC/B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;AACF;;MCrBY,0BAA0B,CAAA;AAGrC,IAAA,WAAA,CACU,WAA4B,EAC5B,eAAoC,EACpC,WAA0B,EAAA;QAF1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;QAC5B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;QACpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAEnC;AAEM,IAAA,MAAM,CAAC,OAAmC,EAAA;AAC/C,QAAA,IAAI,MAAgC,CAAC;QAErC,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/G,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE;AAC1G,YAAA,MAAM,GAAG;AACP,gBAAA,kBAAkB,EAAE,CAAC;AACrB,gBAAA,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,gBAAA,cAAc,EAAE;AACd,oBAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC9C,iBAAA;aACF,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MChCY,0BAA0B,CAAA;AAErC,IAAA,WAAA,CACS,KAAoB,EAAA;QAApB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAE5B;AACF;;MCLY,oCAAoC,CAAA;IAE/C,WACS,CAAA,KAAoB,EACpB,SAA0B,EAAA;QAD1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAElC;AACF;;MCIY,6BAA6B,CAAA;AAOxC,IAAA,WAAA,CACS,UAA8D,EAC7D,cAAsB,EAC9B,SAA0B,EAC1B,WAA0B,EAAA;QAHnB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoD;QAC7D,IAAc,CAAA,cAAA,GAAd,cAAc,CAAQ;AAPhB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,eAAe,CAAC;AAErD,QAAA,IAAA,CAAA,8BAA8B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,4BAA4B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAQjF,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpH,IAAI,CAAC,4BAA4B,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACnH;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5B;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,sBAAsB,CACnC,IAAI,CAAC,8BAA8B,EACnC,OAAO,CACR,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KAChC;AACF;;MC7CY,4CAA4C,CAAA;AAGvD,IAAA,WAAA,CACU,KAAgB,EAAA;QAAhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;KAEzB;AAEM,IAAA,MAAM,CAAC,OAAqD,EAAA;AACjE,QAAA,IAAI,MAAmC,CAAC;AAExC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACpD,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;AAC5D,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,GAAG,aAAa,CAAE,CAAC,CAAE,CAAC;AAC7B,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MC5BY,4CAA4C,CAAA;AAEvD,IAAA,WAAA,CACW,MAAuB,EAAA;QAAvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;KAEjC;AACF;;MCQY,6BAA6B,CAAA;AAGxC,IAAA,IAAY,qBAAqB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;KACzC;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KACnC;IAED,WACY,CAAA,KAAgB,EAChB,WAA0B,EAAA;QAD1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAErC;AAEM,IAAA,MAAM,CAAC,OAA6C,EAAA;AACzD,QAAA,IAAI,MAAgC,CAAC;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/G,QAAA,IAAI,IAAI,EAAE;YAER,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC7C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC3C,oBAAA,OAAO,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC7D,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrC,iBAAA;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACrF,gBAAA,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAE/B,IAAI,MAAM,CAAC,cAAc,EAAE;oBACzB,IAAI,MAAM,CAAC,sBAAsB,EAAE;wBACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC1C,wBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;AACtG,wBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1C,wBAAA,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/F,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,MAAM,GAAG,IAAI,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9E,IAAI,4CAA4C,CAAC,MAAM,CAAC,CAC3D,CAAC;wBACF,IAAI,CAAC,MAAM,EAAE;AACX,4BAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrC,yBAAA;AAED,wBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;AACtG,wBAAA,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/F,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;AAC/D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC3C,oBAAA,OAAO,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC7D,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrC,iBAAA;gBACD,IAAI,MAAM,CAAC,cAAc,EAAE;AACzB,oBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;AACtG,oBAAA,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/F,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,uBAAuB,CAC3B,OAA6C,EAC7C,uBAA8B,EAC9B,MAAyC,EACzC,YAAoB,EAAA;;AAItB,QAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,8BAA8B,CAAC,MAAM,CAAC,CAAC;QAE/F,OAAO;AACL,YAAA,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK;YAC3C,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3E,YAAA,cAAc,EAAE;AACd,gBAAA,IAAI,6BAA6B,CAC7B,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAChG;AACF,aAAA;SACF,CAAC;KACH;IAEO,YAAY,CAAC,aAA0B,EAAE,IAAe,EAAA;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACjF,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;KACvD;AACF;;MCzGY,+CAA+C,CAAA;AAG1D,IAAA,WAAA,CACU,KAAgB,EAAA;QAAhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;KAEzB;AAEM,IAAA,MAAM,CAAC,OAAwD,EAAA;QACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAkB,CAAC;QAE9F,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7E,SAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAgB,CAAC;QAErC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC7B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;gBAC7E,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,cAAc,CAAC;AAC5C,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MC7BY,+CAA+C,CAAA;AAE1D,IAAA,WAAA,CACW,KAAoB,EAAA;QAApB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAE9B;AACF;;MCFY,yBAAyB,CAAA;AAGpC,IAAA,WAAA,CACU,KAAgB,EAAA;QAAhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;KAEzB;AAEM,IAAA,MAAM,CAAC,OAAkC,EAAA;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAkB,CAAC;QAC9F,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YACpF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAE,CAAA;AAC9D,SAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;AACF;;MCnBY,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACW,KAAoB,EAAA;QAApB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAE9B;AACF;;MCJY,6BAA6B,CAAA;IAExC,WACS,CAAA,KAAoB,EACpB,WAA4E,EAAA;QAD5E,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiE;KAEpF;AACF;;MCFY,6BAA6B,CAAA;AAGxC,IAAA,WAAA,CACU,KAAgB,EAAA;QAAhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;KAEzB;AAEM,IAAA,MAAM,CAAC,OAAsC,EAAA;QAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/D,QAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9F,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1I,YAAA,OAAO,UAAU,EAAE,WAAW,KAAK,UAAU,EAAE,WAAW,CAAC;AAC7D,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,qBAAqB,CAAC,OAAsC,EAAA;QAClE,IAAI,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC3D,IAAI,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,CAC7C,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,+CAA+C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAClF,IAAI,+CAA+C,CAAC,OAAO,CAAC,KAAK,CAAC,CACnE,CAAC;AAEF,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;AAChD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MC1CY,qBAAqB,CAAA;IAEhC,WACS,CAAA,QAAW,EACX,OAAU,EAAA;QADV,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAG;QACX,IAAO,CAAA,OAAA,GAAP,OAAO,CAAG;KAElB;AACF;;MCMY,2BAA2B,CAAA;IAGtC,WACU,CAAA,KAAgB,EAChB,kBAAuD,EAAA;QADvD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAqC;KAEhE;AAEM,IAAA,MAAM,CAAC,OAA2C,EAAA;QACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,CAAC,CAAC;AACrH,QAAA,IAAI,kBAAkB,EAAE;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAAmC,CAAC;YAEzF,MAAM,kBAAkB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC7E,IAAI,6BAA6B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,YAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,MAAM,GAAkD,OAAO,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC;gBAE9F,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,gBAAA,IAAI,QAAQ,EAAE;AAEZ,oBAAA,MAAM,GAAG,IAAI,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC1E,IAAI,4CAA4C,CAAC,MAAyB,CAAC,CAC5E,CAAC;oBACF,IAAI,CAAC,MAAM,EAAE;AACX,wBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrC,qBAAA;AACF,iBAAA;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAE,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACjG,aAAA;YACD,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAA;KACF;AACF;;MC9CY,kCAAkC,CAAA;IAE7C,WACW,CAAA,KAAoB,EACpB,WAAyB,EAAA;QADzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;KAEnC;AACF;;MCHY,+BAA+B,CAAA;AAO1C,IAAA,WAAA,CACS,UAA4C,EAC3C,eAAgC,EAChC,UAAyB,EAAA;QAF1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkC;QAC3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAe;AARnB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,mBAAmB,CAAC;AAEzD,QAAA,IAAA,CAAA,8BAA8B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,4BAA4B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAOjF,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,4BAA4B,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACvI;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QAEtF,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;AAEnF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;QACb,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvH,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrH,MAAM,MAAM,GAAG,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAE1E,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KAChC;AACF;;MClCY,+BAA+B,CAAA;AAG1C,IAAA,IAAY,qBAAqB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;KACzC;IAED,WACU,CAAA,KAAgB,EAChB,WAA0B,EAAA;QAD1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAEnC;AAEM,IAAA,MAAM,CAAC,OAA+C,EAAA;AAC3D,QAAA,IAAI,MAAgC,CAAC;QAErC,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvE,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACxD,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAC1I,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,oBAAkE,CAAC;QACvE,IAAI,wBAAwB,CAAC,MAAM,EAAE;AACnC,YAAA,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,wBAAwB,CAAE,CAAC,CAAiB,CAAC,CAAC;AAC3H,SAAA;QAED,IAAI,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE;AAC7D,YAAA,MAAM,GAAG;AACP,gBAAA,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK;gBAC3C,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3E,gBAAA,cAAc,EAAE;oBACd,IAAI,+BAA+B,CACjC,oBAAoB,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAC1D;AACF,iBAAA;aACF,CAAA;AACF,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MClDY,sCAAsC,CAAA;IAEjD,WACW,CAAA,KAAoB,EACpB,SAA0B,EAAA;QAD1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAEpC;AACF;;MCTY,uBAAuB,CAAA;AAElC,IAAA,WAAA,CACS,YAAe,EACf,QAAW,EACX,UAAa,EACb,UAAa,EAAA;QAHb,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAG;QACf,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAG;QACX,IAAU,CAAA,UAAA,GAAV,UAAU,CAAG;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAG;KAErB;AACF;;MCAY,6BAA6B,CAAA;IAGxC,WACU,CAAA,KAAgB,EAChB,oBAA2D,EAAA;QAD3D,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAuC;KAEpE;AAEM,IAAA,MAAM,CAAC,OAA6C,EAAA;AACzD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAC3H,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAAqC,CAAC;YAE3F,MAAM,kBAAkB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC7E,IAAI,6BAA6B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAC1D,CAAC;AACF,YAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAEhC,YAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,kBAAkB,CAAE,CAAC,CAAE,EAAE,EAAE,EAAE;AAExE,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,IAAI,uBAAuB,CACzB,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC3D,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EACpC,kBAAkB,CAAE,CAAC,CAAE,EAAE,EAAE,CAC5B,CACF,CAAC;AACH,iBAAA;AACF,aAAA;YACD,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAA;KACF;AACF;;MC1CY,oCAAoC,CAAA;IAE/C,WACW,CAAA,KAAoB,EACpB,WAAyB,EAAA;QADzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;KAEnC;AACF;;MCPY,kBAAkB,CAAA;IAGtB,MAAM,GAAA;QAEX,OAAO;AACL,YAAA,kBAAkB,EAAE,CAAC;AACrB,YAAA,qBAAqB,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,YAAA,cAAc,EAAE,EAAE;SACnB,CAAC;KACH;AACF;;MCZY,gCAAgC,CAAA;AAE3C,IAAA,WAAA,CACS,KAAoB,EAAA;QAApB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAE5B;AACF;;ACLM,MAAM,eAAe,GAAG,IAAI,cAAc,CAAoB,iBAAiB,CAAC,CAAC;MAGlE,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;;;ACLJ,SAAU,cAAc,CAAC,OAAiC,EAAA;IAC9D,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC9C,CAAC;AAEK,SAAU,eAAe,CAAC,OAAiC,EAAA;AAC/D,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAA6B,CAAC;AACxE;;MCFa,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;QAGU,IAAK,CAAA,KAAA,GAAwB,EAAE,CAAC;AAgBzC,KAAA;AAdQ,IAAA,YAAY,CAAC,IAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAEM,IAAA,OAAO,CAAC,OAAiC,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC;KAC9D;AAEM,IAAA,UAAU,CAAC,IAAuB,EAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,SAAA;KACF;8GAjBU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACCX,IAAIL,UAAQ,GAAW,CAAC,CAAC;AAYnB,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAK3D,IAAA,IAAoB,WAAW,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;IAKD,WACU,CAAA,gBAAyC,EACzC,oBAA0C,EAAA;AAElD,QAAA,KAAK,EAAE,CAAC;QAHA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QACzC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAXpC,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,gBAAA,EAAoBA,UAAQ,EAAG,EAAE,CAAC;KAc9D;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC9C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC5C;8GAzBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAJtB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE;AAClE,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,6BAA6B;AACrC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,wBAAwB,EAAE;AAClE,qBAAA;AACF,iBAAA,CAAA;iIAIiB,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAQU,IAAI,EAAA,CAAA;sBADnB,KAAK;;;MCpBK,gCAAgC,CAAA;AAU3C,IAAA,WAAA,CACS,YAA+B,EAAA;QAA/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAmB;AATxB,QAAA,IAAA,CAAA,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC;AAI3C,QAAA,IAAA,CAAA,iBAAiB,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAEvD,QAAA,IAAA,CAAA,UAAU,GAAW,eAAe,CAAC,UAAU,EAAE,CAAC;KAKzD;AAEO,IAAA,QAAQ,CAAC,QAAgB,EAAA;QAC/B,OAAO,CAAA,0DAAA,EAA8D,QAAQ,CAAC,CAAE,OAAQ,QAAQ,CAAC,CAAE,CAAA,GAAA,CAAK,CAAC;KAC1G;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACrF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7C;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,WAAY,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;IAEM,kBAAkB,GAAA;QACvB,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;KACtD;IAEM,QAAQ,GAAA;QACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;KAC9C;AACF;;MCnCY,gCAAgC,CAAA;IAG3C,WACU,CAAA,oBAA0C,EAC1C,WAA0B,EAAA;QAD1B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAEnC;AAEM,IAAA,MAAM,CAAC,OAAyC,EAAA;AACrD,QAAA,IAAI,MAAgC,CAAC;QACrC,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC/C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC5C,aAAA;YAED,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/G,YAAA,MAAM,GAAG;AACP,gBAAA,kBAAkB,EAAE,CAAC;AACrB,gBAAA,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,gBAAA,cAAc,EAAE;oBACd,IAAI,gCAAgC,CAAC,IAAI,CAAC;AAC3C,iBAAA;aACF,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MCnCY,eAAe,CAAA;IAE1B,WACS,CAAA,IAAW,EACX,IAAW,EAAA;QADX,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAO;QACX,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAO;KAEnB;AACF;;MCDY,8BAA8B,CAAA;IAGzC,WACU,CAAA,KAAgB,EAChB,YAA2C,EAAA;QAD3C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA+B;KAEpD;AAEM,IAAA,MAAM,CAAC,OAAuC,EAAA;QACnD,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrH,IAAI,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAEpI,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,CAAC,CAAC;AAEjH,QAAA,IAAI,iBAAiB,EAAE;YACrB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAAsC,CAAA;AAC/F,YAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE7B,YAAA,MAAM,qBAAqB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjK,YAAA,IAAI,qBAAqB,EAAE;gBACzB,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,WAAY,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpH,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CACjE,CAAC;AACH,aAAA;YACD,WAAW,CAAC,QAAQ,EAAE,CAAC;AACxB,SAAA;KACF;AACF;;MClCY,8BAA8B,CAAA;IAEzC,WACS,CAAA,KAAoB,EACpB,WAAyB,EAAA;QADzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;KAEjC;AACF;;MCPY,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CACS,KAAoB,EACpB,SAA0B,EAC1B,aAA4B,EAC5B,oBAA6B,KAAK,EAAA;QAHlC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAC1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAiB;KAE1C;AACF;;MCLY,sBAAsB,CAAA;AAMjC,IAAA,WAAA,CACS,UAA4C,EACnD,eAAgC,EAChC,UAAyB,EAAA;QAFlB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkC;AALrC,QAAA,IAAA,CAAA,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC;AAEzC,QAAA,IAAA,CAAA,mBAAmB,GAAY,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAOnE,QAAA,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAC/C,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,EAClF,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CACnF,CAAC;KACH;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnF,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;KACd;AACF;;MC9BY,4BAA4B,CAAA;AAOvC,IAAA,WAAA,CACU,UAA4C,EACpD,eAAgC,EAChC,UAAyB,EAAA;QAFjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkC;AANtC,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,UAAU,CAAC;AAEhD,QAAA,IAAA,CAAA,8BAA8B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,4BAA4B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAOjF,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;KACxH;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;KACd;AACF;;MC5BY,4BAA4B,CAAA;AAOvC,IAAA,WAAA,CACU,UAA4C,EACpD,eAAgC,EAChC,UAAyB,EAAA;QAFjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkC;AANtC,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,UAAU,CAAC;AAEhD,QAAA,IAAA,CAAA,8BAA8B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,4BAA4B,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAOjF,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;KACxH;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;KACd;AACF;;MC7BY,iBAAiB,CAAA;IAM5B,WACU,CAAA,cAAmD,EACpD,KAAgB,EAAA;QADf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqC;QACpD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;AANT,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,qBAAqB,GAAW,eAAe,CAAC,UAAU,EAAE,CAAC;QAMnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KAClD;IAEM,UAAU,GAAA;KAChB;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;KACzC;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;KAC3B;AACF;;MCdY,iBAAiB,CAAA;AAG5B,IAAA,IAAY,qBAAqB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;KACzC;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KACnC;AAED,IAAA,WAAA,CACY,cAAmD,EACnD,KAAgB,EAChB,WAA0B,EAAA;QAF1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqC;QACnD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAErC;AAEM,IAAA,MAAM,CAAC,OAAiC,EAAA;AAC7C,QAAA,IAAI,MAAgC,CAAC;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxE,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/G,QAAA,IAAI,IAAI,EAAE;YACR,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,iBAAiB,EAAE;AACtE,oBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,iBAAA;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAK,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAqB,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;gBAE1F,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AAC5C,oBAAA,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC;AACxC,iBAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAM,CAAuB,CAAC,KAAK,CAAC,CAAC;AAE9C,gBAAA,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAErF,gBAAA,MAAM,GAAG;AACP,oBAAA,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK;oBAC3C,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3E,oBAAA,cAAc,EAAE,WAAW;iBAC5B,CAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,qCAAqC,CAAC,OAAiC,EAAA;QAC7E,IAAI,WAAW,GAAqB,EAAE,CAAC;QAEvC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACpD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAgB,CAAC;QAErC,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACjG,WAAW,GAAG,gBAAgB,CAAC;QAE/B,MAAM,UAAU,GAAsB,aAAa,CAAC,MAAM,CAAC,CAAC,MAAyB,EAAE,CAAY,KAAI;YACrG,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjD,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,SAAS,GAAqB,aAAa,CAAC,MAAM,CAAC,CAAC,MAAwB,EAAE,CAAY,KAAI;YAClG,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AACvC,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACxH,YAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,KAAM,CAAC,EAAE;AACxC,oBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACtF,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5F,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACtH,YAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAC7B,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAO,CAAC,MAA0B,CAAC,EAAE;AAC7D,oBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,IAAK,CAA4B,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACzI,oBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,wBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACtF,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5F,iBAAA;AACH,aAAC,CAAC,CAAC;;AAEL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,WAAW,CAAC;KACpB;AAEO,IAAA,gBAAgB,CAAC,IAAe,EAAA;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KAClF;AAEO,IAAA,iBAAiB,CAAC,IAAe,EAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KACnF;AACF;;MChHY,eAAe,CAAA;AAG1B,IAAA,WAAA,CACU,cAAmD,EACnD,mBAA6D,EAC9D,WAA0B,EAAA;QAFzB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqC;QACnD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA0C;QAC9D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAElC;AAEM,IAAA,MAAM,CAAC,OAA+B,EAAA;QAC3C,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/G,IAAI,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAEpI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAEnG,QAAA,IAAI,WAAW,EAAE;YACf,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACnF,YAAA,IAAI,mBAAmB,EAAE;AACvB,gBAAA,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAS,IAAI,UAAU,CAAC,CAAC,CAAC;AACzH,gBAAA,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAS,IAAI,UAAU,CAAC,CAAC,CAAC;AAC1H,aAAA;YAED,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC/C,gBAAA,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACf,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;AACjC,SAAA;KACF;AACF;;MClCY,sBAAsB,CAAA;IAEjC,WACS,CAAA,KAAoB,EACpB,WAAyB,EAAA;QADzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;KAEjC;AACF;;MCHY,sBAAsB,CAAA;IAQjC,WACY,CAAA,KAAgB,EAChB,UAA2C,EAC3C,eAA8B,EAC9B,qBAAgC,GAAA,eAAe,CAAC,UAAU,EAAE,EAAA;QAH5D,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiC;QAC3C,IAAe,CAAA,eAAA,GAAf,eAAe,CAAe;QAC9B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuC;AAVxD,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,SAAS,CAAC;QAEzD,IAAa,CAAA,aAAA,GAAkB,EAAE,CAAC;QAEjC,IAAK,CAAA,KAAA,GAA4C,EAAE,CAAC;AAQ1D,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvD,OAAO;AACL,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;aACrF,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACnE,OAAO;AACL,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;aAC3F,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAE,GAAG,SAAS,EAAE,GAAG,SAAS,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;YACvD,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACJ;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KAC/E;AAEM,IAAA,IAAI,CAAC,UAAkB,EAAA;AAC5B,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAEjF,QAAA,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzE,QAAA,MAAM,CAAC,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxB,IACI,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAChG;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;KACvD;AACF;;MC9DY,sBAAsB,CAAA;AAEjC,IAAA,WAAA,CACY,KAAgB,EAChB,UAA2C,EAC3C,WAA0B,EAAA;QAF1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiC;QAC3C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAErC;AAEM,IAAA,MAAM,CAAC,OAAsC,EAAA;QAClD,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/G,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE3G,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;gBAC5G,CAAC,CAAC,QAAQ,EAAE,CAAC;AACd,aAAA;AACH,SAAC,CAAC,CAAC;QACH,MAAM,aAAa,GACf,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;YACjE,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzC,oBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,iBAAA;AACF,aAAA;AAEF,SAAA;AAAM,aAAA,IAAI,UAAU,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC/C,gBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,aAAA;AACF,SAAA;QACD,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAClC,YAAA,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE;gBACnB,CAAC,CAAC,MAAM,EAAE,CAAC;AACZ,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,cAAc,GAAqB,EAAE,CAAC;QAC1C,IAAI,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE,YAAA,cAAc,GAAG;AACf,gBAAA,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,uBAAuB,CAAC;aACxG,CAAC;AACH,SAAA;QACD,OAAO;AACL,YAAA,kBAAkB,EAAE,CAAC;AACrB,YAAA,qBAAqB,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,YAAA,cAAc,EAAE,cAAc;YAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAA;KACF;AACF;;MClEY,6BAA6B,CAAA;AAExC,IAAA,WAAA,CACS,KAAoB,EACpB,SAA0B,EAC1B,aAA4B,EAAA;QAF5B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;QAC1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAEpC;AACF;;MCLY,oBAAoB,CAAA;AAG/B,IAAA,WAAA,CACW,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;KAEpC;AAEM,IAAA,MAAM,CAAC,OAAoC,EAAA;AAChD,QAAA,IAAI,MAAM,GAAkB,OAAO,CAAC,aAAa,CAAC;QAClD,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/G,IAAI,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAEpI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,SAAS,CAAC,CAAC;AAExG,QAAA,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC/C,gBAAA,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACf,aAAC,CAAC,CAAC;YACH,MAAM,GAAI,OAAO,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAA6B,CAAC,aAAa,CAAC;AAC5F,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MC1BY,2BAA2B,CAAA;AAEtC,IAAA,WAAA,CACS,KAAoB,EACpB,WAAyB,EACzB,aAA4B,EAAA;QAF5B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;QACzB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAEpC;AACF;;MCPY,iBAAiB,CAAA;AAI5B,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC;KAChC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAM,CAAC,SAAS,CAAC;KAC9B;AAED,IAAA,WAAA,GAAA;KAEC;AAEM,IAAA,OAAO,CAAC,KAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAEM,IAAA,aAAa,CAAC,KAAmB,EAAA;KAEvC;8GAtBU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACmCJ,MAAM,eAAe,GAAG,IAAI,cAAc,CAAiB,iBAAiB,CAAC,CAAC;AAG/E,MAAgB,cAAe,SAAQ,gBAAgB,CAAA;AAI3D,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;KACvC;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KACnC;AAED,IAAA,IAAY,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAC/B;IAuBD,WACY,CAAA,KAAgB,EAChB,WAA8B,EAC9B,oBAA0C,EAC5C,gBAA2C,EACnD,MAAc,EAAA;QAEd,KAAK,CAAC,MAAM,CAAC,CAAC;QANJ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;QAC9B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA2B;AA3C7C,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,YAAY,EAAE,CAAC;AAkBlD,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC;QAmB9D,IAAa,CAAA,aAAA,GAAkB,EAAE,CAAC;QAUxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;IAEM,eAAe,GAAA;AACpB,QAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KAC3G;AAEe,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChD,QAAA,IAAI,MAAM,GAAY,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CACzC,IAAI,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAC7E,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;AAEnD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACvD,IAAI,sCAAsC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAClE,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACnD,IAAI,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAChE,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnC,IAAI,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CACxE,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACvC,IAAI,0BAA0B,CAAC,KAAK,CAAC,CACtC,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACnD,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAC5C,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9E,QAAA,MAAM,UAAU,GAAG,aAAa,IAAI,kBAAkB,IAAI,gBAAgB,IAAI,QAAQ,IAAI,UAAU,IAAI,gBAAgB,CAAC;QACzH,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,GAAG,KAAK,CAAC;AAChB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEkB,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAChG,QAAA,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrC,IAAI,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAC7E,CAAC;AACJ,SAAA;QACD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAEe,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChD,QAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvG,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAChI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAEe,IAAA,WAAW,CAAC,KAAoB,EAAA;QAC9C,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAC7E,IAAI,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAClE,CAAC;QAEF,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CACzE,IAAI,kCAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAChE,CAAC;QAEF,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CACzF,IAAI,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CACpD,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CACpE,IAAI,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAC7E,CAAC;QAEF,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CACtE,IAAI,8BAA8B,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAC5D,CAAC;KACH;IAEM,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;8GApJmB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;;;ACtCV,MAAMC,iBAAe,GAAG,EAAE,CAAC;AAEX,SAAA,wBAAwB,CAAC,QAAiB,EAAE,MAAa,EAAA;AACvE,IAAA,IAAI,OAA2B,CAAC;AAChC,IAAA,IAAI,WAA+B,CAAC;AAEpC,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACjE,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9E,QAAA,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAEnF,QAAA,IACI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAIA,iBAAe;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAIA,iBAAe;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAIA,iBAAe;AACjD,YAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAIA,iBAAe;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAIA,iBAAe,EACjD;AACA,YAAA,IAAI,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvF,WAAW,GAAG,oBAAoB,CAAC;AACnC,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACtD,WAAW,GAAG,gBAAgB,CAAC;AAC/B,gBAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACrB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACxD,WAAW,GAAG,kBAAkB,CAAC;gBACjC,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,GAAG,iBAAiB,CAAC;gBAChC,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,GAAG,iBAAiB,CAAC;AAChC,gBAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACrB,aAAA;AACF,SAAA;AACF,KAAA;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnD;;AC3CA,MAAM,eAAe,GAAG,EAAE,CAAC;AAEX,SAAA,wBAAwB,CAAC,QAAiB,EAAE,MAAa,EAAA;AACvE,IAAA,IAAI,OAA2B,CAAC;AAChC,IAAA,IAAI,WAA+B,CAAC;AAEpC,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5C,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAClE,QAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9E,QAAA,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;QACjE,MAAM,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvF,QAAA,IACI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,eAAe;AAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,eAAe;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,eAAe;AACjD,YAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,eAAe;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,eAAe,EACnD;AACA,YAAA,IAAI,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvF,WAAW,GAAG,oBAAoB,CAAC;AACnC,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACpD,WAAW,GAAG,cAAc,CAAC;AAC7B,gBAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACrB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBAC1D,WAAW,GAAG,oBAAoB,CAAC;gBACnC,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACtC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,GAAG,iBAAiB,CAAC;gBAChC,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACtC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,GAAG,iBAAiB,CAAC;AAChC,gBAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACrB,aAAA;AACF,SAAA;AACF,KAAA;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnD;;MC1Ca,gBAAgB,GAAG,IAAI,cAAc,CAA0B,kBAAkB,EAAE;MAWnF,uBAAuB,CAAA;AAElC,IAAA,IAAY,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAYD,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC;KAC7C;IAED,WACoC,CAAA,KAAgB,EAC1C,gBAAyC,EAAA;QADf,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAC1C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAhB3C,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,YAAY,EAAE,CAAC;AAEnD,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,IAAI,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;AAE1C,QAAA,IAAA,CAAA,eAAe,GAAU,cAAc,CAAC,UAAU,EAAE,CAAC;QAErD,IAAK,CAAA,KAAA,GAAY,EAAE,CAAC;QAU1B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC9D;IAEM,UAAU,CAAC,QAAqB,EAAE,YAAyB,EAAA;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC9C,YAAA,OAAO,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACvF,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9D,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACpD,YAAA,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC7C,YAAA,OAAO,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACvF,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,MAAM,CAAC,UAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACpC;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAChH,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAChH,gBAAA,EAAE,EAAE,CAAC;AACL,gBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACrB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,EAAE,EAAE,CAAC;AACL,gBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACnB,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAChH,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACjH,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;KACF;AAEM,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AAC7C,QAAA,IAAI,MAAM,GAAyB;YACjC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClD,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;SACnD,CAAC;AACF,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAA,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC;KACf;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;AA1FU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAqBxB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AArBf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACpE,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,8BAA8B;AACxC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,yBAAyB,EAAE;AACpE,qBAAA;AACF,iBAAA,CAAA;;0BAsBI,MAAM;2BAAC,gBAAgB,CAAA;;;ACrBtB,MAAO,mBAAoB,SAAQ,cAAc,CAAA;IAuBrD,WAC4B,CAAA,KAAgB,EAC1C,WAA8B,EAC9B,oBAA0C,EAC1C,gBAA2C,EAC3C,MAAc,EAAA;QAEd,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QA3B5D,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAY1B,QAAA,IAAA,CAAA,kBAAkB,GAAwC,IAAI,YAAY,EAAyB,CAAC;AAGpG,QAAA,IAAA,CAAA,oBAAoB,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAG1G,QAAA,IAAA,CAAA,YAAY,GAAkC,IAAI,YAAY,EAAmB,CAAC;KAUjG;AA/BU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAwBpB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAxBf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAJnB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC/D,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOa,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGtB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAXd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,qBAAqB,EAAE;AAC/D,qBAAA;AACF,iBAAA,CAAA;;0BAyBI,MAAM;2BAAC,gBAAgB,CAAA;uJArBV,QAAQ,EAAA,CAAA;sBADvB,KAAK;gBAIU,cAAc,EAAA,CAAA;sBAD7B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIhC,mBAAmB,EAAA,CAAA;sBADlC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAItC,UAAU,EAAA,CAAA;sBADzB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI3B,kBAAkB,EAAA,CAAA;sBADjC,MAAM;gBAIS,oBAAoB,EAAA,CAAA;sBADnC,MAAM;gBAIS,YAAY,EAAA,CAAA;sBAD3B,MAAM;;;MCPI,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAnBzB,mBAAmB;YACnB,sBAAsB;YACtB,uBAAuB;YACvB,mBAAmB;AACnB,YAAA,4BAA4B,aAQ5B,mBAAmB;YACnB,sBAAsB;YACtB,uBAAuB;YACvB,mBAAmB;YACnB,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAGnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAZhB,SAAA,EAAA;YACT,oBAAoB;YACpB,iBAAiB;AAClB,SAAA,EAAA,CAAA,CAAA,EAAA;;2FASU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,oBAAoB;wBACpB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,4BAA4B;AAC7B,qBAAA;AACF,iBAAA,CAAA;;;MCnBY,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACU,WAA+C,EAC/C,KAAgB,EAChB,eAAoC,EAAA;QAFpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoC;QAC/C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;KAE7C;AAEM,IAAA,MAAM,CAAC,OAAkC,EAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAI,OAAO,CAAC,cAAc,CAAE,CAAC,CAAwB,CAAC,KAAK,CAAC;QAEvE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAElD,QAAA,MAAM,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC/E,MAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;YAC3D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,yBAAyB,IAAI,YAAY,CAAC,MAAM,EAAE;AAC1G,YAAA,MAAM,MAAM,GAAG,aAAa,CAAE,CAAC,CAAE,CAAC;AAClC,YAAA,MAAM,KAAK,GAAG,YAAY,CAAE,CAAC,CAAE,CAAC;AAChC,YAAA,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAE,MAAM,CAAE,CAAC,CAAC;AAClF,YAAA,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAE,KAAK,CAAE,CAAC,CAAC;YACjF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxE,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEzD,gBAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;;;;;;AAOzC,aAAA;AACF,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,OAAkC,EAAA;QACvD,MAAM,MAAM,GACV,OAAO,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC;YACpC,OAAO,EAAE,cAAc,CAAE,CAAC,CAAE,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC;AAE5D,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,iBAAiB,CAAC,IAAe,EAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KACzE;AAEO,IAAA,gBAAgB,CAAC,IAAe,EAAA;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KACxE;AAEO,IAAA,wBAAwB,CAAC,IAAe,EAAA;QAC9C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;YACnC,MAAM,YAAY,GAAG,cAAc,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvG,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,CAAA;AACxC,SAAC,CAAC,CAAC;KACJ;AACF;;MCzEY,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACkB,cAAgC,EAAA;QAAhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAkB;KAEjD;AACF;;MCDY,sBAAsB,GAAG,IAAI,cAAc,CAA+B,wBAAwB,EAAE;MAQpG,4BAA4B,CAAA;IAKvC,WACoC,CAAA,KAAgB,EACf,eAAoC,EAAA;QADrC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAW;QACf,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;KAExE;AAEM,IAAA,MAAM,CAAC,cAAgC,EAAA;QAC5C,IAAI,yBAAyB,CAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAC9D,CAAC,MAAM,CACN,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAC9C,CAAC;KACH;8GAjBU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAM7B,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAChB,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAPhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAJ5B,QAAA,EAAA,wBAAA,EAAA,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AAC/E,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAIgB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAF5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,8BAA8B,EAAE;AAC/E,qBAAA;AACF,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,gBAAgB,CAAA;;0BACvB,MAAM;2BAAC,iBAAiB,CAAA;4CAJpB,YAAY,EAAA,CAAA;sBADlB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;ACVzD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAY,QAAQ,CAAC,CAAC;MAExC,SAAS,CAAA;AAW7B,IAAA,WAAA,CACY,eAAoC,EACpC,IAAoB,EACpB,OAAoB,EAAA;QAFpB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;QACpC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QACpB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QAZtB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE7B,IAAO,CAAA,OAAA,GAAW,GAAG,CAAC;QACtB,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;QAEpB,IAAI,CAAA,IAAA,GAAW,GAAG,CAAC;AAEnB,QAAA,IAAA,CAAA,SAAS,GAAa,eAAe,CAAC,aAAa,EAAE,CAAC;KAO7D;IAES,UAAU,GAAA;QAClB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;IAEO,SAAS,GAAA;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,SAAS,GAAG,MAAK;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,SAAC,CAAC;KACH;IAEM,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;KAClD;AAEO,IAAA,OAAO,CAAC,KAAiB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,MAAM,GAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;AAErC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/C,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AACtC,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/C,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;AACtC,aAAA;AACF,SAAA;QAED,MAAM,uBAAuB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAElH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;AAEM,IAAA,cAAc,CAAC,MAAc,EAAA;QAClC,MAAM,cAAc,GAAG,MAAK;AAC5B,SAAC,CAAC;AACF,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC;AACX,YAAA,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACvE,SAAA,CAAC,CAAC;KAClB;AAEO,IAAA,aAAa,CAAC,KAAiB,EAAA;QACrC,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;YAClE,OAAO;AACR,SAAA;AAED,QAAA,IAAI,MAAM,GAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AACzC,YAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;AAChC,SAAA;QACD,MAAM,uBAAuB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAClH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;IAES,WAAW,GAAA;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;KAClD;AACF;;AChGK,MAAO,cAAe,SAAQ,SAAS,CAAA;AAE3C,IAAA,IACW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAW,SAAS,CAAC,SAAuC,EAAA;QAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACzD,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAED,IAAA,WAAA,CAC6B,eAAoC,EACtC,IAAoB,EAC3B,OAAoB,EAAA;AAEtC,QAAA,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACvC;IAEM,eAAe,GAAA;QACpB,KAAK,CAAC,UAAU,EAAE,CAAC;KACpB;IAEM,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;KACrB;AA7BU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAgBf,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,EACjB,EAAA,EAAA,KAAA,EAAA,eAAe,aACf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAlBP,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAFd,CAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAE,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEpD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,yBAAyB;AACnC,qBAAA;oBACD,SAAS,EAAE,CAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAgB,cAAA,EAAE,CAAE;AAChE,iBAAA,CAAA;;0BAiBI,MAAM;2BAAC,iBAAiB,CAAA;;0BACxB,MAAM;2BAAC,eAAe,CAAA;;0BACtB,MAAM;2BAAC,QAAQ,CAAA;4CAfP,SAAS,EAAA,CAAA;sBADnB,KAAK;uBAAC,OAAO,CAAA;;;ACXT,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAY,kBAAkB,CAAC,CAAC;MAG5D,SAAS,CAAA;AAI7B,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAsBD,IAAA,WAAA,CACU,gBAA2C,EAC3C,iBAAoC,EACpC,MAAc,EAAA;QAFd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA2B;QAC3C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAvBP,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAyB/D;IAEM,kBAAkB,GAAA;QACvB,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAES,4BAA4B,GAAA;AACpC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO;AACnC,YAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO;YAC/C,IAAI,CAAC,OAAO,CAAC,OAAO;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO;SACpB,CAAC;QAEF,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAChF,MAAM,kBAAkB,GAAG,KAAK,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE7D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAE3G,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;oBAC7D,UAAU,CAAC,MAAM,GAAG;AAClB,wBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAE;AAC/D,wBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,CAAE;qBAC7D,CAAC;oBACF,UAAU,CAAC,UAAU,EAAE,CAAC;AAC1B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AAEL,SAAC,CAAC,CAAC;KACJ;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;8GApEmB,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAT,SAAS,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;;;ACiBV,IAAIZ,UAAQ,GAAW,CAAC,CAAC;AAElB,MAAM,uBAAuB,GAAG,0BAA0B;AAC1D,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,MAAM,gCAAgC,GAAG,mCAAmC;AAC5E,MAAM,8BAA8B,GAAG,iCAAiC;AAezE,MAAO,cAAe,SAAQ,SAAS,CAAA;AA+B3C,IAAA,IAAoB,SAAS,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;KACvC;AAED,IAAA,WAAA,CACE,gBAA2C,EAC3C,iBAAoC,EACpC,MAAc,EAAA;AAEd,QAAA,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAtCrC,IAAuB,CAAA,uBAAA,GAAG,uBAAuB,CAAC;QAClD,IAAqB,CAAA,qBAAA,GAAG,qBAAqB,CAAC;QAC9C,IAAgC,CAAA,gCAAA,GAAG,gCAAgC,CAAC;QACpE,IAA8B,CAAA,8BAAA,GAAG,8BAA8B,CAAC;AAGhE,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,OAAA,EAAWA,UAAQ,EAAG,EAAE,CAAC;KAiCrD;8GAzCU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAFd,CAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAY3D,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGvB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAMd,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAGvB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAGvB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAT5B,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAa,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnEzB,mrEAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDaa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEN,cAAA,EAAA;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,gBAAgB;AAC5B,yBAAA;qBACF,EACK,IAAA,EAAA;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,oBAAoB;qBAC5B,EACU,SAAA,EAAA,CAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAgB,cAAA,EAAE,CAAE,EAAA,QAAA,EAAA,mrEAAA,EAAA,CAAA;sJAUzD,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIU,eAAe,EAAA,CAAA;sBAD9B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjC,qBAAqB,EAAA,CAAA;sBADpC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAI5C,eAAe,EAAA,CAAA;sBAD9B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjC,WAAW,EAAA,CAAA;sBAD1B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIzB,OAAO,EAAA,CAAA;sBADtB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAI/C,OAAO,EAAA,CAAA;sBADtB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAI/C,MAAM,EAAA,CAAA;sBADrB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;AE/DhE,IAAI,QAAQ,GAAW,CAAC,CAAC;AAYnB,MAAO,oBAAqB,SAAQ,eAAe,CAAA;AA0BvD,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;IAED,WACU,CAAA,gBAAyC,EACf,IAAe,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAHA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QACf,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAW;AA7BnC,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,aAAA,EAAiB,QAAQ,EAAG,EAAE,CAAC;KAgC3D;IAEe,UAAU,GAAA;QACxB,MAAM,MAAM,GAAG,sBAAsB,CACnC,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EACtF,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CACtF,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAEM,cAAc,GAAA;KACpB;AAEM,IAAA,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,CAAA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAE,CAAK,CAAA,EAAA,MAAM,CAAC,MAAM,CAAC,CAAE,CAAA,CAAA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAO,CAAK,CAAA,EAAA,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAO,EAAE,CAAC;KACtH;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChC;IAEe,MAAM,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,MAAM,EAAE,CAAC;KAChB;IAEe,QAAQ,GAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AA1EU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4CAgCrB,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAhCf,oBAAoB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAFpB,CAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAE,EAa1E,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,EAGxB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,4BAA4B,EAG5B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,8BAA8B,2FAG9B,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG7B,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDrC,gfASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDgBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAET,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,0BAA0B;qBAClC,EACU,SAAA,EAAA,CAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAE,EAAA,QAAA,EAAA,gfAAA,EAAA,CAAA;;0BAkClF,MAAM;2BAAC,gBAAgB,CAAA;4CA7BV,EAAE,EAAA,CAAA;sBADjB,KAAK;gBAIU,QAAQ,EAAA,CAAA;sBADvB,KAAK;gBAIU,OAAO,EAAA,CAAA;sBADtB,KAAK;gBAIU,KAAK,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI9C,SAAS,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIlD,WAAW,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,8BAA8B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIpD,UAAU,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAInD,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEE1C,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAlCpB,cAAc;YACd,cAAc;YACd,cAAc;YACd,uBAAuB;YACvB,oBAAoB;YACpB,wBAAwB;YACxB,wBAAwB;YACxB,8BAA8B;YAC9B,mBAAmB;YACnB,oBAAoB;AACpB,YAAA,oBAAoB,aAGpB,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;AAChB,YAAA,oBAAoB,aAIpB,cAAc;YACd,cAAc;YACd,cAAc;YACd,uBAAuB;YACvB,oBAAoB;YACpB,wBAAwB;YACxB,wBAAwB;YACxB,8BAA8B;YAC9B,iBAAiB;YACjB,mBAAmB;YACnB,oBAAoB;YACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YArBpB,YAAY;AACZ,YAAA,iBAAiB,EAcjB,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMR,WAAW,EAAA,UAAA,EAAA,CAAA;kBApCvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,cAAc;wBACd,cAAc;wBACd,uBAAuB;wBACvB,oBAAoB;wBACpB,wBAAwB;wBACxB,wBAAwB;wBACxB,8BAA8B;wBAC9B,mBAAmB;wBACnB,oBAAoB;wBACpB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,gBAAgB;wBAChB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,cAAc;wBACd,cAAc;wBACd,uBAAuB;wBACvB,oBAAoB;wBACpB,wBAAwB;wBACxB,wBAAwB;wBACxB,8BAA8B;wBAC9B,iBAAiB;wBACjB,mBAAmB;wBACnB,oBAAoB;wBACpB,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;ACjDD;;AAEG;;;;"}
1
+ {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/i-selectable.ts","../../../projects/f-flow/src/components/f-connection/f-connection-base.ts","../../../projects/f-flow/src/components/f-connection/f-connection-identifiers.ts","../../../projects/f-flow/src/components/f-connection/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/components/f-connection/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/components/f-connection/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/components/f-connection/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/components/f-connection/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/components/f-connection/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/components/f-connection/f-temp-connection/f-temp-connection.component.ts","../../../projects/f-flow/src/components/f-connection/f-temp-connection/f-temp-connection.component.html","../../../projects/f-flow/src/components/f-connection/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/components/f-connection/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/internal/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/internal/f-canvas/f-canvas.directive.ts","../../../projects/f-flow/src/internal/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/internal/f-backgroud/f-background.directive.ts","../../../projects/f-flow/src/components/f-connection/f-temp-connection/temp-connection-input-output-model.ts","../../../projects/f-flow/src/components/f-connection/f-connection.module.ts","../../../projects/f-flow/src/components/f-connection/get-connection-intersect.ts","../../../projects/f-flow/src/components/f-connectors/get-element-rect-in-canvas.ts","../../../projects/f-flow/src/components/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/is-node-input.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/components/f-connectors/f-out-connector-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/components/f-node/f-node-base.ts","../../../projects/f-flow/src/components/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/components/f-node/f-drag-handle/is-drag-handle.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object-base.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object.component.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object.component.html","../../../projects/f-flow/src/components/f-node/f-node.component.ts","../../../projects/f-flow/src/components/f-node/f-node.component.html","../../../projects/f-flow/src/components/f-node/is-node.ts","../../../projects/f-flow/src/directives/f-selection/f-selection.directive.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container.component.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container.component.html","../../../projects/f-flow/src/common-behaviours/change-zoom/change-zoom.ts","../../../projects/f-flow/src/common-behaviours/fit-to-parent/fit-to-parent.ts","../../../projects/f-flow/src/common-behaviours/one-to-one-centering/one-to-one-centering.ts","../../../projects/f-flow/src/common-behaviours/change-position.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/canvas-change.event.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/f-items-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/f-items-container.directive.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container.component.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container.component.html","../../../projects/f-flow/src/directives/f-draggable/e-draggable-type.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection.event.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-connection.event.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/default-drag-handler/default-drag.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/directives/f-external-item/is-external-item.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/create-node.event.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.service.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.ts","../../../projects/f-flow/src/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.ts","../../../projects/f-flow/src/directives/f-line-alignment/f-line-alignment.directive.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.module.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/f-connect-if-intersect.directive.ts","../../../projects/f-flow/src/directives/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/directives/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/components/f-flow/f-flow-base.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.html","../../../projects/f-flow/src/components/f-connection/f-connection.component.ts","../../../projects/f-flow/src/components/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["export interface ISelectable {\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement, IVector, VectorExtensions } from '@foblex/core';\nimport { FNodeOutputBase } from '../f-connectors';\nimport { IInputOutputModel } from './i-input-output-model';\nimport { F_SELECTED_CLASS, ISelectable } from '../../i-selectable';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { Subject } from 'rxjs';\n\nexport const F_CONNECTION_COMPONENT = new InjectionToken<FConnectionBase>('F_CONNECTION_COMPONENT');\n\n@Directive()\nexport abstract class FConnectionBase<TOutput = FNodeOutputBase> implements IHasHostElement, ISelectable, IHasStateChanges {\n\n public abstract id: any;\n\n public abstract hostElement: SVGGElement;\n\n public abstract outputId: any;\n\n public abstract inputId: any;\n\n public fromTo: IInputOutputModel<TOutput> | undefined;\n\n public abstract fPath: FConnectionPathComponent;\n\n public path: string = '';\n\n public vector: IVector = VectorExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public initialize(): void {\n\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public abstract initializeDrag(): void;\n\n public abstract redraw(): void;\n\n public abstract setVector(vector: IVector): void;\n\n public abstract completeDrag(): void;\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n}\n","export const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return 'connection_text_' + connectionId;\n },\n connectionForSelectionId(connectionId: string): string {\n return 'connection_for_selection_' + connectionId;\n },\n connectionId(connectionId: string): string {\n return 'connection_' + connectionId;\n },\n gradientId(connectionId: string): string {\n return 'connection_gradient_' + connectionId;\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, OnInit\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\nimport { F_SELECTED_CLASS, ISelectable } from '../../../i-selectable';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.stroke]': 'linkToGradient',\n },\n})\nexport class FConnectionPathComponent implements IHasHostElement, ISelectable, OnInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start-selected)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-selected)`);\n }\n\n public deselect(): void {\n if (this.fromTo?.input) {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start-${ this.fromTo?.output?.color })`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-${ this.fromTo?.input?.color })`);\n } else {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end)`);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.getAttribute('marker-start') === `url(#connection-marker-start-selected)`\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, Point } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n})\nexport class FConnectionGradientComponent implements IHasHostElement, AfterContentInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n ) {\n }\n\n public ngAfterContentInit(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.fromTo?.output.color);\n this.setToColor(this.fromTo?.input?.color);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(vector: IVector): void {\n const x: number = vector.point2.x - vector.point1.x;\n const y: number = vector.point2.y - vector.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n public setOffset(offset: number): void {\n this.hostElement.setAttribute('startOffset', offset.toString());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, ViewChild\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, PointExtensions } from '@foblex/core';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n})\nexport class FConnectionTextComponent implements IHasHostElement {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>\n ) {\n }\n\n public redraw(vector: IVector): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(vector);\n\n this.hostElement.setAttribute('dy', isTextReverse ? '15' : '-8');\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(vector, this.fromTo?.output.name || '');\n // this.textPathDirective.setOffset(startOffset);\n\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private static isTextReverse(vector: IVector): boolean {\n return vector.point1.x > vector.point2.x;\n }\n\n private static getTextStartOffset(vector: IVector, name: string): number {\n const symbolWidth: number = 8;\n const vectorLength: number = PointExtensions.hypotenuse(vector.point1, vector.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path [fromTo]=\"fromTo\">\n {{ fromTo?.output?.name }}\n </svg:textPath>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ElementRef, InjectionToken, ViewChild\n} from \"@angular/core\";\nimport { FConnectionBase } from '../f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\nimport { FConnectionPathComponent } from '../f-path/f-connection-path.component';\nimport { FConnectionGradientComponent } from '../f-gradient/f-connection-gradient.component';\nimport { FConnectionTextComponent } from '../f-connection-text/f-connection-text.component';\nimport { IVector } from '@foblex/core';\n\nexport const F_TEMP_CONNECTION_COMPONENT = new InjectionToken<FConnectionBase>('F_TEMP_CONNECTION_COMPONENT');\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fTempConnection]\",\n templateUrl: \"./f-temp-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-temp-connection\"\n },\n providers: [\n { provide: F_TEMP_CONNECTION_COMPONENT, useExisting: FTempConnectionComponent }\n ],\n})\nexport class FTempConnectionComponent\n extends FConnectionBase<FNodeOutputBase | FNodeOutletBase> implements AfterViewInit {\n\n public override id: string = `f-temp-connection-${ uniqueId++ }`;\n\n public override outputId: any;\n\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n super();\n }\n\n public ngAfterViewInit(): void {\n this.hostElement.style.display = \"none\";\n }\n\n public initializeDrag(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fText.redraw(this.vector);\n }\n\n public completeDrag(): void {\n this.hostElement.style.display = \"none\";\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:g>\n <svg:path f-connection-path stroke-dasharray=\"10,10\" [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint } from '@foblex/core';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>,\n ) {\n }\n\n public redraw(point: IPoint): void {\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n}\n\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>\n ) {\n this.initialize();\n }\n\n protected initialize(): void {\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n this.hostElement.setAttribute('version', '1.1');\n this.hostElement.setAttribute('baseProfile', 'full');\n this.hostElement.style.cssText = 'user-select:none; width:100%; height:100%;';\n }\n}\n","import {\n Directive, ElementRef\n} from \"@angular/core\";\nimport { F_CANVAS, FCanvasBase } from './f-canvas-base';\n\n@Directive({\n selector: \"svg[fCanvas]\",\n standalone: true,\n providers: [ { provide: F_CANVAS, useExisting: FCanvasDirective } ],\n})\nexport class FCanvasDirective extends FCanvasBase {\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>\n ) {\n super(elementReference);\n }\n}\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement, ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasBase } from '../f-canvas';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public transform: ITransformModel = TransformModelExtensions.default();\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fCanvas: FCanvasBase\n ) {\n console.log('FBackgroundBase');\n }\n\n public isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement === element || this.hostElement.contains(element) || this.fCanvas.hostElement.contains(element);\n }\n}\n","import {\n Directive, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { F_CANVAS, FCanvasBase } from '../f-canvas';\n\n@Directive({\n selector: \"g[fBackground]\",\n standalone: true,\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundDirective } ],\n})\nexport class FBackgroundDirective extends FBackgroundBase {\n\n constructor(\n elementReference: ElementRef<SVGGElement>,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(elementReference, fCanvas);\n }\n}\n","import { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\nexport class TempConnectionInputOutputModel\n implements IInputOutputModel<FNodeOutputBase | FNodeOutletBase, null> {\n\n public input = null;\n\n public constructor(\n public output: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FConnectionComponent } from './f-connection.component';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection/f-connection-selection.component';\nimport { FConnectionTextPathDirective } from './f-connection-text';\nimport { FConnectionTextComponent } from './f-connection-text';\nimport { FConnectionGradientComponent } from './f-gradient/f-connection-gradient.component';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { FTempConnectionComponent } from './f-temp-connection';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [\n FTempConnectionComponent,\n FConnectionComponent,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionSelectionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n FTempConnectionComponent,\n FConnectionComponent\n ]\n})\nexport class FConnectionModule {\n}\n","import { IRect, IVector, RectExtensions } from '@foblex/core';\n\nexport function getConnectionIntersect(fromRect: IRect, toRect: IRect): IVector {\n\n const fromResult = RectExtensions.intersectionWithVector(fromRect, fromRect.gravityCenter, toRect.gravityCenter);\n const toResult = RectExtensions.intersectionWithVector(toRect, fromRect.gravityCenter, toRect.gravityCenter);\n\n return {\n point1: fromResult ? fromResult[ 1 ] : fromRect.gravityCenter,\n point2: toResult ? toResult[ 0 ] : toRect.gravityCenter,\n }\n}\n","import { IRect, ITransformModel, Point, RectExtensions, SizeExtensions } from '@foblex/core';\n\nexport function getElementRectInCanvas(element: HTMLElement | SVGElement, transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n const rect = RectExtensions.fromElement(element);\n const position = Point.fromPoint(rect).matrixTransform(svgHost).sub(transform.scaledPosition).sub(transform.position).div(transform.scale);\n const size = SizeExtensions.initialize(rect.width / transform.scale, rect.height / transform.scale);\n return RectExtensions.initialize(position.x, position.y, size.width, size.height);\n}\n","import { Subject } from 'rxjs';\nimport { IHasHostElement, IRect, ITransformModel } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { getElementRectInCanvas } from './get-element-rect-in-canvas';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: any;\n\n public abstract color: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public getElementRectInCanvas(transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n return getElementRectInCanvas(this.hostElement, transform, svgHost);\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT_DIRECTIVE = new InjectionToken<FNodeInputBase>('F_NODE_INPUT_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_INPUT_DIRECTIVE, FNodeInputBase } from './f-node-input-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT_DIRECTIVE, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase {\n\n @Input()\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fNodeInputColor')\n public fNodeInputColor: string | undefined;\n\n public get color(): string {\n return this.fNodeInputColor || 'black';\n }\n\n @Input('fNodeInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fNodeInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { FConnectorBase } from './f-connector-base';\n\nexport abstract class FOutConnectorBase extends FConnectorBase {\n\n public abstract name: string;\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTLET_DIRECTIVE = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FOutConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n\n private outputs: FOutConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled;\n }\n\n public setOutputs(outputs: FOutConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_OUTLET_DIRECTIVE, FNodeOutletBase } from './f-node-outlet-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET_DIRECTIVE, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase {\n\n @Input()\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fNodeOutletColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTPUT_DIRECTIVE = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FOutConnectorBase {\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && !this.isConnected;\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT_DIRECTIVE } from './f-node-output-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-connected]': 'isConnected'\n },\n providers: [ { provide: F_NODE_OUTPUT_DIRECTIVE, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase {\n\n @Input()\n public override id: any = `f-node-output-${ uniqueId++ }`;\n\n @Input('fNodeOutputColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n super();\n }\n}\n","import { EventEmitter, InjectionToken, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, PointExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { F_SELECTED_CLASS, ISelectable } from '../../i-selectable';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FForeignObjectBase } from './f-foreign-object';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\n\nexport const F_NODE_COMPONENT = new InjectionToken<FNodeBase>('F_NODE_COMPONENT');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract id: any;\n\n public abstract handles: QueryList<FDragHandleDirective>;\n\n public abstract fForeignObject: FForeignObjectBase;\n\n public abstract hostElement: SVGGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n public abstract refresh(): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n this.hostElement.setAttribute('transform', 'translate(' + this.position.x + ',' + this.position.y + ')');\n }\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public completeDrag(): void {\n this.positionChange.emit(this.position)\n }\n}\n","import {\n Directive, ElementRef, Inject, InjectionToken, Input, OnDestroy, Optional, SkipSelf\n} from \"@angular/core\";\nimport { Subject } from 'rxjs';\nimport { BooleanExtensions, IHasHostElement } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\nimport { F_NODE_COMPONENT } from '../f-node-base';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\",\n '[class.f-drag-handle-disabled]': 'disabled'\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement, IHasStateChanges, OnDestroy {\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public _parentNode: {} | undefined;\n\n @Input('fDragHandleDisabled')\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","export function isNodeDragHandle(element: HTMLElement | SVGElement): boolean {\n const dragHandle = getClosestDragHandle(element);\n return !!dragHandle && !isElementOrParentExcluded(element);\n}\n\nfunction isElementOrParentExcluded(element: HTMLElement | SVGElement): boolean {\n const isContains = isElementContainsClass(element);\n const parentElement = (element.parentElement as HTMLElement);\n const dragHandle = getClosestDragHandle(parentElement);\n if (!isContains && !!dragHandle) {\n return isElementOrParentExcluded(parentElement);\n }\n return isContains;\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement): HTMLElement {\n return element.closest('[fDragHandle]') as HTMLElement;\n}\n\nfunction isElementContainsClass(element: HTMLElement | SVGElement): boolean {\n return element.classList.contains('f-drag-handle-disabled');\n}\n","import {\n AfterViewInit, Directive, InjectionToken, OnDestroy\n} from '@angular/core';\nimport { debounceTime, startWith, Subject, Subscription } from 'rxjs';\nimport { FResizeObserver, IHasHostElement, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_FOREIGN_OBJECT_COMPONENT = new InjectionToken<FForeignObjectBase>('F_FOREIGN_OBJECT_COMPONENT');\n\n@Directive()\nexport abstract class FForeignObjectBase implements AfterViewInit, IHasStateChanges, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public _parentNode: {} | undefined;\n\n public abstract hostElement: SVGForeignObjectElement;\n\n public stateChanges: Subject<void> = new Subject<void>();\n\n public abstract transform: ITransformModel;\n\n protected constructor(\n _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return new FResizeObserver(this.hostElement.firstChild as HTMLElement).pipe(startWith(null), debounceTime(10)).subscribe(() => {\n this.redraw();\n this.stateChanges.next();\n });\n }\n\n public redraw(): void {\n const element = this.hostElement.firstChild as HTMLElement;\n if (element && !!element.getBoundingClientRect) {\n const rect = RectExtensions.fromElement(element);\n const scale = this.transform.scale;\n this.hostElement.setAttribute(\"width\", `${ rect.width / scale }`);\n this.hostElement.setAttribute(\"height\", `${ rect.height / scale }`);\n }\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, Input, Optional, SkipSelf\n} from \"@angular/core\";\nimport {\n FForeignObjectBase, F_FOREIGN_OBJECT_COMPONENT\n} from './f-foreign-object-base';\nimport { FFlowComponent } from '../../f-flow';\nimport { ITransformModel } from '@foblex/core';\nimport { F_NODE_COMPONENT } from '../index';\n\n@Component({\n selector: \"foreignObject[fForeignObject]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-foreign-object.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-foreign-object f-component\",\n '[attr.width]': 'defaultWidth',\n '[attr.height]': 'defaultHeight'\n },\n providers: [\n { provide: F_FOREIGN_OBJECT_COMPONENT, useExisting: FForeignObjectComponent }\n ]\n})\nexport class FForeignObjectComponent extends FForeignObjectBase {\n\n @Input('fDefaultWidth')\n public defaultWidth: number = 100;\n\n @Input('fDefaultHeight')\n public defaultHeight: number = 100;\n\n public get hostElement(): SVGForeignObjectElement {\n return this.elementReference.nativeElement;\n }\n\n public get transform(): ITransformModel {\n return this.flow.transform;\n }\n\n constructor(\n private elementReference: ElementRef<SVGForeignObjectElement>,\n private flow: FFlowComponent,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n super(_parentNode);\n this.hostElement.style.cssText = 'overflow:visible;';\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output, QueryList,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, PointExtensions, PointInput } from '@foblex/core';\nimport {\n FNodeBase, F_NODE_COMPONENT\n} from './f-node-base';\nimport { F_DRAG_HANDLE, FDragHandleDirective } from './f-drag-handle';\nimport { F_FOREIGN_OBJECT_COMPONENT, FForeignObjectBase } from './f-foreign-object';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fNode]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-node.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-node f-component\"\n },\n providers: [\n { provide: F_NODE_COMPONENT, useExisting: FNodeComponent }\n ]\n})\nexport class FNodeComponent extends FNodeBase implements OnInit, IHasHostElement, OnDestroy {\n\n @Input()\n public override id: any = `f-node-${ uniqueId++ }`;\n\n @ContentChildren(F_DRAG_HANDLE, { descendants: true })\n public override handles!: QueryList<FDragHandleDirective>;\n\n @ContentChild(F_FOREIGN_OBJECT_COMPONENT, { static: true })\n public override fForeignObject!: FForeignObjectBase;\n\n @Input('fNodePosition')\n public override set position(value: PointInput) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n super.redraw();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IRectElementModel, RectFElement } from '@foblex/core';\n\nexport const F_SELECTION = new InjectionToken<FSelectionDirective>('F_SELECTION');\n\n@Directive({\n selector: \"g[fSelection]\",\n host: {\n 'class': 'f-selection f-component'\n },\n providers: [\n { provide: F_SELECTION, useExisting: FSelectionDirective }\n ],\n})\nexport class FSelectionDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fElement: RectFElement = new RectFElement();\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fElement.hostElement);\n }\n\n public hide(): void {\n this.fElement.hide();\n }\n\n public show(): void {\n this.fElement.show();\n }\n\n public draw(object: Partial<IRectElementModel>): void {\n this.fElement.draw(object);\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken, QueryList } from '@angular/core';\nimport { FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../../../components';\n\nexport const F_CONNECTIONS_CONTAINER: InjectionToken<FConnectionsContainerBase> = new InjectionToken<FConnectionsContainerBase>('F_CONNECTIONS_CONTAINER');\n\n@Directive()\nexport abstract class FConnectionsContainerBase implements IHasHostElement {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fConnections: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n public abstract fTempConnection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public findConnectionWithElement(element: HTMLElement | SVGElement): FConnectionBase<FNodeOutputBase> | undefined {\n return this.fConnections.toArray().find((x) => {\n return x.isContains(element);\n });\n }\n\n public findOutgoingConnections(outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findOutgoingConnections(this.fConnections.toArray(), outputs);\n }\n\n public findIncomingConnections(inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findIncomingConnections(this.fConnections.toArray(), inputs);\n }\n}\n\nexport function findIncomingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return inputs.includes(x.fromTo!.input);\n })!;\n}\n\nexport function findOutgoingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return outputs.includes(x.fromTo!.output);\n })!;\n}\n","import { Component, ContentChildren, ElementRef, QueryList, ViewChild } from \"@angular/core\";\nimport { F_CONNECTIONS_CONTAINER, FConnectionsContainerBase } from './f-connections-container-base';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../components';\nimport { F_TEMP_CONNECTION_COMPONENT } from '../../../components';\n\n@Component({\n selector: \"g[fConnectionsContainer]\",\n templateUrl: './f-connections-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-connections-container'\n },\n providers: [ { provide: F_CONNECTIONS_CONTAINER, useExisting: FConnectionsContainerComponent } ],\n})\nexport class FConnectionsContainerComponent extends FConnectionsContainerBase {\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public override fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n @ViewChild(F_TEMP_CONNECTION_COMPONENT, { static: true })\n public override fTempConnection!: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fConnection]\"></ng-content>\n <svg:g fTempConnection></svg:g>\n</ng-container>\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanChangeZoom } from './i-can-change-zoom';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanChangeZoomConstructor = Constructor<ICanChangeZoom> & AbstractConstructor<ICanChangeZoom>;\n\nexport function mixinChangeZoom<T extends AbstractConstructor<ITransformable>>(base: T): CanChangeZoomConstructor & T;\nexport function mixinChangeZoom<T extends Constructor<ITransformable>>(base: T): CanChangeZoomConstructor & T {\n return class extends base {\n\n public setZoom(scaleValue: number, toPosition: IPoint): void {\n if (scaleValue !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = toPosition.x - (toPosition.x - summaryPosition.x) * scaleValue / this.transform.scale;\n const newY = toPosition.y - (toPosition.y - summaryPosition.y) * scaleValue / this.transform.scale;\n\n this.transform.scale = scaleValue;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n\n public setScalePosition(value: IPoint): void {\n this.transform.scaledPosition = value;\n }\n\n public resetZoom(): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanFitToParent } from './i-can-fit-to-parent';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanFitToParentConstructor = Constructor<ICanFitToParent> & AbstractConstructor<ICanFitToParent>;\n\nexport function mixinFitToParent<T extends AbstractConstructor<ITransformable>>(base: T): CanFitToParentConstructor & T;\nexport function mixinFitToParent<T extends Constructor<ITransformable>>(base: T): CanFitToParentConstructor & T {\n return class extends base {\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanOneToOneCentering } from './i-can-one-to-one-centering';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanOneToOneCenteringConstructor = Constructor<ICanOneToOneCentering> & AbstractConstructor<ICanOneToOneCentering>;\n\nexport function mixinOneToOneCentering<T extends AbstractConstructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T;\nexport function mixinOneToOneCentering<T extends Constructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T {\n return class extends base {\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n this.transform.scale = 1;\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from './constructor';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\nexport interface ICanChangePosition {\n\n setPosition(position: IPoint): void;\n\n getPosition(): IPoint;\n}\n\ntype CanChangePositionConstructor = Constructor<ICanChangePosition> & AbstractConstructor<ICanChangePosition>;\n\nexport function mixinChangePosition<T extends AbstractConstructor<ITransformable>>(base: T): CanChangePositionConstructor & T;\nexport function mixinChangePosition<T extends Constructor<ITransformable>>(base: T): CanChangePositionConstructor & T {\n return class extends base {\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = PointExtensions.copy(position);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IPoint } from '@foblex/core';\n\nexport class CanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport {\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering\n} from '../../../common-behaviours';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\nexport const F_ITEMS_CONTAINER = new InjectionToken<FItemsContainerBase>('F_ITEMS_CONTAINER');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FItemsContainerBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\n\n public abstract canvasChange: EventEmitter<CanvasChangeEvent>;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super(TransformModelExtensions.default());\n this.parseData();\n }\n\n public parseData(): void {\n const transform = TransformModelExtensions.fromString(this.hostElement.getAttribute(\"transform\"));\n this.transform = transform ? transform : this.transform;\n }\n\n public redraw(): void {\n this.hostElement.setAttribute(\"transform\", TransformModelExtensions.toString(this.transform));\n }\n\n public redrawWithAnimation(): void {\n this.hostElement.setAttribute(\"style\", 'transition: transform 0.15s ease-in-out');\n this.redraw();\n setTimeout(() => {\n this.hostElement.removeAttribute(\"style\");\n }, 150)\n }\n\n public completeDrag(): void {\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n this.canvasChange.emit(\n new CanvasChangeEvent(position, this.transform.scale)\n );\n }\n}\n","import {\n Directive, ElementRef, EventEmitter, Input, Output,\n} from \"@angular/core\";\nimport {\n FItemsContainerBase, F_ITEMS_CONTAINER\n} from './f-items-container-base';\nimport { IPoint, PointExtensions } from '@foblex/core';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\n@Directive({\n selector: \"g[fItemsContainer]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-items-container'\n },\n providers: [ { provide: F_ITEMS_CONTAINER, useExisting: FItemsContainerDirective } ],\n})\nexport class FItemsContainerDirective extends FItemsContainerBase {\n\n @Output()\n public override canvasChange: EventEmitter<CanvasChangeEvent> = new EventEmitter<CanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\n }\n\n constructor(\n elementReference: ElementRef<SVGGElement>\n ) {\n super(elementReference);\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, ElementRef, InjectionToken, NgZone, QueryList } from '@angular/core';\nimport { defer, merge, Observable, startWith, switchMap, take } from 'rxjs';\nimport { FNodeBase } from '../../../components';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_NODES_CONTAINER = new InjectionToken<FNodesContainerBase>('F_NODES_CONTAINER');\n\n@Directive()\nexport abstract class FNodesContainerBase implements IHasHostElement, IHasStateChanges {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fNodes: QueryList<FNodeBase>;\n\n public readonly stateChanges: Observable<void> = defer(() => {\n const items = this.fNodes;\n\n if (items) {\n return items.changes.pipe(\n startWith(items),\n switchMap(() => merge(...items.map(x => merge(x.fForeignObject.stateChanges, x.stateChanges)))),\n );\n }\n\n return this.ngZone.onStable.pipe(\n take(1),\n switchMap(() => this.stateChanges),\n );\n }) as Observable<void>;\n\n protected constructor(\n\n private ngZone: NgZone\n ) {\n }\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find((x) => {\n return x.isContains!(element);\n });\n }\n\n public setNodeToTopLayer(node: FNodeBase): void {\n const elements = Array.from(this.hostElement.children);\n const elementsCount = elements.length;\n const targetIndex: number = elements.findIndex((x) => x === node.hostElement);\n if (targetIndex !== elementsCount - 1) {\n const afterElements = elements.splice(targetIndex + 1);\n afterElements.forEach((x) => {\n this.hostElement.removeChild(x);\n this.hostElement.insertBefore(x, node.hostElement);\n });\n }\n }\n}\n","import {\n Component, ContentChildren, ElementRef, NgZone, QueryList\n} from \"@angular/core\";\nimport { F_NODES_CONTAINER, FNodesContainerBase } from './f-nodes-container-base';\nimport { F_NODE_COMPONENT, FNodeBase } from '../../../components';\n\n@Component({\n selector: \"g[fNodesContainer]\",\n templateUrl: './f-nodes-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-nodes-container'\n },\n providers: [ { provide: F_NODES_CONTAINER, useExisting: FNodesContainerComponent } ],\n})\nexport class FNodesContainerComponent extends FNodesContainerBase {\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChildren(F_NODE_COMPONENT, { descendants: true })\n public override fNodes!: QueryList<FNodeBase>;\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ngZone: NgZone\n ) {\n super(ngZone);\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fNode]\"></ng-content>\n</ng-container>\n","export enum EDraggableType {\n\n NODE = 'node',\n\n REASSIGN_CONNECTION = 'reassign-connection',\n\n TEMP_CONNECTION = 'temp-connection',\n\n CONNECTION = 'connection',\n\n CANVAS = 'canvas',\n\n PALETTE_ITEM = 'palette-item',\n\n DEFAULT = 'default',\n\n SELECTION = 'selection'\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { FItemsContainerBase } from '../../../f-containers/f-items-container';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class CanvasOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CANVAS;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fItemsContainer: FItemsContainerBase\n ) {\n this.onPointerDownPosition = this.fItemsContainer.transform.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n this.fItemsContainer.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fItemsContainer.redraw();\n }\n\n public complete(): void {\n this.fItemsContainer.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { CanvasOnPointerDownRequest } from './canvas-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FItemsContainerBase } from '../../../f-containers';\nimport { FBackgroundBase } from '../../../../internal';\nimport { CanvasOnPointerMove } from '../canvas-on-pointer-move';\n\nexport class CanvasOnPointerDownHandler\n implements IHandler<CanvasOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fBackground: FBackgroundBase,\n private fItemsContainer: FItemsContainerBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CanvasOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (this.fBackground.isBackgroundElement(payload.event.targetElement) && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new CanvasOnPointerMove(this.fItemsContainer)\n ]\n };\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nexport class CanvasOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class CreateConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n ) {\n }\n}\n","import {\n IPoint,\n IRect,\n ITransformModel,\n Point,\n RectExtensions,\n} from '@foblex/core';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\n\nexport class CreateConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.TEMP_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>,\n private mouseDownPoint: IPoint,\n transform: ITransformModel,\n hostElement: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(transform, hostElement);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.mouseDownPoint.x, this.mouseDownPoint.y, 0, 0);\n }\n\n public initialize(): void {\n this.connection.initializeDrag();\n this.move(new Point(0, 0));\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(\n this.onPointerDownFromConnectorRect,\n toPoint\n );\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.completeDrag();\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindFirstCanBeConnectedOutputByOutletRequest } from './find-first-can-be-connected-output-by-outlet.request';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletHandler\n implements IHandler<FindFirstCanBeConnectedOutputByOutletRequest, FNodeOutputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindFirstCanBeConnectedOutputByOutletRequest): FNodeOutputBase | undefined {\n let result: FNodeOutputBase | undefined;\n\n const node = this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(payload.outlet.hostElement));\n if (!node) {\n throw new Error('Node not found');\n }\n\n const outputsOfNode = this.fFlow.outputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n\n if (outputsOfNode.length > 0) {\n result = outputsOfNode[ 0 ];\n }\n\n return result;\n }\n}\n","import { FNodeOutletBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler, IPoint, Point } from '@foblex/core';\nimport { CreateConnectionOnPointerDownRequest } from './create-connection-on-pointer-down.request';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport {\n FFlowBase, FNodeBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet, isNodeOutput, TempConnectionInputOutputModel\n} from '../../../../../components';\nimport { FNodesContainerBase } from '../../../../f-containers/f-nodes-container';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport {\n FConnectionsContainerBase\n} from '../../../../f-containers/f-connections-container/f-connections-container-base';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerDown\n implements IHandler<CreateConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (node) {\n\n if (isNodeOutlet(payload.event.targetElement)) {\n const outlet = this.fFlow.outlets.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n outlet.setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n if (outlet.isConnectionFromOutlet) {\n console.log('outlet', outlet.hostElement);\n const outletCenter = outlet.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n console.log('outletCenter', outletCenter);\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, outlet, outletCenter);\n } else {\n const output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(outlet)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n\n const outputCenter = output.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outputCenter);\n }\n }\n } else if (this.isNodeOutput(payload.event.targetElement, node)) {\n const output = this.fFlow.outputs.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n const outputCenter = output.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outputCenter);\n }\n }\n }\n\n return result;\n }\n\n private createConnectionHandler(\n payload: CreateConnectionOnPointerDownRequest,\n pointerPositionInCanvas: Point,\n output: FNodeOutputBase | FNodeOutletBase,\n outputCenter: IPoint\n ): IDragHandler {\n\n // @ts-ignore\n this.fConnectionsContainer.fTempConnection.fromTo = new TempConnectionInputOutputModel(output);\n\n return {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new CreateConnectionOnPointerMove(\n this.fConnectionsContainer.fTempConnection, outputCenter, payload.transform, this.hostElement\n )\n ]\n };\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n const outlets = this.fFlow.outlets.filter((x) => node.isContains(x.hostElement));\n return isNodeOutput(targetElement) && !outlets.length;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeBase, FNodeInputBase } from '../../../../../components';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer.request';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerHandler\n implements IHandler<FirstNotConnectedInputOfNodeUnderPointerRequest, FNodeInputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FirstNotConnectedInputOfNodeUnderPointerRequest): FNodeInputBase | undefined {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n\n const nodes = elementsFromPoint.map((element) => {\n return this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(element))\n }).filter((x) => !!x) as FNodeBase[];\n\n const inputs = nodes.map((x) => {\n return this.fFlow.inputs.filter((i) => x.isContains(i.hostElement)).find((i) => {\n return !i.isConnected && i.canBeConnected;\n });\n });\n const result = inputs.find((x) => !!x);\n\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeInputBase, isNodeInput } from '../../../../../components';\nimport {\n InputsUnderPointerRequest\n} from './inputs-under-pointer.request';\n\nexport class InputsUnderPointerHandler\n implements IHandler<InputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: InputsUnderPointerRequest): FNodeInputBase[] {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n return elementsFromPoint.filter((x) => isNodeInput(x as HTMLElement)).map((element) => {\n return this.fFlow.inputs.find((x) => x.isContains(element))!\n }).filter((x) => !!x);\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class InputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { ReassignConnectionOnPointerMove } from '../reassign-connection';\nimport { CreateConnectionOnPointerMove } from '../create-connection';\n\nexport class FindInputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionOnPointerMove | ReassignConnectionOnPointerMove\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindInputsUnderPointerRequest } from './find-inputs-under-pointer.request';\nimport { FFlowBase, FNodeInputBase } from '../../../../components';\nimport { InputsUnderPointerHandler, InputsUnderPointerRequest } from './inputs-under-pointer';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerHandler,\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer';\n\nexport class FindInputsUnderPointerHandler\n implements IHandler<FindInputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n const inputsUnderPointer = this.getInputsUnderPointer(payload);\n\n return inputsUnderPointer.filter((x) => {\n const targetNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(x.hostElement));\n const sourceNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(payload.dragHandler.connection.fromTo!.output.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n });\n }\n\n private getInputsUnderPointer(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n let inputs = new InputsUnderPointerHandler(this.fFlow).handle(\n new InputsUnderPointerRequest(payload.event)\n );\n\n const input = new FirstNotConnectedInputOfNodeUnderPointerHandler(this.fFlow).handle(\n new FirstNotConnectedInputOfNodeUnderPointerRequest(payload.event)\n );\n\n if (input) {\n inputs.push(input);\n }\n inputs = inputs.filter((x) => x.canBeConnected);\n return inputs;\n }\n}\n","export class CreateConnectionEvent<T = any> {\n\n constructor(\n public outputId: T,\n public inputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../../components';\nimport { CreateConnectionOnPointerUpRequest } from './create-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport { EventEmitter } from '@angular/core';\nimport { CreateConnectionEvent } from '../create-connection.event';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerUp\n implements IHandler<CreateConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateConnection: EventEmitter<CreateConnectionEvent>\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerUpRequest): void {\n const isCreateConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.TEMP_CONNECTION);\n if (isCreateConnection) {\n const handler = payload.dragHandler.draggableItems[ 0 ] as CreateConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n\n if (inputsUnderPointer.length > 0) {\n let output: FNodeOutputBase | FNodeOutletBase | undefined = handler.connection.fromTo!.output;\n\n const isOutlet = isNodeOutlet(output.hostElement);\n if (isOutlet) {\n\n output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n }\n this.onCreateConnection.emit(new CreateConnectionEvent(output.id, inputsUnderPointer[ 0 ]?.id));\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class CreateConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { FConnectionBase } from '../../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../../components';\nimport { getConnectionIntersect } from '../../../../../components/f-connection/get-connection-intersect';\nimport { IDraggableItem } from '../../../i-draggable-item';\nimport { EDraggableType } from '../../../e-draggable-type';\n\nexport class ReassignConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.REASSIGN_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n private canvasTransform: ITransformModel,\n private canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.connection.vector.point2.x, this.connection.vector.point2.y, 0, 0);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toRect = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toRect);\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const toConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const vector = getConnectionIntersect(fromConnectorRect, toConnectorRect);\n\n this.connection.setVector(vector);\n this.connection.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS } from '../../../../../components/f-connection/f-drag-handle';\nimport { FConnectionBase } from '../../../../../components/f-connection/f-connection-base';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move';\nimport { ReassignConnectionOnPointerDownRequest } from './reassign-connection-on-pointer-down.request';\nimport { FConnectionsContainerBase } from '../../../../f-containers/f-connections-container/f-connections-container-base';\n\nexport class ReassignConnectionOnPointerDown\n implements IHandler<ReassignConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n const position = payload.event.getPosition();\n const allElements = document.elementsFromPoint(position.x, position.y);\n\n const dragHandlesOfConnections = allElements.filter((x) => {\n return !!this.fConnectionsContainer.findConnectionWithElement(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n\n let connectionToReassign: FConnectionBase<FNodeOutputBase> | undefined;\n if (dragHandlesOfConnections.length) {\n connectionToReassign = this.fConnectionsContainer.findConnectionWithElement(dragHandlesOfConnections[ 0 ] as HTMLElement);\n }\n\n if (connectionToReassign && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new ReassignConnectionOnPointerMove(\n connectionToReassign, payload.transform, this.hostElement\n )\n ]\n }\n }\n\n return result;\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class ReassignConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel\n ) {\n }\n}\n","export class ReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public outputId: T,\n public oldInputId: T,\n public newInputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move/reassign-connection.on-pointer-move';\nimport { ReassignConnectionOnPointerUpRequest } from './reassign-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { EventEmitter } from '@angular/core';\nimport { ReassignConnectionEvent } from '../reassign-connection.event';\n\nexport class ReassignConnectionOnPointerUp\n implements IHandler<ReassignConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onReassignConnection: EventEmitter<ReassignConnectionEvent>\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerUpRequest): void {\n console.log('ReassignConnectionOnPointerUp', payload);\n const isReassignConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.REASSIGN_CONNECTION);\n if (isReassignConnection) {\n console.log('ReassignConnectionOnPointerUp - isReassignConnection');\n const handler = payload.dragHandler.draggableItems[ 0 ] as ReassignConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n console.log(inputsUnderPointer);\n\n if (inputsUnderPointer.length > 0) {\n if (handler.connection.fromTo?.input?.id !== inputsUnderPointer[ 0 ]?.id) {\n\n this.onReassignConnection.emit(\n new ReassignConnectionEvent(\n handler.connection.id, handler.connection.fromTo?.output.id,\n handler.connection.fromTo?.input?.id,\n inputsUnderPointer[ 0 ]?.id\n )\n );\n }\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class ReassignConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../i-drag-handler';\n\nexport class DefaultDragHandler\n implements IHandler<void, IDragHandler> {\n\n public handle(): IDragHandler {\n\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: new Point(0, 0),\n draggableItems: []\n };\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase implements IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract data: any;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable()\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-external-item\",\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective extends FExternalItemBase implements OnInit, OnDestroy {\n\n @Input()\n public override id: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override data: any;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { DomElementExtensions, IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FExternalItemBase } from '../../../f-external-item';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class ExternalItemOnPointerMoveHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.PALETTE_ITEM;\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = RectExtensions.fromElement(this.externalItem.hostElement);\n this.placeholder = DomElementExtensions.deepCloneNode(this.externalItem.hostElement);\n document.body.appendChild(this.placeholder);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public getPlaceholderRect(): IRect {\n return RectExtensions.fromElement(this.placeholder!);\n }\n\n public complete(): void {\n document.body.removeChild(this.placeholder!);\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerDownRequest } from './external-item-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport {\n ExternalItemOnPointerMoveHandler\n} from '../external-item-on-pointer-move';\n\nexport class ExternalItemOnPointerDownHandler\n implements IHandler<ExternalItemOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fExternalItemService: FExternalItemService,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n if (isExternalItem(payload.event.targetElement)) {\n const item = this.fExternalItemService.getItem(getExternalItem(payload.event.targetElement));\n if (!item) {\n throw new Error('External item not found');\n }\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new ExternalItemOnPointerMoveHandler(item)\n ]\n };\n }\n return result;\n }\n}\n","import { IRect } from '@foblex/core';\n\nexport class CreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerUpRequest } from './external-item-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ExternalItemOnPointerMoveHandler } from '../external-item-on-pointer-move';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\nimport { EventEmitter } from '@angular/core';\nimport { CreateNodeEvent } from '../create-node.event';\n\nexport class ExternalItemOnPointerUpHandler\n implements IHandler<ExternalItemOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateNode: EventEmitter<CreateNodeEvent>\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.fFlow.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragPaletteItem = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.PALETTE_ITEM);\n\n if (isDragPaletteItem) {\n const dragHandler = payload.dragHandler.draggableItems[ 0 ] as ExternalItemOnPointerMoveHandler\n dragHandler.move(difference);\n\n const isPointerInCanvasRect = document.elementsFromPoint(payload.event.getPosition().x, payload.event.getPosition().y).some((x) => x === this.fFlow.hostElement);\n if (isPointerInCanvasRect) {\n const rectInCanvas = getElementRectInCanvas(dragHandler.placeholder!, this.fFlow.transform, this.fFlow.hostElement);\n this.onCreateNode.emit(\n new CreateNodeEvent(rectInCanvas, dragHandler.externalItem.data)\n );\n }\n dragHandler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class ExternalItemOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class NodeOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[],\n public isMoveCurrentNode: boolean = false\n ) {\n }\n}\n","import { IPoint, ITransformModel, IVector, Point, VectorExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionDragHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.CONNECTION;\n\n private onPointerDownVector: IVector = VectorExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownVector = getConnectionIntersect(\n this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost),\n this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost)\n );\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = Point.fromPoint(this.onPointerDownVector.point1).add(difference);\n const toPoint = Point.fromPoint(this.onPointerDownVector.point2).add(difference);\n\n this.connection.setVector(VectorExtensions.initialize(fromPoint, toPoint));\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionSourceDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = RectExtensions.addPoint(this.onPointerDownFromConnectorRect, difference);\n const vector = getConnectionIntersect(fromPoint, this.onPointerDownToConnectorRect);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';\n\nexport class FConnectionTargetDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toPoint);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FNodeBase } from '../../../../components';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.NODE;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n public fNode: FNodeBase\n ) {\n this.onPointerDownPosition = this.fNode.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const position = Point.fromPoint(this.onPointerDownPosition).add(difference);\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n this.fLineAlignment?.handle(difference);\n }\n\n public complete(): void {\n this.fNode.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerDownRequest } from './node-on-pointer-down.request';\nimport { FFlowBase, isNodeDragHandle } from '../../../../components';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FNodesContainerBase } from '../../../f-containers';\nimport { FConnectionsContainerBase } from '../../../f-containers';\nimport { FNodeInputBase, FNodeOutputBase } from '../../../../components';\nimport { FNodeBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n FConnectionDragHandler,\n FConnectionSourceDragHandler,\n FConnectionTargetDragHandler,\n NodeOnPointerMove\n} from '../node-on-pointer-move';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerDown\n implements IHandler<NodeOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: NodeOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (node) {\n if (isNodeDragHandle(payload.event.targetElement)) {\n if (!payload.selectedItems.includes(node) && payload.isMoveCurrentNode) {\n payload.selectedItems.push(node);\n node.select();\n }\n this.fNodesContainer.setNodeToTopLayer(node!);\n const itemsToDrag: IDraggableItem[] = this.calculateDraggableConnectionsAndNodes(payload);\n\n const draggedNodes = itemsToDrag.filter((x) => {\n return x.type === EDraggableType.NODE;\n }).map((x) => (x as NodeOnPointerMove).fNode);\n\n this.fLineAlignment?.initialize(this.fNodesContainer.fNodes.toArray(), draggedNodes);\n\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: itemsToDrag\n }\n }\n }\n\n return result;\n }\n\n private calculateDraggableConnectionsAndNodes(payload: NodeOnPointerDownRequest): IDraggableItem[] {\n let itemsToDrag: IDraggableItem[] = [];\n\n const selectedNodes = payload.selectedItems.map((x) => {\n return this.fNodesContainer.findNode(x.hostElement);\n }).filter((x) => !!x) as FNodeBase[];\n\n const nodeDragHandlers = selectedNodes.map((x) => new NodeOnPointerMove(this.fLineAlignment, x));\n itemsToDrag = nodeDragHandlers;\n\n const allOutputs: FNodeOutputBase[] = selectedNodes.reduce((result: FNodeOutputBase[], x: FNodeBase) => {\n return result.concat(this.getOutputsForNode(x));\n }, []);\n\n const allInputs: FNodeInputBase[] = selectedNodes.reduce((result: FNodeInputBase[], x: FNodeBase) => {\n return result.concat(this.getInputsForNode(x));\n }, []);\n\n nodeDragHandlers.forEach((nodeHandler) => {\n const outputConnections = this.fConnectionsContainer.findOutgoingConnections(this.getOutputsForNode(nodeHandler.fNode));\n outputConnections.forEach((c) => {\n if (allInputs.includes(c.fromTo!.input!)) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n } else {\n itemsToDrag.push(new FConnectionSourceDragHandler(c, payload.transform, this.hostElement));\n }\n });\n const inputConnections = this.fConnectionsContainer.findIncomingConnections(this.getInputsForNode(nodeHandler.fNode));\n inputConnections.forEach((c) => {\n if (allOutputs.includes(c.fromTo!.output! as FNodeOutputBase)) {\n const index = itemsToDrag.findIndex((x) => x.type === EDraggableType.CONNECTION && (x as FConnectionDragHandler).connection.id === c.id);\n if (index !== -1) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n }\n } else {\n itemsToDrag.push(new FConnectionTargetDragHandler(c, payload.transform, this.hostElement));\n }\n });\n //itemsToDrag.push(new NodeOnPointerMove(this.fLineAlignment, x.fNode));\n });\n return itemsToDrag;\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.toArray().filter((x) => node.isContains(x.hostElement));\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.toArray().filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerUpRequest } from './node-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectIfIntersectDirective } from '../../../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerUp\n implements IHandler<NodeOnPointerUpRequest, void> {\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fConnectIfIntersect: FConnectIfIntersectDirective | undefined,\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: NodeOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragNodes = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n\n if (isDragNodes) {\n const nearestIntersection = this.fLineAlignment?.findNearestCoordinate(difference);\n if (nearestIntersection) {\n difference.x = nearestIntersection.xResult.value ? (difference.x - nearestIntersection.xResult.distance!) : difference.x;\n difference.y = nearestIntersection.yResult.value ? (difference.y - nearestIntersection.yResult.distance!) : difference.y;\n }\n\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n this.fConnectIfIntersect?.handle(payload.dragHandler.draggableItems);\n this.fLineAlignment?.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class NodeOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FSelectionDirective } from '../../../f-selection';\nimport { ISelectable } from '../../../../i-selectable';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\n\nexport class SelectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.SELECTION;\n\n public selectedItems: ISelectable[] = [];\n\n private items: { element: ISelectable, rect: IRect }[] = [];\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private selectedOnStart: ISelectable[],\n private onPointerDownPosition: IPoint = PointExtensions.initialize()\n ) {\n const nodeRects = fFlow.fNodesContainer.fNodes.map((x) => {\n return {\n element: x,\n rect: getElementRectInCanvas(x.hostElement, fFlow.transform, this.fFlow.hostElement)\n };\n });\n\n const lineRects = fFlow.fConnectionsContainer.fConnections.map((x) => {\n return {\n element: x,\n rect: getElementRectInCanvas(x.fPath.hostElement, fFlow.transform, this.fFlow.hostElement)\n };\n });\n this.items = [ ...nodeRects, ...lineRects ].filter((x) => {\n return !selectedOnStart.includes(x.element);\n });\n }\n\n public initialize(): void {\n this.fSelection?.show();\n this.fSelection?.draw({ ...this.onPointerDownPosition, width: 0, height: 0 });\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.onPointerDownPosition);\n\n const x: number = Math.min(this.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelection?.draw({ x, y, width, height });\n this.selectedItems = [];\n this.items.forEach((item) => {\n item.element.deselect();\n if (\n RectExtensions.intersectionWithRect(item.rect, RectExtensions.initialize(x, y, width, height))\n ) {\n item.element.select();\n this.selectedItems.push(item.element);\n }\n });\n }\n\n public complete(): void {\n this.fSelection?.hide();\n this.selectedItems.push(...this.selectedOnStart || [])\n }\n}\n","import { IHandler, MouseEventExtensions, Point } from '@foblex/core';\nimport { FFlowBase, FSelectionDirective, isNodeOutlet, isNodeOutput } from '../../../../components';\nimport { ISelectable } from '../../../../i-selectable';\nimport { SelectionOnPointerDownRequest } from './selection-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class SelectionOnPointerDown implements IHandler<SelectionOnPointerDownRequest, IDragHandler> {\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: SelectionOnPointerDownRequest): IDragHandler {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n let node = this.fFlow.fNodesContainer.findNode(payload.event.targetElement);\n const connection = this.fFlow.fConnectionsContainer.findConnectionWithElement(payload.event.targetElement);\n\n payload.selectedItems.forEach((x) => {\n if (x !== node || (!isNodeOutlet(payload.event.targetElement) && !isNodeOutput(payload.event.targetElement))) {\n x.deselect();\n }\n });\n const isMultiselect =\n MouseEventExtensions.isCommandButton(payload.event.originalEvent) ||\n MouseEventExtensions.isShiftPressed(payload.event.originalEvent);\n if (!isMultiselect) {\n payload.selectedItems = [];\n }\n if (node) {\n if (node) {\n if (!payload.selectedItems.includes(node)) {\n payload.selectedItems.push(node);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(node), 1);\n }\n }\n\n } else if (connection) {\n if (!payload.selectedItems.includes(connection)) {\n payload.selectedItems.push(connection);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(connection), 1);\n }\n }\n payload.selectedItems.forEach((x) => {\n if (!x.isSelected()) {\n x.select();\n }\n });\n\n let draggableItems: IDraggableItem[] = [];\n if (MouseEventExtensions.isShiftPressed(payload.event.originalEvent)) {\n draggableItems = [\n new SelectionOnPointerMove(this.fFlow, this.fSelection, payload.selectedItems, pointerPositionInCanvas)\n ];\n }\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: draggableItems,\n selectedItems: payload.selectedItems\n }\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { SelectionOnPointerUpRequest } from './selection-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ISelectable } from '../../../../i-selectable';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\n\nexport class SelectionOnPointerUp\n implements IHandler<SelectionOnPointerUpRequest, ISelectable[]> {\n\n constructor(\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: SelectionOnPointerUpRequest): ISelectable[] {\n let result: ISelectable[] = payload.selectedItems;\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isSelection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.SELECTION);\n\n if (isSelection) {\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n result = (payload.dragHandler.draggableItems[ 0 ] as SelectionOnPointerMove).selectedItems;\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FFlowBase } from '../../components';\nimport { ITransformModel } from '@foblex/core';\n\n@Injectable()\nexport class FDraggableService {\n\n private fFlow: FFlowBase | undefined;\n\n public get hostElement(): SVGSVGElement {\n return this.fFlow!.hostElement;\n }\n\n public get transform(): ITransformModel {\n return this.fFlow!.transform;\n }\n\n constructor(\n ) {\n }\n\n public setFlow(fFlow: FFlowBase): void {\n this.fFlow = fFlow;\n }\n\n public onPointerDown(event: PointerEvent): void {\n\n }\n}\n","import {\n IDragAndDropBase, IHasHostElement, IPointerEvent, ITransformModel, Point\n} from '@foblex/core';\nimport { Subscription } from 'rxjs';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy } from '@angular/core';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FBackgroundBase } from '../../internal';\nimport { FFlowBase, FSelectionDirective } from '../../components';\nimport { CanvasOnPointerDownHandler, CanvasOnPointerDownRequest } from './canvas';\nimport { IDragHandler } from './i-drag-handler';\nimport { DefaultDragHandler } from './default-drag-handler';\nimport {\n SelectionOnPointerDown,\n SelectionOnPointerDownRequest,\n SelectionOnPointerUp,\n SelectionOnPointerUpRequest\n} from './selection';\nimport {\n ReassignConnectionEvent, ReassignConnectionOnPointerDown,\n ReassignConnectionOnPointerDownRequest, ReassignConnectionOnPointerUp, ReassignConnectionOnPointerUpRequest\n} from './connections';\nimport { NodeOnPointerDown, NodeOnPointerDownRequest, NodeOnPointerUp, NodeOnPointerUpRequest } from './node';\nimport {\n CreateConnectionEvent, CreateConnectionOnPointerDown,\n CreateConnectionOnPointerDownRequest, CreateConnectionOnPointerUp, CreateConnectionOnPointerUpRequest\n} from './connections';\nimport { EDraggableType } from './e-draggable-type';\nimport { FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../f-line-alignment';\nimport { ISelectable } from '../../i-selectable';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport {\n CreateNodeEvent,\n ExternalItemOnPointerDownHandler,\n ExternalItemOnPointerDownRequest,\n ExternalItemOnPointerUpHandler, ExternalItemOnPointerUpRequest\n} from './external-item';\n\nexport const F_DND_DIRECTIVE = new InjectionToken<FDraggableBase>('F_DND_DIRECTIVE');\n\n@Directive()\nexport abstract class FDraggableBase extends IDragAndDropBase implements IHasHostElement, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n private get fItemsContainer(): FItemsContainerBase {\n return this.fFlow.fItemsContainer;\n }\n\n private get fBackground(): FBackgroundBase {\n return this.fFlow.fBackground;\n }\n\n private dragHandler: IDragHandler = new DefaultDragHandler().handle();\n\n private dragSelection!: SelectionOnPointerDown;\n private reassignConnection!: ReassignConnectionOnPointerDown;\n private dragCanvas!: CanvasOnPointerDownHandler;\n private dragNode!: NodeOnPointerDown;\n private createConnection!: CreateConnectionOnPointerDown;\n private dragExternalItem!: ExternalItemOnPointerDownHandler;\n\n public abstract onCreateConnection: EventEmitter<CreateConnectionEvent>;\n\n public abstract onReassignConnection: EventEmitter<ReassignConnectionEvent>;\n\n public abstract onCreateNode: EventEmitter<CreateNodeEvent>;\n\n public abstract fLineAlignment: FLineAlignmentDirective | undefined;\n public abstract fConnectIfIntersect: FConnectIfIntersectDirective | undefined;\n public abstract fSelection: FSelectionDirective | undefined;\n\n private selectedItems: ISelectable[] = [];\n\n protected constructor(\n protected fFlow: FFlowBase,\n protected fDNDService: FDraggableService,\n protected fExternalItemService: FExternalItemService,\n private elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone,\n ) {\n super(ngZone);\n this.fDNDService.setFlow(this.fFlow);\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(document);\n\n this.dragSelection = new SelectionOnPointerDown(this.fFlow, this.fSelection, this.hostElement);\n this.reassignConnection = new ReassignConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragCanvas = new CanvasOnPointerDownHandler(this.fBackground, this.fItemsContainer, this.hostElement);\n this.dragNode = new NodeOnPointerDown(this.fLineAlignment, this.fFlow, this.hostElement);\n this.createConnection = new CreateConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragExternalItem = new ExternalItemOnPointerDownHandler(this.fExternalItemService, this.hostElement);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n let result: boolean = event.isMouseLeftButton();\n const selection = this.dragSelection.handle(\n new SelectionOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n this.selectedItems = selection.selectedItems || [];\n\n const reassignConnection = this.reassignConnection.handle(\n new ReassignConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const createConnection = this.createConnection.handle(\n new CreateConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const dragNode = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n\n const dragCanvas = this.dragCanvas.handle(\n new CanvasOnPointerDownRequest(event)\n );\n\n const dragExternalItem = this.dragExternalItem.handle(\n new ExternalItemOnPointerDownRequest(event)\n );\n\n const dragSelection = selection.draggableItems.length ? selection : undefined;\n\n const dragHandle = dragSelection || reassignConnection || createConnection || dragNode || dragCanvas || dragExternalItem;\n if (!dragHandle) {\n this.dragHandler = new DefaultDragHandler().handle();\n result = false;\n } else {\n this.dragHandler = dragHandle;\n }\n\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n const isDragNodes = this.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n if (isDragNodes) {\n this.dragHandler = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems, true)\n )!;\n }\n this.dragHandler.draggableItems.forEach((item) => {\n item.initialize();\n });\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).matrixTransform(this.hostElement);\n const difference = pointerPositionInCanvas.div(this.dragHandler.onPointerDownScale).sub(this.dragHandler.onPointerDownPosition);\n this.dragHandler.draggableItems.forEach((item) => {\n item.move(difference);\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n new ReassignConnectionOnPointerUp(this.fFlow, this.onReassignConnection).handle(\n new ReassignConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new CreateConnectionOnPointerUp(this.fFlow, this.onCreateConnection).handle(\n new CreateConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new NodeOnPointerUp(this.fLineAlignment, this.fConnectIfIntersect, this.hostElement).handle(\n new NodeOnPointerUpRequest(event, this.dragHandler)\n );\n\n this.selectedItems = new SelectionOnPointerUp(this.hostElement).handle(\n new SelectionOnPointerUpRequest(event, this.dragHandler, this.selectedItems)\n );\n\n new ExternalItemOnPointerUpHandler(this.fFlow, this.onCreateNode).handle(\n new ExternalItemOnPointerUpRequest(event, this.dragHandler)\n );\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByX(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceLeftLeft = target.x - element.x;\n const distanceLeftRight = target.x - (element.x + element.width);\n const distanceCenterCenter = target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (target.x + target.width) - element.x;\n const distanceRightRight = (target.x + target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceLeftRight) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightRight) <= ALIGN_THRESHOLD\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByY(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceTopTop = target.y - element.y;\n const distanceTopBottom = target.y - (element.y + element.height);\n const distanceCenterCenter = target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (target.y + target.height) - element.y;\n const distanceBottomBottom = (target.y + target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceTopBottom) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomBottom) <= ALIGN_THRESHOLD\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n}\n","import { Directive, ElementRef, Inject, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, LineFElement, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { F_FLOW_COMPONENT, FFlowBase, FNodeBase, getElementRectInCanvas } from '../../components';\nimport { findNearestCoordinateByX, findNearestCoordinateByY, ILineAlignmentResult } from './domain';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentDirective>('F_LINE_ALIGNMENT');\n\n@Directive({\n selector: \"g[fLineAlignment]\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentDirective }\n ],\n})\nexport class FLineAlignmentDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fHorizontalLine: LineFElement = new LineFElement();\n\n private fVerticalLine: LineFElement = new LineFElement();\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fFlow.fItemsContainer.transform;\n }\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fHorizontalLine.hostElement);\n this.hostElement.appendChild(this.fVerticalLine.hostElement);\n }\n\n public initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.fFlow.hostElement.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects);\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n }\n\n public handle(difference: IPoint): void {\n this.drawIntersections(difference);\n }\n\n private drawIntersections(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n x1: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n x2: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n y1: 0,\n y2: this.size.height\n });\n } else {\n this.fVerticalLine.hide();\n }\n if (intersect.yResult.value !== undefined) {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n x1: 0,\n x2: this.size.width,\n y1: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n y2: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n });\n } else {\n this.fHorizontalLine.hide();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n let result: ILineAlignmentResult = {\n xResult: { value: undefined, distance: undefined },\n yResult: { value: undefined, distance: undefined }\n };\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const xResult = findNearestCoordinateByX(this.rects, rect);\n const yResult = findNearestCoordinateByY(this.rects, rect);\n result = { xResult, yResult };\n return result;\n }\n\n public complete(): void {\n this.fVerticalLine.hide();\n this.fHorizontalLine.hide();\n }\n}\n","import { ContentChild, Directive, ElementRef, EventEmitter, Inject, Input, NgZone, Output } from \"@angular/core\";\nimport { F_DND_DIRECTIVE, FDraggableBase } from './f-draggable-base';\nimport { F_FLOW_COMPONENT, F_SELECTION, FFlowBase, FSelectionDirective } from '../../components';\nimport { F_CONNECT_IF_INTERSECT, FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { F_LINE_ALIGNMENT, FLineAlignmentDirective } from '../f-line-alignment';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport { CreateConnectionEvent, ReassignConnectionEvent } from './connections';\nimport { CreateNodeEvent } from './external-item';\n\n@Directive({\n selector: \"svg[fDraggable]\",\n providers: [\n { provide: F_DND_DIRECTIVE, useExisting: FDraggableDirective }\n ]\n})\nexport class FDraggableDirective extends FDraggableBase {\n\n @Input()\n public override disabled: boolean = false;\n\n @ContentChild(F_LINE_ALIGNMENT, { static: true })\n public override fLineAlignment: FLineAlignmentDirective | undefined;\n\n @ContentChild(F_CONNECT_IF_INTERSECT, { static: true })\n public override fConnectIfIntersect: FConnectIfIntersectDirective | undefined;\n\n @ContentChild(F_SELECTION, { static: true })\n public override fSelection: FSelectionDirective | undefined;\n\n @Output()\n public override onCreateConnection: EventEmitter<CreateConnectionEvent> = new EventEmitter<CreateConnectionEvent>();\n\n @Output()\n public override onReassignConnection: EventEmitter<ReassignConnectionEvent> = new EventEmitter<ReassignConnectionEvent>();\n\n @Output()\n public override onCreateNode: EventEmitter<CreateNodeEvent> = new EventEmitter<CreateNodeEvent>();\n\n constructor(\n @Inject(F_FLOW_COMPONENT) fFlow: FFlowBase,\n fDNDService: FDraggableService,\n fExternalItemService: FExternalItemService,\n elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone\n ) {\n super(fFlow, fDNDService, fExternalItemService, elementReference, ngZone);\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { FDraggableDirective } from './f-draggable.directive';\nimport { FExternalItemDirective, FExternalItemService } from '../f-external-item';\nimport { FLineAlignmentDirective } from '../f-line-alignment';\nimport { FSelectionDirective } from '../f-selection';\nimport { FConnectIfIntersectDirective } from '../f-connect-if-intersect';\nimport { FDraggableService } from './f-draggable.service';\n\n@NgModule({\n declarations: [\n FDraggableDirective,\n FExternalItemDirective,\n FLineAlignmentDirective,\n FSelectionDirective,\n FConnectIfIntersectDirective\n ],\n imports: [],\n providers: [\n FExternalItemService,\n FDraggableService\n ],\n exports: [\n FDraggableDirective,\n FExternalItemDirective,\n FLineAlignmentDirective,\n FSelectionDirective,\n FConnectIfIntersectDirective\n ]\n})\nexport class FDraggableModule {\n\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\nimport { ConnectIfIntersectRequest } from './connect-if-intersect.request';\nimport { FConnectionBase } from '../../../components/f-connection/f-connection-base';\nimport { FFlowBase, FNodeBase, FNodeInputBase, FNodeOutputBase, getElementRectInCanvas } from '../../../components';\nimport { FItemsContainerBase } from '../../f-containers';\nimport { findIncomingConnections, findOutgoingConnections } from '../../f-containers';\nimport { EDraggableType } from '../../f-draggable';\nimport { NodeOnPointerMove } from '../../f-draggable';\n\nexport class ConnectIfIntersectHandler implements IHandler<ConnectIfIntersectRequest> {\n\n constructor(\n private connections: FConnectionBase<FNodeOutputBase>[],\n private fFlow: FFlowBase,\n private fItemsContainer: FItemsContainerBase\n ) {\n }\n\n public handle(request: ConnectIfIntersectRequest): void {\n const isValid = this.isValidRequest(request);\n if (!isValid) {\n return;\n }\n const fNode = (request.draggableItems[ 0 ] as NodeOnPointerMove).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n const isCantBeConnectedByInput = this.connections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fromTo?.input?.id);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n const outgoingConnections = findOutgoingConnections(this.connections, [ output ]);\n const incomingConnections = findIncomingConnections(this.connections, [ input ]);\n if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n const connections = this.findConnectionsUnderNode(fNode);\n\n console.log('connections', connections);\n\n // if (connections.length) {\n // const connectedTo = (connections[ 0 ].fromTo?.output as FNodeOutputBase).connectedTo;\n // (connections[ 0 ].fromTo?.output as FNodeOutputBase).connectTo(input.id);\n // output.connectTo(connectedTo);\n // }\n }\n }\n }\n\n private isValidRequest(request: ConnectIfIntersectRequest): boolean {\n const result =\n request?.draggableItems.length === 1 &&\n request?.draggableItems[ 0 ].type === EDraggableType.NODE;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase<FNodeOutputBase>[] {\n const nodeRect = getElementRectInCanvas(node.hostElement, this.fItemsContainer.transform, this.fFlow.hostElement);\n return this.connections.filter((x) => {\n const intersection = RectExtensions.intersectionWithVector(nodeRect, x.vector.point1, x.vector.point2);\n return (intersection || []).length > 0\n });\n }\n}\n","import { IDraggableItem } from '../../f-draggable';\n\nexport class ConnectIfIntersectRequest {\n\n constructor(\n public readonly draggableItems: IDraggableItem[]\n ) {\n }\n}\n","import { ContentChildren, Directive, Inject, InjectionToken, QueryList } from '@angular/core';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from '../../components/f-connection/f-connection-base';\nimport { F_FLOW_COMPONENT, FFlowBase, FNodeOutputBase } from '../../components';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { IDraggableItem } from '../f-draggable';\nimport { ConnectIfIntersectHandler, ConnectIfIntersectRequest } from './connect-if-intersect';\n\nexport const F_CONNECT_IF_INTERSECT = new InjectionToken<FConnectIfIntersectDirective>('F_CONNECT_IF_INTERSECT');\n\n@Directive({\n selector: \"g[fConnectIfIntersect]\",\n providers: [\n { provide: F_CONNECT_IF_INTERSECT, useExisting: FConnectIfIntersectDirective }\n ]\n})\nexport class FConnectIfIntersectDirective {\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n @Inject(F_ITEMS_CONTAINER) private fItemsContainer: FItemsContainerBase\n ) {\n }\n\n public handle(draggableItems: IDraggableItem[]): void {\n new ConnectIfIntersectHandler(\n this.fConnections.toArray(), this.fFlow, this.fItemsContainer\n ).handle(\n new ConnectIfIntersectRequest(draggableItems)\n );\n }\n}\n","import { EventExtensions, Point, RectExtensions } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../../internal';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FDraggableBase } from '../f-draggable';\nimport { isNode } from '../../components';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n private minimum: number = 0.3;\n private maximum: number = 4;\n\n private step: number = 1.1;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n protected constructor(\n private fItemsContainer: FItemsContainerBase,\n private fDnd: FDraggableBase,\n private fCanvas: FCanvasBase,\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled && this.fCanvas.hostElement) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n\n this.fCanvas.hostElement.addEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.fCanvas.hostElement.removeEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fItemsContainer.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (event.deltaY > 0) {\n if (this.getScale() / this.step >= this.minimum) {\n result = this.getScale() / this.step;\n }\n } else if (event.deltaY < 0) {\n if (this.getScale() * this.step <= this.maximum) {\n result = this.getScale() * this.step;\n }\n }\n\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n public onZoomToCenter(deltaY: number): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.fCanvas.hostElement);\n\n this.onWheel({\n deltaY, preventDefault, clientX: rect.gravityCenter.x, clientY: rect.gravityCenter.y\n } as WheelEvent);\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted || isNode(event.target as HTMLElement)) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (this.getScale() * 1.7 <= this.maximum) {\n result = this.getScale() * 1.7;\n }\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redrawWithAnimation();\n this.fItemsContainer.completeDrag();\n }\n\n public reset(): void {\n this.fItemsContainer.resetZoom();\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Inject, Input, OnDestroy\n} from \"@angular/core\";\nimport { BooleanExtensions } from '@foblex/core';\nimport { FZoomBase, F_ZOOM } from './f-zoom-base';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { F_CANVAS, FCanvasBase } from '../../internal';\nimport { F_DND_DIRECTIVE, FDraggableBase } from '../f-draggable';\n\n@Directive({\n selector: \"g[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-flow-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n constructor(\n @Inject(F_ITEMS_CONTAINER) fItemsContainer: FItemsContainerBase,\n @Inject(F_DND_DIRECTIVE) fDnd: FDraggableBase,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(fItemsContainer, fDnd, fCanvas);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, InjectionToken, NgZone, OnDestroy, QueryList } from '@angular/core';\nimport { IHasHostElement, ITransformModel } from '@foblex/core';\nimport { FItemsContainerBase } from '../../directives';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\nimport { merge, startWith, Subject, takeUntil } from 'rxjs';\nimport { FBackgroundBase } from '../../internal';\nimport { FConnectionsContainerBase } from '../../directives';\nimport { FNodesContainerBase } from '../../directives';\n\nexport const F_FLOW_COMPONENT = new InjectionToken<FFlowBase>('F_FLOW_COMPONENT');\n\n@Directive()\nexport abstract class FFlowBase implements IHasHostElement, AfterContentInit, OnDestroy {\n\n public abstract id: any;\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private readonly onDestroy: Subject<void> = new Subject<void>();\n\n\n public abstract fNodesContainer: FNodesContainerBase;\n\n public abstract fConnectionsContainer: FConnectionsContainerBase;\n\n\n public abstract fItemsContainer: FItemsContainerBase;\n\n public abstract fBackground: FBackgroundBase;\n\n public abstract transform: ITransformModel;\n\n public abstract outlets: QueryList<FNodeOutletBase>;\n\n public abstract outputs: QueryList<FNodeOutputBase>;\n\n public abstract inputs: QueryList<FNodeInputBase>;\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n }\n\n public ngAfterContentInit(): void {\n this.subscribeOnComponentsChanges();\n }\n\n protected subscribeOnComponentsChanges(): void {\n const changes = [\n this.fNodesContainer.fNodes.changes,\n this.fConnectionsContainer.fConnections.changes,\n this.outlets.changes,\n this.outputs.changes,\n this.inputs.changes\n ];\n\n merge(...changes).pipe(startWith(null), takeUntil(this.onDestroy)).subscribe(() => {\n const changedOrDestroyed = merge(...changes, this.onDestroy);\n\n merge(this.fNodesContainer.stateChanges).pipe(startWith(null), takeUntil(changedOrDestroyed)).subscribe(() => {\n\n this.fConnectionsContainer.fConnections.forEach((connection) => {\n connection.fromTo = {\n output: this.outputs.find((x) => x.id === connection.outputId)!,\n input: this.inputs.find((x) => x.id === connection.inputId)!\n };\n connection.initialize();\n });\n });\n\n });\n }\n\n public ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import {\n ChangeDetectorRef,\n Component, ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n NgZone,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { FCanvasDirective } from '../../internal';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../../directives';\nimport { F_FLOW_COMPONENT, FFlowBase } from './f-flow-base';\nimport { ITransformModel } from '@foblex/core';\nimport {\n F_NODE_INPUT_DIRECTIVE, F_NODE_OUTLET_DIRECTIVE,\n F_NODE_OUTPUT_DIRECTIVE,\n FNodeInputBase,\n FNodeOutletBase,\n FNodeOutputBase\n} from '../f-connectors';\nimport { F_NODES_CONTAINER, FNodesContainerBase } from '../../directives';\nimport {\n F_CONNECTIONS_CONTAINER,\n FConnectionsContainerBase\n} from '../../directives';\nimport { F_BACKGROUND, FBackgroundBase } from '../../internal';\n\nlet uniqueId: number = 0;\n\nexport const CONNECTION_MARKER_START = \"connection-marker-start\";\nexport const CONNECTION_MARKER_END = \"connection-marker-end\";\nexport const CONNECTION_MARKER_START_SELECTED = \"connection-marker-start-selected\";\nexport const CONNECTION_MARKER_END_SELECTED = \"connection-marker-end-selected\";\n@Component({\n selector: 'svg[fFlow]',\n templateUrl: './f-flow.component.html',\n hostDirectives: [\n {\n directive: FCanvasDirective\n }\n ],\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-flow\"\n },\n providers: [ { provide: F_FLOW_COMPONENT, useExisting: FFlowComponent } ],\n})\nexport class FFlowComponent extends FFlowBase {\n\n public readonly CONNECTION_MARKER_START = CONNECTION_MARKER_START;\n public readonly CONNECTION_MARKER_END = CONNECTION_MARKER_END;\n public readonly CONNECTION_MARKER_START_SELECTED = CONNECTION_MARKER_START_SELECTED;\n public readonly CONNECTION_MARKER_END_SELECTED = CONNECTION_MARKER_END_SELECTED;\n\n @Input()\n public override id: string = `f-flow-${ uniqueId++ }`;\n\n @ContentChild(F_NODES_CONTAINER, { static: true })\n public override fNodesContainer!: FNodesContainerBase;\n\n @ContentChild(F_CONNECTIONS_CONTAINER, { descendants: true })\n public override fConnectionsContainer!: FConnectionsContainerBase;\n\n @ContentChild(F_ITEMS_CONTAINER, { static: true })\n public override fItemsContainer!: FItemsContainerBase;\n\n @ViewChild(F_BACKGROUND, { static: true })\n public override fBackground!: FBackgroundBase;\n\n @ContentChildren(F_NODE_OUTLET_DIRECTIVE, { descendants: true })\n public override outlets!: QueryList<FNodeOutletBase>;\n\n @ContentChildren(F_NODE_OUTPUT_DIRECTIVE, { descendants: true })\n public override outputs!: QueryList<FNodeOutputBase>;\n\n @ContentChildren(F_NODE_INPUT_DIRECTIVE, { descendants: true })\n public override inputs!: QueryList<FNodeInputBase>;\n\n public override get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>,\n changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone\n ) {\n super(elementReference, changeDetectorRef, ngZone);\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild\n} from \"@angular/core\";\nimport { IVector } from '@foblex/core';\nimport { F_CONNECTION_COMPONENT, FConnectionBase } from './f-connection-base';\nimport { FConnectionTextComponent } from './f-connection-text/f-connection-text.component';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection/f-connection-selection.component';\nimport { FConnectionGradientComponent } from './f-gradient/f-connection-gradient.component';\nimport { FConnectionPathComponent } from './f-path/f-connection-path.component';\nimport { F_FLOW_COMPONENT, FFlowBase } from '../f-flow';\nimport { getConnectionIntersect } from './get-connection-intersect';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fConnection]\",\n templateUrl: \"./f-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-connection\"\n },\n providers: [ { provide: F_CONNECTION_COMPONENT, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent extends FConnectionBase {\n\n @Input()\n public override id: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override outputId: any;\n\n @Input()\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n @Inject(F_FLOW_COMPONENT) private flow: FFlowBase\n ) {\n super();\n }\n\n public override initialize(): void {\n const vector = getConnectionIntersect(\n this.fromTo!.output.getElementRectInCanvas(this.flow.transform, this.flow.hostElement),\n this.fromTo!.input.getElementRectInCanvas(this.flow.transform, this.flow.hostElement)\n );\n this.setVector(vector);\n this.redraw();\n }\n\n public initializeDrag(): void {\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fDragHandle.redraw(this.vector.point2);\n this.fText.redraw(this.vector);\n }\n\n public override select(): void {\n this.fPath.select();\n super.select();\n }\n\n public override deselect(): void {\n this.fPath.deselect();\n super.deselect();\n }\n\n public completeDrag(): void {\n this.redraw();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:path fConnectionSelection [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:g>\n <svg:path f-connection-path [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:circle f-connection-drag-handle r=\"8\"></svg:circle>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { FFlowComponent } from './components';\nimport { FConnectionModule } from './components';\nimport { FNodeInputDirective, FNodeOutletDirective, FNodeOutputDirective } from './components';\nimport { FDragHandleDirective, FForeignObjectComponent, FNodeComponent } from './components';\nimport { CommonModule } from '@angular/common';\nimport {\n FConnectionsContainerComponent,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FZoomDirective\n} from './directives';\nimport { FBackgroundDirective, FCanvasDirective } from './internal';\n\n@NgModule({\n declarations: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ],\n imports: [\n CommonModule,\n FConnectionModule,\n FCanvasDirective,\n FBackgroundDirective,\n ],\n providers: [],\n exports: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FConnectionModule,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FConnectionTextPathDirective","uniqueId","i1.FConnectionGradientComponent","i2.FConnectionPathComponent","i3.FConnectionTextComponent","i1.FCanvasBase","i1.FTempConnectionComponent","i1.FExternalItemService","i1.FFlowBase","i2.FDraggableService","i3.FExternalItemService","ALIGN_THRESHOLD","i1.FDraggableService","i2.FExternalItemService","i1.FCanvasDirective","i3.FBackgroundDirective","i1.FConnectionDragHandleComponent","i2.FConnectionGradientComponent","i3.FConnectionPathComponent","i4.FConnectionTextComponent","i5.FConnectionSelectionComponent"],"mappings":"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"}