pmx-canvas 0.9.3 → 0.11.0

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 (237) hide show
  1. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  2. package/.github/extensions/pmx-canvas/tools.json +9418 -2016
  3. package/CHANGELOG.md +54 -1
  4. package/dist/canvas/chunks/abnfDiagram-N423BO3Z-p8dtp6va.js +1 -0
  5. package/dist/canvas/chunks/architecture-TIHT7OUA-9tffvpsv.js +1 -0
  6. package/dist/canvas/chunks/architectureDiagram-T3A2C74G-5jhmxrzf.js +36 -0
  7. package/dist/canvas/chunks/blockDiagram-VBNYF7ZC-pw1fa9yb.js +132 -0
  8. package/dist/canvas/chunks/c4Diagram-5PPSVZJV-x07nq0tt.js +10 -0
  9. package/dist/canvas/chunks/classDiagram-JCYQIIEL-nc6g5x1r.js +1 -0
  10. package/dist/canvas/chunks/classDiagram-v2-OCEON4UE-0qnbpwvh.js +1 -0
  11. package/dist/canvas/chunks/cose-bilkent-JH36ORCC-nm39npq0.js +1 -0
  12. package/dist/canvas/chunks/cynefin-VYW2F7L2-ys8p46ts.js +1 -0
  13. package/dist/canvas/chunks/cynefinDiagram-MW4NZA55-vdxrwahz.js +62 -0
  14. package/dist/canvas/chunks/dagre-VZM6K2ZE-bqdm7wpd.js +4 -0
  15. package/dist/canvas/chunks/diagram-7IWD3JNH-gs5gpr93.js +30 -0
  16. package/dist/canvas/chunks/diagram-B4RE2ZJO-cgwjg47s.js +3 -0
  17. package/dist/canvas/chunks/diagram-LBJQPF4R-w3vahpav.js +24 -0
  18. package/dist/canvas/chunks/diagram-Q27KOJAE-42837z6h.js +24 -0
  19. package/dist/canvas/chunks/diagram-UB23O5K3-4fz83q59.js +41 -0
  20. package/dist/canvas/chunks/ebnfDiagram-BXEA7PRR-zphtgegj.js +1 -0
  21. package/dist/canvas/chunks/erDiagram-JOGREHBK-zvbbdxp4.js +85 -0
  22. package/dist/canvas/chunks/eventmodeling-45OFAUF4-v9q6dn4c.js +1 -0
  23. package/dist/canvas/chunks/flowDiagram-UKHOOZJN-yrr5z8tc.js +1 -0
  24. package/dist/canvas/chunks/ganttDiagram-PKOTCBZU-282jzycm.js +292 -0
  25. package/dist/canvas/chunks/gitGraph-TEB2WS4Q-kdwb8m0a.js +1 -0
  26. package/dist/canvas/chunks/gitGraphDiagram-DS77QQ5N-vqqy6p1b.js +106 -0
  27. package/dist/canvas/chunks/index-0rk4gp1g.js +2 -0
  28. package/dist/canvas/chunks/index-194m3hc3.js +2 -0
  29. package/dist/canvas/chunks/index-1r72hdzb.js +301 -0
  30. package/dist/canvas/chunks/index-353m7b0p.js +2 -0
  31. package/dist/canvas/chunks/index-3cy1bzwh.js +2 -0
  32. package/dist/canvas/chunks/index-5tv8v1hk.js +1 -0
  33. package/dist/canvas/chunks/index-6ceya556.js +332 -0
  34. package/dist/canvas/chunks/index-6qmsnxwy.js +4 -0
  35. package/dist/canvas/chunks/index-d3b3gqe9.js +2 -0
  36. package/dist/canvas/chunks/index-fjtdggjn.js +2 -0
  37. package/dist/canvas/chunks/index-g3pwnqeb.js +2 -0
  38. package/dist/canvas/chunks/index-gf4e0et4.js +2 -0
  39. package/dist/canvas/chunks/index-hj99nz1f.js +1 -0
  40. package/dist/canvas/chunks/index-nprm96xp.js +16 -0
  41. package/dist/canvas/chunks/index-qj8fxwsf.js +2 -0
  42. package/dist/canvas/chunks/index-r2fyc9w1.js +89 -0
  43. package/dist/canvas/chunks/index-rft2hcz5.js +2 -0
  44. package/dist/canvas/chunks/index-rh7nv68n.js +2 -0
  45. package/dist/canvas/chunks/index-s4j678gj.js +2 -0
  46. package/dist/canvas/chunks/index-tb1wf525.js +179 -0
  47. package/dist/canvas/chunks/index-vv56h019.js +2 -0
  48. package/dist/canvas/chunks/index-w2mra17t.js +207 -0
  49. package/dist/canvas/chunks/index-wgv7en21.js +232 -0
  50. package/dist/canvas/chunks/index-yw8h9vha.js +157 -0
  51. package/dist/canvas/chunks/info-DKCQHKI2-wpzs6sz3.js +1 -0
  52. package/dist/canvas/chunks/infoDiagram-6WML65LV-v1yvggqj.js +2 -0
  53. package/dist/canvas/chunks/ishikawaDiagram-WSZJBQD7-5hnq1a9p.js +70 -0
  54. package/dist/canvas/chunks/journeyDiagram-NVQOT4AX-zjcffveh.js +139 -0
  55. package/dist/canvas/chunks/kanban-definition-27J2QSJJ-dakqtfp1.js +89 -0
  56. package/dist/canvas/chunks/katex-dmg8k4zm.js +257 -0
  57. package/dist/canvas/chunks/mermaid.core-j2geswrd.js +12 -0
  58. package/dist/canvas/chunks/mindmap-definition-FAOFIHXS-142xhr3k.js +96 -0
  59. package/dist/canvas/chunks/packet-7NZHBO7P-xn439f0s.js +1 -0
  60. package/dist/canvas/chunks/pegDiagram-VL7TDLO6-5wvk7vsd.js +1 -0
  61. package/dist/canvas/chunks/pie-RZYD4A2V-0kf16rwh.js +1 -0
  62. package/dist/canvas/chunks/pieDiagram-7S7Q4E2Y-ztdhwycc.js +39 -0
  63. package/dist/canvas/chunks/quadrantDiagram-CIZ2JOQS-c5p9gmg6.js +7 -0
  64. package/dist/canvas/chunks/radar-I7S5WNFK-0g2pz36t.js +1 -0
  65. package/dist/canvas/chunks/railroad-3IZDKUUU-fcaran6j.js +1 -0
  66. package/dist/canvas/chunks/railroad-abnf-AHOZXSZD-wgdya41q.js +1 -0
  67. package/dist/canvas/chunks/railroad-ebnf-EBAXGLYW-gy07a4ka.js +1 -0
  68. package/dist/canvas/chunks/railroad-peg-LSFZ7HO6-ewk6wtkh.js +1 -0
  69. package/dist/canvas/chunks/railroadDiagram-AXF67PYL-xkmqkjwf.js +1 -0
  70. package/dist/canvas/chunks/requirementDiagram-LRYGKXZP-9wm2dyaw.js +84 -0
  71. package/dist/canvas/chunks/sankeyDiagram-W5VNT64P-2w19etgb.js +40 -0
  72. package/dist/canvas/chunks/sequenceDiagram-SI44F4Z6-0jn0vwmz.js +162 -0
  73. package/dist/canvas/chunks/sizeCapture-X5ZJPWSS-x75epwdq.js +1 -0
  74. package/dist/canvas/chunks/stateDiagram-OKZ733FA-schjpy6d.js +1 -0
  75. package/dist/canvas/chunks/stateDiagram-v2-UEYNNEHI-k8sfp2e7.js +1 -0
  76. package/dist/canvas/chunks/swimlanes-SLNWSIFB-gkw4xce3.js +1 -0
  77. package/dist/canvas/chunks/swimlanesDiagram-ULZ7WXOC-nqysw67j.js +8 -0
  78. package/dist/canvas/chunks/timeline-definition-Z64GVDOM-x7nkcy01.js +120 -0
  79. package/dist/canvas/chunks/treeView-QDETBFTQ-cesw6gp0.js +1 -0
  80. package/dist/canvas/chunks/treemap-6X3UGDF4-zdv4knp9.js +1 -0
  81. package/dist/canvas/chunks/vennDiagram-T6HMQDX7-x8dqn9yf.js +34 -0
  82. package/dist/canvas/chunks/wardley-OPB4EBWU-44pdddez.js +1 -0
  83. package/dist/canvas/chunks/wardleyDiagram-T6FBY63Y-t1j52t9r.js +78 -0
  84. package/dist/canvas/chunks/xychartDiagram-ELKLHX3M-38t16pme.js +7 -0
  85. package/dist/canvas/global.css +389 -229
  86. package/dist/canvas/index.js +141 -211
  87. package/dist/canvas/mcp-app.html +4205 -554
  88. package/dist/canvas/mermaid-entry.js +338 -338
  89. package/dist/canvas/surface-theme.css +6 -6
  90. package/dist/json-render/index.css +1 -1
  91. package/dist/json-render/index.js +49 -49
  92. package/dist/types/client/canvas/BarHint.d.ts +5 -3
  93. package/dist/types/client/canvas/CanvasNode.d.ts +0 -11
  94. package/dist/types/client/canvas/EdgeLayer.d.ts +1 -2
  95. package/dist/types/client/canvas/auto-fit.d.ts +4 -5
  96. package/dist/types/client/mermaid-entry.d.ts +1 -2
  97. package/dist/types/client/mermaid-render.d.ts +1 -0
  98. package/dist/types/client/nodes/BoardNode.d.ts +1 -1
  99. package/dist/types/client/nodes/ExtAppFrame.d.ts +7 -90
  100. package/dist/types/client/nodes/McpAppNode.d.ts +1 -25
  101. package/dist/types/client/nodes/MermaidNode.d.ts +1 -8
  102. package/dist/types/client/nodes/ViewerFrame.d.ts +29 -0
  103. package/dist/types/client/nodes/ViewerHost.d.ts +6 -0
  104. package/dist/types/client/nodes/iframe-document-url.d.ts +3 -9
  105. package/dist/types/client/nodes/primitive-copy.d.ts +5 -0
  106. package/dist/types/client/nodes/use-iframe-content-height.d.ts +1 -1
  107. package/dist/types/client/nodes/use-surface-frame.d.ts +4 -6
  108. package/dist/types/client/nodes/viewer-runtime-state.d.ts +2 -1
  109. package/dist/types/client/state/canvas-store.d.ts +3 -1
  110. package/dist/types/client/state/intent-bridge.d.ts +1 -0
  111. package/dist/types/client/state/presentation.d.ts +17 -6
  112. package/dist/types/json-render/server.d.ts +2 -1
  113. package/dist/types/mcp/canvas-access.d.ts +1 -12
  114. package/dist/types/mcp/resource-subscriptions.d.ts +7 -0
  115. package/dist/types/mcp/server.d.ts +2 -0
  116. package/dist/types/server/ax-wait.d.ts +1 -0
  117. package/dist/types/server/canvas-operations.d.ts +1 -0
  118. package/dist/types/server/canvas-state.d.ts +2 -0
  119. package/dist/types/server/index.d.ts +11 -6
  120. package/dist/types/server/operations/http.d.ts +10 -0
  121. package/dist/types/server/operations/index.d.ts +2 -2
  122. package/dist/types/server/operations/invoker.d.ts +4 -3
  123. package/dist/types/server/operations/mcp-contracts.d.ts +20 -0
  124. package/dist/types/server/operations/mcp.d.ts +2 -0
  125. package/dist/types/server/operations/ops/batch.d.ts +1 -0
  126. package/dist/types/server/operations/ops/boards.d.ts +0 -1
  127. package/dist/types/server/operations/registry.d.ts +2 -2
  128. package/dist/types/server/operations/types.d.ts +12 -2
  129. package/dist/types/server/server.d.ts +2 -0
  130. package/dist/types/server/tour-control.d.ts +13 -3
  131. package/dist/types/server/webpage-node.d.ts +1 -0
  132. package/dist/types/shared/ax-surface-protocol.d.ts +0 -9
  133. package/dist/types/shared/tour.d.ts +8 -0
  134. package/docs/api-reference.md +2 -2
  135. package/docs/cli.md +1 -1
  136. package/docs/design/Chrome.dc.html +32 -6
  137. package/docs/design/Types1.dc.html +3 -2
  138. package/docs/design/Types2.dc.html +1 -1
  139. package/docs/design/Types3.dc.html +1 -1
  140. package/docs/design/Zoom.dc.html +37 -60
  141. package/docs/design/canvas.json +1 -1
  142. package/docs/design.md +169 -4
  143. package/docs/http-api.md +82 -1
  144. package/docs/mcp.md +101 -21
  145. package/docs/node-types.md +38 -3
  146. package/docs/plans/plan-009-tech-debt-backlog.md +2 -2
  147. package/docs/plans/plan-019-post-0.9-roadmap.md +402 -13
  148. package/docs/product-vision-2026-09.md +9 -0
  149. package/docs/sdk.md +5 -2
  150. package/package.json +2 -2
  151. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  152. package/plugins/pmx-canvas/plugin.json +1 -1
  153. package/plugins/pmx-canvas/runtime.json +1 -1
  154. package/plugins/pmx-canvas/tools.json +9418 -2016
  155. package/skills/pmx-canvas/SKILL.md +19 -21
  156. package/skills/pmx-canvas/references/full-reference.md +44 -6
  157. package/skills/pmx-canvas/references/installing-pmx-canvas.md +7 -7
  158. package/skills/published-consumer-e2e/scripts/run-published-consumer-e2e.sh +3 -5
  159. package/src/client/canvas/BarHint.tsx +6 -3
  160. package/src/client/canvas/CanvasNode.tsx +34 -47
  161. package/src/client/canvas/CanvasViewport.tsx +6 -7
  162. package/src/client/canvas/ContextMenu.tsx +63 -3
  163. package/src/client/canvas/EdgeLayer.tsx +365 -169
  164. package/src/client/canvas/ExpandedNodeOverlay.tsx +1 -2
  165. package/src/client/canvas/Presentation.tsx +53 -3
  166. package/src/client/canvas/ToolRail.tsx +2 -0
  167. package/src/client/canvas/TopBar.tsx +24 -9
  168. package/src/client/canvas/auto-fit.ts +9 -11
  169. package/src/client/canvas/canvas-area.ts +1 -1
  170. package/src/client/canvas/use-focus-trap.ts +6 -1
  171. package/src/client/mermaid-entry.ts +6 -20
  172. package/src/client/mermaid-render.ts +39 -0
  173. package/src/client/nodes/AxStepControls.tsx +45 -69
  174. package/src/client/nodes/BoardNode.tsx +65 -9
  175. package/src/client/nodes/ContextNode.tsx +88 -396
  176. package/src/client/nodes/ExtAppFrame.tsx +283 -1462
  177. package/src/client/nodes/FileNode.tsx +92 -81
  178. package/src/client/nodes/HtmlNode.tsx +8 -36
  179. package/src/client/nodes/LedgerNode.tsx +31 -17
  180. package/src/client/nodes/MarkdownNode.tsx +8 -17
  181. package/src/client/nodes/McpAppNode.tsx +48 -154
  182. package/src/client/nodes/MermaidNode.tsx +80 -69
  183. package/src/client/nodes/PromptNode.tsx +12 -14
  184. package/src/client/nodes/ResponseNode.tsx +8 -6
  185. package/src/client/nodes/StatusNode.tsx +22 -7
  186. package/src/client/nodes/StatusSummary.tsx +5 -3
  187. package/src/client/nodes/TraceNode.tsx +8 -8
  188. package/src/client/nodes/ViewerFrame.tsx +262 -0
  189. package/src/client/nodes/ViewerHost.tsx +41 -0
  190. package/src/client/nodes/WebpageNode.tsx +22 -24
  191. package/src/client/nodes/iframe-document-url.ts +20 -27
  192. package/src/client/nodes/primitive-copy.ts +97 -0
  193. package/src/client/nodes/use-iframe-content-height.ts +34 -10
  194. package/src/client/nodes/use-surface-frame.ts +22 -11
  195. package/src/client/nodes/viewer-runtime-state.ts +41 -35
  196. package/src/client/state/canvas-store.ts +18 -12
  197. package/src/client/state/intent-bridge.ts +1 -0
  198. package/src/client/state/presentation.ts +135 -15
  199. package/src/client/state/sse-bridge.ts +18 -19
  200. package/src/client/theme/global.css +389 -229
  201. package/src/client/theme/surface-theme.css +6 -6
  202. package/src/json-render/charts/tufte-components.tsx +44 -2
  203. package/src/json-render/renderer/index.css +62 -2
  204. package/src/json-render/renderer/index.tsx +31 -7
  205. package/src/json-render/server.ts +3 -2
  206. package/src/mcp/canvas-access.ts +6 -47
  207. package/src/mcp/resource-subscriptions.ts +181 -0
  208. package/src/mcp/server.ts +185 -219
  209. package/src/server/ax-wait.ts +21 -6
  210. package/src/server/board-export.ts +35 -24
  211. package/src/server/canvas-geometry.ts +1 -0
  212. package/src/server/canvas-operations.ts +6 -2
  213. package/src/server/canvas-state.ts +5 -0
  214. package/src/server/demo-state.json +106 -100
  215. package/src/server/html-primitives.ts +3 -9
  216. package/src/server/html-surface.ts +8 -0
  217. package/src/server/index.ts +30 -12
  218. package/src/server/operations/http.ts +69 -21
  219. package/src/server/operations/index.ts +8 -1
  220. package/src/server/operations/invoker.ts +53 -5
  221. package/src/server/operations/mcp-contracts.ts +354 -0
  222. package/src/server/operations/mcp.ts +153 -18
  223. package/src/server/operations/ops/ax-await.ts +18 -10
  224. package/src/server/operations/ops/ax-read.ts +2 -0
  225. package/src/server/operations/ops/ax-timeline.ts +2 -2
  226. package/src/server/operations/ops/batch.ts +27 -8
  227. package/src/server/operations/ops/boards.ts +1 -3
  228. package/src/server/operations/ops/nodes.ts +18 -3
  229. package/src/server/operations/ops/viewport.ts +11 -9
  230. package/src/server/operations/registry.ts +24 -4
  231. package/src/server/operations/types.ts +16 -2
  232. package/src/server/server.ts +17 -59
  233. package/src/server/tour-control.ts +66 -6
  234. package/src/server/webpage-node.ts +9 -4
  235. package/src/shared/ax-surface-protocol.ts +0 -11
  236. package/src/shared/content-height-reporter.ts +4 -3
  237. package/src/shared/tour.ts +8 -0
@@ -0,0 +1 @@
1
+ import{e,t,u,r,h,Ne,ct,sn,Qe,on,yt,Q,kr,X,ln,Ft,Xt,Kt}from"./index-1r72hdzb.js";import{L}from"./index-fjtdggjn.js";import{T}from"./index-6qmsnxwy.js";import{Dr}from"./index-0rk4gp1g.js";import"./index-d3b3gqe9.js";async function Jo(n,o){let s=new L({multigraph:!0,compound:!0}),i=[...o.edges],c=r(),a=n.insert("g").attr("class","root"),l=a.insert("g").attr("class","clusters"),m=a.insert("g").attr("class","edges edgePath"),f=a.insert("g").attr("class","edgeLabels"),g=a.insert("g").attr("class","nodes"),y=new Map,I=n.node()!=null;await Promise.all(o.nodes.map(async(E)=>{if(E.isGroup)s.setNode(E.id,{...E});else{if(I){let b=await Qe(g,E,{config:c,dir:E.dir}),x=b.node()?.getBBox()??{width:0,height:0};y.set(E.id,b),E.width=x.width,E.height=x.height}s.setNode(E.id,{...E})}}));for(let E of i)if(s.setEdge(E.start,E.end,{...E},E.id),!o.edges.some((x)=>x.id===E.id))o.edges.push(E);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:E}=await (T("x75epwdq"),import("./sizeCapture-X5ZJPWSS-x75epwdq.js"));E(n,o)}return{graph:s,groups:{clusters:l,edgePaths:m,edgeLabels:f,nodes:g,rootGroups:a},nodeElements:y}}e(Jo,"createGraphWithElements");var Vo=5,nn=0.00001,rn=0.000001;function hn(n){let o=[];for(let s=0;s<n.length-1;s++)o.push({a:n[s],b:n[s+1]});return o}e(hn,"buildSegmentList");function Zo(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(f===0)return null;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f;if(I<=rn||I>=1-rn||E<=rn||E>=1-rn)return null;return{point:{x:n.x+I*c,y:n.y+I*a},tA:I,tB:E}}e(Zo,"segmentIntersection");function Xn(n){return Math.abs(n.b.x-n.a.x)>=Math.abs(n.b.y-n.a.y)}e(Xn,"isHorizontalSeg");function Qo(n){let o=[];for(let s=0;s<n.length;s++){let i=n[s],c=hn(i.points);for(let a=s+1;a<n.length;a++){let l=n[a],m=hn(l.points);for(let[f,g]of c.entries())for(let[y,I]of m.entries()){let E=Zo(g.a,g.b,I.a,I.b);if(!E)continue;let b=Xn(g),x=Xn(I);if(b!==x?b:!1)o.push({jumpEdgeId:i.id,otherEdgeId:l.id,segIndex:f,t:E.tA,point:E.point});else o.push({jumpEdgeId:l.id,otherEdgeId:i.id,segIndex:y,t:E.tB,point:E.point})}}}return o}e(Qo,"findEdgeIntersections");function be(n){let o=Math.round(n*1000)/1000;return Number.isInteger(o)?`${o}`:`${o}`}e(be,"fmt");function $e(n){return`${be(n.x)},${be(n.y)}`}e($e,"pointToString");function ts(n){let o=n.b.x-n.a.x,s=n.b.y-n.a.y;if(Math.abs(o)>=Math.abs(s))return o>=0?1:0;return s>=0?1:0}e(ts,"getArcSweepFlag");var zr=0.001;function es(n,o){if(n.length<2)return n.map((a)=>({...a}));let s=n.map((a)=>({...a})),i=o.arrowTypeStart&&Q[o.arrowTypeStart];if(i){let a=n[0],l=n[1],m=Math.atan2(l.y-a.y,l.x-a.x);s[0].x=a.x+i*Math.cos(m),s[0].y=a.y+i*Math.sin(m)}let c=o.arrowTypeEnd&&Q[o.arrowTypeEnd];if(c){let a=n.length,l=n[a-2],m=n[a-1],f=Math.atan2(m.y-l.y,m.x-l.x);s[a-1].x=m.x-c*Math.cos(f),s[a-1].y=m.y-c*Math.sin(f)}return s}e(es,"applyMarkerOffsets");function ns(n,o,s,i,c){let a=n.point.x,l=n.point.y,m={x:a-o*n.r,y:l-s*n.r},f={x:a+o*n.r,y:l+s*n.r},g=[`L${$e(m)}`];if(c==="arc")g.push(`A${be(n.r)},${be(n.r)} 0 0 ${i} ${$e(f)}`);else g.push(`M${$e(f)}`);return g}e(ns,"emitJump");function Yn(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=s.x-o.x,m=s.y-o.y,f=Math.hypot(c,a),g=Math.hypot(l,m);if(f<nn||g<nn)return null;let y=c/f,I=a/f,E=l/g,b=m/g,x=y*E+I*b,d=Math.max(-1,Math.min(1,x)),M=Math.acos(d);if(M<nn||Math.abs(Math.PI-M)<nn)return null;let A=Math.min(i/Math.sin(M/2),f/2,g/2);return{startX:o.x-y*A,startY:o.y-I*A,endX:o.x+E*A,endY:o.y+b*A,ctrlX:o.x,ctrlY:o.y,cutLen:A}}e(Yn,"computeRoundedCorner");function os(n,o,s){let i=n.points;if(i.length<2)return"";let c=es(i,n),a=n.curve==="rounded",l=hn(c),m=new Map;for(let g of o){let y=l[g.segIndex];if(!y)continue;let I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=m.get(g.segIndex)??[];E.push({t:g.t,point:g.point,d:g.t*I,r:s.jumpRadius}),m.set(g.segIndex,E)}let f=[`M${$e(c[0])}`];for(let g=0;g<l.length;g++){let y=l[g],I=Math.hypot(y.b.x-y.a.x,y.b.y-y.a.y),E=I===0?0:(y.b.x-y.a.x)/I,b=I===0?0:(y.b.y-y.a.y)/I,x=ts(y),d=0;if(a&&g>0){let N=Yn(c[g-1],c[g],c[g+1]??c[g],Vo);if(N)d=N.cutLen}let M=I,A=null;if(a&&g<l.length-1){if(A=Yn(c[g],c[g+1],c[g+2]??c[g+1],Vo),A)M=I-A.cutLen}let v=[...m.get(g)??[]].sort((N,k)=>N.t-k.t);for(let N of v)N.r=Math.min(N.r,N.d-d,M-N.d);for(let N=0;N<v.length-1;N++){let k=v[N+1].d-v[N].d;if(v[N].r+v[N+1].r>k){let w=k/2;v[N].r=Math.min(v[N].r,w),v[N+1].r=Math.min(v[N+1].r,w)}}for(let N of v){if(N.r<zr)continue;f.push(...ns(N,E,b,x,s.jumpStyle))}if(a&&A)f.push(`L${be(A.startX)},${be(A.startY)}`),f.push(`Q${be(A.ctrlX)},${be(A.ctrlY)} ${be(A.endX)},${be(A.endY)}`);else f.push(`L${$e(y.b)}`)}return f.join(" ")}e(os,"rewriteEdgePath");function ss(n){return/^[\d\s+,.LMelm-]*$/.test(n)}e(ss,"isStraightPath");function rs(n){if(!n)return!0;return n==="linear"||n==="rounded"||n==="step"||n==="stepBefore"||n==="stepAfter"}e(rs,"curveSupportsLineHops");function is(n){if(!n)return null;try{let o=typeof atob==="function"?atob(n):Buffer.from(n,"base64").toString(),s=JSON.parse(o);if(!Array.isArray(s))return null;let i=[];for(let c of s)if(c&&typeof c.x==="number"&&typeof c.y==="number")i.push({x:c.x,y:c.y});return i.length>=2?i:null}catch{return null}}e(is,"decodeDataPoints");function cs(n,o,s){if(!s.enabled)return;let i=n.node();if(!i)return;let c=new Map;for(let g of o)c.set(g.id,g);let a=[],l=new Map;for(let g of o){let y=typeof CSS<"u"&&CSS.escape?CSS.escape(g.id):g.id,I=i.querySelector(`path[data-id="${y}"]`);if(!I)continue;l.set(g.id,I);let b=is(I.getAttribute("data-points"))??g.points;a.push({...g,points:b})}let m=Qo(a);if(m.length===0)return;let f=new Map;for(let g of m){let y=f.get(g.jumpEdgeId)??[];y.push(g),f.set(g.jumpEdgeId,y)}for(let g of a){let y=f.get(g.id);if(!y||y.length===0)continue;let E=c.get(g.id)?.curve;if(E!==void 0&&!rs(E))continue;let b=l.get(g.id);if(!b)continue;if(E===void 0){let N=b.getAttribute("d")??"";if(!ss(N))continue}let x=b.getAttribute("style")??"",d=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(x),M=d?Number.parseFloat(d[1]):null,A=d?Number.parseFloat(d[2]):null,v=os(g,y,s);if(b.setAttribute("d",v),M!==null&&A!==null&&typeof b.getTotalLength==="function"){let N=b.getTotalLength(),k=Math.max(0,N-M-A),w=`0 ${M} ${k} ${A}`,C=x.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${w};`).replace(/;\s*;+/g,";");b.setAttribute("style",C)}}}e(cs,"applyLineJumpsToSvg");async function as(n,o){for(let c of n.nodes)if(c.isGroup)await ct(o.clusters,c);else yt(c);let s=new Map;for(let c of n.nodes)if(c?.id)s.set(c.id,c);for(let c of n.edges){let a=c.start?s.get(c.start)??{}:{},l=c.end?s.get(c.end)??{}:{},m=Xt(o.edgePaths,{...c},{},n.type,a,l,n.diagramId);if(c.label)await Ft(o.rootGroups,c);if(c.label)ls(c,m)}let i=n.config?.swimlane?.lineHops;if(i!==!1){let c=i==="gap"?"gap":"arc",a=n.edges.filter((l)=>Array.isArray(l.points)&&l.points.length>=2).map((l)=>({id:l.id,points:l.points,curve:l.curve,arrowTypeStart:l.arrowTypeStart,arrowTypeEnd:l.arrowTypeEnd}));cs(o.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:c})}}e(as,"adjustLayout");function ls(n,o){let s=o?.updatedPath??o?.originalPath,i=u(),{subGraphTitleTotalMargin:c}=Ne({flowchart:i.flowchart??{}});if(n.label){let a=kr.get(n.id),{x:l,y:m}=n;if(s){let f=h.calcLabelPosition(s);if(t.debug("Moving label "+n.label+" from (",l,",",m,") to (",f.x,",",f.y,") abc88"),o)l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m+c/2})`)}if(n?.startLabelLeft){let a=X.get(n.id).startLeft,l=n?.x,m=n?.y;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.startLabelRight){let a=X.get(n.id).startRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeStart?10:0,"start_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelLeft){let a=X.get(n.id).endLeft,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_left",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}if(n.endLabelRight){let a=X.get(n.id).endRight,{x:l,y:m}=n;if(s){let f=h.calcTerminalLabelPosition(n.arrowTypeEnd?10:0,"end_right",s);l=f.x,m=f.y}a.attr("transform",`translate(${l}, ${m})`)}}e(ls,"positionEdgeLabel");var kn="__swimlane_default__",Vr=21,jo=20;function Gn(n){return Math.max(n.padding??jo,jo)}e(Gn,"topLaneHorizontalPadding");function fs(n){let{x:o,y:s,width:i,height:c}=n,a=n.swimlaneContentTop;if(typeof o!=="number"||typeof s!=="number"||typeof i!=="number"||typeof c!=="number"||typeof a!=="number"||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(c)||!Number.isFinite(a)||i<=0||c<=0){delete n.groupTitleRect;return}let l=s-c/2,m=Math.min(a,s+c/2),f=Math.min(Vr,Math.max(0,m-l)),g=l+f;if(g<=l){delete n.groupTitleRect;return}n.groupTitleRect={left:o-i/2,right:o+i/2,top:l,bottom:g}}e(fs,"assignTopLaneTitleRect");function ds(n){let o=n.direction,s=n.nodes??=[];for(let a of n.nodes??[])if(a.isGroup&&!a.parentId){if(a.shape="swimlane",o)a.direction=o}let i=s.filter((a)=>!a.isGroup&&!a.parentId);if(i.length===0)return;let c=s.find((a)=>a.id===kn);if(!c)c={id:kn,label:"",isGroup:!0,shape:"swimlane",padding:20,...o?{direction:o}:{}},s.push(c);else if(c.isGroup){if(c.shape="swimlane",o)c.direction=o}for(let a of i)a.parentId=kn}e(ds,"prepareLayoutForSwimlanes");function us(n){let o=new Map;for(let f of n.nodes??[])o.set(f.id,f);let s=[];for(let f of n.edges??[]){let g=typeof f.start==="string"?f.start:void 0,y=typeof f.end==="string"?f.end:void 0;if(!g||!y)continue;if(f.labelNodeId)continue;s.push({id:f.id,src:g,dst:y,ref:f})}let i=n.nodes??[],c=i.filter((f)=>f.isGroup),a=i.filter((f)=>!f.isGroup);return{nodes:[...[...c].reverse(),...a].map((f)=>f.id),edges:s,layout:n,nodeById:o}}e(us,"toGraphView");function hs(n,o,s,i){let{layout:c}=n,a=n.nodeById,l=i?.layerGap??100,m=i?.nodeGap??40,f=0;for(let E of o.layers){let b=0;for(let x of E){let d=a.get(x);if(!d){b++;continue}d.layer=f,d.order=b;let M=s.x[x]??b*m,A=s.y[x]??f*l;d.x=M,d.y=A,b++}f++}let g=c.nodes??[],y=new Map,I=[];for(let E of g){if(!E?.isGroup)continue;if(!E.parentId)I.push(E);let b=g.filter((v)=>v.parentId===E.id),x=1/0,d=-1/0,M=1/0,A=-1/0;for(let v of b){let N=v.x??s.x[v.id],k=v.y??s.y[v.id],w=v.width??0,C=v.height??0;if(N!=null&&k!=null)x=Math.min(x,N-w/2),d=Math.max(d,N+w/2),M=Math.min(M,k-C/2),A=Math.max(A,k+C/2)}if(x===1/0||M===1/0)E.x=E.x??0,E.y=E.y??0,E.width=E.width??0,E.height=E.height??0;else{let v=E.padding??20,N=E.parentId?v:2*Gn(E),k=v,w=Math.max(0,d-x)+N,C=Math.max(0,A-M)+k,B=(x+d)/2,_=(M+A)/2;E.x=B,E.y=_,E.width=w,E.height=C,y.set(E.id,{minX:x,maxX:d,minY:M,maxY:A})}}if(I.length>0&&y.size>0){let E=1/0,b=-1/0,x=0;for(let d of I){let M=d.padding??20;if(M>x)x=M;let A=y.get(d.id);if(!A)continue;E=Math.min(E,A.minY),b=Math.max(b,A.maxY)}if(E!==1/0&&b!==-1/0){let d=Math.max(0,b-E),M=36,A=Math.max(x,36),v=d+2*A,N=(E+b)/2;for(let Y of I)Y.y=N,Y.height=v,Y.swimlaneContentTop=E;let k=[...I].sort((Y,F)=>{let V=Y.x??0,z=F.x??0;return V-z}),w=[],C=[],B=[];for(let Y of k){let F=y.get(Y.id);if(!F)continue;let V=Math.max(0,F.maxX-F.minX)+2*Gn(Y),z=(F.minX+F.maxX)/2;w.push(Y.id),C.push(z),B.push(V)}let _=w.length;if(_>0){let Y=new Map;if(_===1)Y.set(w[0],B[0]);else{let F=[];for(let J=0;J<_-1;J++)F.push(C[J+1]-C[J]);let V=Array(_);V[0]=0;for(let J=0;J<_-1;J++)V[J+1]=2*F[J]-V[J];let z=0,D=Number.POSITIVE_INFINITY;for(let J=0;J<_;J++){let st=B[J];if(J%2===0)z=Math.max(z,st-V[J]);else D=Math.min(D,V[J]-st)}let W=z;if(z<=D)W=(z+D)/2;else W=z;for(let J=0;J<_;J++){let st=V[J]+(J%2===0?W:-W),xt=Math.max(B[J],st);Y.set(w[J],xt)}}for(let F of I){let V=Y.get(F.id);if(V!=null)F.width=V;fs(F)}}}}}e(hs,"writeBackToLayoutData");var jr="[EdgeLabelNodes]";function gs(n){let o=[],s=[],i=new Map;for(let l of n.nodes)i.set(l.id,l);for(let l of n.edges){if(!l.label||l.label.length===0)continue;if(l.isLayoutOnly)continue;if(l.labelNodeId)continue;let m=l.start?i.get(l.start):void 0,f=l.end?i.get(l.end):void 0;if(!m||!f){t.warn(jr,`Edge ${l.id} has missing source or target node`);continue}let g=`edge-label-${l.start}-${l.end}-${l.id}`,I=m.parentId!==f.parentId?f.parentId:m.parentId,E={id:g,label:l.label,edgeStart:l.start??"",edgeEnd:l.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:I,isGroup:!1,labelStyle:Array.isArray(l.labelStyle)?l.labelStyle[0]:l.labelStyle??"",...m.dir?{dir:m.dir}:{}};o.push(E),l.labelNodeId=g,l.label=void 0,l.text=void 0;let b={id:`${l.id}-to-label`,start:l.start,end:g,type:"normal",isLayoutOnly:!0},x={id:`${l.id}-from-label`,start:g,end:l.end,type:"normal",isLayoutOnly:!0};s.push(b,x)}let c=[...n.nodes,...o],a=[...n.edges,...s];return{...n,nodes:c,edges:a}}e(gs,"createEdgeLabelNodes");var Jt=0.001;function Mo(n){let o=n.x??0,s=n.y??0,i=n.width??0,c=n.height??0;return i>0&&c>0?{cx:o,cy:s,rect:ze(o,s,i,c)}:void 0}e(Mo,"measuredNodeRect");function Io(n){if(n.isGroup)return;let o=Mo(n);if(!o)return;return{id:String(n.id??""),cx:o.cx,cy:o.cy,rect:o.rect}}e(Io,"nodeBoundsInfoFor");function ye(n,o,s=Jt){return Math.abs(n.x-o.x)<s&&Math.abs(n.y-o.y)<s}e(ye,"samePoint");function St(n,o,s=Jt){return Math.abs(n.x-o.x)<s}e(St,"sameX");function vt(n,o,s=Jt){return Math.abs(n.y-o.y)<s}e(vt,"sameY");function Dt(n,o,s=Jt){return vt(n,o,s)&&Math.abs(n.x-o.x)>s}e(Dt,"isHorizontalSegment");function Yt(n,o,s=Jt){return St(n,o,s)&&Math.abs(n.y-o.y)>s}e(Yt,"isVerticalSegment");function se(n,o,s,i){return Math.max(0,Math.min(Math.max(n,o),Math.max(s,i))-Math.max(Math.min(n,o),Math.min(s,i)))}e(se,"overlapLength");function Ie(n,o,s=Jt){if(n.horizontal&&o.horizontal&&vt(n.a,o.a,s))return se(n.a.x,n.b.x,o.a.x,o.b.x);if(n.vertical&&o.vertical&&St(n.a,o.a,s))return se(n.a.y,n.b.y,o.a.y,o.b.y);return 0}e(Ie,"sameAxisSegmentOverlapLength");function Ve(n,o=Jt){let s=[];for(let i=0;i<n.length-1;i++){let c=n[i],a=n[i+1],l=Dt(c,a,o),m=Yt(c,a,o);if(l||m)s.push({index:i,a:c,b:a,horizontal:l,vertical:m})}return s}e(Ve,"orthogonalSegmentsForPoints");function he(n,o=Jt){let s=Ve(n,o),i=0;for(let c=1;c<s.length;c++)if(s[c-1].horizontal!==s[c].horizontal)i++;return i}e(he,"countOrthogonalBends");function Et(n,o=Jt){let s=[];for(let i of n){let c=s.length>0?s[s.length-1]:void 0;if(!c||!ye(c,i,o))s.push({x:i.x,y:i.y})}return s}e(Et,"dedupeConsecutivePoints");function So(n,o=Jt){if(!n||n.length!==4)return;let[s,i,c,a]=n;if(Dt(s,i,o)&&Yt(i,c,o)&&Dt(c,a,o))return{kind:"HVH",p0:s,p1:i,p2:c,p3:a};return Yt(s,i,o)&&Dt(i,c,o)&&Yt(c,a,o)?{kind:"VHV",p0:s,p1:i,p2:c,p3:a}:void 0}e(So,"classifyThreeSegmentRoute");function Cn(n,o,s,i=0){let c=Math.min(n.x,o.x),a=Math.max(n.x,o.x),l=Math.min(n.y,o.y),m=Math.max(n.y,o.y);return a>s.left-i&&c<s.right+i&&m>s.top-i&&l<s.bottom+i}e(Cn,"segmentBoundsOverlapRect");function Co(n,o,s=0){return n.x>o.left+s&&n.x<o.right-s&&n.y>o.top+s&&n.y<o.bottom-s}e(Co,"pointInsideRect");function ps(n,o){return n.left<=o.left&&n.right>=o.right&&n.top<=o.top&&n.bottom>=o.bottom}e(ps,"rectContainsRect");function gn(n,o){return n.left<o.right&&n.right>o.left&&n.top<o.bottom&&n.bottom>o.top}e(gn,"rectsOverlap");function $n(n,o){return{left:n.left-o,right:n.right+o,top:n.top-o,bottom:n.bottom+o}}e($n,"inflateRect");function ze(n,o,s,i){return{left:n-s/2,right:n+s/2,top:o-i/2,bottom:o+i/2}}e(ze,"rectFromCenterSize");function fe(n){return Mo(n)?.rect}e(fe,"rectOfNodeBounds");function ke(n,o){switch(o){case"top":return{x:n.cx,y:n.rect.top};case"bottom":return{x:n.cx,y:n.rect.bottom};case"left":return{x:n.rect.left,y:n.cy};case"right":return{x:n.rect.right,y:n.cy}}}e(ke,"portForRectSide");function vo(n,o,s,i,c,a=Jt){let l=o==="left"||o==="right",m=i==="left"||i==="right";if(l&&m){if(o==="right"&&i==="left"&&n.x<s.x||o==="left"&&i==="right"&&n.x>s.x){if(vt(n,s,a))return[n,s];let I=(n.x+s.x)/2;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}if(o===i){if(vt(n,s,a))return;let I=o==="left"?Math.min(n.x,s.x)-c:Math.max(n.x,s.x)+c;return[n,{x:I,y:n.y},{x:I,y:s.y},s]}return}if(!l&&!m){if(o===i){if(St(n,s,a))return;let E=o==="top"?Math.min(n.y,s.y)-c:Math.max(n.y,s.y)+c;return[n,{x:n.x,y:E},{x:s.x,y:E},s]}if(!(o==="bottom"&&i==="top"&&n.y<s.y||o==="top"&&i==="bottom"&&n.y>s.y))return;if(St(n,s,a))return[n,s];let I=(n.y+s.y)/2;return[n,{x:n.x,y:I},{x:s.x,y:I},s]}if(l&&!m){let y=o==="right"&&s.x>n.x||o==="left"&&s.x<n.x,I=i==="top"&&n.y<s.y||i==="bottom"&&n.y>s.y;return y&&I?[n,{x:s.x,y:n.y},s]:void 0}let f=o==="bottom"&&s.y>n.y||o==="top"&&s.y<n.y,g=i==="left"&&n.x<s.x||i==="right"&&n.x>s.x;return f&&g?[n,{x:n.x,y:s.y},s]:void 0}e(vo,"buildOrthogonalPortPath");function Lo(n,o,s,i){return o==="left"||o==="right"?[n,{x:i,y:n.y},{x:i,y:s.y},s]:[n,{x:n.x,y:i},{x:s.x,y:i},s]}e(Lo,"buildSameSideTrackPath");function vn(n){let o=new Map,s=[];for(let i of n){if(i.isEdgeLabel)continue;let c=Io(i);if(!c)continue;o.set(c.id,c),s.push({id:c.id,rect:c.rect})}return{nodeInfoById:o,realNodeRects:s}}e(vn,"collectRealNodeBounds");function Ae(n){let o=[],s=[];for(let i of n){let c=Io(i);if(!c)continue;let a={id:c.id,rect:c.rect};if(i.isEdgeLabel)s.push(a);else o.push(a)}return{realNodeRects:o,labelNodeRects:s}}e(Ae,"collectNodeRectEntries");function ms(n,{includeEdgeLabels:o=!0}={}){let s=[];for(let i of n){if(i.isGroup||!o&&i.isEdgeLabel)continue;let c=i.x??0,a=i.y??0,l=i.width??0,m=i.height??0;s.push({nodeId:i.id,...ze(c,a,l,m)})}return s}e(ms,"collectLayoutNodeRects");function Eo(n,o,s=Jt){let{start:i,end:c}=n;if(!i||!c)return;let a=o.get(i),l=o.get(c);if(!a||!l)return;return{srcId:i,dstId:c,srcInfo:a,dstInfo:l,collinearX:Math.abs(a.cx-l.cx)<s,collinearY:Math.abs(a.cy-l.cy)<s}}e(Eo,"getNodePairGeometry");function Gt(n,o,s,i=[],c=0){for(let a of s){if(i.includes(a.id))continue;if(Cn(n,o,a.rect,-c))return!0}return!1}e(Gt,"segmentHitsAnyRect");function To(n,o,s,i,c=Jt,a=0.000001){let l=vt(n,o,c),m=St(n,o,c),f=vt(s,i,c),g=St(s,i,c);if(l&&f||m&&g)return!1;if(!(l||m)||!(f||g))return!1;let y=l?{a:n,b:o}:{a:s,b:i},I=m?{a:n,b:o}:{a:s,b:i},E=y.a.y,b=Math.min(y.a.x,y.b.x),x=Math.max(y.a.x,y.b.x),d=I.a.x,M=Math.min(I.a.y,I.b.y),A=Math.max(I.a.y,I.b.y);if(d<b||d>x||E<M||E>A)return!1;let v=Math.abs(d-y.a.x)<a&&Math.abs(E-y.a.y)<a||Math.abs(d-y.b.x)<a&&Math.abs(E-y.b.y)<a,N=Math.abs(d-I.a.x)<a&&Math.abs(E-I.a.y)<a||Math.abs(d-I.b.x)<a&&Math.abs(E-I.b.y)<a;return!(v&&N)}e(To,"orthogonalSegmentsCross");function ys(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(l&&f&&St(n,s,c))return se(n.y,o.y,s.y,i.y)>c;if(a&&m&&vt(n,s,c))return se(n.x,o.x,s.x,i.x)>c;return!1}e(ys,"sameAxisSegmentsOverlap");function pn(n,o,s,i,{epsilon:c=Jt,skipDegenerateOther:a=!1}={}){for(let l of s){if(l===i||l.isLayoutOnly)continue;let m=l.points;if(!m||m.length<2)continue;for(let f=0;f<m.length-1;f++){let g=m[f],y=m[f+1];if(a&&ye(g,y,c))continue;if(To(n,o,g,y,c)||ys(n,o,g,y,c))return!0}}return!1}e(pn,"segmentConflictsWithAnyEdge");function Ce(n,o,s,i,c=Jt){let a=vt(n,o,c),l=St(n,o,c),m=vt(s,i,c),f=St(s,i,c);if(!(a&&f||l&&m))return!1;let g=a?{a:n,b:o}:{a:s,b:i},y=a?{a:s,b:i}:{a:n,b:o},I=g.a.y,E=Math.min(g.a.x,g.b.x),b=Math.max(g.a.x,g.b.x),x=y.a.x,d=Math.min(y.a.y,y.b.y),M=Math.max(y.a.y,y.b.y);return x>E+c&&x<b-c&&I>d+c&&I<M-c}e(Ce,"orthogonalSegmentsStrictlyCross");function zn(n,o,s){let i=Math.min(o,s),c=Math.max(o,s);return n>i+Jt&&n<c-Jt}e(zn,"strictlyBetween");function xs(n,o,s){if(St(n,o)&&St(o,s))return zn(o.y,n.y,s.y);if(vt(n,o)&&vt(o,s))return zn(o.x,n.x,s.x);return!1}e(xs,"isCollinearIntermediate");function bs(n){let o=!1,s=[];for(let i=0;i<n.length;i++){let c=s[s.length-1],a=n[i],l=i+1<n.length?n[i+1]:void 0;if(c&&l){if(ye(c,l)){i++,o=!0;continue}if(xs(c,a,l)){o=!0;continue}}s.push(a)}return{points:s,changed:o}}e(bs,"simplifyPolylineOnce");function mn(n){let o=[n[0]];for(let i=1;i<n.length;i++){let c=o[o.length-1],a=n[i];if(!St(c,a)&&!vt(c,a)){let l=o.length>=2?o[o.length-2]:void 0,f=(l?St(l,c):!1)?{x:c.x,y:a.y}:{x:a.x,y:c.y};o.push(f)}o.push(a)}let s=[];for(let i of o){let c=s[s.length-1];if(!c||!ye(c,i))s.push(i)}return s}e(mn,"orthogonalizePolyline");function Se(n){if(n.length<3)return n;let o=[...n];for(let s=0;s<32;s++){let i=bs(o);if(o=i.points,!i.changed)break}return o}e(Se,"simplifyPolyline");var ut=0.001,Ur=0.5,Uo=4;function wo(n,o,s){let i=n;if(i.isLayoutOnly||!i.points||i.points.length<s)return;let c=i.start?o.get(i.start):void 0,a=i.end?o.get(i.end):void 0;return{edge:i,points:i.points,srcRect:c?fe(c):void 0,dstRect:a?fe(a):void 0}}e(wo,"endpointContextFor");function Ms(n,o,s){if(vt(n,o,ut))return{x:n.x<s.left?s.left:s.right,y:n.y};if(St(n,o,ut)){let i=n.y<s.top?s.top:s.bottom;return{x:n.x,y:i}}return{x:Math.min(s.right,Math.max(s.left,n.x)),y:Math.min(s.bottom,Math.max(s.top,n.y))}}e(Ms,"segmentEnterPoint");function Vn(n,o,s){let i=s?1:-1,c=s?0:n.length-1;while(c>=0&&c<n.length&&Co(n[c],o,Ur))c+=i;if(c<0||c>=n.length)return n;let a=c-i;if(a<0||a>=n.length)return n;let l=Ms(n[c],n[a],o);return s?[l,...n.slice(c)]:[...n.slice(0,c+1),l]}e(Vn,"clipEndpoint");function Is(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=[...i.points];if(i.srcRect)c=Vn(c,i.srcRect,!0);if(i.dstRect)c=Vn(c,i.dstRect,!1);c=Se(mn(c)),c=Ro(c,i.srcRect,i.dstRect),i.edge.points=Se(mn(c))}}e(Is,"clipEdgeEndpointsToNodeBoundaries");function jn(n,o,s,i=!1){if(vt(n,o,ut)){if(o.y<s.top-ut||o.y>s.bottom+ut)return o;if(i){if(n.x<s.left-ut)return{x:s.left,y:n.y};if(n.x>s.right+ut)return{x:s.right,y:n.y}}return{x:Math.abs(o.x-s.left)<=Math.abs(o.x-s.right)?s.left:s.right,y:n.y}}if(St(n,o,ut)){if(o.x<s.left-ut||o.x>s.right+ut)return o;if(i){if(n.y<s.top-ut)return{x:n.x,y:s.top};if(n.y>s.bottom+ut)return{x:n.x,y:s.bottom}}let c=Math.abs(o.y-s.top)<=Math.abs(o.y-s.bottom);return{x:n.x,y:c?s.top:s.bottom}}return o}e(jn,"snapEndpointToBoundary");function yn(n,o,s){let i=n[o];for(let c=o+s;c>=0&&c<n.length;c+=s){let a=n[c];if(!ye(a,i,ut))return a}return n[o+s]}e(yn,"firstDistinctAdjacent");function xn(n,o){let s=n+Uo,i=o-Uo;return s<=i?{lo:s,hi:i}:{lo:(n+o)/2,hi:(n+o)/2}}e(xn,"cornerClearanceRange");function Un(n,o,s){let{lo:i,hi:c}=xn(o,s);return Math.min(c,Math.max(i,n))}e(Un,"clampToCornerClearance");function Ss(n){let o=Math.max(...n.map((i)=>i.lo)),s=Math.min(...n.map((i)=>i.hi));if(o>s)return;return{lo:o,hi:s}}e(Ss,"intersectRanges");function Wn(n,o){return o==="left"||o==="right"?xn(n.top,n.bottom):xn(n.left,n.right)}e(Wn,"clearanceRangeForSide");function bn(n,o,s){let i=n.y>=s.top-ut&&n.y<=s.bottom+ut,c=n.x>=s.left-ut&&n.x<=s.right+ut;if(vt(n,o,ut)&&i){if(Math.abs(n.x-s.left)<ut)return"left";if(Math.abs(n.x-s.right)<ut)return"right"}if(St(n,o,ut)&&c){if(Math.abs(n.y-s.top)<ut)return"top";if(Math.abs(n.y-s.bottom)<ut)return"bottom"}return}e(bn,"terminalSideForSegment");function Ue(n){return n==="left"||n==="right"}e(Ue,"isHorizontalSide");function Cs(n,o,s,i,c){let a=[],l=s?bn(n,o,s):void 0,m=i?bn(o,n,i):void 0;if(s&&l&&Ue(l)===c)a.push(Wn(s,l));if(i&&m&&Ue(m)===c)a.push(Wn(i,m));return a.length>0?Ss(a):void 0}e(Cs,"straightClearanceRange");function Kn(n,o,s,i,c){let a=Cs(n,o,s,i,c);if(!a)return;let l=c?n.y:n.x,m=Math.min(a.hi,Math.max(a.lo,l));if(Math.abs(m-l)<ut)return;return c?[{x:n.x,y:m},{x:o.x,y:m}]:[{x:m,y:n.y},{x:m,y:o.y}]}e(Kn,"clearStraightEndpointCornerAxis");function Ro(n,o,s){if(n.length!==2)return n;let[i,c]=n;if(vt(i,c,ut))return Kn(i,c,o,s,!0)??n;if(St(i,c,ut))return Kn(i,c,o,s,!1)??n;return n}e(Ro,"clearStraightEndpointCornerConnections");function vs(n,o,s){return Ue(s)?{x:n.x,y:Un(n.y,o.top,o.bottom)}:{x:Un(n.x,o.left,o.right),y:n.y}}e(vs,"cornerClearedEndpoint");function Ls(n,o,s,i,c,a){let l=n.map((m)=>({...m}));for(let m=o;m>=0&&m<n.length;m+=s){let f=n[m];if(a&&!vt(f,i,ut))break;if(!a&&!St(f,i,ut))break;if(a)l[m].y=c.y;else l[m].x=c.x}return l}e(Ls,"moveCollinearEndpointRun");function qn(n,o,s){if(n.length<2)return n;let i=s?0:n.length-1,c=s?1:-1,a=n[i],l=yn(n,i,c);if(!l)return n;let m=bn(a,l,o);if(!m)return n;let f=Ue(m),g=vs(a,o,m);if(ye(a,g,ut))return n;return Ls(n,i,c,a,g,f)}e(qn,"clearEndpointCornerConnection");function Jn(n,o,s){let i=Math.min(n.x,o.x)>=s.left-ut&&Math.max(n.x,o.x)<=s.right+ut,c=Math.min(n.y,o.y)>=s.top-ut&&Math.max(n.y,o.y)<=s.bottom+ut;if(Math.abs(n.y-s.top)<ut&&Math.abs(o.y-s.top)<ut&&i)return"top";if(Math.abs(n.y-s.bottom)<ut&&Math.abs(o.y-s.bottom)<ut&&i)return"bottom";if(Math.abs(n.x-s.left)<ut&&Math.abs(o.x-s.left)<ut&&c)return"left";if(Math.abs(n.x-s.right)<ut&&Math.abs(o.x-s.right)<ut&&c)return"right";return}e(Jn,"borderSideForSegment");function Zn(n,o,s,i){switch(n){case"top":return St(o,s,ut)&&s.y<i.top-ut;case"bottom":return St(o,s,ut)&&s.y>i.bottom+ut;case"left":return vt(o,s,ut)&&s.x<i.left-ut;case"right":return vt(o,s,ut)&&s.x>i.right+ut}}e(Zn,"leavesOutward");function Qn(n,o,s){if(n.length<3)return n;if(s){let a=Jn(n[0],n[1],o);if(a&&Zn(a,n[1],n[2],o))return n.slice(1);return n}let i=n.length-1,c=Jn(n[i-1],n[i],o);if(c&&Zn(c,n[i-1],n[i-2],o))return n.slice(0,i);return n}e(Qn,"collapseOwnBorderStub");function Es(n,o,s){let i=n;if(o){let a=yn(i,0,1);if(a){let l=jn(a,i[0],o);if(l!==i[0])i=[l,...i.slice(1)]}i=Qn(i,o,!0)}if(s){let a=i.length-1,l=yn(i,a,-1);if(l){let m=jn(l,i[a],s,!0);if(m!==i[a])i=[...i.slice(0,a),m]}i=Qn(i,s,!1)}let c=Ro(i,o,s);if(c!==i||i.length===2)return c;if(o)i=qn(i,o,!0);if(s)i=qn(i,s,!1);return i}e(Es,"snapAndCollapseEndpoints");function to(n,o){for(let s of n){let i=wo(s,o,2);if(!i)continue;let c=Et(i.points,ut),a=Es(c,i.srcRect,i.dstRect);if(a.length<3){i.edge.points=a;continue}let l=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];i.edge.points=l}}e(to,"prepareEdgeEndpointsForRenderer");function Ao(n){return new Map(n.map((o)=>[o.id,o]))}e(Ao,"buildNodeMap");function Ts(n,o){let s=n.parentId,i=null;while(s){let c=o.get(s);if(!c?.isGroup)break;i=c.id,s=c.parentId}return i}e(Ts,"resolveTopLevelGroupId");function eo(n,o){let s=0,i=n.parentId;while(i){let c=o.get(i);if(!c?.isGroup)break;s++,i=c.parentId}return s}e(eo,"groupDepth");function No(n){let o=1/0,s=-1/0,i=1/0,c=-1/0;for(let a of n){let{x:l,y:m}=a;if(typeof l!=="number"||typeof m!=="number")continue;let f=a.width??0,g=a.height??0;o=Math.min(o,l-f/2),s=Math.max(s,l+f/2),i=Math.min(i,m-g/2),c=Math.max(c,m+g/2)}if(o===1/0||i===1/0)return null;return{minX:o,maxX:s,minY:i,maxY:c}}e(No,"boundsForChildren");function ws(n,o){let s=n.padding??20;n.x=(o.minX+o.maxX)/2,n.y=(o.minY+o.maxY)/2,n.width=Math.max(0,o.maxX-o.minX)+s,n.height=Math.max(0,o.maxY-o.minY)+s}e(ws,"applyGroupBounds");function Rs(n){let o=Ao(n),s=n.filter((i)=>i.isGroup&&i.parentId).sort((i,c)=>eo(c,o)-eo(i,o));for(let i of s){let c=n.filter((l)=>l.parentId===i.id),a=No(c);if(a)ws(i,a)}}e(Rs,"recomputeNestedGroupBounds");function Mn(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((f)=>!f.isGroup),a=1/0,l=-1/0;for(let f of c){let g=f[o];if(typeof g!=="number")continue;a=Math.min(a,g),l=Math.max(l,g)}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=e((f)=>a+l-f,"mirror");for(let f of s){let g=f[o];if(typeof g==="number")f[o]=m(g);let y=f.groupTitleRect;if(y)f.groupTitleRect=o==="x"?{...y,left:m(y.right),right:m(y.left)}:{...y,top:m(y.bottom),bottom:m(y.top)}}for(let f of i)for(let g of f.points??[])g[o]=m(g[o]);return!0}e(Mn,"mirrorAxis");function As(n){if(!(n.nodes??[]).some((s)=>!s.isGroup))return!0;return Mn(n,"y")}e(As,"applyBtDirectionTransform");function Ns(n,o="LR"){let s=n.nodes??[],i=n.edges??[],c=s.filter((D)=>!D.isGroup),a=1/0,l=1/0;for(let D of c){let W=D.x??0,J=D.y??0;if(W<a)a=W;if(J<l)l=J}if(!Number.isFinite(a)||!Number.isFinite(l))return!1;let m=36,f=0,g=0;for(let D of c)f+=D.width??0,g+=D.height??0;let y=f/c.length,I=g/c.length,E=I>0?Math.max(1,y/I):1;for(let D of c){let W=D.x??0,st=((D.y??0)-l)*E+m,xt=W-a;D.x=st,D.y=xt}for(let D of i){if(!D.points)continue;for(let W of D.points){let J=W.x,xt=(W.y-l)*E+m,Tt=J-a;W.x=xt,W.y=Tt}}Rs(s);let b=s.filter((D)=>D.isGroup&&!D.parentId);if(b.length===0){if(o==="RL")Mn(n,"x");return!0}let x=Ao(s),d=new Map;for(let D of s){if(D.isGroup)continue;let W=Ts(D,x);if(!W)continue;let J=d.get(W)??[];J.push(D),d.set(W,J)}let M=0;for(let D of b){let W=D.padding??0;if(W>M)M=W}let A=[],v=1/0,N=-1/0;for(let D of b){let W=d.get(D.id)??[],J=No(W);if(!J)continue;v=Math.min(v,J.minX),N=Math.max(N,J.maxX),A.push({lane:D,contentTop:J.minY,contentBottom:J.maxY,centerY:(J.minY+J.maxY)/2})}if(v===1/0||N===-1/0)return!0;let k=Math.max(0,N-v),w=Math.max(M,10),C=k+2*w,B=m+C,F=(v+N)/2-C/2-m,V=F+B/2,z=Math.max(M,m);A.sort((D,W)=>D.centerY-W.centerY);for(let D=0;D<A.length;D++){let W=A[D],J,st;if(D===0)J=W.contentTop-z;else J=(A[D-1].contentBottom+W.contentTop)/2;if(D===A.length-1)st=W.contentBottom+z;else{let $t=A[D+1];st=(W.contentBottom+$t.contentTop)/2}let xt=Math.max(0,st-J),Tt=(J+st)/2;W.lane.x=V,W.lane.y=Tt,W.lane.width=B,W.lane.height=xt,W.lane.swimlaneContentTop=W.contentTop,W.lane.groupTitleRect={left:F,right:F+m,top:J,bottom:st}}if(o==="RL")Mn(n,"x");return!0}e(Ns,"applyLrDirectionTransform");var xe=0.000001,Wr=8,cn=Wr,Kr=[0,cn,-cn,2*cn,-2*cn];function Os(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o);for(let c of n){if(c.isLayoutOnly)continue;let a=c.points;if(!a||a.length<4)continue;let l=So(Et(a,xe),xe);if(!l)continue;let{p3:m}=l,f=l.kind==="HVH",g=Eo(c,s,xe);if(!g)continue;let{srcId:y,dstId:I,srcInfo:E,dstInfo:b,collinearX:x,collinearY:d}=g;if(x||d)continue;let M,A=E.rect;for(let v of Kr){let N,k,w;if(f){let V=b.cy>E.cy?A.bottom:A.top,z=E.cx+v;if(z<=A.left+xe||z>=A.right-xe)continue;N={x:z,y:V},k={x:z,y:m.y},w={x:m.x,y:m.y}}else{let V=b.cx>E.cx?A.right:A.left,z=E.cy+v;if(z<=A.top+xe||z>=A.bottom-xe)continue;N={x:V,y:z},k={x:m.x,y:z},w={x:m.x,y:m.y}}let C=ye(N,k,xe),B=ye(k,w,xe);if(C&&B)continue;if(!C&&Gt(N,k,i,[y],1))continue;if(!B&&Gt(k,w,i,[I],1))continue;let _=!C&&pn(N,k,n,c,{epsilon:xe,skipDegenerateOther:!0}),Y=!B&&pn(k,w,n,c,{epsilon:xe,skipDegenerateOther:!0});if(_||Y)continue;if(C)M=[k,w];else if(B)M=[N,k];else M=[N,k,w];break}if(M)c.points=M}}e(Os,"portSwapToLShape");function Bs(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values());for(let m of n){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<4)continue;let g=Et(f,0.001);if(g.length<4)continue;let y=g.length-1,I=g[y],E=g[y-1],b=g[y-2],x=I.x-E.x,d=I.y-E.y,M=Math.hypot(x,d);if(M>=10||M<0.001)continue;let A=E.x-b.x,v=E.y-b.y;if(Math.hypot(A,v)<0.001)continue;let k=Dt(E,I,0.001),w=Yt(E,I,0.001),C=Dt(b,E,0.001),B=Yt(b,E,0.001);if(!(k&&B||w&&C))continue;let{end:_,start:Y}=m,F=_?o.get(_):void 0;if(!F)continue;let V=F.x??0,z=F.y??0,D=fe(F);if(!D)continue;let W,J;if(B){let ot=v<0;W={x:V,y:b.y},J={x:V,y:ot?D.bottom:D.top}}else{let ot=A>0;W={x:b.x,y:z},J={x:ot?D.right:D.left,y:z}}if(Gt(W,J,a,_?[_]:[],-2))continue;if(Gt(W,J,l,[],-2))continue;if(Y){let ot=o.get(Y),dt=ot?fe(ot):void 0;if(dt&&Co(W,dt,2))continue}let st=e((ot,dt)=>`${ot.x.toFixed(3)},${ot.y.toFixed(3)}|${dt.x.toFixed(3)},${dt.y.toFixed(3)}`,"ownSegmentKey"),xt=new Set;for(let ot=0;ot<g.length-1;ot++)xt.add(st(g[ot],g[ot+1]));let Tt=e((ot,dt)=>{for(let Mt of n){if(Mt===m)continue;if(Mt.isLayoutOnly)continue;let Lt=Mt.points;if(!Lt||Lt.length<2)continue;for(let Rt=0;Rt<Lt.length-1;Rt++){let kt=Lt[Rt],re=Lt[Rt+1];if(xt.has(st(kt,re)))continue;if(Ce(ot,dt,kt,re,0.001))return!0}}return!1},"segmentCrossesOtherEdge");if(Tt(W,J))continue;if(y-3>=0){let ot=g[y-3],dt=[Y,_].filter((Mt)=>Boolean(Mt));if(Gt(ot,W,a,dt,-2))continue;if(Tt(ot,W))continue}let Ut=[...g.slice(0,y-2),W,J];m.points=Ut;let lt=m.labelNodeId;if(lt){let ot=o.get(lt);if(ot){let dt=ot.width??0,Mt=ot.height??0;if(dt>0&&Mt>0){let Lt,Rt,kt=-1;for(let re=0;re<Ut.length-1;re++){let ie=Ut[re],ce=Ut[re+1],ge=Math.hypot(ce.x-ie.x,ce.y-ie.y),_e=vt(ie,ce,0.001),Le=St(ie,ce,0.001);if(!(_e&&ge>=dt+2||Le&&ge>=Mt+2))continue;if(ge>kt)kt=ge,Lt=(ie.x+ce.x)/2,Rt=(ie.y+ce.y)/2}if(Lt!==void 0&&Rt!==void 0)ot.x=Lt,ot.y=Rt}}}}}e(Bs,"collapseShortTerminalStub");var at=0.001,qt=8,mt=Ve,_n=e((n,o)=>St(n,o,at)||vt(n,o,at),"orthogonallyAligned");function Ps(n,o){let c=e((b,x)=>{let d=b.x??0,M=b.y??0,A=x.x-d,v=x.y-M,N=(b.width??0)/2,k=(b.height??0)/2;if(Math.abs(v)*N>Math.abs(A)*k){if(v<0)k=-k;return{x:d+(v===0?0:k*A/v),y:M+k}}if(A<0)N=-N;return{x:d+N,y:M+(A===0?0:N*v/A)}},"rectIntersect"),a=e((b,x)=>{let d=Et(b.points??[]);if(d.length<2)return;let M=x?b.start:b.end,A=M?o.get(M):void 0,v=A?fe(A):void 0;if(!A||!M||!v)return;let N=x?d[0]:d[d.length-1],k=x?d[1]:d[d.length-2],w=c(A,N),C=N;if(_n(k,w))C=k;if(St(w,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"V",coord:w.x,min:Math.min(w.y,C.y),max:Math.max(w.y,C.y),boundary:w,railEnd:C,rect:v};if(vt(w,C,at))return{edge:b,edgeId:String(b.id??""),nodeId:M,atStart:x,orientation:"H",coord:w.y,min:Math.min(w.x,C.x),max:Math.max(w.x,C.x),boundary:w,railEnd:C,rect:v};return},"terminalLaneFor"),l=e((b,x)=>Math.max(0,Math.min(b.max,x.max)-Math.max(b.min,x.min)),"projectedOverlapLength"),m=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;if(b.orientation==="H")return(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)&&St(b.boundary,x.boundary,1);return(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)&&vt(b.boundary,x.boundary,1)},"sameTerminalFace"),f=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation)return!1;return l(b,x)>=qt&&Math.abs(b.coord-x.coord)<0.5},"exactTerminalLaneConflict"),g=e((b,x)=>{if(b.nodeId!==x.nodeId||b.orientation!==x.orientation||b.orientation!=="H"||b.atStart===x.atStart)return!1;let d=l(b,x);if(d<qt)return!1;let M=b.rect.bottom-b.rect.top;if(d<M||d>2*M)return!1;return m(b,x)&&Math.abs(b.coord-x.coord)<16},"nearTerminalLaneConflict"),y=e((b,x)=>{let d=Et(b.edge.points??[]);if(d.length<2)return;let M=b.orientation==="V"?{x:b.boundary.x+x,y:b.boundary.y}:{x:b.boundary.x,y:b.boundary.y+x},A=b.orientation==="V"?{x:b.railEnd.x+x,y:b.railEnd.y}:{x:b.railEnd.x,y:b.railEnd.y+x};if(!e(()=>{if(Math.abs(b.boundary.y-b.rect.top)<1||Math.abs(b.boundary.y-b.rect.bottom)<1)return vt(M,b.boundary,at)&&M.x>=b.rect.left+1&&M.x<=b.rect.right-1;if(Math.abs(b.boundary.x-b.rect.left)<1||Math.abs(b.boundary.x-b.rect.right)<1)return St(M,b.boundary,at)&&M.y>=b.rect.top+1&&M.y<=b.rect.bottom-1;return!1},"boundaryStaysOnSameFace")())return;if(b.atStart){let C=d.length>1&&ye(d[1],b.railEnd,at),B=d.slice(C?2:1),_=B[0];if(_&&!_n(_,A))return;return[M,A,...B]}let N=d.length>1&&ye(d[d.length-2],b.railEnd,at),k=d.slice(0,N?-2:-1),w=k[k.length-1];if(w&&!_n(w,A))return;return[...k,A,M]},"shiftedCandidate"),I=e((b)=>{let x=b.edge,d=Et(x.points??[]);if(d.length!==2)return!1;let{start:M,end:A}=x,v=M?o.get(M):void 0,N=A?o.get(A):void 0;if(!v||!N)return!1;let k=v.x??0,w=v.y??0,C=N.x??0,B=N.y??0,[_,Y]=d;return vt(_,Y,at)&&Math.abs(w-B)<1&&Math.abs(k-C)>1||St(_,Y,at)&&Math.abs(k-C)<1&&Math.abs(w-B)>1},"laneIsStraightCollinearConnector"),E=[-7,7,-14,14,-21,21];for(let b=0;b<8;b++){let x=n.filter((M)=>!M.isLayoutOnly).flatMap((M)=>[a(M,!0),a(M,!1)]).filter((M)=>Boolean(M)),d=!1;for(let M=0;M<x.length&&!d;M++)for(let A=M+1;A<x.length&&!d;A++){let v=x[M],N=x[A];if(v.edge===N.edge||!(f(v,N)||g(v,N)))continue;let k=!f(v,N),w=[v,N].sort((C,B)=>{let _=I(C),Y=I(B);if(_!==Y)return Number(_)-Number(Y);return Number(!B.atStart)-Number(!C.atStart)});for(let C of w){for(let B of E){let _=y(C,B);if(!_)continue;let Y=a({...C.edge,points:_},C.atStart);if(!Y||x.some((F)=>F.edge!==C.edge&&(f(Y,F)||k&&g(Y,F))))continue;C.edge.points=_,d=!0;break}if(d)break}}if(!d)return}}e(Ps,"separateSharedRenderedTerminalLanes");function Fs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=e((f,g)=>{let{start:y,end:I}=f,E=mt(g);if(E.length!==g.length-1)return!1;let b=[y,I].filter((x)=>Boolean(x));for(let x of E){if(Gt(x.a,x.b,c,b,-2))return!1;if(Gt(x.a,x.b,a,[],-2))return!1}for(let x of n){if(x===f||x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M of E)for(let A of mt(Et(d))){if(Ie(M,A,0.5)>=qt)return!1;if(Ce(M.a,M.b,A.a,A.b,at))return!1}}return!0},"candidateIsSafe"),m=e((f,g)=>{if(g+4>=f.length)return;let y=f[g],I=f[g+1],E=f[g+2],b=f[g+3],x=f[g+4],d=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&St(y,b,at)&&St(y,x,at)&&St(I,E,at)&&(I.x-y.x)*(b.x-E.x)<0,M=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&vt(y,b,at)&&vt(y,x,at)&&vt(I,E,at)&&(I.y-y.y)*(b.y-E.y)<0;if(d||M)return Et([...f.slice(0,g+1),x,...f.slice(g+5)]);if(g+5>=f.length)return;let A=f[g+5],v=Yt(y,I)&&Dt(I,E)&&Yt(E,b)&&Dt(b,x)&&Yt(x,A)&&St(y,x,at)&&St(y,A,at)&&St(E,b,at)&&(E.x-I.x)*(x.x-b.x)<0,N=Dt(y,I)&&Yt(I,E)&&Dt(E,b)&&Yt(b,x)&&Dt(x,A)&&vt(y,x,at)&&vt(y,A,at)&&vt(E,b,at)&&(E.y-I.y)*(x.y-b.y)<0;if(!v&&!N)return;return Et([...f.slice(0,g+1),A,...f.slice(g+6)])},"withoutDogleg");for(let f=0;f<8;f++){let g=!1;for(let y of n){if(y.isLayoutOnly)continue;let I=Et(y.points??[]);for(let E=0;E<=I.length-5;E++){let b=m(I,E);if(!b||!l(y,b))continue;y.points=b,g=!0;break}if(g)break}if(!g)return}}e(Fs,"collapseRedundantRectangularDoglegs");function no(n,o){let{realNodeRects:a,labelNodeRects:l}=Ae(o.values()),m=n.filter((x)=>!x.isLayoutOnly),f=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),g=e((x,d)=>{let M=0;for(let A=0;A<m.length;A++){let v=mt(f(m[A],x,d));for(let N=A+1;N<m.length;N++){let k=mt(f(m[N],x,d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x)=>{let d=mt(x);if(d.length!==3)return;let M=d[1];if(d[0].horizontal===M.horizontal||d[2].horizontal===M.horizontal)return;return{index:M.index,horizontal:M.horizontal,vertical:M.vertical,segment:M}},"middleRail"),I=e((x,d)=>{let M=[x.start,x.end].filter((A)=>Boolean(A));return a.filter((A)=>{if(M.includes(A.id))return!1;let v=A.rect;if(d.horizontal)return se(d.a.x,d.b.x,v.left,v.right)>=qt&&d.a.y>=v.top-2&&d.a.y<=v.bottom+2;return se(d.a.y,d.b.y,v.top,v.bottom)>=qt&&d.a.x>=v.left-2&&d.a.x<=v.right+2})},"blockingRectsFor"),E=e((x,d,M)=>{let A=x.map((N)=>({...N}));if(d.horizontal)A[d.index].y=M,A[d.index+1].y=M;else if(d.vertical)A[d.index].x=M,A[d.index+1].x=M;else return;let v=Se(Et(A));return mt(v).length===v.length-1?v:void 0},"candidateByMovingRail"),b=e((x,d,M)=>{let A=[x.start,x.end].filter((N)=>Boolean(N)),v=mt(d);if(v.length!==d.length-1)return!1;for(let N of v){if(Gt(N.a,N.b,a,A,-2))return!1;if(Gt(N.a,N.b,l,[],-2))return!1}for(let N of m){if(N===x)continue;for(let k of v)for(let w of mt(f(N)))if(Ie(k,w,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M=!1;for(let A of m){let v=f(A),N=y(v);if(!N)continue;let k=I(A,N.segment);if(k.length===0)continue;let w=N.horizontal?[Math.min(...k.map((C)=>C.rect.top))-20,Math.max(...k.map((C)=>C.rect.bottom))+20]:[Math.min(...k.map((C)=>C.rect.left))-20,Math.max(...k.map((C)=>C.rect.right))+20];for(let C of w){let B=E(v,N.segment,C);if(!B||!b(A,B,d))continue;A.points=B,M=!0;break}if(M)break}if(!M)return}}e(no,"liftObstacleHuggingSameSideRails");function oo(n,o){let i=e((f)=>{let g=f.groupTitleRect;if(!g||typeof g.left!=="number"||typeof g.right!=="number"||typeof g.top!=="number"||typeof g.bottom!=="number"||!Number.isFinite(g.left)||!Number.isFinite(g.right)||!Number.isFinite(g.top)||!Number.isFinite(g.bottom)||g.right<=g.left||g.bottom<=g.top)return;return{left:g.left,right:g.right,top:g.top,bottom:g.bottom}},"validTitleRect"),c=e((f)=>{if(!f.isGroup||f.parentId)return;let g=f.direction,y=typeof g==="string"?g.toUpperCase():"";if(y==="LR"||y==="RL"||y==="BT")return;let I=i(f),{y:E,height:b}=f;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(d<=0||x<d)return;return{node:f,rect:I}},"topLaneTitleFor"),a=e((f,g)=>{if(!f.horizontal)return!1;let y=f.a.y;if(y<=g.top+at||y>=g.bottom-at)return!1;return se(f.a.x,f.b.x,g.left,g.right)>=qt},"horizontalSegmentIntersectsTitle"),l=[...o.values()].map(c).filter((f)=>Boolean(f));if(l.length===0)return;let m=0;for(let f of n){if(f.isLayoutOnly)continue;let g=Et(f.points??[]);for(let y of mt(g))for(let I of l){if(!a(y,I.rect))continue;m=Math.max(m,I.rect.bottom-y.a.y+4)}}if(m<=at)return;for(let f of l){let g=f.node.y,y=f.node.height;if(typeof g!=="number"||typeof y!=="number"||!Number.isFinite(g)||!Number.isFinite(y)||y<=0)continue;f.node.y=g-m/2,f.node.height=y+m,f.node.groupTitleRect={...f.rect,top:f.rect.top-m,bottom:f.rect.bottom-m}}}e(oo,"liftTopLaneTitleBandsAboveRails");function so(n,o){let i=e((g)=>{let y=g.groupTitleRect;if(!y||typeof y.left!=="number"||typeof y.right!=="number"||typeof y.top!=="number"||typeof y.bottom!=="number"||!Number.isFinite(y.left)||!Number.isFinite(y.right)||!Number.isFinite(y.top)||!Number.isFinite(y.bottom)||y.right<=y.left||y.bottom<=y.top)return;return{left:y.left,right:y.right,top:y.top,bottom:y.bottom}},"validTitleRect"),c=e((g)=>{if(!g.isGroup||g.parentId)return;if(g.direction!=="LR")return;let I=i(g),{x:E,width:b}=g;if(!I||typeof E!=="number"||typeof b!=="number"||!Number.isFinite(E)||!Number.isFinite(b)||b<=0)return;let x=I.right-I.left,d=I.bottom-I.top;if(x<=0||d<x)return;return{node:g,rect:I}},"leftLaneTitleFor"),a=e((g,y)=>{if(!g.vertical)return!1;let I=g.a.x;if(I<=y.left+at||I>=y.right-at)return!1;return se(g.a.y,g.b.y,y.top,y.bottom)>=qt},"verticalSegmentIntersectsTitle"),l=e((g,y)=>{if(!g.horizontal)return!1;let I=g.a.y;if(I<=y.top+at||I>=y.bottom-at)return!1;return se(g.a.x,g.b.x,y.left,y.right)>=qt},"horizontalSegmentIntersectsTitle"),m=[...o.values()].map(c).filter((g)=>Boolean(g));if(m.length===0)return;let f=0;for(let g of n){if(g.isLayoutOnly)continue;let y=Et(g.points??[]);for(let I of mt(y))for(let E of m)if(a(I,E.rect))f=Math.max(f,E.rect.right-I.a.x+4);else if(l(I,E.rect)){let b=Math.min(I.a.x,I.b.x);f=Math.max(f,E.rect.right-b+4)}}if(f<=at)return;for(let g of m){let y=g.node.x,I=g.node.width;if(typeof y!=="number"||typeof I!=="number"||!Number.isFinite(y)||!Number.isFinite(I)||I<=0)continue;g.node.x=y-f/2,g.node.width=I+f,g.node.groupTitleRect={...g.rect,left:g.rect.left-f,right:g.rect.right-f}}}e(so,"shiftLeftLaneTitleBandsLeftOfRails");function ks(n,o){let{realNodeRects:c}=Ae(o.values()),a=n.filter((d)=>!d.isLayoutOnly),l=e((d,M=new Map)=>Et(M.get(d)??d.points??[]),"replacementPointsFor"),m=e((d=new Map)=>{let M=0;for(let A=0;A<a.length;A++){let v=mt(l(a[A],d));for(let N=A+1;N<a.length;N++){let k=mt(l(a[N],d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"crossingCount"),f=e((d=new Map)=>a.reduce((M,A)=>M+he(l(A,d)),0),"totalBends"),g=e((d)=>{let M=l(d);if(M.length<4)return;let A=M[M.length-2],v=M[M.length-1];if(!Dt(A,v,at)&&!Yt(A,v,at))return;return{tailStart:A,terminal:v}},"terminalTailFor"),y=e((d,M)=>{let A=l(d);if(A.length<3)return;let v=A[0],N=A[1],k;if(Dt(v,N,at))k={x:N.x,y:M.tailStart.y};else if(Yt(v,N,at))k={x:M.tailStart.x,y:N.y};else return;let w=Se(Et([v,N,k,M.tailStart,M.terminal]));return mt(w).length===w.length-1?w:void 0},"candidateWithDestinationTail"),I=e((d,M)=>{let A=[d.start,d.end].filter((v)=>Boolean(v));for(let v of mt(M))if(Gt(v.a,v.b,c,A,-2))return!0;return!1},"pathHasNodeHit"),E=e((d,M,A)=>{for(let v of a){if(v===d)continue;for(let N of mt(M))for(let k of mt(l(v,A)))if(Ie(N,k,0.5)>=qt)return!0}return!1},"pathHasSharedTrack"),b=e((d,M,A)=>!I(d,M)&&!E(d,M,A),"candidateIsSafe"),x=e(()=>{let d=new Map;for(let M of a){let A=M.end;if(!A||!o.has(A))continue;if(l(M).length<4)continue;let N=d.get(A)??[];N.push(M),d.set(A,N)}return d},"edgesByDestination");for(let d=0;d<4;d++){let M=m();if(M===0)return;let A=f(),v,N=M,k=A;for(let w of x().values())for(let C=0;C<w.length;C++)for(let B=C+1;B<w.length;B++){let _=w[C],Y=w[B],F=g(_),V=g(Y);if(!F||!V)continue;let z=y(_,V),D=y(Y,F);if(!z||!D)continue;let W=new Map([[_,z],[Y,D]]);if(!b(_,z,W)||!b(Y,D,W))continue;let J=m(W),st=f(W);if(J>=M)continue;if(J>N||J===N&&st>=k)continue;v=W,N=J,k=st}if(!v)return;for(let[w,C]of v)w.points=C}}e(ks,"swapDestinationTerminalTailsToReduceCrossings");function _s(n,o){let{realNodeRects:l,labelNodeRects:m}=Ae(o.values()),f=n.filter((w)=>!w.isLayoutOnly),g=e((w,C=new Map)=>Et(C.get(w)??w.points??[]),"replacementPointsFor"),y=e((w=new Map)=>{let C=0;for(let B=0;B<f.length;B++){let _=mt(g(f[B],w));for(let Y=B+1;Y<f.length;Y++){let F=mt(g(f[Y],w));for(let V of _)for(let z of F)if(Ce(V.a,V.b,z.a,z.b,at))C++}}return C},"strictCrossingCount"),I=e((w=new Map)=>f.reduce((C,B)=>C+he(g(B,w)),0),"totalBends"),E=e((w)=>{let{start:C,end:B}=w,_=C?o.get(C):void 0,Y=B?o.get(B):void 0,F=_?fe(_):void 0,V=Y?fe(Y):void 0;return F&&V?{src:F,dst:V}:void 0},"endpointRectsFor"),b=e((w,C,B)=>{if(B.index<=0||B.index+1>=C.length-1)return;let _=E(w);if(!_)return;if(B.vertical){let Y=B.a.x,F=Math.min(_.src.left,_.dst.left),V=Math.max(_.src.right,_.dst.right),z=Y<F-at?"left":Y>V+at?"right":void 0;if(!z)return;return{edge:w,points:C,segmentIndex:B.index,axis:"vertical",side:z,coord:Y,min:Math.min(B.a.y,B.b.y),max:Math.max(B.a.y,B.b.y)}}if(B.horizontal){let Y=B.a.y,F=Math.min(_.src.top,_.dst.top),V=Math.max(_.src.bottom,_.dst.bottom),z=Y<F-at?"top":Y>V+at?"bottom":void 0;if(!z)return;return{edge:w,points:C,segmentIndex:B.index,axis:"horizontal",side:z,coord:Y,min:Math.min(B.a.x,B.b.x),max:Math.max(B.a.x,B.b.x)}}return},"externalRailForSegment"),x=e(()=>{let w=[];for(let C of f){let B=g(C);for(let _ of mt(B)){let Y=b(C,B,_);if(Y)w.push(Y)}}return w},"collectExternalRails"),d=e((w,C)=>w.edge!==C.edge&&w.axis===C.axis&&w.side===C.side&&se(w.min,w.max,C.min,C.max)>=qt,"railsInteract"),M=e((w)=>{let C=[],B=new Set;for(let _ of w){if(B.has(_))continue;let Y=[_],F=[];B.add(_);while(Y.length>0){let V=Y.pop();F.push(V);for(let z of w)if(!B.has(z)&&d(V,z))B.add(z),Y.push(z)}if(F.length>1)C.push(F)}return C},"connectedComponents"),A=e((w)=>{let C=[];for(let B of w)if(!C.some((_)=>Math.abs(_-B.coord)<at))C.push(B.coord);while(C.length<w.length){let B=Math.min(...C),_=Math.max(...C),Y=w[0].side;C.push(Y==="left"||Y==="top"?B-12*(w.length-C.length):_+12*(w.length-C.length))}return C},"uniqueCoordsFor"),v=e((w)=>{let C=w.map((Y)=>Y.coord),B=A(w),_=[];if(w.length<=6){let Y=Array(B.length).fill(!1),F=[],V=e(()=>{if(F.length===w.length){if(F.some((z,D)=>Math.abs(z-C[D])>=at))_.push([...F]);return}for(let[z,D]of B.entries()){if(Y[z])continue;Y[z]=!0,F.push(D),V(),F.pop(),Y[z]=!1}},"visit");return V(),_}for(let Y=0;Y<C.length;Y++)for(let F=Y+1;F<C.length;F++){let V=[...C];[V[Y],V[F]]=[V[F],V[Y]],_.push(V)}return _},"coordinateAssignmentsFor"),N=e((w,C)=>{let B=new Map;for(let[Y,F]of w.entries()){let V=C[Y],z=B.get(F.edge)??F.points.map((D)=>({x:D.x,y:D.y}));if(F.axis==="vertical")z[F.segmentIndex].x=V,z[F.segmentIndex+1].x=V;else z[F.segmentIndex].y=V,z[F.segmentIndex+1].y=V;B.set(F.edge,z)}let _=new Map;for(let[Y,F]of B){let V=Se(Et(F));if(mt(V).length!==V.length-1)return;_.set(Y,V)}return _},"replacementsForAssignment"),k=e((w)=>{for(let[C,B]of w){let _=[C.start,C.end].filter((Y)=>Boolean(Y));for(let Y of mt(B)){if(Gt(Y.a,Y.b,l,_,-2))return!1;if(Gt(Y.a,Y.b,m,[],-2))return!1}}for(let C=0;C<f.length;C++){let B=f[C],_=w.has(B),Y=mt(g(B,w));for(let F=C+1;F<f.length;F++){let V=f[F];if(!_&&!w.has(V))continue;let z=mt(g(V,w));for(let D of Y)for(let W of z)if(Ie(D,W,0.5)>=qt)return!1}}return!0},"candidateIsSafe");for(let w=0;w<4;w++){let C=y();if(C===0)return;let B,_=C,Y=I(),F=Number.POSITIVE_INFINITY;for(let V of M(x()))for(let z of v(V)){let D=N(V,z);if(!D||!k(D))continue;let W=y(D);if(W>=C)continue;let J=I(D),st=V.reduce((xt,Tt,$t)=>xt+Math.abs(z[$t]-Tt.coord),0);if(W>_||W===_&&(J>Y||J===Y&&st>=F))continue;B=D,_=W,Y=J,F=st}if(!B)return;for(let[V,z]of B)V.points=z}}e(_s,"reassignCrossingExternalRailChannels");function Hs(n,o){let{realNodeRects:c,labelNodeRects:a}=Ae(o.values()),l=n.filter((x)=>!x.isLayoutOnly),m=e((x,d,M)=>Et(x===d?M??[]:x.points??[]),"pointsFor"),f=e((x)=>mt(x).reduce((d,M)=>{let A=M.a.x-M.b.x,v=M.a.y-M.b.y;return d+Math.hypot(A,v)},0),"pathLength"),g=e((x,d)=>{let M=0;for(let A=0;A<l.length;A++){let v=mt(m(l[A],x,d));for(let N=A+1;N<l.length;N++){let k=mt(m(l[N],x,d));for(let w of v)for(let C of k)if(Ce(w.a,w.b,C.a,C.b,at))M++}}return M},"strictCrossingCount"),y=e((x,d)=>{if(x.horizontal){let M=x.a.y;return(Math.abs(M-d.top)<1||Math.abs(M-d.bottom)<1)&&se(x.a.x,x.b.x,d.left,d.right)>=qt}if(x.vertical){let M=x.a.x;return(Math.abs(M-d.left)<1||Math.abs(M-d.right)<1)&&se(x.a.y,x.b.y,d.top,d.bottom)>=qt}return!1},"segmentRunsAlongRectBorder"),I=e((x)=>{let d=[x.start,x.end].filter((A)=>Boolean(A)),M=[];for(let A of d){let v=o.get(A),N=v?fe(v):void 0;if(N)M.push(N)}return M},"endpointRectsFor"),E=e((x,d)=>{if(d+3>=x.length)return[];let M=x[d],A=x[d+1],v=x[d+2],N=x[d+3],k=Dt(M,A,at)&&Yt(A,v,at)&&Dt(v,N,at),w=Yt(M,A,at)&&Dt(A,v,at)&&Yt(v,N,at);if(!k&&!w)return[];if(!(k?Math.sign(A.x-M.x)!==Math.sign(N.x-v.x):Math.sign(A.y-M.y)!==Math.sign(N.y-v.y)))return[];let B=St(M,N,at)||vt(M,N,at)?[]:[{x:M.x,y:N.y},{x:N.x,y:M.y}],_=B.length===0?[[...x.slice(0,d+1),...x.slice(d+3)]]:B.map((F)=>[...x.slice(0,d+1),F,...x.slice(d+3)]),Y=new Set;return _.map((F)=>Se(Et(F))).filter((F)=>{if(mt(F).length!==F.length-1)return!1;if(!F.some((z)=>ye(z,N,at)))return!1;let V=F.map((z)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}`).join("|");if(Y.has(V))return!1;return Y.add(V),!0})},"shortcutCandidatesAt"),b=e((x,d,M)=>{let A=[x.start,x.end].filter((N)=>Boolean(N)),v=I(x);for(let N of mt(d)){if(Gt(N.a,N.b,c,A,-2))return!1;if(Gt(N.a,N.b,a,[],-2))return!1;if(v.some((k)=>y(N,k)))return!1}for(let N of l){if(N===x)continue;for(let k of mt(d))for(let w of mt(m(N)))if(Ie(k,w,0.5)>=qt)return!1}return g(x,d)<=M},"candidateIsSafe");for(let x=0;x<8;x++){let d=g(),M,A,v=d,{POSITIVE_INFINITY:N,POSITIVE_INFINITY:k}=Number;for(let w of l){let C=m(w),B=he(C,at),_=f(C);for(let Y=0;Y<=C.length-4;Y++)for(let F of E(C,Y)){let V=he(F,at),z=f(F);if(!(V<B||V===B&&z<_-at)||!b(w,F,d))continue;let W=g(w,F);if(W>v||W===v&&(V>N||V===N&&z>=k))continue;M=w,A=F,v=W,N=V,k=z}}if(!M||!A)return;M.points=A}}e(Hs,"shortcutRedundantOrthogonalJogs");function Ds(n,o){let l=[];for(let H of o.values()){if(H.isGroup||H.isEdgeLabel)continue;let j=H.x??0,U=H.y??0,et=fe(H);if(!et)continue;l.push({id:String(H.id??""),cx:j,cy:U,rect:et})}if(l.length===0)return;let m=new Map(l.map((H)=>[H.id,H])),f=l.map((H)=>({id:H.id,rect:H.rect})),g=["top","bottom","left","right"],y={top:Math.min(...l.map((H)=>H.rect.top))-20,bottom:Math.max(...l.map((H)=>H.rect.bottom))+20,left:Math.min(...l.map((H)=>H.rect.left))-20,right:Math.max(...l.map((H)=>H.rect.right))+20},I=n.filter((H)=>!H.isLayoutOnly),E=new Map(I.map((H,j)=>[H,j])),b=e((H)=>{let j=H==="left"||H==="top"?-1:1,U=[];for(let et=0;et<=2;et++)U.push(y[H]+j*20*et);return U},"outwardTracksForSide"),x=e((H,j=new Map)=>Et(j.get(H)??H.points??[]),"replacementPointsFor"),d=e((H,j)=>{let U=0;for(let et of H)for(let p of j)if(Ce(et.a,et.b,p.a,p.b,at))U++;return U},"crossingCountBetweenSegments"),M=e((H,j)=>d(mt(H),mt(j)),"crossingCountBetweenPaths"),A=e((H=new Map)=>{let j=0,U=[],et=new Set,p=[],S=e((R)=>{if(!et.has(R))et.add(R),p.push(R)},"addEdge");for(let R=0;R<I.length;R++){let O=I[R],P=x(O,H);for(let G=R+1;G<I.length;G++){let nt=I[G],it=M(P,x(nt,H));if(it>0)j+=it,U.push({first:O,second:nt,count:it}),S(O),S(nt)}}return p.sort((R,O)=>(E.get(R)??0)-(E.get(O)??0)),{count:j,pairs:U,edgeSet:et,edges:p}},"crossingSnapshot"),v=e((H,j)=>{let U=new Set(j.keys());if(U.size===0)return H.count;let et=0;for(let S of H.pairs)if(U.has(S.first)||U.has(S.second))et+=S.count;let p=0;for(let S=0;S<I.length;S++){let R=I[S],O=U.has(R),P=x(R,j);for(let G=S+1;G<I.length;G++){let nt=I[G];if(!O&&!U.has(nt))continue;p+=M(P,x(nt,j))}}return H.count-et+p},"crossingCountWithReplacements"),N=e((H)=>{let j=new Map;for(let p of H.pairs){let S=j.get(p.first)??new Set;S.add(p.second),j.set(p.first,S);let R=j.get(p.second)??new Set;R.add(p.first),j.set(p.second,R)}let U=[],et=new Set;for(let p of H.edges){if(et.has(p))continue;let S=[p],R=[];et.add(p);while(S.length>0){let O=S.pop();R.push(O);for(let P of j.get(O)??[])if(!et.has(P))et.add(P),S.push(P)}if(R.sort((O,P)=>(E.get(O)??0)-(E.get(P)??0)),R.length>1)U.push(R)}return U},"crossingComponents"),k=e((H)=>[H.start,H.end].filter((j)=>Boolean(j)),"endpointIdsFor"),w=e((H)=>{let j=[];for(let U of N(H)){let et=new Set(U),p=new Set(U.flatMap((R)=>k(R))),S=[...U];for(let R of I){if(et.has(R))continue;if(k(R).some((O)=>p.has(O)))S.push(R)}S.sort((R,O)=>(E.get(R)??0)-(E.get(O)??0)),j.push(S)}return j},"pairSearchGroups"),C=e((H,j,U)=>v(H,new Map([[j,U]])),"crossingCountWithSingleReplacement"),B=e((H)=>{let j=new Map;for(let U of H.pairs)j.set(U.first,(j.get(U.first)??0)+U.count),j.set(U.second,(j.get(U.second)??0)+U.count);return j},"currentCrossingsByEdge"),_=e((H)=>H.slice(1).reduce((j,U,et)=>{let p=H[et];return j+Math.abs(U.x-p.x)+Math.abs(U.y-p.y)},0),"pathLength"),Y=e((H=new Map)=>I.reduce((j,U)=>j+he(x(U,H)),0),"totalBends"),F=e((H=new Map)=>I.reduce((j,U)=>j+_(x(U,H)),0),"totalLength"),V=e((H,j,U=new Map)=>{let et=mt(j);for(let p of I){if(p===H)continue;for(let S of et)for(let R of mt(x(p,U)))if(Ie(S,R,0.5)>=qt)return!0}return!1},"pathHasSegmentConflict"),z=e((H,j)=>{let U=[H.start,H.end].filter((et)=>Boolean(et));for(let et of mt(j))if(Gt(et.a,et.b,f,U,-2))return!0;return!1},"pathHitsNode"),D=e((H,j)=>{let U=Se(Et(j));if(mt(U).length===U.length-1)H.push(U)},"pushOrthogonalCandidate"),W=e((H)=>H==="left"||H==="right","sideIsHorizontal"),J=e((H,j,U)=>{switch(j){case"left":return Math.min(H.x,U.x)-20;case"right":return Math.max(H.x,U.x)+20;case"top":return Math.min(H.y,U.y)-20;case"bottom":return Math.max(H.y,U.y)+20}},"localTrackForSameSide"),st=e((H,j,U,et)=>{let p=U==="left"||U==="top"?-1:1,S=[J(j,U,et),y[U]];for(let R of S)for(let O=0;O<=2;O++)D(H,Lo(j,U,et,R+p*20*O))},"addSameSideCandidates"),xt=e((H,j,U,et,p)=>{for(let S of b(U))for(let R of b(p))D(H,[j,{x:S,y:j.y},{x:S,y:R},{x:et.x,y:R},et])},"addHorizontalToVerticalCandidates"),Tt=e((H,j,U,et,p)=>{for(let S of b(U))for(let R of b(p))D(H,[j,{x:j.x,y:S},{x:R,y:S},{x:R,y:et.y},et])},"addVerticalToHorizontalCandidates"),$t=e((H,j,U,et,p)=>{let S=[...b("top"),...b("bottom")];for(let R of b(U))for(let O of b(p))for(let P of S)D(H,[j,{x:R,y:j.y},{x:R,y:P},{x:O,y:P},{x:O,y:et.y},et])},"addHorizontalPairCandidates"),Ut=e((H,j,U,et,p)=>{let S=[...b("left"),...b("right")];for(let R of b(U))for(let O of b(p))for(let P of S)D(H,[j,{x:j.x,y:R},{x:P,y:R},{x:P,y:O},{x:et.x,y:O},et])},"addVerticalPairCandidates"),lt=e((H)=>{let j=new Set;return H.map((U)=>Et(U)).filter((U)=>{let et=U.map((p)=>`${p.x.toFixed(3)},${p.y.toFixed(3)}`).join("|");if(j.has(et)||U.length<2)return!1;return j.add(et),!0})},"dedupeCandidatePaths"),ot=e((H,j,U,et)=>{let p=[],S=vo(H,j,U,et,20,at);if(S)D(p,S);if(j===et)st(p,H,j,U);let R=W(j),O=W(et);if(R&&!O)xt(p,H,j,U,et);else if(!R&&O)Tt(p,H,j,U,et);else if(R)$t(p,H,j,U,et);else Ut(p,H,j,U,et);return lt(p)},"buildCandidatesForSides"),dt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let R of g){let O=ke(et,R),P=R==="top"||R==="bottom"?b(R):S;for(let G of p){D(H,[j,U,{x:G,y:U.y},{x:G,y:O.y},O]);for(let nt of P)D(H,[j,U,{x:G,y:U.y},{x:G,y:nt},{x:O.x,y:nt},O])}}},"addVerticalDepartureOuterTrackCandidates"),Mt=e((H,j,U,et)=>{let p=[...b("left"),...b("right")],S=[...b("top"),...b("bottom")];for(let R of g){let O=ke(et,R),P=R==="left"||R==="right"?b(R):p;for(let G of S){D(H,[j,U,{x:U.x,y:G},{x:O.x,y:G},O]);for(let nt of P)D(H,[j,U,{x:U.x,y:G},{x:nt,y:G},{x:nt,y:O.y},O])}}},"addHorizontalDepartureOuterTrackCandidates"),Lt=e((H)=>{let{start:j,end:U}=H,et=U?m.get(U):void 0;if(!j||!et)return[];let p=Et(H.points??[]);if(p.length<4)return[];let S=p[0],R=p[1],O=[];if(Yt(S,R,at))dt(O,S,R,et);else if(Dt(S,R,at))Mt(O,S,R,et);return O},"terminalPreservingOuterTrackCandidates"),Rt=e((H)=>{let{start:j,end:U}=H,et=j?m.get(j):void 0,p=U?m.get(U):void 0;if(!et||!p)return[];let S=[];for(let R of g){let O=ke(et,R);for(let P of g)S.push(...ot(O,R,ke(p,P),P))}return S.push(...Lt(H)),S},"candidatePathsFor"),kt=e(()=>new Map(I.map((H)=>[H,mt(x(H))])),"currentSegmentsByEdge"),re=e((H,j,U)=>{let et=new Set;for(let p of I){if(p===H)continue;let S=U.get(p)??mt(x(p));if(j.some((R)=>S.some((O)=>Ie(R,O,0.5)>=qt)))et.add(p)}return et},"sharedTrackConflictsFor"),ie=e((H,j,U,et)=>{let p=new Set;return Rt(H).map((R)=>Se(Et(R))).filter((R)=>{if(z(H,R))return!1;let O=R.map((P)=>`${P.x.toFixed(3)},${P.y.toFixed(3)}`).join("|");if(p.has(O)||R.length<2)return!1;return p.add(O),!0}).map((R)=>{let O=mt(R),P=0;for(let G of I){if(G===H)continue;P+=d(O,U.get(G)??mt(x(G)))}return{candidate:R,candidateSegments:O,crossings:j.count-(et.get(H)??0)+P,bends:he(R,at),totalBends:he(R),length:_(R)}}).filter(({crossings:R})=>R<=j.count).sort((R,O)=>R.crossings-O.crossings||R.bends-O.bends||R.length-O.length).slice(0,48).map((R)=>({path:R.candidate,segments:R.candidateSegments,sharedTrackConflicts:re(H,R.candidateSegments,U),totalBends:R.totalBends,length:R.length}))},"pairCandidatesFor"),ce=e((H,j,U,et,p,S)=>{let R=0;for(let P of H.pairs)if(P.first===j||P.second===j||P.first===et||P.second===et)R+=P.count;let O=d(U.segments,p.segments);for(let P of I){if(P===j||P===et)continue;let G=S.get(P)??mt(x(P));O+=d(U.segments,G)+d(p.segments,G)}return H.count-R+O},"pairCrossingCount"),ge=e((H,j)=>{for(let U of H.sharedTrackConflicts)if(U!==j)return!1;return!0},"conflictsOnlyWith"),_e=e((H,j)=>H.segments.some((U)=>j.segments.some((et)=>Ie(U,et,0.5)>=qt)),"candidatesShareTrack"),Le=e((H,j,U,et)=>ge(j,U.edge)&&ge(et,H.edge)&&!_e(j,et),"pairCandidatesAreCompatible"),He=e((H,j,U,et,p)=>{let S=ce(H.current,j.edge,U,et.edge,p,H.baseSegments);if(S>=H.current.count)return;return{replacements:new Map([[j.edge,U.path],[et.edge,p.path]]),crossings:S,bends:H.currentBends-(H.baseBendsByEdge.get(j.edge)??0)-(H.baseBendsByEdge.get(et.edge)??0)+U.totalBends+p.totalBends,length:H.currentLength-(H.baseLengthByEdge.get(j.edge)??0)-(H.baseLengthByEdge.get(et.edge)??0)+U.length+p.length}},"scorePairReplacement"),Tn=e((H,j)=>H.crossings<j.crossings||H.crossings===j.crossings&&(H.bends<j.bends||H.bends===j.bends&&H.length<j.length),"pairScoreIsBetter"),wn=e((H,j,U,et)=>{let p=et;for(let S of j.candidates)for(let R of U.candidates){if(!Le(j,S,U,R))continue;let O=He(H,j,S,U,R);if(O&&Tn(O,p))p=O}return p},"bestScoreForOptionPair"),Rn=e((H)=>{let j=Y(),U=F(),et=kt(),p=B(H),S=new Map(I.map((it)=>[it,he(x(it))])),R=new Map(I.map((it)=>[it,_(x(it))])),O=new Map,P=w(H);for(let it of P)for(let tt of it){if(O.has(tt))continue;let q=ie(tt,H,et,p);if(q.length>0)O.set(tt,{edge:tt,candidates:q})}let G={replacements:new Map,crossings:H.count,bends:j,length:U},nt={current:H,currentBends:j,currentLength:U,baseBendsByEdge:S,baseLengthByEdge:R,baseSegments:et};for(let it of P){let tt=new Set(it.filter((ht)=>H.edgeSet.has(ht))),q=it.map((ht)=>O.get(ht)).filter((ht)=>Boolean(ht));for(let ht=0;ht<q.length;ht++){let pt=q[ht];for(let gt=ht+1;gt<q.length;gt++){let ft=q[gt];if(!tt.has(pt.edge)&&!tt.has(ft.edge))continue;G=wn(nt,pt,ft,G)}}}return G.replacements.size>0?G.replacements:void 0},"bestPairedReplacement");for(let H=0;H<4;H++){let j=A(),U=j.count;if(U===0)return;let et,p,S=U,R=Number.POSITIVE_INFINITY;for(let P of j.edges){let G=he(x(P),at);for(let nt of Rt(P)){let it=z(P,nt),tt=!it&&V(P,nt),q=C(j,P,nt),ht=he(nt,at);if(it||tt)continue;if(!(q<U||q===U&&ht<G))continue;if(q>S||q===S&&ht>=R)continue;et=P,p=nt,S=q,R=ht}}if(et&&p){et.points=p;continue}let O=Rn(j);if(!O)return;for(let[P,G]of O)P.points=G}}e(Ds,"resolveRenderedOrthogonalCrossings");var Re=0.001,qr=8;function Xs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=["top","bottom","left","right"],a=20,l={top:Math.min(...i.map((d)=>d.rect.top))-20,bottom:Math.max(...i.map((d)=>d.rect.bottom))+20,left:Math.min(...i.map((d)=>d.rect.left))-20,right:Math.max(...i.map((d)=>d.rect.right))+20},m=e((d,M,A,v)=>{let N=[],k=vo(d,M,A,v,20,Re);if(k)N.push(k);if(M===v)N.push(Lo(d,M,A,l[M]));return N},"buildOrthogonalPathCandidates"),f=e((d,M)=>{for(let A=0;A<d.length-1;A++){let v=d[A],N=d[A+1];if(Gt(v,N,i,M,1))return!0}return!1},"pathHitsNode"),g=e((d,M,A=!1)=>{let v=0,N=Ve(d,Re),{start:k,end:w}=M;for(let C of n){if(C===M||C.isLayoutOnly)continue;let{start:B,end:_}=C;if(!A&&k&&w&&(B===k||B===w||_===k||_===w))continue;let Y=C.points;if(!Y||Y.length<2)continue;for(let F of N)for(let V of Ve(Y,Re)){if(To(F.a,F.b,V.a,V.b,Re,Re)){v++;continue}if(Ie(F,V,Re)>=qr)v++}}return v},"pathConflictCount"),y=4,I=e((d,M)=>{let A=Math.abs(d.y-M.rect.top),v=Math.abs(d.y-M.rect.bottom),N=Math.abs(d.x-M.rect.left),k=Math.abs(d.x-M.rect.right),w="top",C=A;if(v<C)w="bottom",C=v;if(N<C)w="left",C=N;if(k<C)w="right",C=k;return w},"nearestSideOfRect"),E=new Map,b=e((d,M,A)=>{let v=E.get(d)??[];v.push({side:M,edgeId:A}),E.set(d,v)},"addFaceClaim");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points??[];if(M.length<1)continue;let A=d.id??"",{start:v,end:N}=d;if(v){let k=s.get(v);if(k)b(v,I(M[0],k),A)}if(N){let k=s.get(N);if(k)b(N,I(M[M.length-1],k),A)}}let x=e((d,M,A)=>E.get(d)?.some((v)=>v.edgeId!==A&&v.side===M)??!1,"faceIsClaimed");for(let d of n){if(d.isLayoutOnly)continue;let M=d.points;if(!M||M.length<2)continue;let A=he(M,Re);if(A<4)continue;let{start:v,end:N}=d;if(!v||!N)continue;let k=s.get(v),w=s.get(N);if(!k||!w)continue;let C=d.id??"",B=g(M,d,!0),_=g(M,d),Y,F=B,V=A;for(let z of c){if(x(v,z,C))continue;let D=ke(k,z);for(let W of c){if(x(N,W,C))continue;let J=ke(w,W);for(let st of m(D,z,J,W)){if(f(st,[v,N]))continue;let xt=he(st,Re);if(B>0){let Tt=g(st,d,!0);if(Tt>F||Tt===F&&xt>=V)continue;F=Tt,V=xt,Y=st;continue}if(g(st,d)>_)continue;if(xt<V)V=xt,Y=st}}}if(Y){d.points=Y;let z=E.get(v);if(z)E.set(v,z.filter((W)=>W.edgeId!==C));let D=E.get(N);if(D)E.set(N,D.filter((W)=>W.edgeId!==C));b(v,I(Y[0],k),C),b(N,I(Y[Y.length-1],w),C)}}}e(Xs,"simplifyDetouredEdges");var le=0.001,Wo=10,an=7;function ro(n,o){let s=o?0:n.length-1,i=o?1:-1,c=n[s],a=n[s+i];if(!c||!a)return;let l=a.x-c.x,m=a.y-c.y;if(Math.abs(l)+Math.abs(m)<le)return;if(Math.abs(m)<=le){let g=c.x+Math.sign(l)*Wo;return{left:Math.min(c.x,g),right:Math.max(c.x,g),top:c.y-an,bottom:c.y+an}}if(Math.abs(l)<=le){let g=c.y+Math.sign(m)*Wo;return{left:c.x-an,right:c.x+an,top:Math.min(c.y,g),bottom:Math.max(c.y,g)}}return{left:Math.min(c.x,a.x),right:Math.max(c.x,a.x),top:Math.min(c.y,a.y),bottom:Math.max(c.y,a.y)}}e(ro,"markerClearanceRectFor");function Ys(n){return{left:Math.min(n.left,n.right),right:Math.max(n.left,n.right),top:Math.min(n.top,n.bottom),bottom:Math.max(n.top,n.bottom)}}e(Ys,"normalizeRect");function io(n,o){let s=Et(o),i=ro(s,!0),c=ro(s,!1);return[i,c].some((a)=>a&&gn(n,Ys(a)))}e(io,"labelOverlapsOwnMarker");function dn(n,o){let s=[];for(let x of n){if(x.isLayoutOnly)continue;let d=x.points;if(!d||d.length<2)continue;for(let M=0;M<d.length-1;M++)s.push({edgeId:x.id,p1:d[M],p2:d[M+1]})}let i=[],c=[];for(let x of o.values()){let{isGroup:d,parentId:M}=x;if(d&&!M){let v=fe(x);if(v)c.push({id:x.id,rect:v});continue}if(d)continue;if(x.isEdgeLabel)continue;let A=fe(x);if(!A)continue;i.push({nodeId:x.id,rect:A})}let a=3,l=1,m=12,f=e((x,d)=>{let M=$n(d,a);for(let{nodeId:A,rect:v}of i){if(A===x)continue;if(gn(M,v))return!0}return!1},"labelOverlapsForeignNode"),g=e((x,d)=>{let M=$n(d,a);for(let A of s){if(A.edgeId===x)continue;if(Cn(A.p1,A.p2,M))return!0}return!1},"labelOverlapsForeignEdge"),y=e((x,d,M)=>f(x,M)||g(d,M),"labelOverlapsAnything"),I=[],E=e((x)=>{for(let{id:d,rect:M}of c)if(ps(M,x))return d;return},"findContainingLane"),b=e((x,d)=>I.some((M)=>M.labelId!==x&&gn(d,M.rect)),"overlapsPlacedLabel");for(let x of n){if(x.isLayoutOnly)continue;let d=x.labelNodeId;if(!d)continue;let M=o.get(d);if(!M)continue;let A=x.points;if(!A||A.length<2)continue;let v=M.width??0,N=M.height??0;if(v<=0||N<=0)continue;let k=[];for(let lt=0;lt<A.length-1;lt++){let ot=A[lt],dt=A[lt+1],Mt=Math.abs(ot.x-dt.x),Lt=Math.abs(ot.y-dt.y);if(Mt<le&&Lt<le)continue;if(Mt>=le&&Lt>=le)continue;k.push({idx:lt,length:Mt+Lt,orientation:Mt>=le?"horizontal":"vertical",midX:(ot.x+dt.x)/2,midY:(ot.y+dt.y)/2})}if(k.length===0)continue;let w=k.length>=3?k.filter((lt)=>lt.idx>0&&lt.idx<k.length-1):k,C=w.length>0?w:k,B=v>=N?"horizontal":"vertical",_=e((lt)=>[...lt].sort((ot,dt)=>{let Mt=ot.orientation===B,Lt=dt.orientation===B;if(Mt!==Lt)return Mt?-1:1;let Rt=ot.length>=(ot.orientation==="horizontal"?v:N)+2,kt=dt.length>=(dt.orientation==="horizontal"?v:N)+2;if(Rt!==kt)return Rt?-1:1;return dt.length-ot.length}),"rankSegments"),Y=k[0],F=k[k.length-1],V=[0.5,0.25,0.75,0.05,0.95,0.15,0.85,0.1,0.9],z=e((lt,ot)=>{let dt=A[lt.idx],Mt=A[lt.idx+1];return{midX:dt.x+(Mt.x-dt.x)*ot,midY:dt.y+(Mt.y-dt.y)*ot}},"anchorAtT"),D=e((lt,ot,dt)=>Math.min(dt,Math.max(ot,lt)),"clamp"),W=e((lt,ot)=>lt.midX>=ot.left-le&&lt.midX<=ot.right+le&&lt.midY>=ot.top-le&&lt.midY<=ot.bottom+le,"pointInsideRectInclusive"),J=e((lt)=>{let ot=ze(lt.midX,lt.midY,v,N),dt=E(ot);if(dt)return{laneId:dt,anchor:lt,rect:ot};let Mt=c.find(({rect:ge})=>W(lt,ge));if(!Mt)return;let Lt=Mt.rect.left+v/2+l,Rt=Mt.rect.right-v/2-l,kt=Mt.rect.top+N/2+l,re=Mt.rect.bottom-N/2-l;if(Lt>Rt||kt>re)return;let ie={midX:D(lt.midX,Lt,Rt),midY:D(lt.midY,kt,re)},ce=ze(ie.midX,ie.midY,v,N);return W(lt,ce)?{laneId:Mt.id,anchor:ie,rect:ce}:void 0},"placementForAnchor"),st=e((lt,ot,dt)=>lt.orientation==="horizontal"?Math.abs(ot.midX-dt.x):Math.abs(ot.midY-dt.y),"distanceAlongSegment"),xt=e((lt,ot)=>{let Mt=(lt.orientation==="horizontal"?v/2:N/2)+m;if(lt===Y){let Lt=A[lt.idx];if(st(lt,ot,Lt)+le<Mt)return!1}if(lt===F){let Lt=A[lt.idx+1];if(st(lt,ot,Lt)+le<Mt)return!1}return!0},"labelClearsTerminalEndpoints"),Tt=e((lt)=>{let ot=_(lt);for(let dt of ot)for(let Mt of V){let Lt=z(dt,Mt);if(!xt(dt,Lt))continue;let Rt=J(Lt);if(!Rt)continue;if(io(Rt.rect,A))continue;if(b(d,Rt.rect))continue;if(!y(d,x.id,Rt.rect))return{laneId:Rt.laneId,anchor:Rt.anchor}}return},"tryPool"),$t=e((lt,ot,dt=!1)=>{let Mt=_(lt);for(let Lt of Mt){let Rt={midX:Lt.midX,midY:Lt.midY};if(ot&&!xt(Lt,Rt))continue;let kt=J(Rt);if(kt&&!io(kt.rect,A)&&!b(d,kt.rect)&&!f(d,kt.rect)&&(dt||!g(x.id,kt.rect)))return{laneId:kt.laneId,anchor:kt.anchor}}return},"findLaneContainingFallback"),Ut=Tt(C)??(C.length<k.length?Tt(k):void 0)??$t(k,!0)??$t(k,!1)??$t(k,!1,!0);if(Ut){M.x=Ut.anchor.midX,M.y=Ut.anchor.midY,M.parentId=Ut.laneId;let lt=ze(Ut.anchor.midX,Ut.anchor.midY,v,N),ot=I.findIndex((dt)=>dt.labelId===d);if(ot>=0)I[ot]={labelId:d,rect:lt};else I.push({labelId:d,rect:lt})}}}e(dn,"anchorLabelsToPolyline");var Hn=0.000001,Jr=8,Ko=Jr/2,Zr=3;function co(n,o){return n<o?`${n}::${o}`:`${o}::${n}`}e(co,"pairKey");function Gs(n,o){let{nodeInfoById:s,realNodeRects:i}=vn(o),c=new Map;for(let l of o){let m=l.id;if(l.isGroup)continue;if(l.isEdgeLabel){c.set(m,{w:l.width??0,h:l.height??0});continue}}let a=e((l,m,f,g)=>{let y=co(m,f),I=0,E=e((b)=>{if(!b)return;let x=c.get(b);if(!x)return;let d=g==="x"?x.w/2:x.h/2;if(d>I)I=d},"consider");E(l.labelNodeId);for(let b of n){if(b===l)continue;if(b.isLayoutOnly)continue;let{start:x,end:d}=b;if(!x||!d)continue;if(co(x,d)!==y)continue;E(b.labelNodeId)}return I>0?I+Zr:0},"labelClearanceFor");for(let l of n){if(l.isLayoutOnly)continue;let m=l.points;if(!So(m,Hn))continue;let f=Eo(l,s,Hn);if(!f)continue;let{srcId:g,dstId:y,srcInfo:I,dstInfo:E,collinearX:b,collinearY:x}=f;if(b===x)continue;let d,M;if(b){let w=E.cy>I.cy;d={x:I.cx,y:w?I.rect.bottom:I.rect.top},M={x:E.cx,y:w?E.rect.top:E.rect.bottom}}else{let w=E.cx>I.cx;d={x:w?I.rect.right:I.rect.left,y:I.cy},M={x:w?E.rect.left:E.rect.right,y:E.cy}}if(Gt(d,M,i,[g,y],1))continue;let v=a(l,g,y,b?"x":"y"),N=v>Ko?v:Ko,k=[0,N,-N];for(let w of k){let C={...d},B={...M};if(b){if(C.x+=w,B.x+=w,C.x<=I.rect.left||C.x>=I.rect.right)continue;if(B.x<=E.rect.left||B.x>=E.rect.right)continue}else{if(C.y+=w,B.y+=w,C.y<=I.rect.top||C.y>=I.rect.bottom)continue;if(B.y<=E.rect.top||B.y>=E.rect.bottom)continue}if(Gt(C,B,i,[g,y],1))continue;if(pn(C,B,n,l,{epsilon:Hn}))continue;l.points=[C,B];break}}}e(Gs,"straightenCollinearSiblingDetours");function ao(n,o){let{realNodeRects:g,labelNodeRects:y}=Ae(o.values()),I=e((C,B)=>Ve(B,0.001).map((_)=>({..._,edge:C,interior:_.index>=1&&_.index<=B.length-3})),"segmentsFor"),E=e(()=>{let C=[];for(let B of n){if(B.isLayoutOnly)continue;let _=B.points;if(!_||_.length<2)continue;C.push(...I(B,Et(_)))}return C},"allSegments"),b=e((C,B)=>{if(C.horizontal&&B.horizontal)return se(C.a.x,C.b.x,B.a.x,B.b.x)>=8&&Math.abs(C.a.y-B.a.y)<7;if(C.vertical&&B.vertical)return se(C.a.y,C.b.y,B.a.y,B.b.y)>=8&&Math.abs(C.a.x-B.a.x)<7;return!1},"hasCrowdedParallelTrack"),x=e((C,B)=>{let{start:_,end:Y}=C,F=I(C,B);if(F.length!==B.length-1)return!1;let V=[_,Y].filter((D)=>Boolean(D)),z=C.labelNodeId?[C.labelNodeId]:[];for(let D of F){if(Gt(D.a,D.b,g,V,-2))return!1;if(Gt(D.a,D.b,y,z,-2))return!1}for(let D of n){if(D===C||D.isLayoutOnly)continue;let W=D.points;if(!W||W.length<2)continue;for(let J of F)for(let st of I(D,Et(W))){if(b(J,st))return!1;if(Ce(J.a,J.b,st.a,st.b,0.001))return!1}}return!0},"candidateIsSafe"),d=e((C,B)=>{let _=Et(C.edge.points??[]);if(_.length<4||C.index>=_.length-1)return;let Y=_.map((F)=>({...F}));if(C.horizontal)Y[C.index].y+=B,Y[C.index+1].y+=B;else if(C.vertical)Y[C.index].x+=B,Y[C.index+1].x+=B;else return;return I(C.edge,Y).length===Y.length-1?Y:void 0},"shiftedCandidate"),M=e((C,B)=>({x:C.x??(B.left+B.right)/2,y:C.y??(B.top+B.bottom)/2}),"nodeCenter"),A=e((C)=>{let B=C.edge,_=Et(B.points??[]);if(_.length!==4||C.index!==1)return;let Y=B.start?o.get(B.start):void 0,F=B.end?o.get(B.end):void 0,V=Y?fe(Y):void 0,z=F?fe(F):void 0,D=_.slice(C.index+2);if(!Y||!F||!V||!z||D.length===0)return;return{sourceCenter:M(Y,V),targetCenter:M(F,z),sourceRect:V,tail:D}},"sourceDetourContextFor"),v=e((C,B,_,Y,F,V)=>{let z=Y.y>=_.y,D=z?F.bottom:F.top,W=D+(z?20:-20);if(z&&C.b.y<=W+0.001||!z&&C.b.y>=W-0.001)return;let J=C.a.x+B;return Et([{x:_.x,y:D},{x:_.x,y:W},{x:J,y:W},{x:J,y:C.b.y},...V],0.001)},"verticalSourceDetour"),N=e((C,B,_,Y,F,V)=>{let z=Y.x>=_.x,D=z?F.right:F.left,W=D+(z?20:-20);if(z&&C.b.x<=W+0.001||!z&&C.b.x>=W-0.001)return;let J=C.a.y+B;return Et([{x:D,y:_.y},{x:W,y:_.y},{x:W,y:J},{x:C.b.x,y:J},...V],0.001)},"horizontalSourceDetour"),k=e((C,B)=>{let _=A(C);if(!_)return;if(C.vertical)return v(C,B,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);if(C.horizontal)return N(C,B,_.sourceCenter,_.targetCenter,_.sourceRect,_.tail);return},"sourceDetourCandidate"),w=[-7,7,-14,14,-21,21];for(let C=0;C<12;C++){let B=E(),_=!1;for(let Y=0;Y<B.length&&!_;Y++)for(let F=Y+1;F<B.length&&!_;F++){let V=B[Y],z=B[F];if(V.edge===z.edge||!b(V,z))continue;let D=[V,z].filter((W)=>W.interior);for(let W of D){for(let J of w){let st=d(W,J);if(st&&x(W.edge,st)){W.edge.points=st,_=!0;break}let xt=k(W,J);if(xt&&x(W.edge,xt)){W.edge.points=xt,_=!0;break}}if(_)break}}if(!_)return}}e(ao,"nudgeSharedInteriorSubpaths");function $s(n,o,s,i){let c=o.x-n.x,a=o.y-n.y,l=i.x-s.x,m=i.y-s.y,f=c*m-a*l;if(Math.abs(f)<0.0000000001)return!1;let g=s.x-n.x,y=s.y-n.y,I=(g*m-y*l)/f,E=(g*a-y*c)/f,b=0.01;return I>b&&I<1-b&&E>b&&E<1-b}e($s,"segmentsIntersect");function zs(n){let o=n.nodes??[],s=n.edges??[],i=[];if(!s.length||!o.length)return i;let c=ms(o),a=1,l=[];for(let f of s){if(f.isLayoutOnly)continue;let g=f.points;if(!g||g.length<2)continue;let{start:y,end:I,labelNodeId:E}=f,b=f.id??`${y}->${I}`;for(let x of c){if(x.nodeId===y||x.nodeId===I)continue;if(E&&x.nodeId===E)continue;for(let d=0;d<g.length-1;d++)if(Cn(g[d],g[d+1],x,-a)){i.push({type:"edge-node-overlap",edgeId:b,targetId:x.nodeId,detail:`segment ${d} passes through node "${x.nodeId}"`});break}}for(let x=0;x<g.length-1;x++)l.push({edgeId:b,start:y,end:I,p1:g[x],p2:g[x+1]})}let m=new Set;for(let f=0;f<l.length;f++)for(let g=f+1;g<l.length;g++){let y=l[f],I=l[g];if(y.edgeId===I.edgeId)continue;if(y.start===I.start||y.start===I.end||y.end===I.start||y.end===I.end)continue;if($s(y.p1,y.p2,I.p1,I.p2)){let E=y.edgeId<I.edgeId?`${y.edgeId}|${I.edgeId}`:`${I.edgeId}|${y.edgeId}`;if(!m.has(E))m.add(E),i.push({type:"edge-edge-crossing",edgeId:y.edgeId,targetId:I.edgeId,detail:`edges "${y.edgeId}" and "${I.edgeId}" cross`})}}if(i.length>0){let f=i.filter((y)=>y.type==="edge-node-overlap").length,g=i.filter((y)=>y.type==="edge-edge-crossing").length;t.warn(`[SWIMLANE_VALIDATE] ${i.length} issue(s) detected: ${f} edge-node overlap(s), ${g} edge crossing(s)`);for(let y of i)t.warn(`[SWIMLANE_VALIDATE] ${y.type}: ${y.detail}`)}return i}e(zs,"validateSwimlanesLayout");function Vs(n,o){let s=n.nodes??[],i=n.edges??[],c=s.filter((m)=>!m.isGroup);if((o==="LR"||o==="RL")&&c.length>0&&!Ns(n,o))return;if(o==="BT"&&c.length>0&&!As(n))return;for(let m of i){if(m.isLayoutOnly)continue;let f=m.points;if(!f||f.length<2)continue;m.points=Se(mn(f))}Xs(i,s),Gs(i,s),Os(i,s);let a=new Map;for(let m of s)a.set(String(m.id),m);dn(i,a),Is(i,a),Bs(i,a),ao(i,a),Ps(i,a),Fs(i,a),no(i,a),ks(i,a);let l=e(()=>{Ds(i,a),_s(i,a),Hs(i,a),dn(i,a),to(i,a),no(i,a),dn(i,a),to(i,a)},"finalizeRenderedEdges");l(),ao(i,a),l(),oo(i,a),so(i,a),oo(i,a),so(i,a)}e(Vs,"postProcessSwimlaneLayout");function Oe(n){let o=new Map(n.nodeById),s=new Set,i=[];for(let a of n.edges){if(!o.has(a.src)||!o.has(a.dst))continue;let l=`${a.id}:${a.src}->${a.dst}`;if(s.has(l))continue;s.add(l),i.push(a)}return{nodes:[...o.keys()],edges:i,layout:n.layout,nodeById:o}}e(Oe,"normalizeGraph");function Oo(n,o){return n.edges.filter((s)=>s.dst===o)}e(Oo,"incoming");function js(n){let o=new Map;for(let s of n.nodes)o.set(s,[]);for(let s of n.edges)o.get(s.src).push(s.dst);return o}e(js,"buildSuccessorMap");function Bo(n){let o=js(n);for(let s of o.values())s.sort((i,c)=>i.localeCompare(c));return o}e(Bo,"buildSortedSuccessorMap");function Po(n){let o=new Map;for(let s of n.nodes)o.set(s,0);for(let s of n.edges)o.set(s.dst,(o.get(s.dst)??0)+1);return o}e(Po,"buildInDegreeMap");function Fo(n){return[...n.entries()].filter(([,o])=>o===0).map(([o])=>o).sort((o,s)=>o.localeCompare(s))}e(Fo,"sortedZeroInDegreeNodes");function Ln(n,o=()=>!0){let s=new Map,i=new Map;for(let c of n.nodes)s.set(c,[]),i.set(c,[]);for(let c of n.edges){if(!o(c))continue;i.get(c.src).push(c.dst),s.get(c.dst).push(c.src)}return{preds:s,succs:i}}e(Ln,"buildPredecessorSuccessorMaps");function ko(n,o,s,i){let c=0;for(let l of n.nodes){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;c=Math.max(c,s[l]??0)}let a=Array.from({length:c+1},()=>[]);for(let l of o){if(i?.skipGroups&&n.nodeById.get(l)?.isGroup)continue;a[Math.max(0,s[l]??0)].push(l)}return a}e(ko,"buildLayersFromRanks");function We(n){let o=Po(n),s=Fo(o),i=[],c=Bo(n);while(s.length){let a=s.shift();i.push(a);for(let l of c.get(a)??[])if(o.set(l,(o.get(l)??0)-1),(o.get(l)??0)===0){let m=0;while(m<s.length&&s[m]<l)m++;s.splice(m,0,l)}}return i.length===n.nodes.length?i:null}e(We,"topoSortIfAcyclic");function je(n){let o=new Map,s=0;for(let i of n)o.set(i,s),s++;return o}e(je,"buildLayerIndex");function _o(n){let o=Array(n.length),s=e((i,c)=>{if(c-i<=1)return 0;let a=i+c>>1,l=s(i,a)+s(a,c),m=i,f=a,g=i;while(m<a||f<c)if(f>=c||m<a&&n[m]<=n[f])o[g++]=n[m++];else o[g++]=n[f++],l+=a-m;for(let y=i;y<c;y++)n[y]=o[y];return l},"count");return s(0,n.length)}e(_o,"countInversions");function Us(n){let o=Oe(n),s=new Map;for(let y of o.nodes)s.set(y,[]);for(let y of o.edges)s.get(y.src).push(y);for(let y of s.values())y.sort((I,E)=>I.dst===E.dst?I.id.localeCompare(E.id):I.dst.localeCompare(E.dst));let i=Object.create(null);for(let y of o.nodes)i[y]=0;let c=[],a=e((y)=>{i[y]=1;for(let I of s.get(y)??[]){let E=I.dst;if(i[E]===0)a(E);else if(i[E]===1)c.push(I)}i[y]=2},"dfs"),l=[...o.nodes].sort((y,I)=>y.localeCompare(I));for(let y of l)if(i[y]===0)a(y);let m=new Set(c.map((y)=>`${y.id}:${y.src}->${y.dst}`)),f=o.edges.map((y)=>m.has(`${y.id}:${y.src}->${y.dst}`)?{id:y.id,src:y.dst,dst:y.src,weight:y.weight,ref:y.ref}:y);return{acyclic:{nodes:[...o.nodes],edges:f,layout:o.layout,nodeById:new Map(o.nodeById)},reversed:c}}e(Us,"removeCycles_DFS");function Ws(n){let o=new Map,s=e((i)=>{if(o.has(i))return o.get(i);let c=n.nodeById.get(i);if(!c)return o.set(i,null),null;let a=c.parentId;if(!a)return o.set(i,null),null;let m=s(a)??a;return o.set(i,m),m},"resolve");for(let i of n.nodes)s(i);return o}e(Ws,"buildTopLaneMap");function ve(n){let o=Ws(n);return(s)=>o.get(s)??null}e(ve,"createTopLaneResolver");function En(n){let o=[];for(let s of n.layout.nodes??[])if(s.isGroup&&!s.parentId)o.push(s.id);return[...new Set(o)].reverse()}e(En,"buildTopLaneOrder");function Ho(n,o){let s=En(n);if(!o||o.length===0)return s;let i=new Set(s),c=new Set,a=[];for(let l of o){if(!i.has(l)||c.has(l))continue;c.add(l),a.push(l)}for(let l of s){if(c.has(l))continue;a.push(l)}return a}e(Ho,"resolveTopLaneOrder");var Qr={EPSILON:0.000001},In={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},qo={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function Ks(n,o){let s=Oe(n),i=o?.laneOf??(()=>null),c=o?.rankHint,{preds:a}=Ln(s);for(let w of a.values())w.sort((C,B)=>C.localeCompare(B));let l=We(s)??[...s.nodes].sort((w,C)=>w.localeCompare(C)),m=new Map;for(let[w,C]of l.entries())m.set(C,w);let f=new Map,g=new Map;for(let w of s.nodes)g.set(w,[]);for(let w of l){let C=(a.get(w)??[]).filter((B)=>f.has(B));if(C.length>0){let B=qs(w,C,{laneOf:i,rankHint:c,topoIndex:m});f.set(w,B),g.get(B).push(w)}else if(!f.has(w))f.set(w,null)}for(let w of s.nodes)if(!f.has(w))f.set(w,null);let y=new Set;for(let w of s.nodes)if((f.get(w)??null)===null)y.add(w);let I=[...y].sort((w,C)=>{let B=m.get(w)??0,_=m.get(C)??0;if(B===_)return w.localeCompare(C);return B-_}),E=Js(s),b=new Map;for(let[w,C]of E.entries())b.set(w,[...C].sort((B,_)=>B.localeCompare(_)));let x=Zs(b),d=Qs(b),M=new Map;for(let w of s.nodes)M.set(w,[]);for(let w of d)for(let C of w.nodes){let B=M.get(C);if(B)B.push(w.id);else M.set(C,[w.id])}let A=[],v=[],N=new Set,k=e((w)=>{if(N.has(w))return;N.add(w),A.push(w);for(let C of g.get(w)??[])k(C);v.push(w)},"walk");for(let w of I)k(w);for(let w of l)k(w);return{parent:f,children:g,roots:I,componentOf:x,blocks:d,nodeBlocks:M,adjacency:b,preorder:A,postorder:v,topologicalOrder:l}}e(Ks,"buildDrivingTree");function qs(n,o,s){let i=s.laneOf(n);return[...o].sort((a,l)=>{let m=s.laneOf(a),f=s.laneOf(l),g=m!=null&&m===i,y=f!=null&&f===i;if(g!==y)return g?-1:1;let I=s.rankHint?.[a],E=s.rankHint?.[l];if(I!=null&&E!=null&&I!==E)return E-I;let b=s.topoIndex.get(a)??0,x=s.topoIndex.get(l)??0;if(b!==x)return b-x;return a.localeCompare(l)})[0]}e(qs,"chooseParent");function Js(n){let o=new Map;for(let s of n.nodes)o.set(s,new Set);for(let s of n.edges)o.get(s.src).add(s.dst),o.get(s.dst).add(s.src);return o}e(Js,"buildAdjacency");function Zs(n){let o=new Map,s=0;for(let i of n.keys()){if(o.has(i))continue;let c=[i];while(c.length>0){let a=c.pop();if(o.has(a))continue;o.set(a,s);for(let l of n.get(a)??[])if(!o.has(l))c.push(l)}s++}return o}e(Zs,"assignComponents");function Qs(n){let o=new Map,s=new Map,i=[],c=[],a=0,l=e((m,f)=>{o.set(m,++a),s.set(m,a);for(let g of n.get(m)??[]){if(g===f)continue;if(!o.has(g)){if(i.push([m,g]),l(g,m),s.set(m,Math.min(s.get(m)??a,s.get(g)??a)),(s.get(g)??0)>=(o.get(m)??0))c.push(tr(m,g,i,c.length))}else if((o.get(g)??0)<(o.get(m)??0))i.push([m,g]),s.set(m,Math.min(s.get(m)??a,o.get(g)??a))}},"visit");for(let m of n.keys())if(!o.has(m))l(m,null);return c}e(Qs,"computeBlocks");function tr(n,o,s,i){let c=[],a=new Set;while(s.length>0){let l=s.pop();if(c.push(l),a.add(l[0]),a.add(l[1]),l[0]===n&&l[1]===o||l[0]===o&&l[1]===n)break}return{id:i,edges:c,nodes:[...a]}}e(tr,"popBlock");function er(n,o,s){let i=[...n.nodes],c=new Map;for(let[v,N]of i.entries())c.set(N,v);let a=i.length,l=Array(a).fill(-1),m=Array(a).fill(0),f=[],g=new Set;for(let v of i){let N=s.parent.get(v)??null,k=c.get(v);if(k==null)continue;if(N==null){if(l[k]=-1,m[k]=0,!g.has(v))g.add(v),f.push(v)}}while(f.length>0){let v=f.shift(),N=c.get(v);if(N==null)continue;let k=s.children.get(v)??[];for(let w of k){if(g.has(w))continue;let C=c.get(w);if(C==null)continue;l[C]=N,m[C]=m[N]+1,g.add(w),f.push(w)}}for(let v of i){if(g.has(v))continue;let N=c.get(v);if(N==null)continue;l[N]=-1,m[N]=0,g.add(v)}let y=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),I=Array.from({length:y},()=>Array(a).fill(-1));for(let v=0;v<a;v++)I[0][v]=l[v];for(let v=1;v<y;v++)for(let N=0;N<a;N++){let k=I[v-1][N];I[v][N]=k===-1?-1:I[v-1][k]}let E=e((v,N)=>{if(v===-1||N===-1)return-1;if(m[v]<m[N])[v,N]=[N,v];let k=m[v]-m[N];for(let w=0;w<y;w++)if(k>>w&1){if(v=I[w][v],v===-1)return-1}if(v===N)return v;for(let w=y-1;w>=0;w--){let C=I[w][v],B=I[w][N];if(C===-1||B===-1)continue;if(C!==B)v=C,N=B}return I[0][v]},"lcaIndex"),b=Array.from({length:a},()=>new Map);for(let v of n.edges){let{src:N,dst:k}=v,w=o[N],C=o[k];if(w==null||C==null)continue;if(w>C)[N,k]=[k,N],[w,C]=[C,w];if(w==null||C==null||w===C)continue;let B=c.get(N),_=c.get(k);if(B==null||_==null)continue;let Y=E(B,_);if(Y===-1)continue;let F=b[Y];for(let V=w;V<C;V++)F.set(V,(F.get(V)??0)+1)}let x=new Map,d=e((v,N)=>{if(N.size===0)return;for(let[k,w]of N)v.set(k,(v.get(k)??0)+w)},"mergeInto"),M=new Set,A=e((v)=>{let N=c.get(v);M.add(v);let k=N==null?void 0:b[N],w=k?new Map(k):new Map,C=s.children.get(v)??[];for(let B of C){let _=A(B),Y=o[v];if(Y!=null){let F=x.get(v);if(!F)F=new Map,x.set(v,F);let V=_.get(Y)??0,z=o[B];if(z!=null&&z>Y)V+=1;F.set(B,V)}d(w,_)}return w},"dfs");for(let v of s.roots)if(!M.has(v))A(v);for(let v of i)if(!M.has(v))A(v);return x}e(er,"computeSubtreeCrossCounts");function nr(n,o,s){let i=new Map,c=e((a)=>{let l=s[a]??0,m=[...o.get(a)??[]];m.sort(Do(s));for(let f of m){c(f);let g=i.get(f);if(g!=null)l=Math.min(l,g)}i.set(a,l)},"annotate");for(let a of n)c(a);return i}e(nr,"annotateMinimumLayers");function Do(n){return(o,s)=>{let i=n[o]??0,c=n[s]??0;return i===c?o.localeCompare(s):i-c}}e(Do,"compareByRankThenId");function or(n,o,s,i){let c=0;for(let f of o){let g=s[f]??0;if(g>c)c=g}let a=Array.from({length:c+1},()=>[]),l=new Set,m=e((f)=>{if(l.has(f))return;l.add(f);let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f);for(let y of i(f))m(y)},"emit");for(let f of n)m(f);for(let f of o)if(!l.has(f)){let g=s[f]??0;if(!a[g])a[g]=[];a[g].push(f),l.add(f)}return a}e(or,"emitNodesInTreeOrder");function sr(n){let o=[];for(let s of n){let i=new Set,c=[];for(let a of s){if(i.has(a))continue;i.add(a),c.push(a)}o.push(c)}return o}e(sr,"deduplicateLayers");function rr(n,o,s,i){return(c)=>{let a=n.get(c)??[];if(a.length===0)return[];let l=o[c]??0,m=[],f=[],g=s.get(c);for(let y of a){let I=i.get(y)??l;if(I>l)m.push({child:y,min:I});else f.push(y)}return m.sort((y,I)=>{if(y.min===I.min)return y.child.localeCompare(I.child);return y.min-I.min}),f.sort((y,I)=>{let E=g?.get(y)??0,b=g?.get(I)??0;if(E!==b)return E-b;let x=i.get(y)??l,d=i.get(I)??l;if(x!==d)return x-d;return y.localeCompare(I)}),[...m.map((y)=>y.child),...f]}}e(rr,"createChildOrderer");function Sn(n,o,s){let i=Ks(n,{rankHint:o,laneOf:s}),{children:c,roots:a}=i;for(let I of n.nodes)if(!c.has(I))c.set(I,[]);let l=er(n,o,i),m=[...a].sort(Do(o)),f=nr(m,c,o),g=rr(c,o,l,f),y=or(m,n.nodes,o,g);return y=sr(y),y}e(Sn,"buildMultitreeLayerOrder");function ir(n,o,s){let i=new Set(n),c=new Set(o),a=je(o),l=[];for(let m of s)if(i.has(m.src)&&c.has(m.dst))l.push(a.get(m.dst));return _o(l)}e(ir,"countCrossingsBetweenAdjacent");function lo(n,o,s){let i=[];for(let a of o){let l=s[a.src],m=s[a.dst];if(l==null||m==null||l===m)continue;let{src:f,dst:g}=a,y=l,I=m;if(l>m)f=a.dst,g=a.src,y=m,I=l;for(let E=y;E<I;E++)i.push({id:`${a.id}@${E}`,src:f,dst:g,ref:a.ref})}let c=0;for(let a=0;a+1<n.length;a++)c+=ir(n[a],n[a+1],i);return c}e(lo,"totalCrossings");function cr(n,o){let s={...o},{preds:i}=Ln(n),c=ve(n),a=Sn(n,s,c),l=lo(a,n.edges,s),m=In.MAX_CROSSING_OPTIMIZATION_PASSES;for(let f=0;f<m;f++){let g=!1,y=[...n.nodes].sort((I,E)=>(s[E]??0)-(s[I]??0));for(let I of y){let E=s[I]??0;if(E===0)continue;let b=0;for(let A of i.get(I)??[])b=Math.max(b,(s[A]??0)+1);if(b>=E)continue;let x=E;s[I]=b;let d=Sn(n,s,c),M=lo(d,n.edges,s);if(M<l)l=M,g=!0;else s[I]=x}if(!g)break}return s}e(cr,"optimizeRanksByCrossings");function ar(n,o){let s=ve(n),i=[...n.nodes].sort((c,a)=>(o[c]??0)-(o[a]??0)||c.localeCompare(a));for(let c of i){let a=s(c);if(!a)continue;let l=n.edges.filter((d)=>d.src===c);if(l.length===0)continue;let m=!1,f=0;for(let d of l){let M=s(d.dst);if(M==null||M===a)m=!0;else f++}if(f===0||m)continue;let g=0,y=!1;for(let d of n.edges){if(d.dst!==c)continue;let M=s(d.src);if(!M)continue;if(M===a)y=!0;else g++}if(g>0||!y)continue;let I=o[c]??0,E=I+f,b=0;for(let d of n.edges)if(d.dst===c)b=Math.max(b,(o[d.src]??0)+1);let x=Math.max(I,b,E);if(x!==I)o[c]=x}}e(ar,"adjustCrossLaneSources");function lr(n,o){let s=Oe(n),i=We(s)??[...s.nodes].sort(),c=o?.compactSingleInput??!1,a=ve(s),l=Object.create(null);for(let f of i){let g=Oo(s,f),y=o?.ignoreCrossLaneEdges?g.filter((I)=>{let E=a(I.src),b=a(f);if(!E||!b)return!0;return E===b}):g;if(y.length===0)l[f]=0;else if(c&&y.length===1){let I=y[0].src,E=a(I),b=a(f);if(E!==b)l[f]=l[I]??0;else l[f]=(l[I]??0)+1}else{let I=-1/0;for(let E of y)I=Math.max(I,(l[E.src]??0)+1);l[f]=I===-1/0?0:I}}if(o?.optimizeRanksByCrossings??!1)l=cr(s,l);if(o?.ignoreCrossLaneEdges)ar(s,l);return{layers:Sn(s,l,a),rankOf:l,dummy:new Set}}e(lr,"assignLayers_LongestPath");function fr(n,o){let s=Oe(n),c={...lr(s,{compactSingleInput:o?.compactSingleInput,ignoreCrossLaneEdges:o?.ignoreCrossLaneEdges,optimizeRanksByCrossings:o?.optimizeRanksByCrossings}).rankOf},a=ve(s),{preds:l,succs:m}=Ln(s,(x)=>{if(o?.ignoreCrossLaneEdges){let d=a(x.src),M=a(x.dst);if(d&&M&&d!==M)return!1}return!0}),f=We(s)??[...s.nodes],g=[...f].reverse(),y=e((x,d)=>{let M=0;for(let N of l.get(x)??[])M=Math.max(M,(c[N]??0)+1);let A=Number.POSITIVE_INFINITY,v=m.get(x)??[];if(v.length>0)A=Math.min(...v.map((N)=>(c[N]??0)-1));if(!Number.isFinite(A))A=Math.max(M,d);return Math.min(Math.max(d,M),A)},"clampFeasible"),I=In.GRAVITY_ITERATIONS,E=e((x)=>{let d=!1;for(let M of x){let A=l.get(M)??[],v=m.get(M)??[];if(A.length===0&&v.length===0)continue;let N=A.length>0?A.reduce((B,_)=>B+(c[_]??0)+1,0)/A.length:c[M]??0,k=v.length>0?v.reduce((B,_)=>B+(c[_]??0)-1,0)/v.length:c[M]??0,w=Math.round((N+k)/2),C=y(M,w);if(C!==c[M])c[M]=C,d=!0}return d},"relaxOrder");for(let x=0;x<I;x++){let d=E(f),M=E(g);if(!d&&!M)break}for(let x of f){let d=0;for(let M of l.get(x)??[])d=Math.max(d,(c[M]??0)+1);if((c[x]??0)<d)c[x]=d}for(let x of g){let d=m.get(x)??[];if(d.length>0){let M=Math.min(...d.map((A)=>(c[A]??0)-1));if((c[x]??0)>M)c[x]=M}}return{layers:ko(s,f,c),rankOf:c,dummy:new Set}}e(fr,"assignLayers_Gravity");function dr(n){let o=Po(n),s=Bo(n),i=Fo(o),c=[];while(i.length>0){let a=[];for(let l of i){c.push(l);for(let m of s.get(l)??[])if(o.set(m,(o.get(m)??0)-1),(o.get(m)??0)===0)a.push(m)}i=a.sort((l,m)=>l.localeCompare(m))}return c.length===n.nodes.length?c:null}e(dr,"topoSortByGenerationIfAcyclic");function ur(n,o){let s=Oe(n),i=o?.direction==="LR"?dr(s)??[...s.nodes].sort():We(s)??[...s.nodes].sort(),c=ve(s),a=e((y)=>c(y)??y,"laneOf"),l=Object.create(null),m=new Map,f=e((y,I)=>{if(o?.ignoreCrossLaneEdges??!0)return a(y)===a(I)?1:0;return 1},"edgeWeight");for(let y of i){if(s.nodeById.get(y)?.isGroup)continue;let E=Oo(s,y),b=0;if(E.length>0)for(let A of E){let v=A.src,N=l[v]??0;b=Math.max(b,N+f(v,y))}let x=a(y),d=m.get(x)??0,M=Math.max(b,d);l[y]=M,m.set(x,M+1)}return{layers:ko(s,i,l,{skipGroups:!0}),rankOf:l,dummy:new Set}}e(ur,"assignLayers_LaneAwareCompact");function hr(n,o){let s=Oe(o),{rankOf:i}=n,c=n.layers.map((b)=>[...b]),a=new Set(n.dummy?[...n.dummy]:[]),l=0,m=new Map(s.nodeById),f=e((b)=>{let x=`placeholder-${l++}`,d={id:x,isGroup:!1,isDummy:!0,width:0,height:0};m.set(x,d),a.add(x);while(c.length<=b)c.push([]);return c[b].push(x),i[x]=b,x},"addDummyAt"),g=[...s.edges].sort((b,x)=>b.id===x.id?b.src===x.src?b.dst.localeCompare(x.dst):b.src.localeCompare(x.src):b.id.localeCompare(x.id)),y=[];for(let b of g){let x=i[b.src]??0,d=i[b.dst]??0;if(d-x<=1){y.push(b);continue}let M=b.src;for(let v=x+1,N=0;v<d;v++,N++){let k=f(v);y.push({id:`${b.id}#${N}`,src:M,dst:k,weight:b.weight,ref:b.ref}),M=k}let A=d-x-2;y.push({id:`${b.id}#${Math.max(A+1,0)}`,src:M,dst:b.dst,weight:b.weight,ref:b.ref})}let E={nodes:[...s.nodes,...[...a].filter((b)=>!s.nodes.includes(b))],edges:y,layout:s.layout,nodeById:m};return{layering:{layers:c,rankOf:i,dummy:a},graphWithDummies:E}}e(hr,"makeProperLayering");function fo(n){let o=n.length;if(o===0)return Number.POSITIVE_INFINITY;let s=[...n].sort((i,c)=>i-c);if(o%2===1)return s[(o-1)/2];return 0.5*(s[o/2-1]+s[o/2])}e(fo,"median");function uo(n){if(n.length===0)return Number.POSITIVE_INFINITY;return n.reduce((s,i)=>s+i,0)/n.length}e(uo,"barycenter");function gr(n,o,s,i){let c=new Map;for(let a of n)c.set(a,[]);for(let a of s)if(i==="down"){if(o.has(a.src)&&c.has(a.dst))c.get(a.dst).push(o.get(a.src))}else if(o.has(a.dst)&&c.has(a.src))c.get(a.src).push(o.get(a.dst));return c}e(gr,"neighborPositionsFor");function pr(n,o,s){let i=s.get(n)??0,c=s.get(o)??0;return i!==c?i-c:n.localeCompare(o)}e(pr,"currentOrderTieBreak");function ho(n,o,s){let i=new Set(n),c=new Set(o),a=je(n),l=je(o),m=[];for(let g of s)if(i.has(g.src)&&c.has(g.dst))m.push({u:a.get(g.src),v:l.get(g.dst)});m.sort((g,y)=>g.u===y.u?g.v-y.v:g.u-y.u);let f=m.map((g)=>g.v);return _o(f)}e(ho,"countCrossingsBetweenAdjacent");function un(n,o,s){return[...n].sort((i,c)=>{let a=fo(o.get(i)??[]),l=fo(o.get(c)??[]);if(a===l)return pr(i,c,s);if(!isFinite(a))return 1;if(!isFinite(l))return-1;return a-l})}e(un,"sortByHeuristic");function go(n,o,s,i,c,a){let l=je(n),m=je(o),f=gr(o,l,s,i);if(!c||!a||a.length===0)return un(o,f,m);let g=new Map;for(let E of o){let b=c(E),x=g.get(b)??[];x.push(E),g.set(b,x)}let y=[];for(let E of a){let b=g.get(E);if(!b||b.length===0)continue;let x=un(b,f,m);y.push(...x)}let I=g.get(null);if(I&&I.length>0){let E=un(I,f,m);for(let b of E){let x=uo(f.get(b)??[]),d=y.length;if(isFinite(x))for(let[M,A]of y.entries()){let v=uo(f.get(A)??[]);if(x<v){d=M;break}}y.splice(d,0,b)}}return y}e(go,"reorderLayer");function po(n,o,s,i,c){let a=[...o],l=new Set(n),m=new Set(o),f=i?new Set(i):null,g=s.filter((d)=>l.has(d.src)&&m.has(d.dst)),y=f?s.filter((d)=>m.has(d.src)&&f.has(d.dst)):void 0,I=e((d)=>{let M=ho(n,d,g);if(y&&i)M+=ho(d,i,y);return M},"crossingScore"),E=c?new Map:null;if(c&&E)for(let d of o)E.set(d,c(d));let b=!0,x=I(a);while(b){b=!1;for(let d=0;d+1<a.length;d++){if(E){let v=E.get(a[d]),N=E.get(a[d+1]);if(v!==N)continue}let M=x;[a[d],a[d+1]]=[a[d+1],a[d]];let A=I(a);if(A<M)x=A,b=!0;else[a[d],a[d+1]]=[a[d+1],a[d]]}}return a}e(po,"transposeImprove");function mr(n,o,s){let i=n.layers.map((m)=>[...m]),c=o.edges,a=ve(o),l=Ho(o,s?.laneOrder);for(let m=0;m<3;m++){for(let f=1;f<i.length;f++)i[f]=go(i[f-1],i[f],c,"down",a,l),i[f]=po(i[f-1],i[f],c,i[f+1],a);for(let f=i.length-2;f>=0;f--)i[f]=go(i[f+1],i[f],c,"up",a,l),i[f]=po(i[f+1],i[f],c,i[f-1],a)}return{layers:i}}e(mr,"orderLayers");function yr(n,o,s){let i=s?.layerGap??qo.DEFAULT_LAYER_GAP,c=s?.nodeGap??qo.DEFAULT_NODE_GAP,a=s?.laneGap??c*2,l=s?.direction??"TB",m=l==="LR"||l==="RL",f=n.layers,g=Object.create(null),y=Object.create(null),I=e((F)=>o.nodeById.get(F),"getNode"),E=e((F)=>I(F)?.width??0,"getWidth"),b=e((F)=>I(F)?.height??0,"getHeight"),x=ve(o),d=Ho(o,s?.laneOrder),M=f.map((F)=>F.reduce((V,z)=>Math.max(V,b(z)),0)),A=[];if(m)for(let F=0;F+1<f.length;F++){let V=f[F].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),z=f[F+1].reduce((Tt,$t)=>Math.max(Tt,E($t)),0),D=M[F],W=M[F+1],J=D/2+W/2,st=(V+z)/2,xt=Math.max(0,st-J-i);A.push(xt)}let v=new Set;for(let F of f)for(let V of F)v.add(x(V));let N=v.has(null),k=d.filter((F)=>v.has(F)),w=[...N?[null]:[],...k],C=Object.create(null);for(let F of k)C[F]=0;if(N)C.null=0;for(let F of f){let V=Object.create(null),z=[];for(let D of F){let W=x(D);if(W===null)z.push(D);else(V[W]||=[]).push(D)}for(let[D,W]of Object.entries(V)){let J=W.reduce((st,xt)=>st+E(xt),0)+c*Math.max(0,W.length-1);C[D]=Math.max(C[D]??0,J)}if(N&&z.length){let D=z.reduce((W,J)=>W+E(J),0)+c*Math.max(0,z.length-1);C.null=Math.max(C.null??0,D)}}let B=new Map;{let F=w.map((D)=>(D===null?C.null:C[D])??0),z=-(F.reduce((D,W)=>D+W,0)+a*Math.max(0,w.length-1))/2;for(let D=0;D<w.length;D++){let W=w[D],J=F[D]??0,st=z+J/2;if(B.set(W,st),z+=J,D<w.length-1)z+=a}}let _=0;for(let[F,V]of f.entries()){let z=M[F]??0,D=new Map;for(let J of V){let st=x(J),xt=D.get(st)??[];xt.push(J),D.set(st,xt)}for(let J of w){let st=D.get(J)??[];if(st.length===0)continue;let xt=B.get(J);if(st.length===1){let Tt=st[0];g[Tt]=xt,y[Tt]=_+z/2}else{let Tt=st.map((lt)=>E(lt)),$t=Tt.reduce((lt,ot)=>lt+ot,0)+c*(st.length-1),Ut=xt-$t/2;for(let[lt,ot]of st.entries()){let dt=Tt[lt];g[ot]=Ut+dt/2,y[ot]=_+z/2,Ut+=dt+c}}}let W=A[F]??0;_+=z+i+W}let Y=new Map;for(let F of o.edges){let V=F.ref.id;if(!Y.has(V))Y.set(V,[]);Y.get(V).push(F)}for(let[,F]of Y){if(F.length===0)continue;let V=F[0].ref,{start:z,end:D}=V;if(z==null||D==null)continue;let W=Math.round(((g[z]??0)+(g[D]??0))/2),J=new Set;for(let st of F)J.add(st.src),J.add(st.dst);for(let st of J){if(st===z||st===D)continue;if(o.nodeById.get(st)?.isDummy)g[st]=W}}return{x:g,y}}e(yr,"assignCoordinates");var xr=8;function br(n){let o=2166136261;for(let s=0;s<n.length;s++)o^=n.charCodeAt(s),o=Math.imul(o,16777619);return o>>>0}e(br,"hashString");function Mr(n){let o=n>>>0;return()=>{o+=1831565813;let s=o;return s=Math.imul(s^s>>>15,s|1),s^=s+Math.imul(s^s>>>7,s|61),((s^s>>>14)>>>0)/4294967296}}e(Mr,"mulberry32");function Ir(n,o){let s=[...n],i=Mr(o);for(let c=s.length-1;c>0;c--){let a=Math.floor(i()*(c+1));[s[c],s[a]]=[s[a],s[c]]}return s}e(Ir,"deterministicShuffle");function Sr(n,o){let s=0;for(let[i,c]of n.entries())s+=Math.abs(i-(o.get(c)??i));return s}e(Sr,"sourceDistance");function mo(n,o){let s=new Map;for(let[c,a]of n.entries())s.set(a,c);let i=0;for(let{a:c,b:a,weight:l}of o){let m=s.get(c),f=s.get(a);if(m==null||f==null)continue;i+=l*Math.abs(m-f)}return i}e(mo,"laneArrangementCost");function Cr(n){let o=En(n);if(o.length<2)return[];let s=new Map(o.map((a,l)=>[a,l])),i=ve(n),c=new Map;for(let a of n.layout.edges??[]){if(a.isLayoutOnly)continue;let l=typeof a.start==="string"?a.start:void 0,m=typeof a.end==="string"?a.end:void 0;if(!l||!m||!n.nodeById.has(l)||!n.nodeById.has(m))continue;let f=i(l),g=i(m);if(!f||!g||f===g)continue;let y=s.get(f),I=s.get(g);if(y==null||I==null)continue;let[E,b]=y<=I?[f,g]:[g,f],x=`${E}\x00${b}`,d=c.get(x);if(d)d.weight++;else c.set(x,{a:E,b,weight:1})}return[...c.values()]}e(Cr,"buildWeightedLaneEdges");function yo(n,o,s){let i=[...n],c=mo(i,o),a=!0,l=0,m=Math.max(1,i.length);while(a&&l<m){a=!1,l++;for(let f=0;f+1<i.length;f++){[i[f],i[f+1]]=[i[f+1],i[f]];let g=mo(i,o);if(g<c)c=g,a=!0;else[i[f],i[f+1]]=[i[f+1],i[f]]}}return{order:i,cost:c,sourceDistance:Sr(i,s)}}e(yo,"greedySwitch");function vr(n,o){if(n.cost!==o.cost)return n.cost<o.cost;return n.sourceDistance<o.sourceDistance}e(vr,"isBetterCandidate");function Lr(n,o,s){let i=[...o].sort((c,a)=>c.a===a.a?c.b.localeCompare(a.b):c.a.localeCompare(a.a)).map(({a:c,b:a,weight:l})=>`${c}:${a}:${l}`).join("|");return br(`${n.join("|")}#${i}#${s}`)}e(Lr,"seedForRestart");function Er(n,o={}){let s=En(n);if(s.length<2)return s;let i=Cr(n);if(i.length===0)return s;let c=new Map(s.map((m,f)=>[m,f])),a=yo(s,i,c),l=Math.max(0,o.restarts??xr);for(let m=0;m<l;m++){let f=Lr(s,i,m),g=Ir(s,f),y=yo(g,i,c);if(vr(y,a))a=y}return a.order}e(Er,"optimizeTopLaneOrder");function Tr(n,o){let s=o?.ignoreCrossLaneEdges??!0,i=o?.optimizeRanksByCrossings??!0,c=Oe(n),a=o?.automaticLaneOrdering?Er(c,{restarts:xr}):void 0,l=Us(c),m=l.acyclic,f=s?ur(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:o?.direction}):fr(m,{compactSingleInput:o?.compactSingleInput??In.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:i}),{layering:g,graphWithDummies:y}=hr(f,m),I=mr(g,y,{laneOrder:a}),E=yr(I,y,{layerGap:o?.layerGap,nodeGap:o?.nodeGap,direction:o?.direction,laneOrder:a});return{acyclic:m,reversed:l.reversed,layering:g,ordered:I,coordinates:E}}e(Tr,"sugiyamaLayout");var bt=Qr.EPSILON,ti=8,Pe=15,Ge=15,fn=25,me=20,Dn=10;function xo(n,o,s){let i=n.x??0,c=n.y??0,a=o.x-i,l=o.y-c,m=Math.abs(a),f=Math.abs(l);if(m<bt&&f<bt)return s;let g=3;if(f>bt&&f*g>=m)return l>0?"bottom":"top";if(m>bt)return a>0?"right":"left";return s}e(xo,"chooseOrthogonalSide");function bo(n,o){return Math.abs(n.to-o.from)<bt||Math.abs(n.to-o.to)<bt?n.to:n.from}e(bo,"sharedLineEndpointCoord");function Fe(n,o){return n.orient==="vertical"?{x:n.coord,y:o}:{x:o,y:n.coord}}e(Fe,"pointOnLine");function wr(n,o){let s=n.nodes??[],i=n.edges??[],c=[];for(let p of i){if(p.isLayoutOnly)continue;c.push({...p,__originalEdge:p})}let a=new Map,l=new Map,m=[],f=o==="LR";for(let p of s)a.set(p.id,p);let g=s.filter((p)=>p.isGroup&&!p.parentId);for(let p of g){let S={id:p.id},R=e((O)=>{l.set(O.id,S),s.filter((P)=>P.parentId===O.id).forEach(R)},"assignLane");R(p)}let y=s.filter((p)=>!p.isGroup&&!p.isEdgeLabel).map((p)=>{let S=p.width??10,R=p.height??10,O=p.x??0,P=p.y??0,G=ti;return{nodeId:p.id,minX:O-S/2-G,maxX:O+S/2+G,minY:P-R/2-G,maxY:P+R/2+G,visualXHalfExtent:f?R/2+G:S/2+G}}),I=e((p,S,R,O)=>{let P=m.find((G)=>G.orientation===p&&Math.abs(G.coord-S)<1);if(!P)P={id:`pipe-${p}-${S.toFixed(0)}`,orientation:p,coord:S,spanMin:R,spanMax:O,tracks:[]},m.push(P);return P.spanMin=Math.min(P.spanMin,R),P.spanMax=Math.max(P.spanMax,O),P},"getOrAddPipe"),E=e((p,S)=>{let R=p.width??10,O=p.height??10,P=p.x??0,G=p.y??0;switch(S){case"top":return{x:P,y:G-O/2};case"bottom":return{x:P,y:G+O/2};case"left":return{x:P-R/2,y:G};case"right":return{x:P+R/2,y:G}}},"portForSide"),b=e((p,S,R)=>E(p,xo(p,S,R?"bottom":"top")),"getOrthogonalPort"),x=[],d=[],M=new Set,A=1000,v=e((p,S,R)=>{if(x.length===0)return 0;let O=Math.abs(S.y-R.y)<bt,P=Math.abs(S.x-R.x)<bt;if(!O&&!P)return 0;let G=0;if(O){let nt=S.y,it=Math.min(S.x,R.x)-bt,tt=Math.max(S.x,R.x)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="vertical")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=A}}else if(P){let nt=S.x,it=Math.min(S.y,R.y)-bt,tt=Math.max(S.y,R.y)+bt;if(tt<=it)return 0;for(let q of x){if(q.edgeIndex===p||q.orientation!=="horizontal")continue;if(q.pipe.coord<it||q.pipe.coord>tt)continue;if(q.from-bt<=nt&&q.to+bt>=nt)G+=A}}return G},"crossingPenalty"),N=c.map((p,S)=>{if(!p.start||!p.end)return{idx:S,crossLane:0,dx:0,dy:0};let R=a.get(p.start),O=a.get(p.end),P=l.get(p.start),G=l.get(p.end),nt=P&&G&&P.id!==G.id?1:0,it=R&&O?Math.abs((O.x??0)-(R.x??0)):0,tt=R&&O?Math.abs((O.y??0)-(R.y??0)):0;return{idx:S,crossLane:nt,dx:it,dy:tt}}).sort((p,S)=>{if(p.crossLane!==S.crossLane)return S.crossLane-p.crossLane;let R=p.dx+p.dy,O=S.dx+S.dy;if(Math.abs(R-O)>1)return R-O;return p.idx-S.idx}).map((p)=>p.idx),k=e((p,S,R,O)=>{let P=Math.min(p.x,S.x),G=Math.max(p.x,S.x),nt=Math.min(p.y,S.y),it=Math.max(p.y,S.y);return!!y.find((q)=>{if(R&&q.nodeId===R)return!1;if(O&&q.nodeId===O)return!1;if(Math.abs(p.x-S.x)>bt)return q.minY<p.y&&q.maxY>p.y&&q.maxX>P&&q.minX<G;else return q.minX<p.x&&q.maxX>p.x&&q.maxY>nt&&q.minY<it})},"isSegmentBlocked"),w=new Map,C=new Map;for(let p of c){if(!p.start||!p.end||p.start===p.end)continue;C.set(p.start,(C.get(p.start)??0)+1),C.set(p.end,(C.get(p.end)??0)+1)}let B=e((p,S)=>xo(p,S,"bottom"),"determineSide"),_=new Map;for(let[p,S]of c.entries()){if(!S.start||!S.end||S.start===S.end)continue;if(S.points&&S.points.length>0)continue;let R=a.get(S.start),O=a.get(S.end);if(!R||!O)continue;let P=(O.x??0)-(R.x??0),G=(O.y??0)-(R.y??0);_.set(p,{edgeIdx:p,srcId:S.start,dstId:S.end,srcSide:B(R,{x:O.x??0,y:O.y??0}),dstSide:B(O,{x:R.x??0,y:R.y??0}),absDx:Math.abs(P),absDy:Math.abs(G),dxSign:Math.sign(P),dySign:Math.sign(G)})}let Y=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.absDx===0?1/0:p.absDy/p.absDx;return p.absDy===0?1/0:p.absDx/p.absDy},"preferenceStrength"),F=e((p)=>{if(p.srcSide==="top"||p.srcSide==="bottom")return p.dxSign>=0?"right":"left";return p.dySign>=0?"bottom":"top"},"secondarySide"),V=new Map;for(let p of _.values()){let S=`${p.srcId}:${p.srcSide}`;if(!V.has(S))V.set(S,[]);V.get(S).push(p)}let z=new Map,D=e((p,S)=>`${p}:${S}`,"loadKey");for(let p of _.values())z.set(D(p.srcId,p.srcSide),(z.get(D(p.srcId,p.srcSide))??0)+1),z.set(D(p.dstId,p.dstSide),(z.get(D(p.dstId,p.dstSide))??0)+1);for(let p of V.values()){if(p.length<2)continue;p.sort((S,R)=>{let O=Y(S),P=Y(R);if(Math.abs(O-P)>0.000000001)return P-O;return S.edgeIdx-R.edgeIdx});for(let S=1;S<p.length;S++){let R=p[S],O=F(R),P=z.get(D(R.srcId,R.srcSide))??0,G=z.get(D(R.srcId,O))??0;if(G>=P)continue;z.set(D(R.srcId,R.srcSide),P-1),z.set(D(R.srcId,O),G+1),R.srcSide=O}}let W=e((p)=>{let S=p?.shape;return S==="question"||S==="diamond"},"isDiamondNode"),J=new Map;for(let p of _.values()){if(!J.has(p.dstId))J.set(p.dstId,new Set);J.get(p.dstId).add(p.dstSide)}for(let p of _.values()){if(!W(a.get(p.srcId)))continue;let S=J.get(p.srcId);if(!S?.has(p.srcSide))continue;let R=F(p);if(S.has(R)||(z.get(D(p.srcId,R))??0)>0)continue;let O=z.get(D(p.srcId,p.srcSide))??0;z.set(D(p.srcId,p.srcSide),Math.max(0,O-1)),z.set(D(p.srcId,R),1),p.srcSide=R}for(let p of _.values()){let{edgeIdx:S,srcId:R,dstId:O,srcSide:P,dstSide:G}=p,nt=a.get(R),it=a.get(O),tt=`${R}:${P}:src`,q=P==="top"||P==="bottom"?it.x??0:it.y??0;if(!w.has(tt))w.set(tt,[]);w.get(tt).push({edgeIdx:S,oppositeCoord:q});let ht=`${O}:${G}:dst`,pt=G==="top"||G==="bottom"?nt.x??0:nt.y??0;if(!w.has(ht))w.set(ht,[]);w.get(ht).push({edgeIdx:S,oppositeCoord:pt})}let st=new Map,xt=8;for(let[p,S]of w){if(S.length<2)continue;S.sort((_t,Zt)=>_t.oppositeCoord-Zt.oppositeCoord);let R=p.split(":"),O=R.slice(0,-2).join(":"),P=R[R.length-2],G=R[R.length-1],nt=a.get(O);if(!nt)continue;let tt=P==="left"||P==="right"?nt.height??10:nt.width??10,q=nt.shape,pt=q==="question"||q==="diamond"?tt*0.3:tt,ft=Math.min(20,Math.max(xt,pt/(S.length+1))),zt=-(ft*(S.length-1))/2;for(let[_t,Zt]of S.entries()){let de=zt+_t*ft,An=`${Zt.edgeIdx}:${G}`;st.set(An,de)}}let Tt=e((p)=>Boolean(c[p]?.labelNodeId),"edgeHasLabelNode"),$t=e((p,S)=>{if(!p)return!1;return(w.get(`${p}:${S}:src`)??[]).some(({edgeIdx:R})=>Tt(R))||(w.get(`${p}:${S}:dst`)??[]).some(({edgeIdx:R})=>Tt(R))},"faceHasLabelNode"),Ut=e((p,S,R)=>{if(S==="top"||S==="bottom")return{x:p.x+R,y:p.y};else return{x:p.x,y:p.y+R}},"applyPortOffset"),lt=e((p,S,R)=>{let O=_.get(p),P={x:R.x??0,y:R.y??0},G={x:S.x??0,y:S.y??0},nt=O?.srcSide??B(S,P),it=O?.dstSide??B(R,G),tt=O?E(S,O.srcSide):b(S,P,!0),q=O?E(R,O.dstSide):b(R,G,!1),ht=st.get(`${p}:src`),pt=st.get(`${p}:dst`);if(ht!==void 0)tt=Ut(tt,nt,ht);if(pt!==void 0)q=Ut(q,it,pt);return{pSrcPort:tt,pDstPort:q,srcSide:nt,dstSide:it}},"portsForEdge");for(let p of N){let S=c[p];if(d[p]=[],!S.start||!S.end)continue;if(S.points&&S.points.length>0)continue;if(S.start===S.end)continue;let R=a.get(S.start),O=a.get(S.end);if(!R||!O)continue;let{pSrcPort:P,pDstPort:G,srcSide:nt,dstSide:it}=lt(p,R,O),tt={...P},q={...G},ht=nt==="top"||nt==="bottom",pt=it==="top"||it==="bottom";if(ht){let K=P.y>(R.y??0);tt.y=K?P.y+me:P.y-me}else{let K=P.x>(R.x??0);tt.x=K?P.x+me:P.x-me}if(pt){let K=G.y>(O.y??0);q.y=K?G.y+me:G.y-me}else{let K=G.x>(O.x??0);q.x=K?G.x+me:G.x-me}let gt=e((K,Z)=>{for(let rt of y){if(Z.includes(rt.nodeId))continue;if(K.x>rt.minX&&K.x<rt.maxX&&K.y>rt.minY&&K.y<rt.maxY)return{inside:!0,obstacle:rt}}return{inside:!1}},"isPointInObstacle"),ft=e((K,Z,rt,It,Pt)=>{if(Pt){let Vt=K.y>(Z.y??0);return{x:(rt.x??0)>=K.x?It.maxX+Pe:It.minX-Pe,y:Vt?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:Vt}}let At=K.x>(Z.x??0),Ht=(rt.y??0)>=K.y;return{x:At?It.maxX+Pe:It.minX-Pe,y:Ht?It.maxY+Ge:It.minY-Ge,leavesPositiveSide:At}},"obstacleDetour"),wt=[],zt=[S.start,S.end],_t=gt(tt,zt);if(_t.inside&&_t.obstacle){let K=_t.obstacle;if(ht){let Z=ft(P,R,O,K,!0);tt.x=Z.x,tt.y=Z.y;let rt=Z.leavesPositiveSide?Math.min(K.minY-2,P.y+me):Math.max(K.maxY+2,P.y-me);wt=[{x:P.x,y:rt},{x:Z.x,y:rt},{x:Z.x,y:Z.y}]}else{let Z=ft(P,R,O,K,!1),rt=Z.leavesPositiveSide?Math.min(K.minX-2,P.x+me):Math.max(K.maxX+2,P.x-me);tt.x=Z.x,tt.y=Z.y,wt=[{x:rt,y:P.y},{x:rt,y:Z.y},{x:Z.x,y:Z.y}]}}let Zt=[],de=gt(q,zt);if(de.inside&&de.obstacle){let K=de.obstacle;if(pt){let Z=ft(G,O,R,K,!0);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:G.x,y:Z.y}]}else{let Z=ft(G,O,R,K,!1);q.x=Z.x,q.y=Z.y,Zt=[{x:Z.x,y:Z.y},{x:Z.x,y:G.y}]}}if(wt.length===0&&Zt.length===0){let K=Pe,Z=Math.abs(tt.x-q.x)<K,rt=Math.abs(tt.y-q.y)<K,It=st.get(`${p}:src`)!==void 0||st.get(`${p}:dst`)!==void 0,Pt=(w.get(`${S.start??""}:${nt}:src`)?.length??0)+(w.get(`${S.start??""}:${nt}:dst`)?.length??0),At=(w.get(`${S.end??""}:${it}:src`)?.length??0)+(w.get(`${S.end??""}:${it}:dst`)?.length??0),Ht=Pt>1||At>1,Vt=C.get(S.start??"")??0,Ct=C.get(S.end??"")??0,ee=Pt>1&&$t(S.start,nt)||At>1&&$t(S.end,it),pe=Pt<=1||Vt<=2,Wt=At<=1||Ct<=2;if((Z||rt)&&!It&&(!Ht||Ht&&!ee&&pe&&Wt)){if(!k(P,G,S.start,S.end)){S.points=[{...P},{...tt},{...q},{...G}],M.add(p);let Nt=rt?"horizontal":"vertical",oe=rt?P.y:P.x,Ot=rt?Math.min(P.x,G.x):Math.min(P.y,G.y),Bt=rt?Math.max(P.x,G.x):Math.max(P.y,G.y),ae={id:`fast-path-${Nt}-${oe.toFixed(0)}-${p}`,orientation:Nt,coord:oe,spanMin:Ot,spanMax:Bt,tracks:[]};x.push({edgeIndex:p,segmentIndex:0,orientation:Nt,pipe:ae,trackIndex:0,from:Ot,to:Bt});continue}}}let An=I("vertical",tt.x,tt.y,tt.y);tt.x=An.coord;let Nr=I("vertical",q.x,q.y,q.y);q.x=Nr.coord;let Ee=Math.min(tt.x,q.x)-50,Te=Math.max(tt.x,q.x)+50,De=Math.min(tt.y,q.y)-50,Xe=Math.max(tt.y,q.y)+50;for(let K of y){let Z=Math.min(tt.x,q.x),rt=Math.max(tt.x,q.x),It=Math.min(tt.y,q.y),Pt=Math.max(tt.y,q.y);if(K.minX<rt&&K.maxX>Z&&K.minY<Pt&&K.maxY>It)Ee=Math.min(Ee,K.minX-fn),Te=Math.max(Te,K.maxX+fn),De=Math.min(De,K.minY-fn),Xe=Math.max(Xe,K.maxY+fn)}for(let K of y){if(K.maxX<Ee||K.minX>Te||K.maxY<De||K.minY>Xe)continue;let Z=Pe;I("horizontal",K.minY-Z,Ee,Te),I("horizontal",K.maxY+Z,Ee,Te);let rt=Ge;I("vertical",K.minX-rt,De,Xe),I("vertical",K.maxX+rt,De,Xe)}I("horizontal",tt.y,Ee,Te),I("horizontal",q.y,Ee,Te);let Or=m.filter((K)=>K.orientation==="horizontal"&&K.coord>=De&&K.coord<=Xe),Br=m.filter((K)=>K.orientation==="vertical"&&K.coord>=Ee&&K.coord<=Te),Ke=e((K,Z)=>`${K.toFixed(1)},${Z.toFixed(1)}`,"getKey"),qe=Ke(tt.x,tt.y),Xo=Ke(q.x,q.y),Je=new Map,Nn=new Map,On=new Map,Ze=new Set,Be=[];Je.set(qe,0),On.set(qe,"n"),Be.push({key:qe,f:Math.hypot(q.x-tt.x,q.y-tt.y),pt:tt}),Ze.add(qe);let Qt=[],we=e((K,Z)=>k(K,Z,S.start,S.end),"checkSegmentBlocked"),Bn={x:q.x,y:tt.y},Pr=we(tt,Bn),Fr=we(Bn,q),_r=Pr||Fr,Pn={x:tt.x,y:q.y},Hr=we(tt,Pn),Xr=we(Pn,q),Yr=Hr||Xr;if(!_r)if(Math.abs(tt.y-q.y)<bt||Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Bn,q];else if(!Yr)if(Math.abs(tt.x-q.x)<bt)Qt=[tt,q];else Qt=[tt,Pn,q];if(Qt.length===0)while(Be.length>0){Be.sort((Ct,ee)=>Ct.f-ee.f);let K=Be.shift();if(Ze.delete(K.key),K.key===Xo){let Ct=Xo,ee=q;Qt=[ee];while(Nn.has(Ct)){let pe=Nn.get(Ct);Qt.unshift(pe),ee=pe,Ct=Ke(pe.x,pe.y)}break}let Z=K.pt.x,rt=K.pt.y,It=Br.sort((Ct,ee)=>Ct.coord-ee.coord),Pt=It.findIndex((Ct)=>Math.abs(Ct.coord-Z)<1),At=Or.sort((Ct,ee)=>Ct.coord-ee.coord),Ht=At.findIndex((Ct)=>Math.abs(Ct.coord-rt)<1),Vt=[];if(Pt>0)Vt.push({x:It[Pt-1].coord,y:rt});if(Pt>=0&&Pt<It.length-1)Vt.push({x:It[Pt+1].coord,y:rt});if(Ht>0)Vt.push({x:Z,y:At[Ht-1].coord});if(Ht>=0&&Ht<At.length-1)Vt.push({x:Z,y:At[Ht+1].coord});for(let Ct of Vt){let ee=Math.min(Z,Ct.x),pe=Math.max(Z,Ct.x),Wt=Math.min(rt,Ct.y),ne=Math.max(rt,Ct.y);if(y.some((ue)=>{if(ue.nodeId===S.start||ue.nodeId===S.end)return!1;if(ee!==pe)return ue.minY<rt&&ue.maxY>rt&&ue.maxX>ee&&ue.minX<pe;else return ue.minX<Z&&ue.maxX>Z&&ue.maxY>Wt&&ue.minY<ne}))continue;let Nt=Ke(Ct.x,Ct.y),oe=Math.abs(Ct.x-Z)+Math.abs(Ct.y-rt),Ot=v(p,K.pt,Ct),Bt=0,ae=q.x-tt.x,Ye=q.y-tt.y,tn=Ct.x-Z,Fn=Ct.y-rt;if(Ye>10&&Fn<-5||Ye<-10&&Fn>5)Bt=Math.abs(Fn)*100;if(ae>10&&tn<-5||ae<-10&&tn>5)Bt+=Math.abs(tn)*50;let Yo=0,Go=On.get(K.key)??"n",$o=Math.abs(tn)>bt?"h":"v";if(Go!=="n"&&Go!==$o)Yo=50;let Gr=oe+Ot+Bt+Yo,en=(Je.get(K.key)??1/0)+Gr,zo=Math.abs(q.x-Ct.x)+Math.abs(q.y-Ct.y);if(en<(Je.get(Nt)??1/0))if(Nn.set(Nt,K.pt),Je.set(Nt,en),On.set(Nt,$o),!Ze.has(Nt))Be.push({key:Nt,f:en+zo,pt:Ct}),Ze.add(Nt);else{let ue=Be.findIndex(($r)=>$r.key===Nt);if(ue!==-1)Be[ue].f=en+zo}}}if(Qt.length===0)Qt=[tt,{x:tt.x,y:q.y},q];if(Qt.length>4){let K=Qt[0],Z=Qt[Qt.length-1],rt=Math.min(K.x,Z.x),It=Math.max(K.x,Z.x),Pt=Math.min(K.y,Z.y),At=Math.max(K.y,Z.y);for(let Wt of Qt)rt=Math.min(rt,Wt.x),It=Math.max(It,Wt.x),Pt=Math.min(Pt,Wt.y),At=Math.max(At,Wt.y);let Ht=It>Math.max(K.x,Z.x),Vt=rt<Math.min(K.x,Z.x);if(f){let Wt=Ge;if(Ht){let ne=Math.max(K.x,Z.x),jt=Math.min(K.y,Z.y),Nt=Math.max(K.y,Z.y),oe=y.filter((Ot)=>Ot.minX<ne&&Ot.maxX>ne&&Ot.minY<Nt&&Ot.maxY>jt);if(oe.length>0){let Ot=Math.max(K.x,Z.x);for(let Bt of oe){let ae=(Bt.minX+Bt.maxX)/2;if(Bt.visualXHalfExtent===void 0||isNaN(Bt.visualXHalfExtent))continue;let Ye=ae+Bt.visualXHalfExtent+Wt;Ot=Math.max(Ot,Ye)}if(!isNaN(Ot))It=Ot}}if(Vt){let ne=y.filter((jt)=>jt.minX<Math.min(K.x,Z.x)+Wt&&jt.minY<Math.max(K.y,Z.y)&&jt.maxY>Math.min(K.y,Z.y));if(ne.length>0){let jt=Math.min(K.x,Z.x);for(let Nt of ne){let Ot=(Nt.minX+Nt.maxX)/2-Nt.visualXHalfExtent-Wt;jt=Math.min(jt,Ot)}rt=jt}}}let Ct=e((Wt)=>{let ne=Z.y>K.y,jt=y.filter((Ot)=>{let Bt=Math.min(K.x,Z.x)<Ot.maxX&&Math.max(K.x,Z.x)>Ot.minX,ae=Math.min(K.y,Z.y)<Ot.maxY&&Math.max(K.y,Z.y)>Ot.minY;return Bt&&ae}),Nt=jt;if(f&&jt.length>0){let Ot=jt.filter((Bt)=>Bt.minX<Wt&&Bt.maxX>Wt);if(Ot.length>0)Nt=Ot}if(Nt.length===0)return Z.y;let oe=Pe;if(ne){let Bt=Math.max(...Nt.map((ae)=>ae.maxY))+oe;if(Bt<Z.y-bt)return Bt}else{let Bt=Math.min(...Nt.map((ae)=>ae.minY))-oe;if(Bt>Z.y+bt)return Bt}return Z.y},"findBestReturnY"),ee=e((Wt)=>{let ne=Ct(Wt),jt={x:Wt,y:K.y},Nt={x:Wt,y:ne},oe={x:Z.x,y:ne},Ot=we(K,jt),Bt=we(jt,Nt),ae=we(Nt,oe),Ye=ne!==Z.y?we(oe,Z):!1;if(!Ot&&!Bt&&!ae&&!Ye){if(Math.abs(ne-Z.y)<bt)return[K,jt,Nt,Z];return[K,jt,Nt,oe,Z]}return null},"trySimplifyWithDetourX"),pe=Ht&&!Vt?ee(It):Vt&&!Ht?ee(rt):null;if(pe)Qt=pe}let te=[P,...wt,...Qt,...Zt.reverse(),G];if(te.length>=3){let K=te[te.length-1],Z=te[te.length-2],rt=te[te.length-3],It=Math.abs(rt.y-Z.y)<bt&&Math.abs(Z.y-K.y)<bt,Pt=Math.abs(rt.x-Z.x)<bt&&Math.abs(Z.x-K.x)<bt;if(It){let At=Math.sign(Z.x-rt.x),Ht=Math.sign(K.x-rt.x);if(At!==0&&At===Ht&&Math.abs(Z.x-rt.x)>Math.abs(K.x-rt.x))te.splice(-2,1)}else if(Pt){let At=Math.sign(Z.y-rt.y),Ht=Math.sign(K.y-rt.y);if(At!==0&&At===Ht&&Math.abs(Z.y-rt.y)>Math.abs(K.y-rt.y))te.splice(-2,1)}}let Me=[te[0]];for(let K=1;K<te.length-1;K++){if(K===1){Me.push(te[K]);continue}let Z=Me[Me.length-1],rt=te[K],It=te[K+1];if(Math.abs(Z.y-rt.y)<bt&&Math.abs(rt.y-It.y)<bt){let Pt=rt.x>Z.x,At=It.x>rt.x;if(Pt!==At){Me.push(rt);continue}continue}if(Math.abs(Z.x-rt.x)<bt&&Math.abs(rt.x-It.x)<bt){let Pt=rt.y>Z.y,At=It.y>rt.y;if(Pt!==At){Me.push(rt);continue}continue}Me.push(rt)}Me.push(te[te.length-1]);for(let K=0;K<Me.length-1;K++){let Z=Me[K],rt=Me[K+1],It=Math.abs(Z.x-rt.x)<bt?"vertical":"horizontal",Pt=It==="vertical"?Z.x:Z.y,At=It==="vertical"?Math.min(Z.y,rt.y):Math.min(Z.x,rt.x),Ht=It==="vertical"?Math.max(Z.y,rt.y):Math.max(Z.x,rt.x),Vt=I(It,Pt,At,Ht),Ct={edgeIndex:p,segmentIndex:K,orientation:It,pipe:Vt,trackIndex:0,from:At,to:Ht};if(x.push(Ct),d[p].push(x.length-1),!Vt.tracks[0])Vt.tracks[0]={index:0,coord:Vt.coord,segments:[]};Vt.tracks[0].segments.push({edgeIndex:p,segmentIndex:K,from:At,to:Ht})}}let ot=e((p,S)=>p.from<S.to&&S.from<p.to,"segmentsOverlap"),dt=e((p,S,R,O)=>{let P=!O.segments.some((nt)=>(nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex)&&ot(nt,p)),G=!R.segments.some((nt)=>(nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex)&&ot(nt,S));if(P&&G)return p.trackIndex=O.index,S.trackIndex=R.index,R.segments=[...R.segments.filter((nt)=>nt.edgeIndex!==p.edgeIndex||nt.segmentIndex!==p.segmentIndex),{edgeIndex:S.edgeIndex,segmentIndex:S.segmentIndex,from:S.from,to:S.to}],O.segments=[...O.segments.filter((nt)=>nt.edgeIndex!==S.edgeIndex||nt.segmentIndex!==S.segmentIndex),{edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to}],!0;return!1},"trySwapSegmentsAcrossTracks"),Mt=e((p)=>{let S=p.tracks.length;return p.tracks[S]={index:S,coord:p.coord,segments:[]},S},"createNewTrack"),Lt=e((p,S)=>{let R=p.pipe.tracks[p.trackIndex];R.segments=R.segments.filter((P)=>P.edgeIndex!==p.edgeIndex||P.segmentIndex!==p.segmentIndex),p.trackIndex=S,p.pipe.tracks[S].segments.push({edgeIndex:p.edgeIndex,segmentIndex:p.segmentIndex,from:p.from,to:p.to})},"moveSegmentToTrack"),Rt=e((p,S)=>{let R=d[p.edgeIndex];for(let O of R){let P=x[O];if(P.pipe===p.pipe)Lt(P,S)}},"moveSegmentChainToTrack"),kt=e((p)=>{let S=d[p.edgeIndex],R=S.indexOf(x.indexOf(p)),O=[];if(R>0)O.push(x[S[R-1]]);if(R<S.length-1)O.push(x[S[R+1]]);return O},"getAdjacentSegmentsAlongEdge"),re=e((p,S)=>{if(p.orientation===S.orientation)return!1;let R=p.orientation==="horizontal"?p:S,O=p.orientation==="horizontal"?S:p;return O.pipe.coord>R.from&&O.pipe.coord<R.to&&R.pipe.coord>O.from&&R.pipe.coord<O.to},"haveAnyCrossing"),ie=e((p,S)=>{for(let R of p.tracks)if(!R.segments.some((P)=>(P.edgeIndex!==S.edgeIndex||P.segmentIndex!==S.segmentIndex)&&ot(P,S)))return R.index;return-1},"findAvailableTrack"),ce=e((p,S)=>{if(p.trackIndex===S.trackIndex)return ot(p,S);let R=kt(p),O=kt(S);return R.some((P)=>O.some((G)=>re(P,G)))},"segmentsConflict"),ge=e((p,S,R)=>{if(dt(p,S,p.pipe.tracks[p.trackIndex],S.pipe.tracks[S.trackIndex]))return;let O=ie(p.pipe,S);R(S,O!==-1?O:Mt(p.pipe))},"resolveTrackConflict"),_e=e((p)=>{let S=0;for(let R=0;R<p.length;R++)for(let O=R+1;O<p.length;O++){let P=p[R],G=p[O];if(P.pipe!==G.pipe)continue;if(ce(P,G))S++,ge(P,G,Rt)}return S},"resolveHandleConflicts"),Le=new Map,He=e((p)=>{if(Le.has(p))return Le.get(p);let S=d[p];if(S.length===0){let it={dest:0,deviation:0,base:0,delta:0};return Le.set(p,it),it}let O=x[S[0]].pipe.coord,P=O;for(let it=1;it<S.length;it++){let tt=x[S[it]];if(tt.orientation==="horizontal"){let{from:q,to:ht}=tt;P=Math.abs(q-O)>Math.abs(ht-O)?q:ht;break}}let G=Math.abs(P-O),nt={dest:P,deviation:G,base:O,delta:P-O};return Le.set(p,nt),nt},"getDestInfo"),Tn=e(()=>{let p=0,S=new Map;for(let[O,P]of c.entries()){if(d[O].length===0)continue;if(!P.start)continue;if(!S.has(P.start))S.set(P.start,[]);S.get(P.start).push(O)}let R=e((O)=>{let P=c[O];if(!P.start||!P.end)return 0;let G=a.get(P.start),nt=a.get(P.end);if(!G||!nt)return 0;let it=(nt.x??0)-(G.x??0),tt=(nt.y??0)-(G.y??0);return Math.abs(it)+Math.abs(tt)},"getEdgeDistance");for(let O of S.values()){O.sort((G,nt)=>{let it=He(G),tt=He(nt);if(Math.abs(it.deviation-tt.deviation)>1)return it.deviation-tt.deviation;if(Math.abs(it.dest-tt.dest)>1)return it.dest-tt.dest;let q=R(G),ht=R(nt);if(Math.abs(q-ht)>1)return ht-q;let pt=d[G].length,gt=d[nt].length;if(pt!==gt)return pt-gt;if(pt===1){let ft=d[G][0],wt=d[nt][0];if(x[ft]&&x[wt]){let zt=x[ft],_t=x[wt],Zt=Math.abs(zt.to-zt.from),de=Math.abs(_t.to-_t.from);if(Math.abs(Zt-de)>1)return Zt-de}}return 0});let P=O.map((G)=>x[d[G][0]]);p+=_e(P)}return p},"fixSourceHandleCrossings"),wn=e(()=>{let p=0,S=new Map;for(let[R,O]of c.entries()){if(d[R].length===0)continue;if(!O.end)continue;if(!S.has(O.end))S.set(O.end,[]);S.get(O.end).push(R)}for(let R of S.values()){R.sort((P,G)=>{let nt=e((q)=>{let ht=d[q];if(ht.length<2)return 0;let pt=x[ht[ht.length-2]];return Math.abs(pt.to-pt.from)},"getDist"),it=nt(P),tt=nt(G);if(Math.abs(it-tt)>0.1)return it-tt;return P-G});let O=R.map((P)=>x[d[P][d[P].length-1]]);p+=_e(O)}return p},"fixTargetHandleCrossings"),Rn=e(()=>{let p=0;for(let S of m){let R=[];for(let O of S.tracks)for(let P of O.segments){let G=d[P.edgeIndex].find((nt)=>x[nt].segmentIndex===P.segmentIndex);if(G!==void 0)R.push(x[G])}R.sort((O,P)=>O.edgeIndex-P.edgeIndex||O.segmentIndex-P.segmentIndex);for(let O=0;O<R.length;O++)for(let P=O+1;P<R.length;P++){let G=R[O],nt=R[P];if(ce(G,nt))p++,ge(G,nt,Lt)}}return p},"fixPipeCrossings"),H=0,j=10;while(H<j){let p=0;if(p+=Tn(),p+=wn(),p+=Rn(),p===0)break;H++}let U=new Map;for(let p of m){let S=[];p.tracks.forEach((O)=>{O.segments.forEach((P)=>{S.push({edgeIndex:P.edgeIndex,segmentIndex:P.segmentIndex,trackIndex:O.index,from:P.from,to:P.to})})}),S.sort((O,P)=>O.from-P.from);let R=[];if(S.length>0){let O=[S[0]],P=S[0].to;for(let G=1;G<S.length;G++){let nt=S[G];if(nt.from<P)O.push(nt),P=Math.max(P,nt.to);else R.push(O),O=[nt],P=nt.to}R.push(O)}for(let O of R){let P=new Set;O.forEach((ft)=>P.add(ft.trackIndex));let G=new Map;O.forEach((ft)=>{let wt=He(ft.edgeIndex);G.set(ft.trackIndex,(G.get(ft.trackIndex)??0)+wt.delta)});let nt=[...P].filter((ft)=>(G.get(ft)??0)<-1),it=[...P].filter((ft)=>(G.get(ft)??0)>1),tt=[...P].filter((ft)=>Math.abs(G.get(ft)??0)<=1);nt.sort((ft,wt)=>(G.get(wt)??0)-(G.get(ft)??0)),it.sort((ft,wt)=>(G.get(ft)??0)-(G.get(wt)??0));let q=e((ft,wt)=>{O.filter((zt)=>zt.trackIndex===ft).forEach((zt)=>{let _t=M.has(zt.edgeIndex)?p.coord:wt;U.set(`${zt.edgeIndex}-${zt.segmentIndex}`,_t)})},"assignCoord"),ht=0;for(let ft of nt)ht++,q(ft,p.coord-ht*Dn);if(tt.length===0&&P.size>0){let ft=[...P].sort((_t,Zt)=>Math.abs(G.get(_t)??0)-Math.abs(G.get(Zt)??0))[0],wt=nt.indexOf(ft);if(wt!==-1)nt.splice(wt,1);let zt=it.indexOf(ft);if(zt!==-1)it.splice(zt,1);tt.push(ft)}let pt=0;for(let ft of tt){if(pt===0)q(ft,p.coord);else{let wt=pt%2===1?1:-1,zt=Math.ceil(pt/2);q(ft,p.coord+wt*zt*Dn*0.5)}pt++}let gt=0;for(let ft of it)gt++,q(ft,p.coord+gt*Dn)}}for(let[p,S]of c.entries()){let R=d[p]??[];if(R.length===0)continue;let O=[],P=a.get(S.start),G=a.get(S.end),{pSrcPort:nt,pDstPort:it}=lt(p,P,G),tt=R.map((pt)=>{let gt=x[pt],ft=U.get(`${gt.edgeIndex}-${gt.segmentIndex}`)??gt.pipe.coord;return{orient:gt.orientation,coord:ft,from:gt.from,to:gt.to}});O.push(nt);for(let pt=0;pt<tt.length;pt++){let gt=tt[pt],ft=O[O.length-1],wt=gt.orient==="vertical"?ft.y:ft.x,zt=gt.orient==="vertical"?ft.x:ft.y,_t=tt[pt+1],Zt=pt<tt.length-1;if(Math.abs(zt-gt.coord)>bt)O.push(Fe(gt,wt));if(Zt&&_t.orient===gt.orient){if(Math.abs(gt.coord-_t.coord)>bt){let de=gt.orient==="vertical"?(wt+_t.from)/2:bo(gt,_t);O.push(Fe(gt,de),Fe(_t,de))}else if(pt===0||pt===tt.length-2)O.push(Fe(gt,bo(gt,_t)))}else if(Zt)O.push(Fe(gt,_t.coord));else{let de=Math.abs(gt.from-wt)<Math.abs(gt.to-wt)?gt.to:gt.from;O.push(Fe(gt,de))}}let q=O[O.length-1];if(Math.abs(q.x-it.x)>bt||Math.abs(q.y-it.y)>bt)O.push(it);let ht=[];if(O.length>0)ht.push(O[0]);for(let pt=1;pt<O.length;pt++){let gt=O[pt],ft=ht[ht.length-1];if(Math.abs(gt.x-ft.x)>bt||Math.abs(gt.y-ft.y)>bt)ht.push(gt)}S.points=ht}for(let p of c){let S=p.__originalEdge;if(S&&p.points)S.points=p.points}n.edges=(n.edges??[]).filter((p)=>!p.isLayoutOnly);let et=e((p,S)=>{let R=S.x??0,O=S.y??0,P=S.width??0,G=S.height??0;if(P<=0||G<=0)return p;let nt=R-P/2,it=R+P/2,tt=O-G/2,q=O+G/2;if(p.x<nt||p.x>it||p.y<tt||p.y>q)return p;let ht=p.x-nt,pt=it-p.x,gt=p.y-tt,ft=q-p.y,wt=Math.min(ht,pt,gt,ft);if(wt===ht)return{x:nt,y:p.y};if(wt===pt)return{x:it,y:p.y};if(wt===gt)return{x:p.x,y:tt};return{x:p.x,y:q}},"nodeBoundaryClamp");for(let p of n.edges){let S=p.points;if(!S||S.length<2)continue;let{start:R,end:O}=p,P=R?a.get(R):void 0,G=O?a.get(O):void 0;if(P)S[0]=et(S[0],P);if(G)S[S.length-1]=et(S[S.length-1],G)}return n}e(wr,"routeEdgesOrthogonal");function Rr(n){return n.direction??"TB"}e(Rr,"getSwimlaneDirection");function Ar(n){let o=us(n),s=n.config.flowchart?.nodeSpacing??40,i=n.config.flowchart?.rankSpacing??100,c=n.config.swimlane?.ignoreCrossLaneEdges??!0,a=n.config.swimlane?.optimizeRanksByCrossings??!0,l=n.config.swimlane?.automaticLaneOrdering??!1,m=Rr(n),{ordered:f,coordinates:g}=Tr(o,{nodeGap:s,layerGap:i,ignoreCrossLaneEdges:c,optimizeRanksByCrossings:a,automaticLaneOrdering:l,direction:m});hs(o,f,g,{nodeGap:s,layerGap:i});for(let y of n.edges??[])delete y.points;wr(n,m);for(let y of n.edges??[])if(!y.curve||y.curve==="basis")y.curve="rounded";return Vs(n,m),zs(n),m}e(Ar,"runSwimlaneLayoutCore");async function ei(n,o){let s=o.select("g");Kt(s,n.markers,n.type,n.diagramId),on(),ln(),sn(),Dr(),ds(n);let i=gs(n);n.nodes=i.nodes,n.edges=i.edges;let{groups:c}=await Jo(s,n);Ar(n),await as(n,c)}e(ei,"render");export{ei as render};
@@ -0,0 +1,8 @@
1
+ import{e}from"./index-1r72hdzb.js";import"./index-6qmsnxwy.js";import"./index-qj8fxwsf.js";import{di,hi}from"./index-yw8h9vha.js";import"./index-nprm96xp.js";import"./index-g3pwnqeb.js";import"./index-s4j678gj.js";import"./index-3cy1bzwh.js";var r=e((t)=>`${di(t)}
2
+ .swimlane.cluster rect {
3
+ stroke: ${t.clusterBorder} !important;
4
+ }
5
+ [data-look="neo"].cluster rect {
6
+ filter: none;
7
+ }
8
+ `,"getStyles"),o=r,x=hi({defaultLayout:"swimlane",styles:o});export{x as diagram};
@@ -0,0 +1,120 @@
1
+ import{e,st,t,N,i,a,u,Ie,Dn,d,r,n,A,he}from"./index-1r72hdzb.js";import"./index-6qmsnxwy.js";import{De}from"./index-rh7nv68n.js";var dt=function(){var o=e(function(T,h,k,y){for(k=k||{},y=T.length;y--;k[T[y]]=h);return k},"o"),s=[6,11,13,14,15,17,19,20,23,24],c=[1,12],p=[1,13],l=[1,14],m=[1,15],g=[1,16],f=[1,19],_=[1,20],v={trace:e(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:e(function(h,k,y,b,S,x,L){var I=x.length-1;switch(S){case 1:return x[I-1];case 3:b.setDirection("LR");break;case 4:b.setDirection("TD");break;case 5:this.$=[];break;case 6:x[I-1].push(x[I]),this.$=x[I-1];break;case 7:case 8:this.$=x[I];break;case 9:case 10:this.$=[];break;case 11:b.getCommonDb().setDiagramTitle(x[I].substr(6)),this.$=x[I].substr(6);break;case 12:this.$=x[I].trim(),b.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=x[I].trim(),b.getCommonDb().setAccDescription(this.$);break;case 15:b.addSection(x[I].substr(8)),this.$=x[I].substr(8);break;case 18:b.addTask(x[I],0,""),this.$=x[I];break;case 19:b.addEvent(x[I].substr(2)),this.$=x[I];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},o(s,[2,5],{5:6}),o(s,[2,2]),o(s,[2,3]),o(s,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:c,15:p,17:l,19:m,20:g,21:17,22:18,23:f,24:_},o(s,[2,10],{1:[2,1]}),o(s,[2,6]),{12:21,14:c,15:p,17:l,19:m,20:g,21:17,22:18,23:f,24:_},o(s,[2,8]),o(s,[2,9]),o(s,[2,11]),{16:[1,22]},{18:[1,23]},o(s,[2,14]),o(s,[2,15]),o(s,[2,16]),o(s,[2,17]),o(s,[2,18]),o(s,[2,19]),o(s,[2,7]),o(s,[2,12]),o(s,[2,13])],defaultActions:{},parseError:e(function(h,k){if(k.recoverable)this.trace(h);else{var y=Error(h);throw y.hash=k,y}},"parseError"),parse:e(function(h){var k=this,y=[0],b=[],S=[null],x=[],L=this.table,I="",B=0,K=0,U=0,Q=2,F=1,D=x.slice.call(arguments,1),C=Object.create(this.lexer),O={yy:{}};for(var Z in this.yy)if(Object.prototype.hasOwnProperty.call(this.yy,Z))O.yy[Z]=this.yy[Z];if(C.setInput(h,O.yy),O.yy.lexer=C,O.yy.parser=this,typeof C.yylloc>"u")C.yylloc={};var Y=C.yylloc;x.push(Y);var W=C.options&&C.options.ranges;if(typeof O.yy.parseError==="function")this.parseError=O.yy.parseError;else this.parseError=Object.getPrototypeOf(this).parseError;function H(X){y.length=y.length-2*X,S.length=S.length-X,x.length=x.length-X}e(H,"popStack");function R(){var X=b.pop()||C.lex()||F;if(typeof X!=="number"){if(X instanceof Array)b=X,X=b.pop();X=k.symbols_[X]||X}return X}e(R,"lex");var M,V,z,P,lt,rt,J={},nt,j,kt,it;while(!0){if(z=y[y.length-1],this.defaultActions[z])P=this.defaultActions[z];else{if(M===null||typeof M>"u")M=R();P=L[z]&&L[z][M]}if(typeof P>"u"||!P.length||!P[0]){var ht="";it=[];for(nt in L[z])if(this.terminals_[nt]&&nt>Q)it.push("'"+this.terminals_[nt]+"'");if(C.showPosition)ht="Parse error on line "+(B+1)+`:
2
+ `+C.showPosition()+`
3
+ Expecting `+it.join(", ")+", got '"+(this.terminals_[M]||M)+"'";else ht="Parse error on line "+(B+1)+": Unexpected "+(M==F?"end of input":"'"+(this.terminals_[M]||M)+"'");this.parseError(ht,{text:C.match,token:this.terminals_[M]||M,line:C.yylineno,loc:Y,expected:it})}if(P[0]instanceof Array&&P.length>1)throw Error("Parse Error: multiple actions possible at state: "+z+", token: "+M);switch(P[0]){case 1:if(y.push(M),S.push(C.yytext),x.push(C.yylloc),y.push(P[1]),M=null,!V){if(K=C.yyleng,I=C.yytext,B=C.yylineno,Y=C.yylloc,U>0)U--}else M=V,V=null;break;case 2:if(j=this.productions_[P[1]][1],J.$=S[S.length-j],J._$={first_line:x[x.length-(j||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(j||1)].first_column,last_column:x[x.length-1].last_column},W)J._$.range=[x[x.length-(j||1)].range[0],x[x.length-1].range[1]];if(rt=this.performAction.apply(J,[I,K,B,O.yy,P[1],S,x].concat(D)),typeof rt<"u")return rt;if(j)y=y.slice(0,-1*j*2),S=S.slice(0,-1*j),x=x.slice(0,-1*j);y.push(this.productions_[P[1]][0]),S.push(J.$),x.push(J._$),kt=L[y[y.length-2]][y[y.length-1]],y.push(kt);break;case 3:return!0}}return!0},"parse")},E=function(){var T={EOF:1,parseError:e(function(k,y){if(this.yy.parser)this.yy.parser.parseError(k,y);else throw Error(k)},"parseError"),setInput:e(function(h,k){if(this.yy=k||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges)this.yylloc.range=[0,0];return this.offset=0,this},"setInput"),input:e(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var k=h.match(/(?:\r\n?|\n).*/g);if(k)this.yylineno++,this.yylloc.last_line++;else this.yylloc.last_column++;if(this.options.ranges)this.yylloc.range[1]++;return this._input=this._input.slice(1),h},"input"),unput:e(function(h){var k=h.length,y=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var b=this.match.split(/(?:\r\n?|\n)/g);if(this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1)this.yylineno-=y.length-1;var S=this.yylloc.range;if(this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===b.length?this.yylloc.first_column:0)+b[b.length-y.length].length-y[0].length:this.yylloc.first_column-k},this.options.ranges)this.yylloc.range=[S[0],S[0]+this.yyleng-k];return this.yyleng=this.yytext.length,this},"unput"),more:e(function(){return this._more=!0,this},"more"),reject:e(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
+ `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:e(function(h){this.unput(this.match.slice(h))},"less"),pastInput:e(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:e(function(){var h=this.match;if(h.length<20)h+=this._input.substr(0,20-h.length);return(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:e(function(){var h=this.pastInput(),k=Array(h.length+1).join("-");return h+this.upcomingInput()+`
5
+ `+k+"^"},"showPosition"),test_match:e(function(h,k){var y,b,S;if(this.options.backtrack_lexer){if(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges)S.yylloc.range=this.yylloc.range.slice(0)}if(b=h[0].match(/(?:\r\n?|\n).*/g),b)this.yylineno+=b.length;if(this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:b?b[b.length-1].length-b[b.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+h[0].length},this.yytext+=h[0],this.match+=h[0],this.matches=h,this.yyleng=this.yytext.length,this.options.ranges)this.yylloc.range=[this.offset,this.offset+=this.yyleng];if(this._more=!1,this._backtrack=!1,this._input=this._input.slice(h[0].length),this.matched+=h[0],y=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input)this.done=!1;if(y)return y;else if(this._backtrack){for(var x in S)this[x]=S[x];return!1}return!1},"test_match"),next:e(function(){if(this.done)return this.EOF;if(!this._input)this.done=!0;var h,k,y,b;if(!this._more)this.yytext="",this.match="";var S=this._currentRules();for(var x=0;x<S.length;x++)if(y=this._input.match(this.rules[S[x]]),y&&(!k||y[0].length>k[0].length)){if(k=y,b=x,this.options.backtrack_lexer)if(h=this.test_match(y,S[x]),h!==!1)return h;else if(this._backtrack){k=!1;continue}else return!1;else if(!this.options.flex)break}if(k){if(h=this.test_match(k,S[b]),h!==!1)return h;return!1}if(this._input==="")return this.EOF;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
6
+ `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:e(function(){var k=this.next();if(k)return k;else return this.lex()},"lex"),begin:e(function(k){this.conditionStack.push(k)},"begin"),popState:e(function(){var k=this.conditionStack.length-1;if(k>0)return this.conditionStack.pop();else return this.conditionStack[0]},"popState"),_currentRules:e(function(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1])return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;else return this.conditions.INITIAL.rules},"_currentRules"),topState:e(function(k){if(k=this.conditionStack.length-1-Math.abs(k||0),k>=0)return this.conditionStack[k];else return"INITIAL"},"topState"),pushState:e(function(k){this.begin(k)},"pushState"),stateStackSize:e(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:e(function(k,y,b,S){var x=S;switch(b){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return T}();v.lexer=E;function w(){this.yy={}}return e(w,"Parser"),w.prototype=v,v.Parser=w,new w}();dt.parser=dt;var Ot=dt,St={};st(St,{addEvent:()=>Ct,addSection:()=>Ht,addTask:()=>At,addTaskOrg:()=>Rt,clear:()=>$t,default:()=>Gt,getCommonDb:()=>Tt,getDirection:()=>It,getSections:()=>Lt,getTasks:()=>Mt,setDirection:()=>Nt});var tt="",Et=0,pt="LR",gt=[],at=[],et=[],Tt=e(()=>Dn,"getCommonDb"),$t=e(function(){gt.length=0,at.length=0,tt="",et.length=0,pt="LR",d()},"clear"),Nt=e(function(o){pt=o},"setDirection"),It=e(function(){return pt},"getDirection"),Ht=e(function(o){tt=o,gt.push(o)},"addSection"),Lt=e(function(){return gt},"getSections"),Mt=e(function(){let o=xt(),s=100,c=0;while(!o&&c<s)o=xt(),c++;return at.push(...et),at},"getTasks"),At=e(function(o,s,c){let p={id:Et++,section:tt,type:tt,task:o,score:s?s:0,events:c?[c]:[]};et.push(p)},"addTask"),Ct=e(function(o){et.find((c)=>c.id===Et-1).events.push(o)},"addEvent"),Rt=e(function(o){let s={section:tt,type:tt,description:o,task:o,classes:[]};at.push(s)},"addTaskOrg"),xt=e(function(){let o=e(function(c){return et[c].processed},"compileTask"),s=!0;for(let[c,p]of et.entries())o(c),s=s&&p.processed;return s},"compileTasks"),Gt={clear:$t,getCommonDb:Tt,getDirection:It,setDirection:Nt,addSection:Ht,getSections:Lt,getTasks:Mt,addTask:At,addTaskOrg:Rt,addEvent:Ct},Wt=0,ot=e(function(o,s){let c=o.append("rect");if(c.attr("x",s.x),c.attr("y",s.y),c.attr("fill",s.fill),c.attr("stroke",s.stroke),c.attr("width",s.width),c.attr("height",s.height),c.attr("rx",s.rx),c.attr("ry",s.ry),s.class!==void 0)c.attr("class",s.class);return c},"drawRect"),Dt=e(function(o,s){let p=o.append("circle").attr("cx",s.cx).attr("cy",s.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),l=o.append("g");l.append("circle").attr("cx",s.cx-5).attr("cy",s.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),l.append("circle").attr("cx",s.cx+5).attr("cy",s.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function m(_){let v=De().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",v).attr("transform","translate("+s.cx+","+(s.cy+2)+")")}e(m,"smile");function g(_){let v=De().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",v).attr("transform","translate("+s.cx+","+(s.cy+7)+")")}e(g,"sad");function f(_){_.append("line").attr("class","mouth").attr("stroke",2).attr("x1",s.cx-5).attr("y1",s.cy+7).attr("x2",s.cx+5).attr("y2",s.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}if(e(f,"ambivalent"),s.score>3)m(l);else if(s.score<3)g(l);else f(l);return p},"drawFace"),Kt=e(function(o,s){let c=o.append("circle");if(c.attr("cx",s.cx),c.attr("cy",s.cy),c.attr("class","actor-"+s.pos),c.attr("fill",s.fill),c.attr("stroke",s.stroke),c.attr("r",s.r),c.class!==void 0)c.attr("class",c.class);if(s.title!==void 0)c.append("title").text(s.title);return c},"drawCircle"),Pt=e(function(o,s){let c=s.text.replace(/<br\s*\/?>/gi," "),p=o.append("text");if(p.attr("x",s.x),p.attr("y",s.y),p.attr("class","legend"),p.style("text-anchor",s.anchor),s.class!==void 0)p.attr("class",s.class);let l=p.append("tspan");return l.attr("x",s.x+s.textMargin*2),l.text(c),p},"drawText"),Ut=e(function(o,s){function c(l,m,g,f,_){return l+","+m+" "+(l+g)+","+m+" "+(l+g)+","+(m+f-_)+" "+(l+g-_*1.2)+","+(m+f)+" "+l+","+(m+f)}e(c,"genPoints");let p=o.append("polygon");p.attr("points",c(s.x,s.y,50,20,7)),p.attr("class","labelBox"),s.y=s.y+s.labelMargin,s.x=s.x+0.5*s.labelMargin,Pt(o,s)},"drawLabel"),Xt=e(function(o,s,c){let p=o.append("g"),l=ft();l.x=s.x,l.y=s.y,l.fill=s.fill,l.width=c.width,l.height=c.height,l.class="journey-section section-type-"+s.num,l.rx=3,l.ry=3,ot(p,l),Bt(c)(s.text,p,l.x,l.y,l.width,l.height,{class:"journey-section section-type-"+s.num},c,s.colour)},"drawSection"),ut=-1,Zt=e(function(o,s,c,p){let l=s.x+c.width/2,m=o.append("g");ut++;let g=450;m.append("line").attr("id",p+"-task"+ut).attr("x1",l).attr("y1",s.y).attr("x2",l).attr("y2",g).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Dt(m,{cx:l,cy:300+(5-s.score)*30,score:s.score});let f=ft();f.x=s.x,f.y=s.y,f.fill=s.fill,f.width=c.width,f.height=c.height,f.class="task task-type-"+s.num,f.rx=3,f.ry=3,ot(m,f),Bt(c)(s.task,m,f.x,f.y,f.width,f.height,{class:"task"},c,s.colour)},"drawTask"),jt=e(function(o,s){ot(o,{x:s.startx,y:s.starty,width:s.stopx-s.startx,height:s.stopy-s.starty,fill:s.fill,class:"rect"}).lower()},"drawBackgroundRect"),qt=e(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),ft=e(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Bt=function(){function o(l,m,g,f,_,v,E,w){let T=m.append("text").attr("x",g+_/2).attr("y",f+v/2+5).style("font-color",w).style("text-anchor","middle").text(l);p(T,E)}e(o,"byText");function s(l,m,g,f,_,v,E,w,T){let{taskFontSize:h,taskFontFamily:k}=w,y=l.split(/<br\s*\/?>/gi);for(let b=0;b<y.length;b++){let S=b*h-h*(y.length-1)/2,x=m.append("text").attr("x",g+_/2).attr("y",f).attr("fill",T).style("text-anchor","middle").style("font-size",h).style("font-family",k);x.append("tspan").attr("x",g+_/2).attr("dy",S).text(y[b]),x.attr("y",f+v/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),p(x,E)}}e(s,"byTspan");function c(l,m,g,f,_,v,E,w){let T=m.append("switch"),k=T.append("foreignObject").attr("x",g).attr("y",f).attr("width",_).attr("height",v).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");k.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(l),s(l,T,g,f,_,v,E,w),p(k,E)}e(c,"byFo");function p(l,m){for(let g in m)if(g in m)l.attr(g,m[g])}return e(p,"_setTextAttrs"),function(l){return l.textPlacement==="fo"?c:l.textPlacement==="old"?o:s}}(),Jt=e(function(o,s){Wt=0,ut=-1,o.append("defs").append("marker").attr("id",s+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics");function yt(o,s){o.each(function(){var c=n(this),p=c.text().split(/(\s+|<br>)/).reverse(),l,m=[],g=1.1,f=c.attr("y"),_=parseFloat(c.attr("dy")),v=c.text(null).append("tspan").attr("x",0).attr("y",f).attr("dy",_+"em");for(let E=0;E<p.length;E++)if(l=p[p.length-1-E],m.push(l),v.text(m.join(" ").trim()),v.node().getComputedTextLength()>s||l==="<br>"){if(m.pop(),v.text(m.join(" ").trim()),l==="<br>")m=[""];else m=[l];v=c.append("tspan").attr("x",0).attr("y",f).attr("dy",g+"em").text(l)}})}e(yt,"wrap");var Qt=e(function(o,s,c,p,l,m=!1){let{theme:g,look:f}=p,_=g?.includes("redux"),v=p?.themeVariables?.THEME_COLOR_LIMIT??12,E=c%v-1,w=o.append("g");s.section=E,w.attr("class",(s.class?s.class+" ":"")+"timeline-node "+("section-"+E));let T=w.append("g"),h=w.append("g"),y=h.append("text").text(s.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(yt,s.width).node().getBBox(),b=p.fontSize?.replace?p.fontSize.replace("px",""):p.fontSize;if(s.height=y.height+b*1.1*0.5+s.padding,s.height=Math.max(s.height,s.maxHeight),s.width=s.width+2*s.padding,h.attr("transform","translate("+s.width/2+", "+s.padding/2+")"),_)h.attr("transform",`translate(${s.width/2}, ${m?s.padding/2+3:s.padding})`);if(te(T,s,E,l,p),f==="neo"){if(w.attr("data-look","neo"),_){let S=g.includes("dark"),x=o.node()?.ownerSVGElement??o.node(),L=n(x),I=L.attr("id")??"",B=I?`${I}-drop-shadow`:"drop-shadow";if(L.select(`#${B}`).empty()){let K=L.select("defs");(K.empty()?L.append("defs"):K).append("filter").attr("id",B).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity",S?"0.2":"0.06").attr("flood-color",S?"#FFFFFF":"#000000")}}}return s},"drawNode"),Yt=e(function(o,s,c){let p=o.append("g"),m=p.append("text").text(s.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(yt,s.width).node().getBBox(),g=c.fontSize?.replace?c.fontSize.replace("px",""):c.fontSize;return p.remove(),m.height+g*1.1*0.5+s.padding},"getVirtualNodeHeight"),te=e(function(o,s,c,p,l){let{theme:m}=l,g=m?.includes("redux")?0:5,f=5,_=g>0?`M0 ${s.height-5} v${-s.height+10} q0,-${g},${g},-${g} h${s.width-10} q${g},0,${g},${g} v${s.height-5} H0 Z`:`M0 ${s.height-5} v${-(s.height-5)} h${s.width} v${s.height} H0 Z`;if(o.append("path").attr("id",p+"-node-"+Wt++).attr("class","node-bkg node-"+s.type).attr("d",_),!m?.includes("redux"))o.append("line").attr("class","node-line-"+c).attr("x1",0).attr("y1",s.height).attr("x2",s.width).attr("y2",s.height)},"defaultBkg"),G={drawRect:ot,drawCircle:Kt,drawSection:Xt,drawText:Pt,drawLabel:Ut,drawTask:Zt,drawBackgroundRect:jt,getTextObj:qt,getNoteRect:ft,initGraphics:Jt,drawNode:Qt,getVirtualNodeHeight:Yt},ee=e(function(o,s,c,p){let l=r(),{look:m,theme:g,themeVariables:f}=l,{useGradient:_,gradientStart:v,gradientStop:E}=f,w=l.timeline?.leftMargin??50;t.debug("timeline",p.db);let T=l.securityLevel,h;if(T==="sandbox")h=n("#i"+s);let y=(T==="sandbox"?n(h.nodes()[0].contentDocument.body):n("body")).select("#"+s);y.append("g");let b=p.db.getTasks(),S=p.db.getCommonDb().getDiagramTitle();t.debug("task",b),G.initGraphics(y,s);let x=p.db.getSections();t.debug("sections",x);let L=0,I=0,B=0,K=0,U=50+w,Q=50;K=50;let F=0,D=!0;x.forEach(function(W){let H={number:F,descr:W,section:F,width:150,padding:20,maxHeight:L},R=G.getVirtualNodeHeight(y,H,l);t.debug("sectionHeight before draw",R),L=Math.max(L,R+20)});let C=0,O=0;t.debug("tasks.length",b.length);for(let[W,H]of b.entries()){let R={number:W,descr:H,section:H.section,width:150,padding:20,maxHeight:I},M=G.getVirtualNodeHeight(y,R,l);t.debug("taskHeight before draw",M),I=Math.max(I,M+20),C=Math.max(C,H.events.length);let V=0;for(let z of H.events){let P={descr:z,section:H.section,number:H.section,width:150,padding:20,maxHeight:50};V+=G.getVirtualNodeHeight(y,P,l)}if(H.events.length>0)V+=(H.events.length-1)*10;O=Math.max(O,V)}if(t.debug("maxSectionHeight before draw",L),t.debug("maxTaskHeight before draw",I),x&&x.length>0)x.forEach((W)=>{let H=b.filter((z)=>z.section===W),R={number:F,descr:W,section:F,width:200*Math.max(H.length,1)-50,padding:20,maxHeight:L};t.debug("sectionNode",R);let M=y.append("g"),V=G.drawNode(M,R,F,l,s);if(t.debug("sectionNode output",V),M.attr("transform",`translate(${U}, ${K})`),Q+=L+50,H.length>0)bt(y,H,F,U,Q,I,l,C,O,L,!1,s);U+=200*Math.max(H.length,1),Q=K,F++});else D=!1,bt(y,b,F,U,Q,I,l,C,O,L,!0,s);let Z=y.node().getBBox();if(t.debug("bounds",Z),S)y.append("text").text(S).attr("x",m==="neo"?Z.x*2+w:Z.width/2-w).attr("font-size","4ex").attr("font-weight","bold").attr("y",20);if(B=D?L+I+150:I+100,y.append("g").attr("class","lineWrapper").append("line").attr("x1",w).attr("y1",B).attr("x2",Z.width+3*w).attr("y2",B).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${s}-arrowhead)`),m==="neo"&&_&&g!=="neutral"){let W=y.select("defs"),R=(W.empty()?y.append("defs"):W).append("linearGradient").attr("id",y.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");R.append("stop").attr("offset","0%").attr("stop-color",v).attr("stop-opacity",1),R.append("stop").attr("offset","100%").attr("stop-color",E).attr("stop-opacity",1)}Ie(void 0,y,l.timeline?.padding??50,l.timeline?.useMaxWidth??!1)},"draw"),bt=e(function(o,s,c,p,l,m,g,f,_,v,E,w){for(let T of s){let h={descr:T.task,section:c,number:c,width:150,padding:20,maxHeight:m};t.debug("taskNode",h);let k=o.append("g").attr("class","taskWrapper"),b=G.drawNode(k,h,c,g,w).height;if(t.debug("taskHeight after draw",b),k.attr("transform",`translate(${p}, ${l})`),m=Math.max(m,b),T.events){let S=o.append("g").attr("class","lineWrapper"),x=m;l+=100,x=x+re(o,T.events,c,p,l,g,w),l-=100,S.append("line").attr("x1",p+95).attr("y1",l+m).attr("x2",p+95).attr("y2",l+m+100+_+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${w}-arrowhead)`).attr("stroke-dasharray","5,5")}if(p=p+200,E&&!g.timeline?.disableMulticolor)c++}l=l-10},"drawTasks"),re=e(function(o,s,c,p,l,m,g){let f=0,_=l;l=l+100;for(let v of s){let E={descr:v,section:c,number:c,width:150,padding:20,maxHeight:50};t.debug("eventNode",E);let w=o.append("g").attr("class","eventWrapper"),h=G.drawNode(w,E,c,m,g,!0).height;f=f+h,w.attr("transform",`translate(${p}, ${l})`),l=l+10+h}return l=_,f},"drawEvents"),ne={setConf:e(()=>{},"setConf"),draw:ee},ct=200,q=5,se=ct+q*2,mt=ct+100,ie=mt+q*2,Vt=10,ae=0,vt=20,Ft=20,_t=30,zt=50,oe=e(function(o,s,c,p){let l=r(),m=l.timeline?.leftMargin??50;t.debug("timeline",p.db);let g=A(s);g.append("g");let f=p.db.getTasks(),_=p.db.getCommonDb().getDiagramTitle();t.debug("task",f),G.initGraphics(g);let v=p.db.getSections();t.debug("sections",v);let E=0,w=0,T=50+m,h=50,k=h,y=T,b=se+Ft,S=ie+zt,x=y+b,L=0,I=v&&v.length>0,B=I?x:T+b,K=Math.max(50,b+S-q*2);v.forEach(function(W){let H={number:L,descr:W,section:L,width:K,padding:q,maxHeight:E},R=G.getVirtualNodeHeight(g,H,l);t.debug("sectionHeight before draw",R),E=Math.max(E,R)});let U=0;t.debug("tasks.length",f.length);for(let[W,H]of f.entries()){let R={number:W,descr:H,section:H.section,width:ct,padding:q,maxHeight:w},M=G.getVirtualNodeHeight(g,R,l);t.debug("taskHeight before draw",M),w=Math.max(w,M);let V=0;for(let z of H.events){let P={descr:z,section:H.section,number:H.section,width:mt,padding:q,maxHeight:50};V+=G.getVirtualNodeHeight(g,P,l)}if(H.events.length>0)V+=(H.events.length-1)*Vt;U=Math.max(U,V)+ae}t.debug("maxSectionHeight before draw",E),t.debug("maxTaskHeight before draw",w);let F=Math.max(w,U)+_t;if(I)v.forEach((W)=>{let H=f.filter((J)=>J.section===W),R={number:L,descr:W,section:L,width:K,padding:q,maxHeight:E};t.debug("sectionNode",R);let M=g.append("g"),V=G.drawNode(M,R,L,l);t.debug("sectionNode output",V);let z=B-b;M.attr("transform",`translate(${z}, ${h})`);let P=h+V.height+vt;if(H.length>0)wt(g,H,L,B,P,w,l,F,!1);let lt=H.length,rt=V.height+vt+F*Math.max(lt,1)-(lt>0?_t*2:0);h+=rt,L++});else wt(g,f,L,B,h,w,l,F,!0);let D=g.node()?.getBBox();if(!D)throw Error("bbox not found");if(t.debug("bounds",D),_){if(g.append("text").text(_).attr("x",D.width/2-m).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),D=g.node()?.getBBox(),!D)throw Error("bbox not found");t.debug("bounds after title",D)}let[C]=he(l.fontSize),O=(C??16)*2,Z=(C??16)*0.5+20,Y=g.append("g").attr("class","lineWrapper");Y.append("line").attr("x1",B).attr("y1",k-O).attr("x2",B).attr("y2",D.y+D.height+Z).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),Y.lower(),Ie(void 0,g,l.timeline?.padding??50,l.timeline?.useMaxWidth??!1)},"draw"),wt=e(function(o,s,c,p,l,m,g,f,_){for(let v of s){let E={descr:v.task,section:c,number:c,width:ct,padding:q,maxHeight:m};t.debug("taskNode",E);let w=o.append("g").attr("class","taskWrapper"),T=G.drawNode(w,E,c,g),h=T.height;t.debug("taskHeight after draw",h);let k=p-Ft-T.width;if(w.attr("transform",`translate(${k}, ${l})`),m=Math.max(m,h),v.events&&v.events.length>0){let y=l,b=p+zt;ce(o,v.events,c,p,b,y,g)}if(l=l+f,_&&!g.timeline?.disableMulticolor)c++}},"drawTasks"),ce=e(function(o,s,c,p,l,m,g){let f=m;for(let _ of s){let v={descr:_,section:c,number:c,width:mt,padding:q,maxHeight:0};t.debug("eventNode",v);let E=o.append("g").attr("class","eventWrapper"),T=G.drawNode(E,v,c,g).height;E.attr("transform",`translate(${l}, ${f})`);let h=o.append("g").attr("class","lineWrapper"),k=f+T/2;h.append("line").attr("x1",p).attr("y1",k).attr("x2",l).attr("y2",k).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),f=f+T+Vt}return f-m},"drawEvents"),le={setConf:e(()=>{},"setConf"),draw:oe},de=e((o)=>{let{theme:s}=u(),c=s?.includes("dark"),p=s?.includes("color"),l=o.svgId?.replace(/^#/,"")??"",m=l?`url(#${l}-drop-shadow)`:o.dropShadow??"none",g="";for(let f=0;f<o.THEME_COLOR_LIMIT;f++){let _=`${17-3*f}`,v=p?o.borderColorArray[f]:o.mainBkg,E=p?o.borderColorArray[f]:o.nodeBorder;g+=`
7
+ .section-${f-1} rect,
8
+ .section-${f-1} path,
9
+ .section-${f-1} circle {
10
+ fill: ${c&&p?o.mainBkg:v};
11
+ stroke: ${E};
12
+ stroke-width: ${o.strokeWidth};
13
+ filter: ${m};
14
+ }
15
+
16
+ .section-${f-1} text {
17
+ fill: ${o.nodeBorder};
18
+ font-weight: ${o.fontWeight}
19
+ }
20
+
21
+ .node-icon-${f-1} {
22
+ font-size: 40px;
23
+ color: ${o["cScaleLabel"+f]};
24
+ }
25
+
26
+ .section-edge-${f-1} {
27
+ stroke: ${o["cScale"+f]};
28
+ }
29
+
30
+ .edge-depth-${f-1} {
31
+ stroke-width: ${_};
32
+ }
33
+
34
+ .section-${f-1} line {
35
+ stroke: ${o["cScaleInv"+f]};
36
+ stroke-width: 3;
37
+ }
38
+
39
+ .lineWrapper line {
40
+ stroke: ${o.nodeBorder};
41
+ stroke-width:${o.strokeWidth}
42
+ }
43
+
44
+ .disabled,
45
+ .disabled circle,
46
+ .disabled text {
47
+ fill: ${o.tertiaryColor??"lightgray"};
48
+ }
49
+
50
+ .disabled text {
51
+ fill: ${o.clusterBorder??"#efefef"};
52
+ }
53
+ `}return g},"genReduxSections"),ue=e((o)=>{let s="";for(let c=0;c<o.THEME_COLOR_LIMIT;c++)if(o["lineColor"+c]=o["lineColor"+c]||o["cScaleInv"+c],N(o["lineColor"+c]))o["lineColor"+c]=i(o["lineColor"+c],20);else o["lineColor"+c]=a(o["lineColor"+c],20);for(let c=0;c<o.THEME_COLOR_LIMIT;c++){let p=""+(17-3*c);s+=`
54
+ .section-${c-1} rect, .section-${c-1} path, .section-${c-1} circle, .section-${c-1} path {
55
+ fill: ${o["cScale"+c]};
56
+ }
57
+ .section-${c-1} text {
58
+ fill: ${o["cScaleLabel"+c]};
59
+ }
60
+ .node-icon-${c-1} {
61
+ font-size: 40px;
62
+ color: ${o["cScaleLabel"+c]};
63
+ }
64
+ .section-edge-${c-1}{
65
+ stroke: ${o["cScale"+c]};
66
+ }
67
+ .edge-depth-${c-1}{
68
+ stroke-width: ${p};
69
+ }
70
+ .section-${c-1} line {
71
+ stroke: ${o["cScaleInv"+c]} ;
72
+ stroke-width: 3;
73
+ }
74
+
75
+ .lineWrapper line{
76
+ stroke: ${o["cScaleLabel"+c]} ;
77
+ }
78
+
79
+ .disabled, .disabled circle, .disabled text {
80
+ fill: ${o.tertiaryColor??"lightgray"};
81
+ }
82
+ .disabled text {
83
+ fill: ${o.clusterBorder??"#efefef"};
84
+ }
85
+ `}return s},"genSections"),pe=e((o)=>{let{theme:s}=u(),c=s?.includes("redux"),p=s==="neutral",l=o.svgId?.replace(/^#/,"")??"",m="";if(o.useGradient&&l&&o.THEME_COLOR_LIMIT&&!p)for(let g=0;g<o.THEME_COLOR_LIMIT;g++)m+=`
86
+ .section-${g-1}[data-look="neo"] rect,
87
+ .section-${g-1}[data-look="neo"] path,
88
+ .section-${g-1}[data-look="neo"] circle {
89
+ fill: ${o.mainBkg};
90
+ stroke: url(#${l}-gradient);
91
+ stroke-width: 2;
92
+ }
93
+ .section-${g-1}[data-look="neo"] line {
94
+ stroke: url(#${l}-gradient);
95
+ stroke-width: 2;
96
+ }`;return`
97
+ .edge {
98
+ stroke-width: 3;
99
+ }
100
+ ${c?de(o):ue(o)}
101
+ ${m}
102
+ .section-root rect, .section-root path, .section-root circle {
103
+ fill: ${o.git0};
104
+ }
105
+ .section-root text {
106
+ fill: ${o.gitBranchLabel0};
107
+ }
108
+ .icon-container {
109
+ height:100%;
110
+ display: flex;
111
+ justify-content: center;
112
+ align-items: center;
113
+ }
114
+ .edge {
115
+ fill: none;
116
+ }
117
+ .eventWrapper {
118
+ filter: brightness(120%);
119
+ }
120
+ `},"getStyles"),ge=pe,fe={setConf:e(()=>{},"setConf"),draw:e((o,s,c,p)=>{if((p?.db?.getDirection?.()??"LR")==="TD")return le.draw(o,s,c,p);return ne.draw(o,s,c,p)},"draw")},Se={db:St,renderer:fe,parser:Ot,styles:ge};export{Se as diagram};
@@ -0,0 +1 @@
1
+ import{li}from"./index-tb1wf525.js";export{li as createTreeViewServices};
@@ -0,0 +1 @@
1
+ import{ti}from"./index-tb1wf525.js";export{ti as createTreemapServices};