@aiquants/markdown 1.6.1 → 1.8.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/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs → abnfDiagram-VRR7QNED-BKvRUGcR.cjs} +2 -2
  2. package/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs.map → abnfDiagram-VRR7QNED-BKvRUGcR.cjs.map} +1 -1
  3. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js → abnfDiagram-VRR7QNED-C-27Yna6.js} +4 -4
  4. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js.map → abnfDiagram-VRR7QNED-C-27Yna6.js.map} +1 -1
  5. package/dist/{arc-BmnitkkN.cjs → arc-CUOoCqkh.cjs} +2 -2
  6. package/dist/{arc-BmnitkkN.cjs.map → arc-CUOoCqkh.cjs.map} +1 -1
  7. package/dist/{arc-C-DBDbuo.js → arc-UxDDNW0x.js} +2 -2
  8. package/dist/{arc-C-DBDbuo.js.map → arc-UxDDNW0x.js.map} +1 -1
  9. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js} +3 -3
  10. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js.map → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js.map} +1 -1
  11. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs} +2 -2
  12. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs.map → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs.map} +1 -1
  13. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs → blockDiagram-677ZJIJ3-BbjxBeAD.cjs} +2 -2
  14. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs.map → blockDiagram-677ZJIJ3-BbjxBeAD.cjs.map} +1 -1
  15. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js → blockDiagram-677ZJIJ3-CuCBVVNa.js} +4 -4
  16. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js.map → blockDiagram-677ZJIJ3-CuCBVVNa.js.map} +1 -1
  17. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js → c4Diagram-LMCZKHZV-BdJV5ivG.js} +3 -3
  18. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js.map → c4Diagram-LMCZKHZV-BdJV5ivG.js.map} +1 -1
  19. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs → c4Diagram-LMCZKHZV-BgTfc_W8.cjs} +2 -2
  20. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs.map → c4Diagram-LMCZKHZV-BgTfc_W8.cjs.map} +1 -1
  21. package/dist/channel-BaZK7NhX.js +6 -0
  22. package/dist/{channel-B6gYWXtQ.js.map → channel-BaZK7NhX.js.map} +1 -1
  23. package/dist/channel-DcZBUEY6.cjs +2 -0
  24. package/dist/{channel-CZceKK2b.cjs.map → channel-DcZBUEY6.cjs.map} +1 -1
  25. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js → chunk-2Q5K7J3B-CSlHTmMh.js} +2 -2
  26. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js.map → chunk-2Q5K7J3B-CSlHTmMh.js.map} +1 -1
  27. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs → chunk-2Q5K7J3B-D9s6eCoM.cjs} +2 -2
  28. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs.map → chunk-2Q5K7J3B-D9s6eCoM.cjs.map} +1 -1
  29. package/dist/{chunk-32BRIVSS-CrDpazxa.js → chunk-32BRIVSS-CXH5EQUk.js} +2 -2
  30. package/dist/{chunk-32BRIVSS-CrDpazxa.js.map → chunk-32BRIVSS-CXH5EQUk.js.map} +1 -1
  31. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs → chunk-32BRIVSS-D2F2B9TZ.cjs} +2 -2
  32. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs.map → chunk-32BRIVSS-D2F2B9TZ.cjs.map} +1 -1
  33. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js → chunk-5VM5RSS4-BhTMtA9l.js} +2 -2
  34. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js.map → chunk-5VM5RSS4-BhTMtA9l.js.map} +1 -1
  35. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs → chunk-5VM5RSS4-CxjaLXsB.cjs} +2 -2
  36. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs.map → chunk-5VM5RSS4-CxjaLXsB.cjs.map} +1 -1
  37. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs → chunk-EX3LRPZG-BCQ_eMbL.cjs} +2 -2
  38. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs.map → chunk-EX3LRPZG-BCQ_eMbL.cjs.map} +1 -1
  39. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js → chunk-EX3LRPZG-BOcBE4jP.js} +5 -5
  40. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js.map → chunk-EX3LRPZG-BOcBE4jP.js.map} +1 -1
  41. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js → chunk-JWPE2WC7-C20BXRVN.js} +2 -2
  42. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js.map → chunk-JWPE2WC7-C20BXRVN.js.map} +1 -1
  43. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs → chunk-JWPE2WC7-CLCAyxUO.cjs} +2 -2
  44. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs.map → chunk-JWPE2WC7-CLCAyxUO.cjs.map} +1 -1
  45. package/dist/{chunk-MOJQB5TN-CODLoYka.js → chunk-MOJQB5TN-B_C5dwTy.js} +2 -2
  46. package/dist/{chunk-MOJQB5TN-CODLoYka.js.map → chunk-MOJQB5TN-B_C5dwTy.js.map} +1 -1
  47. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs → chunk-MOJQB5TN-Bbpbi357.cjs} +2 -2
  48. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs.map → chunk-MOJQB5TN-Bbpbi357.cjs.map} +1 -1
  49. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js → chunk-PUDLZKDR-C0EKSRvH.js} +7 -7
  50. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js.map → chunk-PUDLZKDR-C0EKSRvH.js.map} +1 -1
  51. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs → chunk-PUDLZKDR-Cpp-nasK.cjs} +2 -2
  52. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs.map → chunk-PUDLZKDR-Cpp-nasK.cjs.map} +1 -1
  53. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js → chunk-RYQCIY6F-BuIkG6A2.js} +2 -2
  54. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js.map → chunk-RYQCIY6F-BuIkG6A2.js.map} +1 -1
  55. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs → chunk-RYQCIY6F-he5fUSYo.cjs} +2 -2
  56. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs.map → chunk-RYQCIY6F-he5fUSYo.cjs.map} +1 -1
  57. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs → chunk-V7JOEXUC-BcBXzffo.cjs} +2 -2
  58. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs.map → chunk-V7JOEXUC-BcBXzffo.cjs.map} +1 -1
  59. package/dist/{chunk-V7JOEXUC-Csiot9oO.js → chunk-V7JOEXUC-DWnZRQBl.js} +6 -6
  60. package/dist/{chunk-V7JOEXUC-Csiot9oO.js.map → chunk-V7JOEXUC-DWnZRQBl.js.map} +1 -1
  61. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js → chunk-VR4S4FIN-BWCLM0a0.js} +2 -2
  62. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js.map → chunk-VR4S4FIN-BWCLM0a0.js.map} +1 -1
  63. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs → chunk-VR4S4FIN-Bd3wwAe8.cjs} +2 -2
  64. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs.map → chunk-VR4S4FIN-Bd3wwAe8.cjs.map} +1 -1
  65. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs → chunk-XXDRQBXY-C2UaLfce.cjs} +2 -2
  66. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs.map → chunk-XXDRQBXY-C2UaLfce.cjs.map} +1 -1
  67. package/dist/{chunk-XXDRQBXY-Csac6tCf.js → chunk-XXDRQBXY-qt9x9red.js} +2 -2
  68. package/dist/{chunk-XXDRQBXY-Csac6tCf.js.map → chunk-XXDRQBXY-qt9x9red.js.map} +1 -1
  69. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js → classDiagram-OUVF2IWQ-B0lJPbAq.js} +3 -3
  70. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js.map → classDiagram-OUVF2IWQ-B0lJPbAq.js.map} +1 -1
  71. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs → classDiagram-OUVF2IWQ-BoGCNSIO.cjs} +2 -2
  72. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs.map → classDiagram-OUVF2IWQ-BoGCNSIO.cjs.map} +1 -1
  73. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js → classDiagram-v2-EOCWNBFH-B0lJPbAq.js} +3 -3
  74. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js.map → classDiagram-v2-EOCWNBFH-B0lJPbAq.js.map} +1 -1
  75. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs} +2 -2
  76. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs.map → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs.map} +1 -1
  77. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js → cose-bilkent-JH36ORCC-BXH9dl_0.js} +2 -2
  78. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js.map → cose-bilkent-JH36ORCC-BXH9dl_0.js.map} +1 -1
  79. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs → cose-bilkent-JH36ORCC-DRBzHIcA.cjs} +2 -2
  80. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs.map → cose-bilkent-JH36ORCC-DRBzHIcA.cjs.map} +1 -1
  81. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js → cynefinDiagram-TSTJHNR4-2jnqksgG.js} +3 -3
  82. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js.map → cynefinDiagram-TSTJHNR4-2jnqksgG.js.map} +1 -1
  83. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs} +2 -2
  84. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs.map → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs.map} +1 -1
  85. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js → dagre-VKFMJZFB-BqLynzOx.js} +3 -3
  86. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js.map → dagre-VKFMJZFB-BqLynzOx.js.map} +1 -1
  87. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs → dagre-VKFMJZFB-C7QheUvc.cjs} +2 -2
  88. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs.map → dagre-VKFMJZFB-C7QheUvc.cjs.map} +1 -1
  89. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs → diagram-FQU43EPY-CSPyECaU.cjs} +2 -2
  90. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs.map → diagram-FQU43EPY-CSPyECaU.cjs.map} +1 -1
  91. package/dist/{diagram-FQU43EPY-DPR8KMs9.js → diagram-FQU43EPY-DUwsAw4u.js} +3 -3
  92. package/dist/{diagram-FQU43EPY-DPR8KMs9.js.map → diagram-FQU43EPY-DUwsAw4u.js.map} +1 -1
  93. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs → diagram-G47NLZAW-BaP0Lyg0.cjs} +2 -2
  94. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs.map → diagram-G47NLZAW-BaP0Lyg0.cjs.map} +1 -1
  95. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js → diagram-G47NLZAW-h09HILJg.js} +4 -4
  96. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js.map → diagram-G47NLZAW-h09HILJg.js.map} +1 -1
  97. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js → diagram-NH7WQ7WH-BE3XRcGY.js} +3 -3
  98. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js.map → diagram-NH7WQ7WH-BE3XRcGY.js.map} +1 -1
  99. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs → diagram-NH7WQ7WH-DyJw7-Gl.cjs} +2 -2
  100. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs.map → diagram-NH7WQ7WH-DyJw7-Gl.cjs.map} +1 -1
  101. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js → diagram-OA4YK3LP-BfAM9MZv.js} +4 -4
  102. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js.map → diagram-OA4YK3LP-BfAM9MZv.js.map} +1 -1
  103. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs → diagram-OA4YK3LP-DqYpt5F6.cjs} +2 -2
  104. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs.map → diagram-OA4YK3LP-DqYpt5F6.cjs.map} +1 -1
  105. package/dist/{diagram-WEI45ONY-COXEDGCZ.js → diagram-WEI45ONY-DtFOpBM4.js} +3 -3
  106. package/dist/{diagram-WEI45ONY-COXEDGCZ.js.map → diagram-WEI45ONY-DtFOpBM4.js.map} +1 -1
  107. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs → diagram-WEI45ONY-fz5dqgqy.cjs} +2 -2
  108. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs.map → diagram-WEI45ONY-fz5dqgqy.cjs.map} +1 -1
  109. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js → ebnfDiagram-CCIWWBDH-CyKVhKIb.js} +4 -4
  110. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js.map → ebnfDiagram-CCIWWBDH-CyKVhKIb.js.map} +1 -1
  111. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs → ebnfDiagram-CCIWWBDH-Haez4su4.cjs} +2 -2
  112. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs.map → ebnfDiagram-CCIWWBDH-Haez4su4.cjs.map} +1 -1
  113. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js → erDiagram-Q63AITRT-9hM3kPUW.js} +5 -5
  114. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js.map → erDiagram-Q63AITRT-9hM3kPUW.js.map} +1 -1
  115. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs → erDiagram-Q63AITRT-BGEWGa_b.cjs} +2 -2
  116. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs.map → erDiagram-Q63AITRT-BGEWGa_b.cjs.map} +1 -1
  117. package/dist/{extractHeadings-BiNpEj-K.js → extractHeadings-BH0T7P4n.js} +3834 -3824
  118. package/dist/{extractHeadings-BiNpEj-K.js.map → extractHeadings-BH0T7P4n.js.map} +1 -1
  119. package/dist/{extractHeadings-vnYM8Eet.cjs → extractHeadings-BsiIYa_e.cjs} +62 -62
  120. package/dist/{extractHeadings-vnYM8Eet.cjs.map → extractHeadings-BsiIYa_e.cjs.map} +1 -1
  121. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs +2 -0
  122. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs.map +1 -0
  123. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js +8 -0
  124. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js.map +1 -0
  125. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs → ganttDiagram-NO4QXBWP-4BbeHi64.cjs} +2 -2
  126. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs.map → ganttDiagram-NO4QXBWP-4BbeHi64.cjs.map} +1 -1
  127. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js → ganttDiagram-NO4QXBWP-DtM5HL0C.js} +3 -3
  128. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js.map → ganttDiagram-NO4QXBWP-DtM5HL0C.js.map} +1 -1
  129. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs} +2 -2
  130. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs.map → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs.map} +1 -1
  131. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js} +4 -4
  132. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js.map → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js.map} +1 -1
  133. package/dist/index.cjs +1 -1
  134. package/dist/index.client.cjs +1 -1
  135. package/dist/index.client.js +1 -1
  136. package/dist/index.js +1 -1
  137. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs} +2 -2
  138. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs.map → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs.map} +1 -1
  139. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js → infoDiagram-FWYZ7A6U-ZRUjO8nW.js} +2 -2
  140. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js.map → infoDiagram-FWYZ7A6U-ZRUjO8nW.js.map} +1 -1
  141. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs} +2 -2
  142. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs.map → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs.map} +1 -1
  143. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js} +2 -2
  144. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js.map → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js.map} +1 -1
  145. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js → journeyDiagram-5HDEW3XC-BXlXmDhR.js} +5 -5
  146. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js.map → journeyDiagram-5HDEW3XC-BXlXmDhR.js.map} +1 -1
  147. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs} +2 -2
  148. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs.map → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs.map} +1 -1
  149. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js → kanban-definition-HUTT4EX6-C9IdgWIg.js} +3 -3
  150. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js.map → kanban-definition-HUTT4EX6-C9IdgWIg.js.map} +1 -1
  151. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs → kanban-definition-HUTT4EX6-D5_pDh9h.cjs} +2 -2
  152. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs.map → kanban-definition-HUTT4EX6-D5_pDh9h.cjs.map} +1 -1
  153. package/dist/{linear-DA8CNisd.js → linear-CTibpBci.js} +2 -2
  154. package/dist/{linear-DA8CNisd.js.map → linear-CTibpBci.js.map} +1 -1
  155. package/dist/{linear-BgdXLHZt.cjs → linear-DDWdtbxq.cjs} +2 -2
  156. package/dist/{linear-BgdXLHZt.cjs.map → linear-DDWdtbxq.cjs.map} +1 -1
  157. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js → mindmap-definition-LN4V7U3C-CXaKAu6n.js} +4 -4
  158. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js.map → mindmap-definition-LN4V7U3C-CXaKAu6n.js.map} +1 -1
  159. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs → mindmap-definition-LN4V7U3C-gBn938NF.cjs} +2 -2
  160. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs.map → mindmap-definition-LN4V7U3C-gBn938NF.cjs.map} +1 -1
  161. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js → pegDiagram-2B236MQR-BiQyejnD.js} +4 -4
  162. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js.map → pegDiagram-2B236MQR-BiQyejnD.js.map} +1 -1
  163. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs → pegDiagram-2B236MQR-fR_9AvHk.cjs} +2 -2
  164. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs.map → pegDiagram-2B236MQR-fR_9AvHk.cjs.map} +1 -1
  165. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs → pieDiagram-ENE6RG2P-BZtqlfyU.cjs} +2 -2
  166. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs.map → pieDiagram-ENE6RG2P-BZtqlfyU.cjs.map} +1 -1
  167. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js → pieDiagram-ENE6RG2P-CZTZpVqy.js} +4 -4
  168. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js.map → pieDiagram-ENE6RG2P-CZTZpVqy.js.map} +1 -1
  169. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js} +3 -3
  170. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js.map → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js.map} +1 -1
  171. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs} +2 -2
  172. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs.map → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs.map} +1 -1
  173. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js → railroadDiagram-RFXS5EU6-C99zfAzl.js} +4 -4
  174. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js.map → railroadDiagram-RFXS5EU6-C99zfAzl.js.map} +1 -1
  175. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs → railroadDiagram-RFXS5EU6-_YckPr2T.cjs} +2 -2
  176. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs.map → railroadDiagram-RFXS5EU6-_YckPr2T.cjs.map} +1 -1
  177. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs} +2 -2
  178. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs.map → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs.map} +1 -1
  179. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js → requirementDiagram-TGXJPOKE-DBzuXzE9.js} +4 -4
  180. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js.map → requirementDiagram-TGXJPOKE-DBzuXzE9.js.map} +1 -1
  181. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js} +2 -2
  182. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js.map → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js.map} +1 -1
  183. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs} +2 -2
  184. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs.map → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs.map} +1 -1
  185. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js} +4 -4
  186. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js.map → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js.map} +1 -1
  187. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs} +2 -2
  188. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs.map → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs.map} +1 -1
  189. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js → sizeCapture-X5ZJPWSS-9Q2RBacx.js} +2 -2
  190. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js.map → sizeCapture-X5ZJPWSS-9Q2RBacx.js.map} +1 -1
  191. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs → sizeCapture-X5ZJPWSS-CedNWC9b.cjs} +2 -2
  192. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs.map → sizeCapture-X5ZJPWSS-CedNWC9b.cjs.map} +1 -1
  193. package/dist/src/components/MarkdownRenderer.d.ts +31 -1
  194. package/dist/src/components/MarkdownRenderer.d.ts.map +1 -1
  195. package/dist/src/components/MarkdownViewer.d.ts +9 -1
  196. package/dist/src/components/MarkdownViewer.d.ts.map +1 -1
  197. package/dist/src/index.client.d.ts +1 -1
  198. package/dist/src/index.client.d.ts.map +1 -1
  199. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs → stateDiagram-2N3HPSRC-BFjEDzN5.cjs} +2 -2
  200. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs.map → stateDiagram-2N3HPSRC-BFjEDzN5.cjs.map} +1 -1
  201. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js → stateDiagram-2N3HPSRC-DVXBUdgS.js} +3 -3
  202. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js.map → stateDiagram-2N3HPSRC-DVXBUdgS.js.map} +1 -1
  203. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs} +2 -2
  204. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs.map → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs.map} +1 -1
  205. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js → stateDiagram-v2-6OUMAXLB-etkgI8XE.js} +3 -3
  206. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js.map → stateDiagram-v2-6OUMAXLB-etkgI8XE.js.map} +1 -1
  207. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs → swimlanes-5IMT3BWC-ByyaHYdJ.cjs} +2 -2
  208. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs.map → swimlanes-5IMT3BWC-ByyaHYdJ.cjs.map} +1 -1
  209. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js → swimlanes-5IMT3BWC-CRF_hU5-.js} +4 -4
  210. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js.map → swimlanes-5IMT3BWC-CRF_hU5-.js.map} +1 -1
  211. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs} +2 -2
  212. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs.map → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs.map} +1 -1
  213. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js → swimlanesDiagram-G3AALYLV-qE56wCfv.js} +3 -3
  214. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js.map → swimlanesDiagram-G3AALYLV-qE56wCfv.js.map} +1 -1
  215. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs → timeline-definition-FHXFAJF6-CYpydtqC.cjs} +2 -2
  216. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs.map → timeline-definition-FHXFAJF6-CYpydtqC.cjs.map} +1 -1
  217. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js → timeline-definition-FHXFAJF6-U6tU13YO.js} +3 -3
  218. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js.map → timeline-definition-FHXFAJF6-U6tU13YO.js.map} +1 -1
  219. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs → vennDiagram-L72KCM5P-CfbVR5CF.cjs} +2 -2
  220. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs.map → vennDiagram-L72KCM5P-CfbVR5CF.cjs.map} +1 -1
  221. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js → vennDiagram-L72KCM5P-q79Xn7UV.js} +2 -2
  222. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js.map → vennDiagram-L72KCM5P-q79Xn7UV.js.map} +1 -1
  223. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js → wardleyDiagram-EHGQE667-BG3W74MX.js} +3 -3
  224. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js.map → wardleyDiagram-EHGQE667-BG3W74MX.js.map} +1 -1
  225. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs → wardleyDiagram-EHGQE667-CSJ22zfj.cjs} +2 -2
  226. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs.map → wardleyDiagram-EHGQE667-CSJ22zfj.cjs.map} +1 -1
  227. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js → xychartDiagram-FW5EYKEG-BISI4a7c.js} +3 -3
  228. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js.map → xychartDiagram-FW5EYKEG-BISI4a7c.js.map} +1 -1
  229. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs} +2 -2
  230. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs.map → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs.map} +1 -1
  231. package/package.json +1 -1
  232. package/dist/channel-B6gYWXtQ.js +0 -6
  233. package/dist/channel-CZceKK2b.cjs +0 -2
  234. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs +0 -2
  235. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs.map +0 -1
  236. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js +0 -8
  237. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Sr=require("./chunk-RYQCIY6F-BgbNR_-2.cjs"),c=require("./extractHeadings-vnYM8Eet.cjs"),Cr=require("./graph-BgRih2Qv.cjs");async function No(t,e){const n=new Cr.Graph({multigraph:!0,compound:!0}),o=[...e.edges],s=c.getConfig2(),r=t.insert("g").attr("class","root"),i=r.insert("g").attr("class","clusters"),a=r.insert("g").attr("class","edges edgePath"),l=r.insert("g").attr("class","edgeLabels"),f=r.insert("g").attr("class","nodes"),g=new Map,x=t.node()!=null;await Promise.all(e.nodes.map(async M=>{if(M.isGroup)n.setNode(M.id,{...M});else{if(x){const u=await c.insertNode(f,M,{config:s,dir:M.dir}),m=u.node()?.getBBox()??{width:0,height:0};g.set(M.id,u),M.width=m.width,M.height=m.height}n.setNode(M.id,{...M})}}));for(const M of o)n.setEdge(M.start,M.end,{...M},M.id),e.edges.some(m=>m.id===M.id)||e.edges.push(M);if(globalThis.mermaidCaptureSizes){const{captureNodeSizes:M}=await Promise.resolve().then(()=>require("./sizeCapture-X5ZJPWSS-NRqA0pmT.cjs"));M(t,e)}return{graph:n,groups:{clusters:i,edgePaths:a,edgeLabels:l,nodes:f,rootGroups:r},nodeElements:g}}c.__name(No,"createGraphWithElements");var Lo=5,Xe=1e-5,Ye=1e-6;function Ue(t){const e=[];for(let n=0;n<t.length-1;n++)e.push({a:t[n],b:t[n+1]});return e}c.__name(Ue,"buildSegmentList");function Oo(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,a=o.y-n.y,l=s*a-r*i;if(l===0)return null;const f=n.x-t.x,g=n.y-t.y,x=(f*a-g*i)/l,M=(f*r-g*s)/l;return x<=Ye||x>=1-Ye||M<=Ye||M>=1-Ye?null:{point:{x:t.x+x*s,y:t.y+x*r},tA:x,tB:M}}c.__name(Oo,"segmentIntersection");function Mn(t){return Math.abs(t.b.x-t.a.x)>=Math.abs(t.b.y-t.a.y)}c.__name(Mn,"isHorizontalSeg");function Po(t){const e=[];for(let n=0;n<t.length;n++){const o=t[n],s=Ue(o.points);for(let r=n+1;r<t.length;r++){const i=t[r],a=Ue(i.points);for(const[l,f]of s.entries())for(const[g,x]of a.entries()){const M=Oo(f.a,f.b,x.a,x.b);if(!M)continue;const u=Mn(f),m=Mn(x);(u!==m?u:!1)?e.push({jumpEdgeId:o.id,otherEdgeId:i.id,segIndex:l,t:M.tA,point:M.point}):e.push({jumpEdgeId:i.id,otherEdgeId:o.id,segIndex:g,t:M.tB,point:M.point})}}}return e}c.__name(Po,"findEdgeIntersections");function re(t){const e=Math.round(t*1e3)/1e3;return Number.isInteger(e)?`${e}`:`${e}`}c.__name(re,"fmt");function Ee(t){return`${re(t.x)},${re(t.y)}`}c.__name(Ee,"pointToString");function Bo(t){const e=t.b.x-t.a.x,n=t.b.y-t.a.y;return Math.abs(e)>=Math.abs(n)?e>=0?1:0:n>=0?1:0}c.__name(Bo,"getArcSweepFlag");var vr=.001;function ko(t,e){if(t.length<2)return t.map(r=>({...r}));const n=t.map(r=>({...r})),o=e.arrowTypeStart&&c.markerOffsets[e.arrowTypeStart];if(o){const r=t[0],i=t[1],a=Math.atan2(i.y-r.y,i.x-r.x);n[0].x=r.x+o*Math.cos(a),n[0].y=r.y+o*Math.sin(a)}const s=e.arrowTypeEnd&&c.markerOffsets[e.arrowTypeEnd];if(s){const r=t.length,i=t[r-2],a=t[r-1],l=Math.atan2(a.y-i.y,a.x-i.x);n[r-1].x=a.x-s*Math.cos(l),n[r-1].y=a.y-s*Math.sin(l)}return n}c.__name(ko,"applyMarkerOffsets");function Fo(t,e,n,o,s){const r=t.point.x,i=t.point.y,a={x:r-e*t.r,y:i-n*t.r},l={x:r+e*t.r,y:i+n*t.r},f=[`L${Ee(a)}`];return s==="arc"?f.push(`A${re(t.r)},${re(t.r)} 0 0 ${o} ${Ee(l)}`):f.push(`M${Ee(l)}`),f}c.__name(Fo,"emitJump");function In(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=n.x-e.x,a=n.y-e.y,l=Math.hypot(s,r),f=Math.hypot(i,a);if(l<Xe||f<Xe)return null;const g=s/l,x=r/l,M=i/f,u=a/f,m=g*M+x*u,d=Math.max(-1,Math.min(1,m)),y=Math.acos(d);if(y<Xe||Math.abs(Math.PI-y)<Xe)return null;const C=Math.min(o/Math.sin(y/2),l/2,f/2);return{startX:e.x-g*C,startY:e.y-x*C,endX:e.x+M*C,endY:e.y+u*C,ctrlX:e.x,ctrlY:e.y,cutLen:C}}c.__name(In,"computeRoundedCorner");function Do(t,e,n){const o=t.points;if(o.length<2)return"";const s=ko(o,t),r=t.curve==="rounded",i=Ue(s),a=new Map;for(const f of e){const g=i[f.segIndex];if(!g)continue;const x=Math.hypot(g.b.x-g.a.x,g.b.y-g.a.y),M=a.get(f.segIndex)??[];M.push({t:f.t,point:f.point,d:f.t*x,r:n.jumpRadius}),a.set(f.segIndex,M)}const l=[`M${Ee(s[0])}`];for(let f=0;f<i.length;f++){const g=i[f],x=Math.hypot(g.b.x-g.a.x,g.b.y-g.a.y),M=x===0?0:(g.b.x-g.a.x)/x,u=x===0?0:(g.b.y-g.a.y)/x,m=Bo(g);let d=0;if(r&&f>0){const L=In(s[f-1],s[f],s[f+1]??s[f],Lo);L&&(d=L.cutLen)}let y=x,C=null;r&&f<i.length-1&&(C=In(s[f],s[f+1],s[f+2]??s[f+1],Lo),C&&(y=x-C.cutLen));const b=[...a.get(f)??[]].sort((L,T)=>L.t-T.t);for(const L of b)L.r=Math.min(L.r,L.d-d,y-L.d);for(let L=0;L<b.length-1;L++){const T=b[L+1].d-b[L].d;if(b[L].r+b[L+1].r>T){const p=T/2;b[L].r=Math.min(b[L].r,p),b[L+1].r=Math.min(b[L+1].r,p)}}for(const L of b)L.r<vr||l.push(...Fo(L,M,u,m,n.jumpStyle));r&&C?(l.push(`L${re(C.startX)},${re(C.startY)}`),l.push(`Q${re(C.ctrlX)},${re(C.ctrlY)} ${re(C.endX)},${re(C.endY)}`)):l.push(`L${Ee(g.b)}`)}return l.join(" ")}c.__name(Do,"rewriteEdgePath");function Ho(t){return/^[\d\s+,.LMelm-]*$/.test(t)}c.__name(Ho,"isStraightPath");function Xo(t){return t?t==="linear"||t==="rounded"||t==="step"||t==="stepBefore"||t==="stepAfter":!0}c.__name(Xo,"curveSupportsLineHops");function Yo(t){if(!t)return null;try{const e=typeof atob=="function"?atob(t):Buffer.from(t,"base64").toString(),n=JSON.parse(e);if(!Array.isArray(n))return null;const o=[];for(const s of n)s&&typeof s.x=="number"&&typeof s.y=="number"&&o.push({x:s.x,y:s.y});return o.length>=2?o:null}catch{return null}}c.__name(Yo,"decodeDataPoints");function Go(t,e,n){if(!n.enabled)return;const o=t.node();if(!o)return;const s=new Map;for(const f of e)s.set(f.id,f);const r=[],i=new Map;for(const f of e){const g=typeof CSS<"u"&&CSS.escape?CSS.escape(f.id):f.id,x=o.querySelector(`path[data-id="${g}"]`);if(!x)continue;i.set(f.id,x);const u=Yo(x.getAttribute("data-points"))??f.points;r.push({...f,points:u})}const a=Po(r);if(a.length===0)return;const l=new Map;for(const f of a){const g=l.get(f.jumpEdgeId)??[];g.push(f),l.set(f.jumpEdgeId,g)}for(const f of r){const g=l.get(f.id);if(!g||g.length===0)continue;const M=s.get(f.id)?.curve;if(M!==void 0&&!Xo(M))continue;const u=i.get(f.id);if(!u)continue;if(M===void 0){const L=u.getAttribute("d")??"";if(!Ho(L))continue}const m=u.getAttribute("style")??"",d=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(m),y=d?Number.parseFloat(d[1]):null,C=d?Number.parseFloat(d[2]):null,b=Do(f,g,n);if(u.setAttribute("d",b),y!==null&&C!==null&&typeof u.getTotalLength=="function"){const L=u.getTotalLength(),T=Math.max(0,L-y-C),p=`0 ${y} ${T} ${C}`,I=m.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${p};`).replace(/;\s*;+/g,";");u.setAttribute("style",I)}}}c.__name(Go,"applyLineJumpsToSvg");async function $o(t,e){for(const s of t.nodes)s.isGroup?await c.insertCluster(e.clusters,s):c.positionNode(s);const n=new Map;for(const s of t.nodes)s?.id&&n.set(s.id,s);for(const s of t.edges){const r=s.start?n.get(s.start)??{}:{},i=s.end?n.get(s.end)??{}:{},a=c.insertEdge(e.edgePaths,{...s},{},t.type,r,i,t.diagramId);s.label&&await c.insertEdgeLabel(e.rootGroups,s),s.label&&zo(s,a)}const o=t.config?.swimlane?.lineHops;if(o!==!1){const s=o==="gap"?"gap":"arc",r=t.edges.filter(i=>Array.isArray(i.points)&&i.points.length>=2).map(i=>({id:i.id,points:i.points,curve:i.curve,arrowTypeStart:i.arrowTypeStart,arrowTypeEnd:i.arrowTypeEnd}));Go(e.edgePaths,r,{enabled:!0,jumpRadius:6,jumpStyle:s})}}c.__name($o,"adjustLayout");function zo(t,e){const n=e?.updatedPath??e?.originalPath,o=c.getConfig(),{subGraphTitleTotalMargin:s}=c.getSubGraphTitleMargins({flowchart:o.flowchart??{}});if(t.label){const r=c.edgeLabels.get(t.id);let i=t.x,a=t.y;if(n){const l=c.utils_default.calcLabelPosition(n);c.log.debug("Moving label "+t.label+" from (",i,",",a,") to (",l.x,",",l.y,") abc88"),e&&(i=l.x,a=l.y)}r.attr("transform",`translate(${i}, ${a+s/2})`)}if(t?.startLabelLeft){const r=c.terminalLabels.get(t.id).startLeft;let i=t?.x,a=t?.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.startLabelRight){const r=c.terminalLabels.get(t.id).startRight;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.endLabelLeft){const r=c.terminalLabels.get(t.id).endLeft;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.endLabelRight){const r=c.terminalLabels.get(t.id).endRight;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}}c.__name(zo,"positionEdgeLabel");var yn="__swimlane_default__",Lr=21,To=20;function Sn(t){return Math.max(t.padding??To,To)}c.__name(Sn,"topLaneHorizontalPadding");function Vo(t){const{x:e,y:n,width:o,height:s}=t,r=t.swimlaneContentTop;if(typeof e!="number"||typeof n!="number"||typeof o!="number"||typeof s!="number"||typeof r!="number"||!Number.isFinite(e)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(r)||o<=0||s<=0){delete t.groupTitleRect;return}const i=n-s/2,a=Math.min(r,n+s/2),l=Math.min(Lr,Math.max(0,a-i)),f=i+l;if(f<=i){delete t.groupTitleRect;return}t.groupTitleRect={left:e-o/2,right:e+o/2,top:i,bottom:f}}c.__name(Vo,"assignTopLaneTitleRect");function jo(t){const e=t.direction,n=t.nodes??=[];for(const r of t.nodes??[])r.isGroup&&!r.parentId&&(r.shape="swimlane",e&&(r.direction=e));const o=n.filter(r=>!r.isGroup&&!r.parentId);if(o.length===0)return;let s=n.find(r=>r.id===yn);s?s.isGroup&&(s.shape="swimlane",e&&(s.direction=e)):(s={id:yn,label:"",isGroup:!0,shape:"swimlane",padding:20,...e?{direction:e}:{}},n.push(s));for(const r of o)r.parentId=yn}c.__name(jo,"prepareLayoutForSwimlanes");function Uo(t){const e=new Map;for(const l of t.nodes??[])e.set(l.id,l);const n=[];for(const l of t.edges??[]){const f=typeof l.start=="string"?l.start:void 0,g=typeof l.end=="string"?l.end:void 0;!f||!g||l.labelNodeId||n.push({id:l.id,src:f,dst:g,ref:l})}const o=t.nodes??[],s=o.filter(l=>l.isGroup),r=o.filter(l=>!l.isGroup);return{nodes:[...[...s].reverse(),...r].map(l=>l.id),edges:n,layout:t,nodeById:e}}c.__name(Uo,"toGraphView");function Wo(t,e,n,o){const{layout:s}=t,r=t.nodeById,i=o?.layerGap??100,a=o?.nodeGap??40;let l=0;for(const M of e.layers){let u=0;for(const m of M){const d=r.get(m);if(!d){u++;continue}d.layer=l,d.order=u;const y=n.x[m]??u*a,C=n.y[m]??l*i;d.x=y,d.y=C,u++}l++}const f=s.nodes??[],g=new Map,x=[];for(const M of f){if(!M?.isGroup)continue;M.parentId||x.push(M);const u=f.filter(b=>b.parentId===M.id);let m=1/0,d=-1/0,y=1/0,C=-1/0;for(const b of u){const L=b.x??n.x[b.id],T=b.y??n.y[b.id],p=b.width??0,I=b.height??0;L!=null&&T!=null&&(m=Math.min(m,L-p/2),d=Math.max(d,L+p/2),y=Math.min(y,T-I/2),C=Math.max(C,T+I/2))}if(m===1/0||y===1/0)M.x=M.x??0,M.y=M.y??0,M.width=M.width??0,M.height=M.height??0;else{const b=M.padding??20,L=M.parentId?b:2*Sn(M),T=b,p=Math.max(0,d-m)+L,I=Math.max(0,C-y)+T,w=(m+d)/2,A=(y+C)/2;M.x=w,M.y=A,M.width=p,M.height=I,g.set(M.id,{minX:m,maxX:d,minY:y,maxY:C})}}if(x.length>0&&g.size>0){let M=1/0,u=-1/0,m=0;for(const d of x){const y=d.padding??20;y>m&&(m=y);const C=g.get(d.id);C&&(M=Math.min(M,C.minY),u=Math.max(u,C.maxY))}if(M!==1/0&&u!==-1/0){const d=Math.max(0,u-M),C=Math.max(m,36),b=d+2*C,L=(M+u)/2;for(const B of x)B.y=L,B.height=b,B.swimlaneContentTop=M;const T=[...x].sort((B,N)=>{const k=B.x??0,H=N.x??0;return k-H}),p=[],I=[],w=[];for(const B of T){const N=g.get(B.id);if(!N)continue;const k=Math.max(0,N.maxX-N.minX)+2*Sn(B),H=(N.minX+N.maxX)/2;p.push(B.id),I.push(H),w.push(k)}const A=p.length;if(A>0){const B=new Map;if(A===1)B.set(p[0],w[0]);else{const N=[];for(let j=0;j<A-1;j++)N.push(I[j+1]-I[j]);const k=new Array(A);k[0]=0;for(let j=0;j<A-1;j++)k[j+1]=2*N[j]-k[j];let H=0,O=Number.POSITIVE_INFINITY;for(let j=0;j<A;j++){const J=w[j];j%2===0?H=Math.max(H,J-k[j]):O=Math.min(O,k[j]-J)}let G=H;H<=O?G=(H+O)/2:G=H;for(let j=0;j<A;j++){const J=k[j]+(j%2===0?G:-G),dt=Math.max(w[j],J);B.set(p[j],dt)}}for(const N of x){const k=B.get(N.id);k!=null&&(N.width=k),Vo(N)}}}}}c.__name(Wo,"writeBackToLayoutData");var Tr="[EdgeLabelNodes]";function Ko(t){const e=[],n=[],o=new Map;for(const i of t.nodes)o.set(i.id,i);for(const i of t.edges){if(!i.label||i.label.length===0||i.isLayoutOnly||i.labelNodeId)continue;const a=i.start?o.get(i.start):void 0,l=i.end?o.get(i.end):void 0;if(!a||!l){c.log.warn(Tr,`Edge ${i.id} has missing source or target node`);continue}const f=`edge-label-${i.start}-${i.end}-${i.id}`,x=a.parentId!==l.parentId?l.parentId:a.parentId,M={id:f,label:i.label,edgeStart:i.start??"",edgeEnd:i.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:x,isGroup:!1,labelStyle:Array.isArray(i.labelStyle)?i.labelStyle[0]:i.labelStyle??"",...a.dir?{dir:a.dir}:{}};e.push(M),i.labelNodeId=f,i.label=void 0,i.text=void 0;const u={id:`${i.id}-to-label`,start:i.start,end:f,type:"normal",isLayoutOnly:!0},m={id:`${i.id}-from-label`,start:f,end:i.end,type:"normal",isLayoutOnly:!0};n.push(u,m)}const s=[...t.nodes,...e],r=[...t.edges,...n];return{...t,nodes:s,edges:r}}c.__name(Ko,"createEdgeLabelNodes");var Ft=.001;function to(t){const e=t.x??0,n=t.y??0,o=t.width??0,s=t.height??0;return o>0&&s>0?{cx:e,cy:n,rect:we(e,n,o,s)}:void 0}c.__name(to,"measuredNodeRect");function eo(t){if(t.isGroup)return;const e=to(t);return e?{id:String(t.id??""),cx:e.cx,cy:e.cy,rect:e.rect}:void 0}c.__name(eo,"nodeBoundsInfoFor");function oe(t,e,n=Ft){return Math.abs(t.x-e.x)<n&&Math.abs(t.y-e.y)<n}c.__name(oe,"samePoint");function ft(t,e,n=Ft){return Math.abs(t.x-e.x)<n}c.__name(ft,"sameX");function ht(t,e,n=Ft){return Math.abs(t.y-e.y)<n}c.__name(ht,"sameY");function Tt(t,e,n=Ft){return ht(t,e,n)&&Math.abs(t.x-e.x)>n}c.__name(Tt,"isHorizontalSegment");function Et(t,e,n=Ft){return ft(t,e,n)&&Math.abs(t.y-e.y)>n}c.__name(Et,"isVerticalSegment");function zt(t,e,n,o){return Math.max(0,Math.min(Math.max(t,e),Math.max(n,o))-Math.max(Math.min(t,e),Math.min(n,o)))}c.__name(zt,"overlapLength");function ce(t,e,n=Ft){return t.horizontal&&e.horizontal&&ht(t.a,e.a,n)?zt(t.a.x,t.b.x,e.a.x,e.b.x):t.vertical&&e.vertical&&ft(t.a,e.a,n)?zt(t.a.y,t.b.y,e.a.y,e.b.y):0}c.__name(ce,"sameAxisSegmentOverlapLength");function Ae(t,e=Ft){const n=[];for(let o=0;o<t.length-1;o++){const s=t[o],r=t[o+1],i=Tt(s,r,e),a=Et(s,r,e);(i||a)&&n.push({index:o,a:s,b:r,horizontal:i,vertical:a})}return n}c.__name(Ae,"orthogonalSegmentsForPoints");function Qt(t,e=Ft){const n=Ae(t,e);let o=0;for(let s=1;s<n.length;s++)n[s-1].horizontal!==n[s].horizontal&&o++;return o}c.__name(Qt,"countOrthogonalBends");function mt(t,e=Ft){const n=[];for(const o of t){const s=n.length>0?n[n.length-1]:void 0;(!s||!oe(s,o,e))&&n.push({x:o.x,y:o.y})}return n}c.__name(mt,"dedupeConsecutivePoints");function no(t,e=Ft){if(!t||t.length!==4)return;const[n,o,s,r]=t;return Tt(n,o,e)&&Et(o,s,e)&&Tt(s,r,e)?{kind:"HVH",p0:n,p1:o,p2:s,p3:r}:Et(n,o,e)&&Tt(o,s,e)&&Et(s,r,e)?{kind:"VHV",p0:n,p1:o,p2:s,p3:r}:void 0}c.__name(no,"classifyThreeSegmentRoute");function on(t,e,n,o=0){const s=Math.min(t.x,e.x),r=Math.max(t.x,e.x),i=Math.min(t.y,e.y),a=Math.max(t.y,e.y);return r>n.left-o&&s<n.right+o&&a>n.top-o&&i<n.bottom+o}c.__name(on,"segmentBoundsOverlapRect");function oo(t,e,n=0){return t.x>e.left+n&&t.x<e.right-n&&t.y>e.top+n&&t.y<e.bottom-n}c.__name(oo,"pointInsideRect");function qo(t,e){return t.left<=e.left&&t.right>=e.right&&t.top<=e.top&&t.bottom>=e.bottom}c.__name(qo,"rectContainsRect");function We(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}c.__name(We,"rectsOverlap");function Cn(t,e){return{left:t.left-e,right:t.right+e,top:t.top-e,bottom:t.bottom+e}}c.__name(Cn,"inflateRect");function we(t,e,n,o){return{left:t-n/2,right:t+n/2,top:e-o/2,bottom:e+o/2}}c.__name(we,"rectFromCenterSize");function qt(t){return to(t)?.rect}c.__name(qt,"rectOfNodeBounds");function Me(t,e){switch(e){case"top":return{x:t.cx,y:t.rect.top};case"bottom":return{x:t.cx,y:t.rect.bottom};case"left":return{x:t.rect.left,y:t.cy};case"right":return{x:t.rect.right,y:t.cy}}}c.__name(Me,"portForRectSide");function so(t,e,n,o,s,r=Ft){const i=e==="left"||e==="right",a=o==="left"||o==="right";if(i&&a){if(e==="right"&&o==="left"&&t.x<n.x||e==="left"&&o==="right"&&t.x>n.x){if(ht(t,n,r))return[t,n];const x=(t.x+n.x)/2;return[t,{x,y:t.y},{x,y:n.y},n]}if(e===o){if(ht(t,n,r))return;const x=e==="left"?Math.min(t.x,n.x)-s:Math.max(t.x,n.x)+s;return[t,{x,y:t.y},{x,y:n.y},n]}return}if(!i&&!a){if(e===o){if(ft(t,n,r))return;const M=e==="top"?Math.min(t.y,n.y)-s:Math.max(t.y,n.y)+s;return[t,{x:t.x,y:M},{x:n.x,y:M},n]}if(!(e==="bottom"&&o==="top"&&t.y<n.y||e==="top"&&o==="bottom"&&t.y>n.y))return;if(ft(t,n,r))return[t,n];const x=(t.y+n.y)/2;return[t,{x:t.x,y:x},{x:n.x,y:x},n]}if(i&&!a){const g=e==="right"&&n.x>t.x||e==="left"&&n.x<t.x,x=o==="top"&&t.y<n.y||o==="bottom"&&t.y>n.y;return g&&x?[t,{x:n.x,y:t.y},n]:void 0}const l=e==="bottom"&&n.y>t.y||e==="top"&&n.y<t.y,f=o==="left"&&t.x<n.x||o==="right"&&t.x>n.x;return l&&f?[t,{x:t.x,y:n.y},n]:void 0}c.__name(so,"buildOrthogonalPortPath");function ro(t,e,n,o){return e==="left"||e==="right"?[t,{x:o,y:t.y},{x:o,y:n.y},n]:[t,{x:t.x,y:o},{x:n.x,y:o},n]}c.__name(ro,"buildSameSideTrackPath");function sn(t){const e=new Map,n=[];for(const o of t){if(o.isEdgeLabel)continue;const s=eo(o);s&&(e.set(s.id,s),n.push({id:s.id,rect:s.rect}))}return{nodeInfoById:e,realNodeRects:n}}c.__name(sn,"collectRealNodeBounds");function pe(t){const e=[],n=[];for(const o of t){const s=eo(o);if(!s)continue;const r={id:s.id,rect:s.rect};o.isEdgeLabel?n.push(r):e.push(r)}return{realNodeRects:e,labelNodeRects:n}}c.__name(pe,"collectNodeRectEntries");function Jo(t,{includeEdgeLabels:e=!0}={}){const n=[];for(const o of t){if(o.isGroup||!e&&o.isEdgeLabel)continue;const s=o.x??0,r=o.y??0,i=o.width??0,a=o.height??0;n.push({nodeId:o.id,...we(s,r,i,a)})}return n}c.__name(Jo,"collectLayoutNodeRects");function io(t,e,n=Ft){const o=t.start,s=t.end;if(!o||!s)return;const r=e.get(o),i=e.get(s);if(!(!r||!i))return{srcId:o,dstId:s,srcInfo:r,dstInfo:i,collinearX:Math.abs(r.cx-i.cx)<n,collinearY:Math.abs(r.cy-i.cy)<n}}c.__name(io,"getNodePairGeometry");function wt(t,e,n,o=[],s=0){for(const r of n)if(!o.includes(r.id)&&on(t,e,r.rect,-s))return!0;return!1}c.__name(wt,"segmentHitsAnyRect");function co(t,e,n,o,s=Ft,r=1e-6){const i=ht(t,e,s),a=ft(t,e,s),l=ht(n,o,s),f=ft(n,o,s);if(i&&l||a&&f||!(i||a)||!(l||f))return!1;const g=i?{a:t,b:e}:{a:n,b:o},x=a?{a:t,b:e}:{a:n,b:o},M=g.a.y,u=Math.min(g.a.x,g.b.x),m=Math.max(g.a.x,g.b.x),d=x.a.x,y=Math.min(x.a.y,x.b.y),C=Math.max(x.a.y,x.b.y);if(d<u||d>m||M<y||M>C)return!1;const b=Math.abs(d-g.a.x)<r&&Math.abs(M-g.a.y)<r||Math.abs(d-g.b.x)<r&&Math.abs(M-g.b.y)<r,L=Math.abs(d-x.a.x)<r&&Math.abs(M-x.a.y)<r||Math.abs(d-x.b.x)<r&&Math.abs(M-x.b.y)<r;return!(b&&L)}c.__name(co,"orthogonalSegmentsCross");function Zo(t,e,n,o,s=Ft){const r=ht(t,e,s),i=ft(t,e,s),a=ht(n,o,s),l=ft(n,o,s);return i&&l&&ft(t,n,s)?zt(t.y,e.y,n.y,o.y)>s:r&&a&&ht(t,n,s)?zt(t.x,e.x,n.x,o.x)>s:!1}c.__name(Zo,"sameAxisSegmentsOverlap");function Ke(t,e,n,o,{epsilon:s=Ft,skipDegenerateOther:r=!1}={}){for(const i of n){if(i===o||i.isLayoutOnly)continue;const a=i.points;if(!(!a||a.length<2))for(let l=0;l<a.length-1;l++){const f=a[l],g=a[l+1];if(!(r&&oe(f,g,s))&&(co(t,e,f,g,s)||Zo(t,e,f,g,s)))return!0}}return!1}c.__name(Ke,"segmentConflictsWithAnyEdge");function le(t,e,n,o,s=Ft){const r=ht(t,e,s),i=ft(t,e,s),a=ht(n,o,s),l=ft(n,o,s);if(!(r&&l||i&&a))return!1;const f=r?{a:t,b:e}:{a:n,b:o},g=r?{a:n,b:o}:{a:t,b:e},x=f.a.y,M=Math.min(f.a.x,f.b.x),u=Math.max(f.a.x,f.b.x),m=g.a.x,d=Math.min(g.a.y,g.b.y),y=Math.max(g.a.y,g.b.y);return m>M+s&&m<u-s&&x>d+s&&x<y-s}c.__name(le,"orthogonalSegmentsStrictlyCross");function vn(t,e,n){const o=Math.min(e,n),s=Math.max(e,n);return t>o+Ft&&t<s-Ft}c.__name(vn,"strictlyBetween");function Qo(t,e,n){return ft(t,e)&&ft(e,n)?vn(e.y,t.y,n.y):ht(t,e)&&ht(e,n)?vn(e.x,t.x,n.x):!1}c.__name(Qo,"isCollinearIntermediate");function ts(t){let e=!1;const n=[];for(let o=0;o<t.length;o++){const s=n[n.length-1],r=t[o],i=o+1<t.length?t[o+1]:void 0;if(s&&i){if(oe(s,i)){o++,e=!0;continue}if(Qo(s,r,i)){e=!0;continue}}n.push(r)}return{points:n,changed:e}}c.__name(ts,"simplifyPolylineOnce");function qe(t){const e=[t[0]];for(let o=1;o<t.length;o++){const s=e[e.length-1],r=t[o];if(!ft(s,r)&&!ht(s,r)){const i=e.length>=2?e[e.length-2]:void 0,l=(i?ft(i,s):!1)?{x:s.x,y:r.y}:{x:r.x,y:s.y};e.push(l)}e.push(r)}const n=[];for(const o of e){const s=n[n.length-1];(!s||!oe(s,o))&&n.push(o)}return n}c.__name(qe,"orthogonalizePolyline");function ae(t){if(t.length<3)return t;let e=[...t];for(let n=0;n<32;n++){const o=ts(e);if(e=o.points,!o.changed)break}return e}c.__name(ae,"simplifyPolyline");var nt=.001,Er=.5,Eo=4;function ao(t,e,n){const o=t;if(o.isLayoutOnly||!o.points||o.points.length<n)return;const s=o.start?e.get(o.start):void 0,r=o.end?e.get(o.end):void 0;return{edge:o,points:o.points,srcRect:s?qt(s):void 0,dstRect:r?qt(r):void 0}}c.__name(ao,"endpointContextFor");function es(t,e,n){if(ht(t,e,nt))return{x:t.x<n.left?n.left:n.right,y:t.y};if(ft(t,e,nt)){const o=t.y<n.top?n.top:n.bottom;return{x:t.x,y:o}}return{x:Math.min(n.right,Math.max(n.left,t.x)),y:Math.min(n.bottom,Math.max(n.top,t.y))}}c.__name(es,"segmentEnterPoint");function Ln(t,e,n){const o=n?1:-1;let s=n?0:t.length-1;for(;s>=0&&s<t.length&&oo(t[s],e,Er);)s+=o;if(s<0||s>=t.length)return t;const r=s-o;if(r<0||r>=t.length)return t;const i=es(t[s],t[r],e);return n?[i,...t.slice(s)]:[...t.slice(0,s+1),i]}c.__name(Ln,"clipEndpoint");function ns(t,e){for(const n of t){const o=ao(n,e,2);if(!o)continue;let s=[...o.points];o.srcRect&&(s=Ln(s,o.srcRect,!0)),o.dstRect&&(s=Ln(s,o.dstRect,!1)),s=ae(qe(s)),s=lo(s,o.srcRect,o.dstRect),o.edge.points=ae(qe(s))}}c.__name(ns,"clipEdgeEndpointsToNodeBoundaries");function Tn(t,e,n,o=!1){if(ht(t,e,nt)){if(e.y<n.top-nt||e.y>n.bottom+nt)return e;if(o){if(t.x<n.left-nt)return{x:n.left,y:t.y};if(t.x>n.right+nt)return{x:n.right,y:t.y}}return{x:Math.abs(e.x-n.left)<=Math.abs(e.x-n.right)?n.left:n.right,y:t.y}}if(ft(t,e,nt)){if(e.x<n.left-nt||e.x>n.right+nt)return e;if(o){if(t.y<n.top-nt)return{x:t.x,y:n.top};if(t.y>n.bottom+nt)return{x:t.x,y:n.bottom}}const s=Math.abs(e.y-n.top)<=Math.abs(e.y-n.bottom);return{x:t.x,y:s?n.top:n.bottom}}return e}c.__name(Tn,"snapEndpointToBoundary");function Je(t,e,n){const o=t[e];for(let s=e+n;s>=0&&s<t.length;s+=n){const r=t[s];if(!oe(r,o,nt))return r}return t[e+n]}c.__name(Je,"firstDistinctAdjacent");function Ze(t,e){const n=t+Eo,o=e-Eo;return n<=o?{lo:n,hi:o}:{lo:(t+e)/2,hi:(t+e)/2}}c.__name(Ze,"cornerClearanceRange");function En(t,e,n){const{lo:o,hi:s}=Ze(e,n);return Math.min(s,Math.max(o,t))}c.__name(En,"clampToCornerClearance");function os(t){const e=Math.max(...t.map(o=>o.lo)),n=Math.min(...t.map(o=>o.hi));if(!(e>n))return{lo:e,hi:n}}c.__name(os,"intersectRanges");function wn(t,e){return e==="left"||e==="right"?Ze(t.top,t.bottom):Ze(t.left,t.right)}c.__name(wn,"clearanceRangeForSide");function Qe(t,e,n){const o=t.y>=n.top-nt&&t.y<=n.bottom+nt,s=t.x>=n.left-nt&&t.x<=n.right+nt;if(ht(t,e,nt)&&o){if(Math.abs(t.x-n.left)<nt)return"left";if(Math.abs(t.x-n.right)<nt)return"right"}if(ft(t,e,nt)&&s){if(Math.abs(t.y-n.top)<nt)return"top";if(Math.abs(t.y-n.bottom)<nt)return"bottom"}}c.__name(Qe,"terminalSideForSegment");function Ne(t){return t==="left"||t==="right"}c.__name(Ne,"isHorizontalSide");function ss(t,e,n,o,s){const r=[],i=n?Qe(t,e,n):void 0,a=o?Qe(e,t,o):void 0;return n&&i&&Ne(i)===s&&r.push(wn(n,i)),o&&a&&Ne(a)===s&&r.push(wn(o,a)),r.length>0?os(r):void 0}c.__name(ss,"straightClearanceRange");function An(t,e,n,o,s){const r=ss(t,e,n,o,s);if(!r)return;const i=s?t.y:t.x,a=Math.min(r.hi,Math.max(r.lo,i));if(!(Math.abs(a-i)<nt))return s?[{x:t.x,y:a},{x:e.x,y:a}]:[{x:a,y:t.y},{x:a,y:e.y}]}c.__name(An,"clearStraightEndpointCornerAxis");function lo(t,e,n){if(t.length!==2)return t;const[o,s]=t;return ht(o,s,nt)?An(o,s,e,n,!0)??t:ft(o,s,nt)?An(o,s,e,n,!1)??t:t}c.__name(lo,"clearStraightEndpointCornerConnections");function rs(t,e,n){return Ne(n)?{x:t.x,y:En(t.y,e.top,e.bottom)}:{x:En(t.x,e.left,e.right),y:t.y}}c.__name(rs,"cornerClearedEndpoint");function is(t,e,n,o,s,r){const i=t.map(a=>({...a}));for(let a=e;a>=0&&a<t.length;a+=n){const l=t[a];if(r&&!ht(l,o,nt)||!r&&!ft(l,o,nt))break;r?i[a].y=s.y:i[a].x=s.x}return i}c.__name(is,"moveCollinearEndpointRun");function Rn(t,e,n){if(t.length<2)return t;const o=n?0:t.length-1,s=n?1:-1,r=t[o],i=Je(t,o,s);if(!i)return t;const a=Qe(r,i,e);if(!a)return t;const l=Ne(a),f=rs(r,e,a);return oe(r,f,nt)?t:is(t,o,s,r,f,l)}c.__name(Rn,"clearEndpointCornerConnection");function Nn(t,e,n){const o=Math.min(t.x,e.x)>=n.left-nt&&Math.max(t.x,e.x)<=n.right+nt,s=Math.min(t.y,e.y)>=n.top-nt&&Math.max(t.y,e.y)<=n.bottom+nt;if(Math.abs(t.y-n.top)<nt&&Math.abs(e.y-n.top)<nt&&o)return"top";if(Math.abs(t.y-n.bottom)<nt&&Math.abs(e.y-n.bottom)<nt&&o)return"bottom";if(Math.abs(t.x-n.left)<nt&&Math.abs(e.x-n.left)<nt&&s)return"left";if(Math.abs(t.x-n.right)<nt&&Math.abs(e.x-n.right)<nt&&s)return"right"}c.__name(Nn,"borderSideForSegment");function On(t,e,n,o){switch(t){case"top":return ft(e,n,nt)&&n.y<o.top-nt;case"bottom":return ft(e,n,nt)&&n.y>o.bottom+nt;case"left":return ht(e,n,nt)&&n.x<o.left-nt;case"right":return ht(e,n,nt)&&n.x>o.right+nt}}c.__name(On,"leavesOutward");function Pn(t,e,n){if(t.length<3)return t;if(n){const r=Nn(t[0],t[1],e);return r&&On(r,t[1],t[2],e)?t.slice(1):t}const o=t.length-1,s=Nn(t[o-1],t[o],e);return s&&On(s,t[o-1],t[o-2],e)?t.slice(0,o):t}c.__name(Pn,"collapseOwnBorderStub");function cs(t,e,n){let o=t;if(e){const r=Je(o,0,1);if(r){const i=Tn(r,o[0],e);i!==o[0]&&(o=[i,...o.slice(1)])}o=Pn(o,e,!0)}if(n){const r=o.length-1,i=Je(o,r,-1);if(i){const a=Tn(i,o[r],n,!0);a!==o[r]&&(o=[...o.slice(0,r),a])}o=Pn(o,n,!1)}const s=lo(o,e,n);return s!==o||o.length===2?s:(e&&(o=Rn(o,e,!0)),n&&(o=Rn(o,n,!1)),o)}c.__name(cs,"snapAndCollapseEndpoints");function Bn(t,e){for(const n of t){const o=ao(n,e,2);if(!o)continue;const s=mt(o.points,nt),r=cs(s,o.srcRect,o.dstRect);if(r.length<3){o.edge.points=r;continue}const i=[r[0],{...r[0]},...r.slice(1,-1),r[r.length-1],{...r[r.length-1]}];o.edge.points=i}}c.__name(Bn,"prepareEdgeEndpointsForRenderer");function fo(t){return new Map(t.map(e=>[e.id,e]))}c.__name(fo,"buildNodeMap");function as(t,e){let n=t.parentId,o=null;for(;n;){const s=e.get(n);if(!s?.isGroup)break;o=s.id,n=s.parentId}return o}c.__name(as,"resolveTopLevelGroupId");function kn(t,e){let n=0,o=t.parentId;for(;o;){const s=e.get(o);if(!s?.isGroup)break;n++,o=s.parentId}return n}c.__name(kn,"groupDepth");function uo(t){let e=1/0,n=-1/0,o=1/0,s=-1/0;for(const r of t){const i=r.x,a=r.y;if(typeof i!="number"||typeof a!="number")continue;const l=r.width??0,f=r.height??0;e=Math.min(e,i-l/2),n=Math.max(n,i+l/2),o=Math.min(o,a-f/2),s=Math.max(s,a+f/2)}return e===1/0||o===1/0?null:{minX:e,maxX:n,minY:o,maxY:s}}c.__name(uo,"boundsForChildren");function ls(t,e){const n=t.padding??20;t.x=(e.minX+e.maxX)/2,t.y=(e.minY+e.maxY)/2,t.width=Math.max(0,e.maxX-e.minX)+n,t.height=Math.max(0,e.maxY-e.minY)+n}c.__name(ls,"applyGroupBounds");function fs(t){const e=fo(t),n=t.filter(o=>o.isGroup&&o.parentId).sort((o,s)=>kn(s,e)-kn(o,e));for(const o of n){const s=t.filter(i=>i.parentId===o.id),r=uo(s);r&&ls(o,r)}}c.__name(fs,"recomputeNestedGroupBounds");function tn(t,e){const n=t.nodes??[],o=t.edges??[],s=n.filter(l=>!l.isGroup);let r=1/0,i=-1/0;for(const l of s){const f=l[e];typeof f=="number"&&(r=Math.min(r,f),i=Math.max(i,f))}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;const a=c.__name(l=>r+i-l,"mirror");for(const l of n){const f=l[e];typeof f=="number"&&(l[e]=a(f));const g=l.groupTitleRect;g&&(l.groupTitleRect=e==="x"?{...g,left:a(g.right),right:a(g.left)}:{...g,top:a(g.bottom),bottom:a(g.top)})}for(const l of o)for(const f of l.points??[])f[e]=a(f[e]);return!0}c.__name(tn,"mirrorAxis");function ds(t){return(t.nodes??[]).some(n=>!n.isGroup)?tn(t,"y"):!0}c.__name(ds,"applyBtDirectionTransform");function us(t,e="LR"){const n=t.nodes??[],o=t.edges??[],s=n.filter(O=>!O.isGroup);let r=1/0,i=1/0;for(const O of s){const G=O.x??0,j=O.y??0;G<r&&(r=G),j<i&&(i=j)}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;const a=36;let l=0,f=0;for(const O of s)l+=O.width??0,f+=O.height??0;const g=l/s.length,x=f/s.length,M=x>0?Math.max(1,g/x):1;for(const O of s){const G=O.x??0,J=((O.y??0)-i)*M+a,dt=G-r;O.x=J,O.y=dt}for(const O of o)if(O.points)for(const G of O.points){const j=G.x,dt=(G.y-i)*M+a,pt=j-r;G.x=dt,G.y=pt}fs(n);const u=n.filter(O=>O.isGroup&&!O.parentId);if(u.length===0)return e==="RL"&&tn(t,"x"),!0;const m=fo(n),d=new Map;for(const O of n){if(O.isGroup)continue;const G=as(O,m);if(!G)continue;const j=d.get(G)??[];j.push(O),d.set(G,j)}let y=0;for(const O of u){const G=O.padding??0;G>y&&(y=G)}const C=[];let b=1/0,L=-1/0;for(const O of u){const G=d.get(O.id)??[],j=uo(G);j&&(b=Math.min(b,j.minX),L=Math.max(L,j.maxX),C.push({lane:O,contentTop:j.minY,contentBottom:j.maxY,centerY:(j.minY+j.maxY)/2}))}if(b===1/0||L===-1/0)return!0;const T=Math.max(0,L-b),p=Math.max(y,10),I=T+2*p,w=a+I,N=(b+L)/2-I/2-a,k=N+w/2,H=Math.max(y,a);C.sort((O,G)=>O.centerY-G.centerY);for(let O=0;O<C.length;O++){const G=C[O];let j,J;if(O===0?j=G.contentTop-H:j=(C[O-1].contentBottom+G.contentTop)/2,O===C.length-1)J=G.contentBottom+H;else{const Bt=C[O+1];J=(G.contentBottom+Bt.contentTop)/2}const dt=Math.max(0,J-j),pt=(j+J)/2;G.lane.x=k,G.lane.y=pt,G.lane.width=w,G.lane.height=dt,G.lane.swimlaneContentTop=G.contentTop,G.lane.groupTitleRect={left:N,right:N+a,top:j,bottom:J}}return e==="RL"&&tn(t,"x"),!0}c.__name(us,"applyLrDirectionTransform");var se=1e-6,wr=8,Ge=wr,Ar=[0,Ge,-Ge,2*Ge,-2*Ge];function hs(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e);for(const s of t){if(s.isLayoutOnly)continue;const r=s.points;if(!r||r.length<4)continue;const i=no(mt(r,se),se);if(!i)continue;const{p3:a}=i,l=i.kind==="HVH",f=io(s,n,se);if(!f)continue;const{srcId:g,dstId:x,srcInfo:M,dstInfo:u,collinearX:m,collinearY:d}=f;if(m||d)continue;let y;const C=M.rect;for(const b of Ar){let L,T,p;if(l){const k=u.cy>M.cy?C.bottom:C.top,H=M.cx+b;if(H<=C.left+se||H>=C.right-se)continue;L={x:H,y:k},T={x:H,y:a.y},p={x:a.x,y:a.y}}else{const k=u.cx>M.cx?C.right:C.left,H=M.cy+b;if(H<=C.top+se||H>=C.bottom-se)continue;L={x:k,y:H},T={x:a.x,y:H},p={x:a.x,y:a.y}}const I=oe(L,T,se),w=oe(T,p,se);if(I&&w||!I&&wt(L,T,o,[g],1)||!w&&wt(T,p,o,[x],1))continue;const A=!I&&Ke(L,T,t,s,{epsilon:se,skipDegenerateOther:!0}),B=!w&&Ke(T,p,t,s,{epsilon:se,skipDegenerateOther:!0});if(!(A||B)){I?y=[T,p]:w?y=[L,T]:y=[L,T,p];break}}y&&(s.points=y)}}c.__name(hs,"portSwapToLShape");function gs(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values());for(const a of t){if(a.isLayoutOnly)continue;const l=a.points;if(!l||l.length<4)continue;const f=mt(l,.001);if(f.length<4)continue;const g=f.length-1,x=f[g],M=f[g-1],u=f[g-2],m=x.x-M.x,d=x.y-M.y,y=Math.hypot(m,d);if(y>=10||y<.001)continue;const C=M.x-u.x,b=M.y-u.y;if(Math.hypot(C,b)<.001)continue;const T=Tt(M,x,.001),p=Et(M,x,.001),I=Tt(u,M,.001),w=Et(u,M,.001);if(!(T&&w||p&&I))continue;const A=a.end,B=a.start,N=A?e.get(A):void 0;if(!N)continue;const k=N.x??0,H=N.y??0,O=qt(N);if(!O)continue;let G,j;if(w){const W=b<0;G={x:k,y:u.y},j={x:k,y:W?O.bottom:O.top}}else{const W=C>0;G={x:u.x,y:H},j={x:W?O.right:O.left,y:H}}if(wt(G,j,r,A?[A]:[],-2)||wt(G,j,i,[],-2))continue;if(B){const W=e.get(B),et=W?qt(W):void 0;if(et&&oo(G,et,2))continue}const J=c.__name((W,et)=>`${W.x.toFixed(3)},${W.y.toFixed(3)}|${et.x.toFixed(3)},${et.y.toFixed(3)}`,"ownSegmentKey"),dt=new Set;for(let W=0;W<f.length-1;W++)dt.add(J(f[W],f[W+1]));const pt=c.__name((W,et)=>{for(const at of t){if(at===a||at.isLayoutOnly)continue;const gt=at.points;if(!(!gt||gt.length<2))for(let xt=0;xt<gt.length-1;xt++){const Ct=gt[xt],Vt=gt[xt+1];if(!dt.has(J(Ct,Vt))&&le(W,et,Ct,Vt,.001))return!0}}return!1},"segmentCrossesOtherEdge");if(pt(G,j))continue;if(g-3>=0){const W=f[g-3],et=[B,A].filter(at=>!!at);if(wt(W,G,r,et,-2)||pt(W,G))continue}const Ot=[...f.slice(0,g-2),G,j];a.points=Ot;const Q=a.labelNodeId;if(Q){const W=e.get(Q);if(W){const et=W.width??0,at=W.height??0;if(et>0&&at>0){let gt,xt,Ct=-1;for(let Vt=0;Vt<Ot.length-1;Vt++){const jt=Ot[Vt],Ut=Ot[Vt+1],te=Math.hypot(Ut.x-jt.x,Ut.y-jt.y),Ie=ht(jt,Ut,.001),de=ft(jt,Ut,.001);(Ie&&te>=et+2||de&&te>=at+2)&&te>Ct&&(Ct=te,gt=(jt.x+Ut.x)/2,xt=(jt.y+Ut.y)/2)}gt!==void 0&&xt!==void 0&&(W.x=gt,W.y=xt)}}}}}c.__name(gs,"collapseShortTerminalStub");var Z=.001,kt=8,it=Ae,xn=c.__name((t,e)=>ft(t,e,Z)||ht(t,e,Z),"orthogonallyAligned");function ms(t,e){const s=c.__name((u,m)=>{const d=u.x??0,y=u.y??0,C=m.x-d,b=m.y-y;let L=(u.width??0)/2,T=(u.height??0)/2;return Math.abs(b)*L>Math.abs(C)*T?(b<0&&(T=-T),{x:d+(b===0?0:T*C/b),y:y+T}):(C<0&&(L=-L),{x:d+L,y:y+(C===0?0:L*b/C)})},"rectIntersect"),r=c.__name((u,m)=>{const d=mt(u.points??[]);if(d.length<2)return;const y=m?u.start:u.end,C=y?e.get(y):void 0,b=C?qt(C):void 0;if(!C||!y||!b)return;const L=m?d[0]:d[d.length-1],T=m?d[1]:d[d.length-2],p=s(C,L);let I=L;if(xn(T,p)&&(I=T),ft(p,I,Z))return{edge:u,edgeId:String(u.id??""),nodeId:y,atStart:m,orientation:"V",coord:p.x,min:Math.min(p.y,I.y),max:Math.max(p.y,I.y),boundary:p,railEnd:I,rect:b};if(ht(p,I,Z))return{edge:u,edgeId:String(u.id??""),nodeId:y,atStart:m,orientation:"H",coord:p.y,min:Math.min(p.x,I.x),max:Math.max(p.x,I.x),boundary:p,railEnd:I,rect:b}},"terminalLaneFor"),i=c.__name((u,m)=>Math.max(0,Math.min(u.max,m.max)-Math.max(u.min,m.min)),"projectedOverlapLength"),a=c.__name((u,m)=>u.nodeId!==m.nodeId||u.orientation!==m.orientation?!1:u.orientation==="H"?(Math.abs(u.boundary.x-u.rect.left)<1||Math.abs(u.boundary.x-u.rect.right)<1)&&ft(u.boundary,m.boundary,1):(Math.abs(u.boundary.y-u.rect.top)<1||Math.abs(u.boundary.y-u.rect.bottom)<1)&&ht(u.boundary,m.boundary,1),"sameTerminalFace"),l=c.__name((u,m)=>u.nodeId!==m.nodeId||u.orientation!==m.orientation?!1:i(u,m)>=kt&&Math.abs(u.coord-m.coord)<.5,"exactTerminalLaneConflict"),f=c.__name((u,m)=>{if(u.nodeId!==m.nodeId||u.orientation!==m.orientation||u.orientation!=="H"||u.atStart===m.atStart)return!1;const d=i(u,m);if(d<kt)return!1;const y=u.rect.bottom-u.rect.top;return d<y||d>2*y?!1:a(u,m)&&Math.abs(u.coord-m.coord)<16},"nearTerminalLaneConflict"),g=c.__name((u,m)=>{const d=mt(u.edge.points??[]);if(d.length<2)return;const y=u.orientation==="V"?{x:u.boundary.x+m,y:u.boundary.y}:{x:u.boundary.x,y:u.boundary.y+m},C=u.orientation==="V"?{x:u.railEnd.x+m,y:u.railEnd.y}:{x:u.railEnd.x,y:u.railEnd.y+m};if(!c.__name(()=>Math.abs(u.boundary.y-u.rect.top)<1||Math.abs(u.boundary.y-u.rect.bottom)<1?ht(y,u.boundary,Z)&&y.x>=u.rect.left+1&&y.x<=u.rect.right-1:Math.abs(u.boundary.x-u.rect.left)<1||Math.abs(u.boundary.x-u.rect.right)<1?ft(y,u.boundary,Z)&&y.y>=u.rect.top+1&&y.y<=u.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(u.atStart){const I=d.length>1&&oe(d[1],u.railEnd,Z),w=d.slice(I?2:1),A=w[0];return A&&!xn(A,C)?void 0:[y,C,...w]}const L=d.length>1&&oe(d[d.length-2],u.railEnd,Z),T=d.slice(0,L?-2:-1),p=T[T.length-1];if(!(p&&!xn(p,C)))return[...T,C,y]},"shiftedCandidate"),x=c.__name(u=>{const m=u.edge,d=mt(m.points??[]);if(d.length!==2)return!1;const y=m.start,C=m.end,b=y?e.get(y):void 0,L=C?e.get(C):void 0;if(!b||!L)return!1;const T=b.x??0,p=b.y??0,I=L.x??0,w=L.y??0,[A,B]=d;return ht(A,B,Z)&&Math.abs(p-w)<1&&Math.abs(T-I)>1||ft(A,B,Z)&&Math.abs(T-I)<1&&Math.abs(p-w)>1},"laneIsStraightCollinearConnector"),M=[-7,7,-14,14,-21,21];for(let u=0;u<8;u++){const m=t.filter(y=>!y.isLayoutOnly).flatMap(y=>[r(y,!0),r(y,!1)]).filter(y=>!!y);let d=!1;for(let y=0;y<m.length&&!d;y++)for(let C=y+1;C<m.length&&!d;C++){const b=m[y],L=m[C];if(b.edge===L.edge||!(l(b,L)||f(b,L)))continue;const T=!l(b,L),p=[b,L].sort((I,w)=>{const A=x(I),B=x(w);return A!==B?Number(A)-Number(B):+!w.atStart-+!I.atStart});for(const I of p){for(const w of M){const A=g(I,w);if(!A)continue;const B=r({...I.edge,points:A},I.atStart);if(!(!B||m.some(N=>N.edge!==I.edge&&(l(B,N)||T&&f(B,N))))){I.edge.points=A,d=!0;break}}if(d)break}}if(!d)return}}c.__name(ms,"separateSharedRenderedTerminalLanes");function ps(t,e){const{realNodeRects:o,labelNodeRects:s}=pe(e.values()),r=c.__name((a,l)=>{const f=a.start,g=a.end,x=it(l);if(x.length!==l.length-1)return!1;const M=[f,g].filter(u=>!!u);for(const u of x)if(wt(u.a,u.b,o,M,-2)||wt(u.a,u.b,s,[],-2))return!1;for(const u of t){if(u===a||u.isLayoutOnly)continue;const m=u.points;if(!(!m||m.length<2)){for(const d of x)for(const y of it(mt(m)))if(ce(d,y,.5)>=kt||le(d.a,d.b,y.a,y.b,Z))return!1}}return!0},"candidateIsSafe"),i=c.__name((a,l)=>{if(l+4>=a.length)return;const f=a[l],g=a[l+1],x=a[l+2],M=a[l+3],u=a[l+4],m=Tt(f,g)&&Et(g,x)&&Tt(x,M)&&Et(M,u)&&ft(f,M,Z)&&ft(f,u,Z)&&ft(g,x,Z)&&(g.x-f.x)*(M.x-x.x)<0,d=Et(f,g)&&Tt(g,x)&&Et(x,M)&&Tt(M,u)&&ht(f,M,Z)&&ht(f,u,Z)&&ht(g,x,Z)&&(g.y-f.y)*(M.y-x.y)<0;if(m||d)return mt([...a.slice(0,l+1),u,...a.slice(l+5)]);if(l+5>=a.length)return;const y=a[l+5],C=Et(f,g)&&Tt(g,x)&&Et(x,M)&&Tt(M,u)&&Et(u,y)&&ft(f,u,Z)&&ft(f,y,Z)&&ft(x,M,Z)&&(x.x-g.x)*(u.x-M.x)<0,b=Tt(f,g)&&Et(g,x)&&Tt(x,M)&&Et(M,u)&&Tt(u,y)&&ht(f,u,Z)&&ht(f,y,Z)&&ht(x,M,Z)&&(x.y-g.y)*(u.y-M.y)<0;if(!(!C&&!b))return mt([...a.slice(0,l+1),y,...a.slice(l+6)])},"withoutDogleg");for(let a=0;a<8;a++){let l=!1;for(const f of t){if(f.isLayoutOnly)continue;const g=mt(f.points??[]);for(let x=0;x<=g.length-5;x++){const M=i(g,x);if(!(!M||!r(f,M))){f.points=M,l=!0;break}}if(l)break}if(!l)return}}c.__name(ps,"collapseRedundantRectangularDoglegs");function Fn(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values()),a=t.filter(m=>!m.isLayoutOnly),l=c.__name((m,d,y)=>mt(m===d?y??[]:m.points??[]),"pointsFor"),f=c.__name((m,d)=>{let y=0;for(let C=0;C<a.length;C++){const b=it(l(a[C],m,d));for(let L=C+1;L<a.length;L++){const T=it(l(a[L],m,d));for(const p of b)for(const I of T)le(p.a,p.b,I.a,I.b,Z)&&y++}}return y},"strictCrossingCount"),g=c.__name(m=>{const d=it(m);if(d.length!==3)return;const y=d[1];if(!(d[0].horizontal===y.horizontal||d[2].horizontal===y.horizontal))return{index:y.index,horizontal:y.horizontal,vertical:y.vertical,segment:y}},"middleRail"),x=c.__name((m,d)=>{const y=[m.start,m.end].filter(C=>!!C);return r.filter(C=>{if(y.includes(C.id))return!1;const b=C.rect;return d.horizontal?zt(d.a.x,d.b.x,b.left,b.right)>=kt&&d.a.y>=b.top-2&&d.a.y<=b.bottom+2:zt(d.a.y,d.b.y,b.top,b.bottom)>=kt&&d.a.x>=b.left-2&&d.a.x<=b.right+2})},"blockingRectsFor"),M=c.__name((m,d,y)=>{const C=m.map(L=>({...L}));if(d.horizontal)C[d.index].y=y,C[d.index+1].y=y;else if(d.vertical)C[d.index].x=y,C[d.index+1].x=y;else return;const b=ae(mt(C));return it(b).length===b.length-1?b:void 0},"candidateByMovingRail"),u=c.__name((m,d,y)=>{const C=[m.start,m.end].filter(L=>!!L),b=it(d);if(b.length!==d.length-1)return!1;for(const L of b)if(wt(L.a,L.b,r,C,-2)||wt(L.a,L.b,i,[],-2))return!1;for(const L of a)if(L!==m){for(const T of b)for(const p of it(l(L)))if(ce(T,p,.5)>=kt)return!1}return f(m,d)<=y},"candidateIsSafe");for(let m=0;m<8;m++){const d=f();let y=!1;for(const C of a){const b=l(C),L=g(b);if(!L)continue;const T=x(C,L.segment);if(T.length===0)continue;const p=L.horizontal?[Math.min(...T.map(I=>I.rect.top))-20,Math.max(...T.map(I=>I.rect.bottom))+20]:[Math.min(...T.map(I=>I.rect.left))-20,Math.max(...T.map(I=>I.rect.right))+20];for(const I of p){const w=M(b,L.segment,I);if(!(!w||!u(C,w,d))){C.points=w,y=!0;break}}if(y)break}if(!y)return}}c.__name(Fn,"liftObstacleHuggingSameSideRails");function Dn(t,e){const o=c.__name(l=>{const f=l.groupTitleRect;if(!(!f||typeof f.left!="number"||typeof f.right!="number"||typeof f.top!="number"||typeof f.bottom!="number"||!Number.isFinite(f.left)||!Number.isFinite(f.right)||!Number.isFinite(f.top)||!Number.isFinite(f.bottom)||f.right<=f.left||f.bottom<=f.top))return{left:f.left,right:f.right,top:f.top,bottom:f.bottom}},"validTitleRect"),s=c.__name(l=>{if(!l.isGroup||l.parentId)return;const f=l.direction,g=typeof f=="string"?f.toUpperCase():"";if(g==="LR"||g==="RL"||g==="BT")return;const x=o(l),M=l.y,u=l.height;if(!x||typeof M!="number"||typeof u!="number"||!Number.isFinite(M)||!Number.isFinite(u)||u<=0)return;const m=x.right-x.left,d=x.bottom-x.top;if(!(d<=0||m<d))return{node:l,rect:x}},"topLaneTitleFor"),r=c.__name((l,f)=>{if(!l.horizontal)return!1;const g=l.a.y;return g<=f.top+Z||g>=f.bottom-Z?!1:zt(l.a.x,l.b.x,f.left,f.right)>=kt},"horizontalSegmentIntersectsTitle"),i=[...e.values()].map(s).filter(l=>!!l);if(i.length===0)return;let a=0;for(const l of t){if(l.isLayoutOnly)continue;const f=mt(l.points??[]);for(const g of it(f))for(const x of i)r(g,x.rect)&&(a=Math.max(a,x.rect.bottom-g.a.y+4))}if(!(a<=Z))for(const l of i){const f=l.node.y,g=l.node.height;typeof f!="number"||typeof g!="number"||!Number.isFinite(f)||!Number.isFinite(g)||g<=0||(l.node.y=f-a/2,l.node.height=g+a,l.node.groupTitleRect={...l.rect,top:l.rect.top-a,bottom:l.rect.bottom-a})}}c.__name(Dn,"liftTopLaneTitleBandsAboveRails");function Hn(t,e){const o=c.__name(f=>{const 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{left:g.left,right:g.right,top:g.top,bottom:g.bottom}},"validTitleRect"),s=c.__name(f=>{if(!f.isGroup||f.parentId||f.direction!=="LR")return;const x=o(f),M=f.x,u=f.width;if(!x||typeof M!="number"||typeof u!="number"||!Number.isFinite(M)||!Number.isFinite(u)||u<=0)return;const m=x.right-x.left,d=x.bottom-x.top;if(!(m<=0||d<m))return{node:f,rect:x}},"leftLaneTitleFor"),r=c.__name((f,g)=>{if(!f.vertical)return!1;const x=f.a.x;return x<=g.left+Z||x>=g.right-Z?!1:zt(f.a.y,f.b.y,g.top,g.bottom)>=kt},"verticalSegmentIntersectsTitle"),i=c.__name((f,g)=>{if(!f.horizontal)return!1;const x=f.a.y;return x<=g.top+Z||x>=g.bottom-Z?!1:zt(f.a.x,f.b.x,g.left,g.right)>=kt},"horizontalSegmentIntersectsTitle"),a=[...e.values()].map(s).filter(f=>!!f);if(a.length===0)return;let l=0;for(const f of t){if(f.isLayoutOnly)continue;const g=mt(f.points??[]);for(const x of it(g))for(const M of a)if(r(x,M.rect))l=Math.max(l,M.rect.right-x.a.x+4);else if(i(x,M.rect)){const u=Math.min(x.a.x,x.b.x);l=Math.max(l,M.rect.right-u+4)}}if(!(l<=Z))for(const f of a){const g=f.node.x,x=f.node.width;typeof g!="number"||typeof x!="number"||!Number.isFinite(g)||!Number.isFinite(x)||x<=0||(f.node.x=g-l/2,f.node.width=x+l,f.node.groupTitleRect={...f.rect,left:f.rect.left-l,right:f.rect.right-l})}}c.__name(Hn,"shiftLeftLaneTitleBandsLeftOfRails");function ys(t,e){const{realNodeRects:o}=pe(e.values()),s=t.filter(m=>!m.isLayoutOnly),r=c.__name((m,d=new Map)=>mt(d.get(m)??m.points??[]),"replacementPointsFor"),i=c.__name((m=new Map)=>{let d=0;for(let y=0;y<s.length;y++){const C=it(r(s[y],m));for(let b=y+1;b<s.length;b++){const L=it(r(s[b],m));for(const T of C)for(const p of L)le(T.a,T.b,p.a,p.b,Z)&&d++}}return d},"crossingCount"),a=c.__name((m=new Map)=>s.reduce((d,y)=>d+Qt(r(y,m)),0),"totalBends"),l=c.__name(m=>{const d=r(m);if(d.length<4)return;const y=d[d.length-2],C=d[d.length-1];if(!(!Tt(y,C,Z)&&!Et(y,C,Z)))return{tailStart:y,terminal:C}},"terminalTailFor"),f=c.__name((m,d)=>{const y=r(m);if(y.length<3)return;const C=y[0],b=y[1];let L;if(Tt(C,b,Z))L={x:b.x,y:d.tailStart.y};else if(Et(C,b,Z))L={x:d.tailStart.x,y:b.y};else return;const T=ae(mt([C,b,L,d.tailStart,d.terminal]));return it(T).length===T.length-1?T:void 0},"candidateWithDestinationTail"),g=c.__name((m,d)=>{const y=[m.start,m.end].filter(C=>!!C);for(const C of it(d))if(wt(C.a,C.b,o,y,-2))return!0;return!1},"pathHasNodeHit"),x=c.__name((m,d,y)=>{for(const C of s)if(C!==m){for(const b of it(d))for(const L of it(r(C,y)))if(ce(b,L,.5)>=kt)return!0}return!1},"pathHasSharedTrack"),M=c.__name((m,d,y)=>!g(m,d)&&!x(m,d,y),"candidateIsSafe"),u=c.__name(()=>{const m=new Map;for(const d of s){const y=d.end;if(!y||!e.has(y)||r(d).length<4)continue;const b=m.get(y)??[];b.push(d),m.set(y,b)}return m},"edgesByDestination");for(let m=0;m<4;m++){const d=i();if(d===0)return;const y=a();let C,b=d,L=y;for(const T of u().values())for(let p=0;p<T.length;p++)for(let I=p+1;I<T.length;I++){const w=T[p],A=T[I],B=l(w),N=l(A);if(!B||!N)continue;const k=f(w,N),H=f(A,B);if(!k||!H)continue;const O=new Map([[w,k],[A,H]]);if(!M(w,k,O)||!M(A,H,O))continue;const G=i(O),j=a(O);G>=d||G>b||G===b&&j>=L||(C=O,b=G,L=j)}if(!C)return;for(const[T,p]of C)T.points=p}}c.__name(ys,"swapDestinationTerminalTailsToReduceCrossings");function xs(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values()),a=t.filter(T=>!T.isLayoutOnly),l=c.__name((T,p=new Map)=>mt(p.get(T)??T.points??[]),"replacementPointsFor"),f=c.__name((T=new Map)=>{let p=0;for(let I=0;I<a.length;I++){const w=it(l(a[I],T));for(let A=I+1;A<a.length;A++){const B=it(l(a[A],T));for(const N of w)for(const k of B)le(N.a,N.b,k.a,k.b,Z)&&p++}}return p},"strictCrossingCount"),g=c.__name((T=new Map)=>a.reduce((p,I)=>p+Qt(l(I,T)),0),"totalBends"),x=c.__name(T=>{const p=T.start,I=T.end,w=p?e.get(p):void 0,A=I?e.get(I):void 0,B=w?qt(w):void 0,N=A?qt(A):void 0;return B&&N?{src:B,dst:N}:void 0},"endpointRectsFor"),M=c.__name((T,p,I)=>{if(I.index<=0||I.index+1>=p.length-1)return;const w=x(T);if(w){if(I.vertical){const A=I.a.x,B=Math.min(w.src.left,w.dst.left),N=Math.max(w.src.right,w.dst.right),k=A<B-Z?"left":A>N+Z?"right":void 0;return k?{edge:T,points:p,segmentIndex:I.index,axis:"vertical",side:k,coord:A,min:Math.min(I.a.y,I.b.y),max:Math.max(I.a.y,I.b.y)}:void 0}if(I.horizontal){const A=I.a.y,B=Math.min(w.src.top,w.dst.top),N=Math.max(w.src.bottom,w.dst.bottom),k=A<B-Z?"top":A>N+Z?"bottom":void 0;return k?{edge:T,points:p,segmentIndex:I.index,axis:"horizontal",side:k,coord:A,min:Math.min(I.a.x,I.b.x),max:Math.max(I.a.x,I.b.x)}:void 0}}},"externalRailForSegment"),u=c.__name(()=>{const T=[];for(const p of a){const I=l(p);for(const w of it(I)){const A=M(p,I,w);A&&T.push(A)}}return T},"collectExternalRails"),m=c.__name((T,p)=>T.edge!==p.edge&&T.axis===p.axis&&T.side===p.side&&zt(T.min,T.max,p.min,p.max)>=kt,"railsInteract"),d=c.__name(T=>{const p=[],I=new Set;for(const w of T){if(I.has(w))continue;const A=[w],B=[];for(I.add(w);A.length>0;){const N=A.pop();B.push(N);for(const k of T)!I.has(k)&&m(N,k)&&(I.add(k),A.push(k))}B.length>1&&p.push(B)}return p},"connectedComponents"),y=c.__name(T=>{const p=[];for(const I of T)p.some(w=>Math.abs(w-I.coord)<Z)||p.push(I.coord);for(;p.length<T.length;){const I=Math.min(...p),w=Math.max(...p),A=T[0].side;p.push(A==="left"||A==="top"?I-12*(T.length-p.length):w+12*(T.length-p.length))}return p},"uniqueCoordsFor"),C=c.__name(T=>{const p=T.map(A=>A.coord),I=y(T),w=[];if(T.length<=6){const A=new Array(I.length).fill(!1),B=[],N=c.__name(()=>{if(B.length===T.length){B.some((k,H)=>Math.abs(k-p[H])>=Z)&&w.push([...B]);return}for(const[k,H]of I.entries())A[k]||(A[k]=!0,B.push(H),N(),B.pop(),A[k]=!1)},"visit");return N(),w}for(let A=0;A<p.length;A++)for(let B=A+1;B<p.length;B++){const N=[...p];[N[A],N[B]]=[N[B],N[A]],w.push(N)}return w},"coordinateAssignmentsFor"),b=c.__name((T,p)=>{const I=new Map;for(const[A,B]of T.entries()){const N=p[A],k=I.get(B.edge)??B.points.map(H=>({x:H.x,y:H.y}));B.axis==="vertical"?(k[B.segmentIndex].x=N,k[B.segmentIndex+1].x=N):(k[B.segmentIndex].y=N,k[B.segmentIndex+1].y=N),I.set(B.edge,k)}const w=new Map;for(const[A,B]of I){const N=ae(mt(B));if(it(N).length!==N.length-1)return;w.set(A,N)}return w},"replacementsForAssignment"),L=c.__name(T=>{for(const[p,I]of T){const w=[p.start,p.end].filter(A=>!!A);for(const A of it(I))if(wt(A.a,A.b,r,w,-2)||wt(A.a,A.b,i,[],-2))return!1}for(let p=0;p<a.length;p++){const I=a[p],w=T.has(I),A=it(l(I,T));for(let B=p+1;B<a.length;B++){const N=a[B];if(!w&&!T.has(N))continue;const k=it(l(N,T));for(const H of A)for(const O of k)if(ce(H,O,.5)>=kt)return!1}}return!0},"candidateIsSafe");for(let T=0;T<4;T++){const p=f();if(p===0)return;let I,w=p,A=g(),B=Number.POSITIVE_INFINITY;for(const N of d(u()))for(const k of C(N)){const H=b(N,k);if(!H||!L(H))continue;const O=f(H);if(O>=p)continue;const G=g(H),j=N.reduce((J,dt,pt)=>J+Math.abs(k[pt]-dt.coord),0);O>w||O===w&&(G>A||G===A&&j>=B)||(I=H,w=O,A=G,B=j)}if(!I)return;for(const[N,k]of I)N.points=k}}c.__name(xs,"reassignCrossingExternalRailChannels");function _s(t,e){const{realNodeRects:o,labelNodeRects:s}=pe(e.values()),r=t.filter(u=>!u.isLayoutOnly),i=c.__name((u,m,d)=>mt(u===m?d??[]:u.points??[]),"pointsFor"),a=c.__name(u=>it(u).reduce((m,d)=>{const y=d.a.x-d.b.x,C=d.a.y-d.b.y;return m+Math.hypot(y,C)},0),"pathLength"),l=c.__name((u,m)=>{let d=0;for(let y=0;y<r.length;y++){const C=it(i(r[y],u,m));for(let b=y+1;b<r.length;b++){const L=it(i(r[b],u,m));for(const T of C)for(const p of L)le(T.a,T.b,p.a,p.b,Z)&&d++}}return d},"strictCrossingCount"),f=c.__name((u,m)=>{if(u.horizontal){const d=u.a.y;return(Math.abs(d-m.top)<1||Math.abs(d-m.bottom)<1)&&zt(u.a.x,u.b.x,m.left,m.right)>=kt}if(u.vertical){const d=u.a.x;return(Math.abs(d-m.left)<1||Math.abs(d-m.right)<1)&&zt(u.a.y,u.b.y,m.top,m.bottom)>=kt}return!1},"segmentRunsAlongRectBorder"),g=c.__name(u=>{const m=[u.start,u.end].filter(y=>!!y),d=[];for(const y of m){const C=e.get(y),b=C?qt(C):void 0;b&&d.push(b)}return d},"endpointRectsFor"),x=c.__name((u,m)=>{if(m+3>=u.length)return[];const d=u[m],y=u[m+1],C=u[m+2],b=u[m+3],L=Tt(d,y,Z)&&Et(y,C,Z)&&Tt(C,b,Z),T=Et(d,y,Z)&&Tt(y,C,Z)&&Et(C,b,Z);if(!L&&!T)return[];if(!(L?Math.sign(y.x-d.x)!==Math.sign(b.x-C.x):Math.sign(y.y-d.y)!==Math.sign(b.y-C.y)))return[];const I=ft(d,b,Z)||ht(d,b,Z)?[]:[{x:d.x,y:b.y},{x:b.x,y:d.y}],w=I.length===0?[[...u.slice(0,m+1),...u.slice(m+3)]]:I.map(B=>[...u.slice(0,m+1),B,...u.slice(m+3)]),A=new Set;return w.map(B=>ae(mt(B))).filter(B=>{if(it(B).length!==B.length-1||!B.some(k=>oe(k,b,Z)))return!1;const N=B.map(k=>`${k.x.toFixed(3)},${k.y.toFixed(3)}`).join("|");return A.has(N)?!1:(A.add(N),!0)})},"shortcutCandidatesAt"),M=c.__name((u,m,d)=>{const y=[u.start,u.end].filter(b=>!!b),C=g(u);for(const b of it(m))if(wt(b.a,b.b,o,y,-2)||wt(b.a,b.b,s,[],-2)||C.some(L=>f(b,L)))return!1;for(const b of r)if(b!==u){for(const L of it(m))for(const T of it(i(b)))if(ce(L,T,.5)>=kt)return!1}return l(u,m)<=d},"candidateIsSafe");for(let u=0;u<8;u++){const m=l();let d,y,C=m,b=Number.POSITIVE_INFINITY,L=Number.POSITIVE_INFINITY;for(const T of r){const p=i(T),I=Qt(p,Z),w=a(p);for(let A=0;A<=p.length-4;A++)for(const B of x(p,A)){const N=Qt(B,Z),k=a(B);if(!(N<I||N===I&&k<w-Z)||!M(T,B,m))continue;const O=l(T,B);O>C||O===C&&(N>b||N===b&&k>=L)||(d=T,y=B,C=O,b=N,L=k)}}if(!d||!y)return;d.points=y}}c.__name(_s,"shortcutRedundantOrthogonalJogs");function bs(t,e){const i=[];for(const R of e.values()){if(R.isGroup||R.isEdgeLabel)continue;const F=R.x??0,D=R.y??0,V=qt(R);V&&i.push({id:String(R.id??""),cx:F,cy:D,rect:V})}if(i.length===0)return;const a=new Map(i.map(R=>[R.id,R])),l=i.map(R=>({id:R.id,rect:R.rect})),f=["top","bottom","left","right"],g={top:Math.min(...i.map(R=>R.rect.top))-20,bottom:Math.max(...i.map(R=>R.rect.bottom))+20,left:Math.min(...i.map(R=>R.rect.left))-20,right:Math.max(...i.map(R=>R.rect.right))+20},x=t.filter(R=>!R.isLayoutOnly),M=new Map(x.map((R,F)=>[R,F])),u=c.__name(R=>{const F=R==="left"||R==="top"?-1:1,D=[];for(let V=0;V<=2;V++)D.push(g[R]+F*20*V);return D},"outwardTracksForSide"),m=c.__name((R,F=new Map)=>mt(F.get(R)??R.points??[]),"replacementPointsFor"),d=c.__name((R,F)=>{let D=0;for(const V of R)for(const h of F)le(V.a,V.b,h.a,h.b,Z)&&D++;return D},"crossingCountBetweenSegments"),y=c.__name((R,F)=>d(it(R),it(F)),"crossingCountBetweenPaths"),C=c.__name((R=new Map)=>{let F=0;const D=[],V=new Set,h=[],_=c.__name(S=>{V.has(S)||(V.add(S),h.push(S))},"addEdge");for(let S=0;S<x.length;S++){const v=x[S],E=m(v,R);for(let P=S+1;P<x.length;P++){const U=x[P],q=y(E,m(U,R));q>0&&(F+=q,D.push({first:v,second:U,count:q}),_(v),_(U))}}return h.sort((S,v)=>(M.get(S)??0)-(M.get(v)??0)),{count:F,pairs:D,edgeSet:V,edges:h}},"crossingSnapshot"),b=c.__name((R,F)=>{const D=new Set(F.keys());if(D.size===0)return R.count;let V=0;for(const _ of R.pairs)(D.has(_.first)||D.has(_.second))&&(V+=_.count);let h=0;for(let _=0;_<x.length;_++){const S=x[_],v=D.has(S),E=m(S,F);for(let P=_+1;P<x.length;P++){const U=x[P];!v&&!D.has(U)||(h+=y(E,m(U,F)))}}return R.count-V+h},"crossingCountWithReplacements"),L=c.__name(R=>{const F=new Map;for(const h of R.pairs){const _=F.get(h.first)??new Set;_.add(h.second),F.set(h.first,_);const S=F.get(h.second)??new Set;S.add(h.first),F.set(h.second,S)}const D=[],V=new Set;for(const h of R.edges){if(V.has(h))continue;const _=[h],S=[];for(V.add(h);_.length>0;){const v=_.pop();S.push(v);for(const E of F.get(v)??[])V.has(E)||(V.add(E),_.push(E))}S.sort((v,E)=>(M.get(v)??0)-(M.get(E)??0)),S.length>1&&D.push(S)}return D},"crossingComponents"),T=c.__name(R=>[R.start,R.end].filter(F=>!!F),"endpointIdsFor"),p=c.__name(R=>{const F=[];for(const D of L(R)){const V=new Set(D),h=new Set(D.flatMap(S=>T(S))),_=[...D];for(const S of x)V.has(S)||T(S).some(v=>h.has(v))&&_.push(S);_.sort((S,v)=>(M.get(S)??0)-(M.get(v)??0)),F.push(_)}return F},"pairSearchGroups"),I=c.__name((R,F,D)=>b(R,new Map([[F,D]])),"crossingCountWithSingleReplacement"),w=c.__name(R=>{const F=new Map;for(const D of R.pairs)F.set(D.first,(F.get(D.first)??0)+D.count),F.set(D.second,(F.get(D.second)??0)+D.count);return F},"currentCrossingsByEdge"),A=c.__name(R=>R.slice(1).reduce((F,D,V)=>{const h=R[V];return F+Math.abs(D.x-h.x)+Math.abs(D.y-h.y)},0),"pathLength"),B=c.__name((R=new Map)=>x.reduce((F,D)=>F+Qt(m(D,R)),0),"totalBends"),N=c.__name((R=new Map)=>x.reduce((F,D)=>F+A(m(D,R)),0),"totalLength"),k=c.__name((R,F,D=new Map)=>{const V=it(F);for(const h of x)if(h!==R){for(const _ of V)for(const S of it(m(h,D)))if(ce(_,S,.5)>=kt)return!0}return!1},"pathHasSegmentConflict"),H=c.__name((R,F)=>{const D=[R.start,R.end].filter(V=>!!V);for(const V of it(F))if(wt(V.a,V.b,l,D,-2))return!0;return!1},"pathHitsNode"),O=c.__name((R,F)=>{const D=ae(mt(F));it(D).length===D.length-1&&R.push(D)},"pushOrthogonalCandidate"),G=c.__name(R=>R==="left"||R==="right","sideIsHorizontal"),j=c.__name((R,F,D)=>{switch(F){case"left":return Math.min(R.x,D.x)-20;case"right":return Math.max(R.x,D.x)+20;case"top":return Math.min(R.y,D.y)-20;case"bottom":return Math.max(R.y,D.y)+20}},"localTrackForSameSide"),J=c.__name((R,F,D,V)=>{const h=D==="left"||D==="top"?-1:1,_=[j(F,D,V),g[D]];for(const S of _)for(let v=0;v<=2;v++)O(R,ro(F,D,V,S+h*20*v))},"addSameSideCandidates"),dt=c.__name((R,F,D,V,h)=>{for(const _ of u(D))for(const S of u(h))O(R,[F,{x:_,y:F.y},{x:_,y:S},{x:V.x,y:S},V])},"addHorizontalToVerticalCandidates"),pt=c.__name((R,F,D,V,h)=>{for(const _ of u(D))for(const S of u(h))O(R,[F,{x:F.x,y:_},{x:S,y:_},{x:S,y:V.y},V])},"addVerticalToHorizontalCandidates"),Bt=c.__name((R,F,D,V,h)=>{const _=[...u("top"),...u("bottom")];for(const S of u(D))for(const v of u(h))for(const E of _)O(R,[F,{x:S,y:F.y},{x:S,y:E},{x:v,y:E},{x:v,y:V.y},V])},"addHorizontalPairCandidates"),Ot=c.__name((R,F,D,V,h)=>{const _=[...u("left"),...u("right")];for(const S of u(D))for(const v of u(h))for(const E of _)O(R,[F,{x:F.x,y:S},{x:E,y:S},{x:E,y:v},{x:V.x,y:v},V])},"addVerticalPairCandidates"),Q=c.__name(R=>{const F=new Set;return R.map(D=>mt(D)).filter(D=>{const V=D.map(h=>`${h.x.toFixed(3)},${h.y.toFixed(3)}`).join("|");return F.has(V)||D.length<2?!1:(F.add(V),!0)})},"dedupeCandidatePaths"),W=c.__name((R,F,D,V)=>{const h=[],_=so(R,F,D,V,20,Z);_&&O(h,_),F===V&&J(h,R,F,D);const S=G(F),v=G(V);return S&&!v?dt(h,R,F,D,V):!S&&v?pt(h,R,F,D,V):S?Bt(h,R,F,D,V):Ot(h,R,F,D,V),Q(h)},"buildCandidatesForSides"),et=c.__name((R,F,D,V)=>{const h=[...u("left"),...u("right")],_=[...u("top"),...u("bottom")];for(const S of f){const v=Me(V,S),E=S==="top"||S==="bottom"?u(S):_;for(const P of h){O(R,[F,D,{x:P,y:D.y},{x:P,y:v.y},v]);for(const U of E)O(R,[F,D,{x:P,y:D.y},{x:P,y:U},{x:v.x,y:U},v])}}},"addVerticalDepartureOuterTrackCandidates"),at=c.__name((R,F,D,V)=>{const h=[...u("left"),...u("right")],_=[...u("top"),...u("bottom")];for(const S of f){const v=Me(V,S),E=S==="left"||S==="right"?u(S):h;for(const P of _){O(R,[F,D,{x:D.x,y:P},{x:v.x,y:P},v]);for(const U of E)O(R,[F,D,{x:D.x,y:P},{x:U,y:P},{x:U,y:v.y},v])}}},"addHorizontalDepartureOuterTrackCandidates"),gt=c.__name(R=>{const F=R.start,D=R.end,V=D?a.get(D):void 0;if(!F||!V)return[];const h=mt(R.points??[]);if(h.length<4)return[];const _=h[0],S=h[1],v=[];return Et(_,S,Z)?et(v,_,S,V):Tt(_,S,Z)&&at(v,_,S,V),v},"terminalPreservingOuterTrackCandidates"),xt=c.__name(R=>{const F=R.start,D=R.end,V=F?a.get(F):void 0,h=D?a.get(D):void 0;if(!V||!h)return[];const _=[];for(const S of f){const v=Me(V,S);for(const E of f)_.push(...W(v,S,Me(h,E),E))}return _.push(...gt(R)),_},"candidatePathsFor"),Ct=c.__name(()=>new Map(x.map(R=>[R,it(m(R))])),"currentSegmentsByEdge"),Vt=c.__name((R,F,D)=>{const V=new Set;for(const h of x){if(h===R)continue;const _=D.get(h)??it(m(h));F.some(S=>_.some(v=>ce(S,v,.5)>=kt))&&V.add(h)}return V},"sharedTrackConflictsFor"),jt=c.__name((R,F,D,V)=>{const h=new Set;return xt(R).map(S=>ae(mt(S))).filter(S=>{if(H(R,S))return!1;const v=S.map(E=>`${E.x.toFixed(3)},${E.y.toFixed(3)}`).join("|");return h.has(v)||S.length<2?!1:(h.add(v),!0)}).map(S=>{const v=it(S);let E=0;for(const P of x)P!==R&&(E+=d(v,D.get(P)??it(m(P))));return{candidate:S,candidateSegments:v,crossings:F.count-(V.get(R)??0)+E,bends:Qt(S,Z),totalBends:Qt(S),length:A(S)}}).filter(({crossings:S})=>S<=F.count).sort((S,v)=>S.crossings-v.crossings||S.bends-v.bends||S.length-v.length).slice(0,48).map(S=>({path:S.candidate,segments:S.candidateSegments,sharedTrackConflicts:Vt(R,S.candidateSegments,D),totalBends:S.totalBends,length:S.length}))},"pairCandidatesFor"),Ut=c.__name((R,F,D,V,h,_)=>{let S=0;for(const E of R.pairs)(E.first===F||E.second===F||E.first===V||E.second===V)&&(S+=E.count);let v=d(D.segments,h.segments);for(const E of x){if(E===F||E===V)continue;const P=_.get(E)??it(m(E));v+=d(D.segments,P)+d(h.segments,P)}return R.count-S+v},"pairCrossingCount"),te=c.__name((R,F)=>{for(const D of R.sharedTrackConflicts)if(D!==F)return!1;return!0},"conflictsOnlyWith"),Ie=c.__name((R,F)=>R.segments.some(D=>F.segments.some(V=>ce(D,V,.5)>=kt)),"candidatesShareTrack"),de=c.__name((R,F,D,V)=>te(F,D.edge)&&te(V,R.edge)&&!Ie(F,V),"pairCandidatesAreCompatible"),Se=c.__name((R,F,D,V,h)=>{const _=Ut(R.current,F.edge,D,V.edge,h,R.baseSegments);if(!(_>=R.current.count))return{replacements:new Map([[F.edge,D.path],[V.edge,h.path]]),crossings:_,bends:R.currentBends-(R.baseBendsByEdge.get(F.edge)??0)-(R.baseBendsByEdge.get(V.edge)??0)+D.totalBends+h.totalBends,length:R.currentLength-(R.baseLengthByEdge.get(F.edge)??0)-(R.baseLengthByEdge.get(V.edge)??0)+D.length+h.length}},"scorePairReplacement"),an=c.__name((R,F)=>R.crossings<F.crossings||R.crossings===F.crossings&&(R.bends<F.bends||R.bends===F.bends&&R.length<F.length),"pairScoreIsBetter"),ln=c.__name((R,F,D,V)=>{let h=V;for(const _ of F.candidates)for(const S of D.candidates){if(!de(F,_,D,S))continue;const v=Se(R,F,_,D,S);v&&an(v,h)&&(h=v)}return h},"bestScoreForOptionPair"),fn=c.__name(R=>{const F=B(),D=N(),V=Ct(),h=w(R),_=new Map(x.map(q=>[q,Qt(m(q))])),S=new Map(x.map(q=>[q,A(m(q))])),v=new Map,E=p(R);for(const q of E)for(const z of q){if(v.has(z))continue;const Y=jt(z,R,V,h);Y.length>0&&v.set(z,{edge:z,candidates:Y})}let P={replacements:new Map,crossings:R.count,bends:F,length:D};const U={current:R,currentBends:F,currentLength:D,baseBendsByEdge:_,baseLengthByEdge:S,baseSegments:V};for(const q of E){const z=new Set(q.filter(ot=>R.edgeSet.has(ot))),Y=q.map(ot=>v.get(ot)).filter(ot=>!!ot);for(let ot=0;ot<Y.length;ot++){const rt=Y[ot];for(let st=ot+1;st<Y.length;st++){const tt=Y[st];!z.has(rt.edge)&&!z.has(tt.edge)||(P=ln(U,rt,tt,P))}}}return P.replacements.size>0?P.replacements:void 0},"bestPairedReplacement");for(let R=0;R<4;R++){const F=C(),D=F.count;if(D===0)return;let V,h,_=D,S=Number.POSITIVE_INFINITY;for(const E of F.edges){const P=Qt(m(E),Z);for(const U of xt(E)){const q=H(E,U),z=!q&&k(E,U),Y=I(F,E,U),ot=Qt(U,Z);q||z||!(Y<D||Y===D&&ot<P)||Y>_||Y===_&&ot>=S||(V=E,h=U,_=Y,S=ot)}}if(V&&h){V.points=h;continue}const v=fn(F);if(!v)return;for(const[E,P]of v)E.points=P}}c.__name(bs,"resolveRenderedOrthogonalCrossings");var me=.001,Rr=8;function Ms(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e),s=["top","bottom","left","right"],r=20,i={top:Math.min(...o.map(d=>d.rect.top))-r,bottom:Math.max(...o.map(d=>d.rect.bottom))+r,left:Math.min(...o.map(d=>d.rect.left))-r,right:Math.max(...o.map(d=>d.rect.right))+r},a=c.__name((d,y,C,b)=>{const L=[],T=so(d,y,C,b,r,me);return T&&L.push(T),y===b&&L.push(ro(d,y,C,i[y])),L},"buildOrthogonalPathCandidates"),l=c.__name((d,y)=>{for(let C=0;C<d.length-1;C++){const b=d[C],L=d[C+1];if(wt(b,L,o,y,1))return!0}return!1},"pathHitsNode"),f=c.__name((d,y,C=!1)=>{let b=0;const L=Ae(d,me),T=y.start,p=y.end;for(const I of t){if(I===y||I.isLayoutOnly)continue;const w=I.start,A=I.end;if(!C&&T&&p&&(w===T||w===p||A===T||A===p))continue;const B=I.points;if(!(!B||B.length<2))for(const N of L)for(const k of Ae(B,me)){if(co(N.a,N.b,k.a,k.b,me,me)){b++;continue}ce(N,k,me)>=Rr&&b++}}return b},"pathConflictCount"),g=4,x=c.__name((d,y)=>{const C=Math.abs(d.y-y.rect.top),b=Math.abs(d.y-y.rect.bottom),L=Math.abs(d.x-y.rect.left),T=Math.abs(d.x-y.rect.right);let p="top",I=C;return b<I&&(p="bottom",I=b),L<I&&(p="left",I=L),T<I&&(p="right",I=T),p},"nearestSideOfRect"),M=new Map,u=c.__name((d,y,C)=>{const b=M.get(d)??[];b.push({side:y,edgeId:C}),M.set(d,b)},"addFaceClaim");for(const d of t){if(d.isLayoutOnly)continue;const y=d.points??[];if(y.length<1)continue;const C=d.id??"",b=d.start,L=d.end;if(b){const T=n.get(b);T&&u(b,x(y[0],T),C)}if(L){const T=n.get(L);T&&u(L,x(y[y.length-1],T),C)}}const m=c.__name((d,y,C)=>M.get(d)?.some(b=>b.edgeId!==C&&b.side===y)??!1,"faceIsClaimed");for(const d of t){if(d.isLayoutOnly)continue;const y=d.points;if(!y||y.length<2)continue;const C=Qt(y,me);if(C<g)continue;const b=d.start,L=d.end;if(!b||!L)continue;const T=n.get(b),p=n.get(L);if(!T||!p)continue;const I=d.id??"",w=f(y,d,!0),A=f(y,d);let B,N=w,k=C;for(const H of s){if(m(b,H,I))continue;const O=Me(T,H);for(const G of s){if(m(L,G,I))continue;const j=Me(p,G);for(const J of a(O,H,j,G)){if(l(J,[b,L]))continue;const dt=Qt(J,me);if(w>0){const pt=f(J,d,!0);if(pt>N||pt===N&&dt>=k)continue;N=pt,k=dt,B=J;continue}f(J,d)>A||dt<k&&(k=dt,B=J)}}}if(B){d.points=B;const H=M.get(b);H&&M.set(b,H.filter(G=>G.edgeId!==I));const O=M.get(L);O&&M.set(L,O.filter(G=>G.edgeId!==I)),u(b,x(B[0],T),I),u(L,x(B[B.length-1],p),I)}}}c.__name(Ms,"simplifyDetouredEdges");var Kt=.001,wo=10,$e=7;function Xn(t,e){const n=e?0:t.length-1,o=e?1:-1,s=t[n],r=t[n+o];if(!s||!r)return;const i=r.x-s.x,a=r.y-s.y;if(!(Math.abs(i)+Math.abs(a)<Kt)){if(Math.abs(a)<=Kt){const f=s.x+Math.sign(i)*wo;return{left:Math.min(s.x,f),right:Math.max(s.x,f),top:s.y-$e,bottom:s.y+$e}}if(Math.abs(i)<=Kt){const f=s.y+Math.sign(a)*wo;return{left:s.x-$e,right:s.x+$e,top:Math.min(s.y,f),bottom:Math.max(s.y,f)}}return{left:Math.min(s.x,r.x),right:Math.max(s.x,r.x),top:Math.min(s.y,r.y),bottom:Math.max(s.y,r.y)}}}c.__name(Xn,"markerClearanceRectFor");function Is(t){return{left:Math.min(t.left,t.right),right:Math.max(t.left,t.right),top:Math.min(t.top,t.bottom),bottom:Math.max(t.top,t.bottom)}}c.__name(Is,"normalizeRect");function Yn(t,e){const n=mt(e),o=Xn(n,!0),s=Xn(n,!1);return[o,s].some(r=>r&&We(t,Is(r)))}c.__name(Yn,"labelOverlapsOwnMarker");function Ve(t,e){const n=[];for(const m of t){if(m.isLayoutOnly)continue;const d=m.points;if(!(!d||d.length<2))for(let y=0;y<d.length-1;y++)n.push({edgeId:m.id,p1:d[y],p2:d[y+1]})}const o=[],s=[];for(const m of e.values()){const d=m.isGroup,y=m.parentId;if(d&&!y){const b=qt(m);b&&s.push({id:m.id,rect:b});continue}if(d||m.isEdgeLabel)continue;const C=qt(m);C&&o.push({nodeId:m.id,rect:C})}const r=3,i=1,a=12,l=c.__name((m,d)=>{const y=Cn(d,r);for(const{nodeId:C,rect:b}of o)if(C!==m&&We(y,b))return!0;return!1},"labelOverlapsForeignNode"),f=c.__name((m,d)=>{const y=Cn(d,r);for(const C of n)if(C.edgeId!==m&&on(C.p1,C.p2,y))return!0;return!1},"labelOverlapsForeignEdge"),g=c.__name((m,d,y)=>l(m,y)||f(d,y),"labelOverlapsAnything"),x=[],M=c.__name(m=>{for(const{id:d,rect:y}of s)if(qo(y,m))return d},"findContainingLane"),u=c.__name((m,d)=>x.some(y=>y.labelId!==m&&We(d,y.rect)),"overlapsPlacedLabel");for(const m of t){if(m.isLayoutOnly)continue;const d=m.labelNodeId;if(!d)continue;const y=e.get(d);if(!y)continue;const C=m.points;if(!C||C.length<2)continue;const b=y.width??0,L=y.height??0;if(b<=0||L<=0)continue;const T=[];for(let Q=0;Q<C.length-1;Q++){const W=C[Q],et=C[Q+1],at=Math.abs(W.x-et.x),gt=Math.abs(W.y-et.y);at<Kt&&gt<Kt||at>=Kt&&gt>=Kt||T.push({idx:Q,length:at+gt,orientation:at>=Kt?"horizontal":"vertical",midX:(W.x+et.x)/2,midY:(W.y+et.y)/2})}if(T.length===0)continue;const p=T.length>=3?T.filter(Q=>Q.idx>0&&Q.idx<T.length-1):T,I=p.length>0?p:T,w=b>=L?"horizontal":"vertical",A=c.__name(Q=>[...Q].sort((W,et)=>{const at=W.orientation===w,gt=et.orientation===w;if(at!==gt)return at?-1:1;const xt=W.length>=(W.orientation==="horizontal"?b:L)+2,Ct=et.length>=(et.orientation==="horizontal"?b:L)+2;return xt!==Ct?xt?-1:1:et.length-W.length}),"rankSegments"),B=T[0],N=T[T.length-1],k=[.5,.25,.75,.05,.95,.15,.85,.1,.9],H=c.__name((Q,W)=>{const et=C[Q.idx],at=C[Q.idx+1];return{midX:et.x+(at.x-et.x)*W,midY:et.y+(at.y-et.y)*W}},"anchorAtT"),O=c.__name((Q,W,et)=>Math.min(et,Math.max(W,Q)),"clamp"),G=c.__name((Q,W)=>Q.midX>=W.left-Kt&&Q.midX<=W.right+Kt&&Q.midY>=W.top-Kt&&Q.midY<=W.bottom+Kt,"pointInsideRectInclusive"),j=c.__name(Q=>{const W=we(Q.midX,Q.midY,b,L),et=M(W);if(et)return{laneId:et,anchor:Q,rect:W};const at=s.find(({rect:te})=>G(Q,te));if(!at)return;const gt=at.rect.left+b/2+i,xt=at.rect.right-b/2-i,Ct=at.rect.top+L/2+i,Vt=at.rect.bottom-L/2-i;if(gt>xt||Ct>Vt)return;const jt={midX:O(Q.midX,gt,xt),midY:O(Q.midY,Ct,Vt)},Ut=we(jt.midX,jt.midY,b,L);return G(Q,Ut)?{laneId:at.id,anchor:jt,rect:Ut}:void 0},"placementForAnchor"),J=c.__name((Q,W,et)=>Q.orientation==="horizontal"?Math.abs(W.midX-et.x):Math.abs(W.midY-et.y),"distanceAlongSegment"),dt=c.__name((Q,W)=>{const at=(Q.orientation==="horizontal"?b/2:L/2)+a;if(Q===B){const gt=C[Q.idx];if(J(Q,W,gt)+Kt<at)return!1}if(Q===N){const gt=C[Q.idx+1];if(J(Q,W,gt)+Kt<at)return!1}return!0},"labelClearsTerminalEndpoints"),pt=c.__name(Q=>{const W=A(Q);for(const et of W)for(const at of k){const gt=H(et,at);if(!dt(et,gt))continue;const xt=j(gt);if(xt&&!Yn(xt.rect,C)&&!u(d,xt.rect)&&!g(d,m.id,xt.rect))return{laneId:xt.laneId,anchor:xt.anchor}}},"tryPool"),Bt=c.__name((Q,W,et=!1)=>{const at=A(Q);for(const gt of at){const xt={midX:gt.midX,midY:gt.midY};if(W&&!dt(gt,xt))continue;const Ct=j(xt);if(Ct&&!Yn(Ct.rect,C)&&!u(d,Ct.rect)&&!l(d,Ct.rect)&&(et||!f(m.id,Ct.rect)))return{laneId:Ct.laneId,anchor:Ct.anchor}}},"findLaneContainingFallback"),Ot=pt(I)??(I.length<T.length?pt(T):void 0)??Bt(T,!0)??Bt(T,!1)??Bt(T,!1,!0);if(Ot){y.x=Ot.anchor.midX,y.y=Ot.anchor.midY,y.parentId=Ot.laneId;const Q=we(Ot.anchor.midX,Ot.anchor.midY,b,L),W=x.findIndex(et=>et.labelId===d);W>=0?x[W]={labelId:d,rect:Q}:x.push({labelId:d,rect:Q})}}}c.__name(Ve,"anchorLabelsToPolyline");var _n=1e-6,Nr=8,Ao=Nr/2,Or=3;function Gn(t,e){return t<e?`${t}::${e}`:`${e}::${t}`}c.__name(Gn,"pairKey");function Ss(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e),s=new Map;for(const i of e){const a=i.id;if(!i.isGroup&&i.isEdgeLabel){s.set(a,{w:i.width??0,h:i.height??0});continue}}const r=c.__name((i,a,l,f)=>{const g=Gn(a,l);let x=0;const M=c.__name(u=>{if(!u)return;const m=s.get(u);if(!m)return;const d=f==="x"?m.w/2:m.h/2;d>x&&(x=d)},"consider");M(i.labelNodeId);for(const u of t){if(u===i||u.isLayoutOnly)continue;const m=u.start,d=u.end;!m||!d||Gn(m,d)===g&&M(u.labelNodeId)}return x>0?x+Or:0},"labelClearanceFor");for(const i of t){if(i.isLayoutOnly)continue;const a=i.points;if(!no(a,_n))continue;const l=io(i,n,_n);if(!l)continue;const{srcId:f,dstId:g,srcInfo:x,dstInfo:M,collinearX:u,collinearY:m}=l;if(u===m)continue;let d,y;if(u){const p=M.cy>x.cy;d={x:x.cx,y:p?x.rect.bottom:x.rect.top},y={x:M.cx,y:p?M.rect.top:M.rect.bottom}}else{const p=M.cx>x.cx;d={x:p?x.rect.right:x.rect.left,y:x.cy},y={x:p?M.rect.left:M.rect.right,y:M.cy}}if(wt(d,y,o,[f,g],1))continue;const b=r(i,f,g,u?"x":"y"),L=b>Ao?b:Ao,T=[0,L,-L];for(const p of T){const I={...d},w={...y};if(u){if(I.x+=p,w.x+=p,I.x<=x.rect.left||I.x>=x.rect.right||w.x<=M.rect.left||w.x>=M.rect.right)continue}else if(I.y+=p,w.y+=p,I.y<=x.rect.top||I.y>=x.rect.bottom||w.y<=M.rect.top||w.y>=M.rect.bottom)continue;if(!wt(I,w,o,[f,g],1)&&!Ke(I,w,t,i,{epsilon:_n})){i.points=[I,w];break}}}}c.__name(Ss,"straightenCollinearSiblingDetours");function $n(t,e){const{realNodeRects:l,labelNodeRects:f}=pe(e.values()),g=c.__name((p,I)=>Ae(I,.001).map(w=>({...w,edge:p,interior:w.index>=1&&w.index<=I.length-3})),"segmentsFor"),x=c.__name(()=>{const p=[];for(const I of t){if(I.isLayoutOnly)continue;const w=I.points;!w||w.length<2||p.push(...g(I,mt(w)))}return p},"allSegments"),M=c.__name((p,I)=>p.horizontal&&I.horizontal?zt(p.a.x,p.b.x,I.a.x,I.b.x)>=8&&Math.abs(p.a.y-I.a.y)<7:p.vertical&&I.vertical?zt(p.a.y,p.b.y,I.a.y,I.b.y)>=8&&Math.abs(p.a.x-I.a.x)<7:!1,"hasCrowdedParallelTrack"),u=c.__name((p,I)=>{const w=p.start,A=p.end,B=g(p,I);if(B.length!==I.length-1)return!1;const N=[w,A].filter(H=>!!H),k=p.labelNodeId?[p.labelNodeId]:[];for(const H of B)if(wt(H.a,H.b,l,N,-2)||wt(H.a,H.b,f,k,-2))return!1;for(const H of t){if(H===p||H.isLayoutOnly)continue;const O=H.points;if(!(!O||O.length<2)){for(const G of B)for(const j of g(H,mt(O)))if(M(G,j)||le(G.a,G.b,j.a,j.b,.001))return!1}}return!0},"candidateIsSafe"),m=c.__name((p,I)=>{const w=mt(p.edge.points??[]);if(w.length<4||p.index>=w.length-1)return;const A=w.map(B=>({...B}));if(p.horizontal)A[p.index].y+=I,A[p.index+1].y+=I;else if(p.vertical)A[p.index].x+=I,A[p.index+1].x+=I;else return;return g(p.edge,A).length===A.length-1?A:void 0},"shiftedCandidate"),d=c.__name((p,I)=>({x:p.x??(I.left+I.right)/2,y:p.y??(I.top+I.bottom)/2}),"nodeCenter"),y=c.__name(p=>{const I=p.edge,w=mt(I.points??[]);if(w.length!==4||p.index!==1)return;const A=I.start?e.get(I.start):void 0,B=I.end?e.get(I.end):void 0,N=A?qt(A):void 0,k=B?qt(B):void 0,H=w.slice(p.index+2);if(!(!A||!B||!N||!k||H.length===0))return{sourceCenter:d(A,N),targetCenter:d(B,k),sourceRect:N,tail:H}},"sourceDetourContextFor"),C=c.__name((p,I,w,A,B,N)=>{const k=A.y>=w.y,H=k?B.bottom:B.top,O=H+(k?20:-20);if(k&&p.b.y<=O+.001||!k&&p.b.y>=O-.001)return;const G=p.a.x+I;return mt([{x:w.x,y:H},{x:w.x,y:O},{x:G,y:O},{x:G,y:p.b.y},...N],.001)},"verticalSourceDetour"),b=c.__name((p,I,w,A,B,N)=>{const k=A.x>=w.x,H=k?B.right:B.left,O=H+(k?20:-20);if(k&&p.b.x<=O+.001||!k&&p.b.x>=O-.001)return;const G=p.a.y+I;return mt([{x:H,y:w.y},{x:O,y:w.y},{x:O,y:G},{x:p.b.x,y:G},...N],.001)},"horizontalSourceDetour"),L=c.__name((p,I)=>{const w=y(p);if(w){if(p.vertical)return C(p,I,w.sourceCenter,w.targetCenter,w.sourceRect,w.tail);if(p.horizontal)return b(p,I,w.sourceCenter,w.targetCenter,w.sourceRect,w.tail)}},"sourceDetourCandidate"),T=[-7,7,-14,14,-21,21];for(let p=0;p<12;p++){const I=x();let w=!1;for(let A=0;A<I.length&&!w;A++)for(let B=A+1;B<I.length&&!w;B++){const N=I[A],k=I[B];if(N.edge===k.edge||!M(N,k))continue;const H=[N,k].filter(O=>O.interior);for(const O of H){for(const G of T){const j=m(O,G);if(j&&u(O.edge,j)){O.edge.points=j,w=!0;break}const J=L(O,G);if(J&&u(O.edge,J)){O.edge.points=J,w=!0;break}}if(w)break}}if(!w)return}}c.__name($n,"nudgeSharedInteriorSubpaths");function Cs(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,a=o.y-n.y,l=s*a-r*i;if(Math.abs(l)<1e-10)return!1;const f=n.x-t.x,g=n.y-t.y,x=(f*a-g*i)/l,M=(f*r-g*s)/l,u=.01;return x>u&&x<1-u&&M>u&&M<1-u}c.__name(Cs,"segmentsIntersect");function vs(t){const e=t.nodes??[],n=t.edges??[],o=[];if(!n.length||!e.length)return o;const s=Jo(e),r=[];for(const a of n){if(a.isLayoutOnly)continue;const l=a.points;if(!l||l.length<2)continue;const f=a.start,g=a.end,x=a.labelNodeId,M=a.id??`${f}->${g}`;for(const u of s)if(!(u.nodeId===f||u.nodeId===g)&&!(x&&u.nodeId===x)){for(let m=0;m<l.length-1;m++)if(on(l[m],l[m+1],u,-1)){o.push({type:"edge-node-overlap",edgeId:M,targetId:u.nodeId,detail:`segment ${m} passes through node "${u.nodeId}"`});break}}for(let u=0;u<l.length-1;u++)r.push({edgeId:M,start:f,end:g,p1:l[u],p2:l[u+1]})}const i=new Set;for(let a=0;a<r.length;a++)for(let l=a+1;l<r.length;l++){const f=r[a],g=r[l];if(f.edgeId!==g.edgeId&&!(f.start===g.start||f.start===g.end||f.end===g.start||f.end===g.end)&&Cs(f.p1,f.p2,g.p1,g.p2)){const x=f.edgeId<g.edgeId?`${f.edgeId}|${g.edgeId}`:`${g.edgeId}|${f.edgeId}`;i.has(x)||(i.add(x),o.push({type:"edge-edge-crossing",edgeId:f.edgeId,targetId:g.edgeId,detail:`edges "${f.edgeId}" and "${g.edgeId}" cross`}))}}if(o.length>0){const a=o.filter(f=>f.type==="edge-node-overlap").length,l=o.filter(f=>f.type==="edge-edge-crossing").length;c.log.warn(`[SWIMLANE_VALIDATE] ${o.length} issue(s) detected: ${a} edge-node overlap(s), ${l} edge crossing(s)`);for(const f of o)c.log.warn(`[SWIMLANE_VALIDATE] ${f.type}: ${f.detail}`)}return o}c.__name(vs,"validateSwimlanesLayout");function Ls(t,e){const n=t.nodes??[],o=t.edges??[],s=n.filter(a=>!a.isGroup);if((e==="LR"||e==="RL")&&s.length>0&&!us(t,e)||e==="BT"&&s.length>0&&!ds(t))return;for(const a of o){if(a.isLayoutOnly)continue;const l=a.points;!l||l.length<2||(a.points=ae(qe(l)))}Ms(o,n),Ss(o,n),hs(o,n);const r=new Map;for(const a of n)r.set(String(a.id),a);Ve(o,r),ns(o,r),gs(o,r),$n(o,r),ms(o,r),ps(o,r),Fn(o,r),ys(o,r);const i=c.__name(()=>{bs(o,r),xs(o,r),_s(o,r),Ve(o,r),Bn(o,r),Fn(o,r),Ve(o,r),Bn(o,r)},"finalizeRenderedEdges");i(),$n(o,r),i(),Dn(o,r),Hn(o,r),Dn(o,r),Hn(o,r)}c.__name(Ls,"postProcessSwimlaneLayout");function ye(t){const e=new Map(t.nodeById),n=new Set,o=[];for(const r of t.edges){if(!e.has(r.src)||!e.has(r.dst))continue;const i=`${r.id}:${r.src}->${r.dst}`;n.has(i)||(n.add(i),o.push(r))}return{nodes:[...e.keys()],edges:o,layout:t.layout,nodeById:e}}c.__name(ye,"normalizeGraph");function ho(t,e){return t.edges.filter(n=>n.dst===e)}c.__name(ho,"incoming");function Ts(t){const e=new Map;for(const n of t.nodes)e.set(n,[]);for(const n of t.edges)e.get(n.src).push(n.dst);return e}c.__name(Ts,"buildSuccessorMap");function go(t){const e=Ts(t);for(const n of e.values())n.sort((o,s)=>o.localeCompare(s));return e}c.__name(go,"buildSortedSuccessorMap");function mo(t){const e=new Map;for(const n of t.nodes)e.set(n,0);for(const n of t.edges)e.set(n.dst,(e.get(n.dst)??0)+1);return e}c.__name(mo,"buildInDegreeMap");function po(t){return[...t.entries()].filter(([,e])=>e===0).map(([e])=>e).sort((e,n)=>e.localeCompare(n))}c.__name(po,"sortedZeroInDegreeNodes");function rn(t,e=()=>!0){const n=new Map,o=new Map;for(const s of t.nodes)n.set(s,[]),o.set(s,[]);for(const s of t.edges)e(s)&&(o.get(s.src).push(s.dst),n.get(s.dst).push(s.src));return{preds:n,succs:o}}c.__name(rn,"buildPredecessorSuccessorMaps");function yo(t,e,n,o){let s=0;for(const i of t.nodes)o?.skipGroups&&t.nodeById.get(i)?.isGroup||(s=Math.max(s,n[i]??0));const r=Array.from({length:s+1},()=>[]);for(const i of e)o?.skipGroups&&t.nodeById.get(i)?.isGroup||r[Math.max(0,n[i]??0)].push(i);return r}c.__name(yo,"buildLayersFromRanks");function Oe(t){const e=mo(t),n=po(e),o=[],s=go(t);for(;n.length;){const r=n.shift();o.push(r);for(const i of s.get(r)??[])if(e.set(i,(e.get(i)??0)-1),(e.get(i)??0)===0){let a=0;for(;a<n.length&&n[a]<i;)a++;n.splice(a,0,i)}}return o.length===t.nodes.length?o:null}c.__name(Oe,"topoSortIfAcyclic");function Re(t){const e=new Map;let n=0;for(const o of t)e.set(o,n),n++;return e}c.__name(Re,"buildLayerIndex");function xo(t){const e=new Array(t.length),n=c.__name((o,s)=>{if(s-o<=1)return 0;const r=o+s>>1;let i=n(o,r)+n(r,s),a=o,l=r,f=o;for(;a<r||l<s;)l>=s||a<r&&t[a]<=t[l]?e[f++]=t[a++]:(e[f++]=t[l++],i+=r-a);for(let g=o;g<s;g++)t[g]=e[g];return i},"count");return n(0,t.length)}c.__name(xo,"countInversions");function Es(t){const e=ye(t),n=new Map;for(const g of e.nodes)n.set(g,[]);for(const g of e.edges)n.get(g.src).push(g);for(const g of n.values())g.sort((x,M)=>x.dst===M.dst?x.id.localeCompare(M.id):x.dst.localeCompare(M.dst));const o=Object.create(null);for(const g of e.nodes)o[g]=0;const s=[],r=c.__name(g=>{o[g]=1;for(const x of n.get(g)??[]){const M=x.dst;o[M]===0?r(M):o[M]===1&&s.push(x)}o[g]=2},"dfs"),i=[...e.nodes].sort((g,x)=>g.localeCompare(x));for(const g of i)o[g]===0&&r(g);const a=new Set(s.map(g=>`${g.id}:${g.src}->${g.dst}`)),l=e.edges.map(g=>a.has(`${g.id}:${g.src}->${g.dst}`)?{id:g.id,src:g.dst,dst:g.src,weight:g.weight,ref:g.ref}:g);return{acyclic:{nodes:[...e.nodes],edges:l,layout:e.layout,nodeById:new Map(e.nodeById)},reversed:s}}c.__name(Es,"removeCycles_DFS");function ws(t){const e=new Map,n=c.__name(o=>{if(e.has(o))return e.get(o);const s=t.nodeById.get(o);if(!s)return e.set(o,null),null;const r=s.parentId;if(!r)return e.set(o,null),null;const a=n(r)??r;return e.set(o,a),a},"resolve");for(const o of t.nodes)n(o);return e}c.__name(ws,"buildTopLaneMap");function fe(t){const e=ws(t);return n=>e.get(n)??null}c.__name(fe,"createTopLaneResolver");function cn(t){const e=[];for(const n of t.layout.nodes??[])n.isGroup&&!n.parentId&&e.push(n.id);return[...new Set(e)].reverse()}c.__name(cn,"buildTopLaneOrder");function _o(t,e){const n=cn(t);if(!e||e.length===0)return n;const o=new Set(n),s=new Set,r=[];for(const i of e)!o.has(i)||s.has(i)||(s.add(i),r.push(i));for(const i of n)s.has(i)||r.push(i);return r}c.__name(_o,"resolveTopLaneOrder");var Pr={EPSILON:1e-6},en={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},Ro={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function As(t,e){const n=ye(t),o=e?.laneOf??(()=>null),s=e?.rankHint,{preds:r}=rn(n);for(const p of r.values())p.sort((I,w)=>I.localeCompare(w));const i=Oe(n)??[...n.nodes].sort((p,I)=>p.localeCompare(I)),a=new Map;for(const[p,I]of i.entries())a.set(I,p);const l=new Map,f=new Map;for(const p of n.nodes)f.set(p,[]);for(const p of i){const I=(r.get(p)??[]).filter(w=>l.has(w));if(I.length>0){const w=Rs(p,I,{laneOf:o,rankHint:s,topoIndex:a});l.set(p,w),f.get(w).push(p)}else l.has(p)||l.set(p,null)}for(const p of n.nodes)l.has(p)||l.set(p,null);const g=new Set;for(const p of n.nodes)(l.get(p)??null)===null&&g.add(p);const x=[...g].sort((p,I)=>{const w=a.get(p)??0,A=a.get(I)??0;return w===A?p.localeCompare(I):w-A}),M=Ns(n),u=new Map;for(const[p,I]of M.entries())u.set(p,[...I].sort((w,A)=>w.localeCompare(A)));const m=Os(u),d=Ps(u),y=new Map;for(const p of n.nodes)y.set(p,[]);for(const p of d)for(const I of p.nodes){const w=y.get(I);w?w.push(p.id):y.set(I,[p.id])}const C=[],b=[],L=new Set,T=c.__name(p=>{if(!L.has(p)){L.add(p),C.push(p);for(const I of f.get(p)??[])T(I);b.push(p)}},"walk");for(const p of x)T(p);for(const p of i)T(p);return{parent:l,children:f,roots:x,componentOf:m,blocks:d,nodeBlocks:y,adjacency:u,preorder:C,postorder:b,topologicalOrder:i}}c.__name(As,"buildDrivingTree");function Rs(t,e,n){const o=n.laneOf(t);return[...e].sort((r,i)=>{const a=n.laneOf(r),l=n.laneOf(i),f=a!=null&&a===o,g=l!=null&&l===o;if(f!==g)return f?-1:1;const x=n.rankHint?.[r],M=n.rankHint?.[i];if(x!=null&&M!=null&&x!==M)return M-x;const u=n.topoIndex.get(r)??0,m=n.topoIndex.get(i)??0;return u!==m?u-m:r.localeCompare(i)})[0]}c.__name(Rs,"chooseParent");function Ns(t){const e=new Map;for(const n of t.nodes)e.set(n,new Set);for(const n of t.edges)e.get(n.src).add(n.dst),e.get(n.dst).add(n.src);return e}c.__name(Ns,"buildAdjacency");function Os(t){const e=new Map;let n=0;for(const o of t.keys()){if(e.has(o))continue;const s=[o];for(;s.length>0;){const r=s.pop();if(!e.has(r)){e.set(r,n);for(const i of t.get(r)??[])e.has(i)||s.push(i)}}n++}return e}c.__name(Os,"assignComponents");function Ps(t){const e=new Map,n=new Map,o=[],s=[];let r=0;const i=c.__name((a,l)=>{e.set(a,++r),n.set(a,r);for(const f of t.get(a)??[])f!==l&&(e.has(f)?(e.get(f)??0)<(e.get(a)??0)&&(o.push([a,f]),n.set(a,Math.min(n.get(a)??r,e.get(f)??r))):(o.push([a,f]),i(f,a),n.set(a,Math.min(n.get(a)??r,n.get(f)??r)),(n.get(f)??0)>=(e.get(a)??0)&&s.push(Bs(a,f,o,s.length))))},"visit");for(const a of t.keys())e.has(a)||i(a,null);return s}c.__name(Ps,"computeBlocks");function Bs(t,e,n,o){const s=[],r=new Set;for(;n.length>0;){const i=n.pop();if(s.push(i),r.add(i[0]),r.add(i[1]),i[0]===t&&i[1]===e||i[0]===e&&i[1]===t)break}return{id:o,edges:s,nodes:[...r]}}c.__name(Bs,"popBlock");function ks(t,e,n){const o=[...t.nodes],s=new Map;for(const[b,L]of o.entries())s.set(L,b);const r=o.length,i=new Array(r).fill(-1),a=new Array(r).fill(0),l=[],f=new Set;for(const b of o){const L=n.parent.get(b)??null,T=s.get(b);T!=null&&L==null&&(i[T]=-1,a[T]=0,f.has(b)||(f.add(b),l.push(b)))}for(;l.length>0;){const b=l.shift(),L=s.get(b);if(L==null)continue;const T=n.children.get(b)??[];for(const p of T){if(f.has(p))continue;const I=s.get(p);I!=null&&(i[I]=L,a[I]=a[L]+1,f.add(p),l.push(p))}}for(const b of o){if(f.has(b))continue;const L=s.get(b);L!=null&&(i[L]=-1,a[L]=0,f.add(b))}const g=Math.max(1,Math.ceil(Math.log2(Math.max(1,r)))+1),x=Array.from({length:g},()=>new Array(r).fill(-1));for(let b=0;b<r;b++)x[0][b]=i[b];for(let b=1;b<g;b++)for(let L=0;L<r;L++){const T=x[b-1][L];x[b][L]=T===-1?-1:x[b-1][T]}const M=c.__name((b,L)=>{if(b===-1||L===-1)return-1;a[b]<a[L]&&([b,L]=[L,b]);const T=a[b]-a[L];for(let p=0;p<g;p++)if(T>>p&1&&(b=x[p][b],b===-1))return-1;if(b===L)return b;for(let p=g-1;p>=0;p--){const I=x[p][b],w=x[p][L];I===-1||w===-1||I!==w&&(b=I,L=w)}return x[0][b]},"lcaIndex"),u=Array.from({length:r},()=>new Map);for(const b of t.edges){let L=b.src,T=b.dst,p=e[L],I=e[T];if(p==null||I==null||(p>I&&([L,T]=[T,L],[p,I]=[I,p]),p==null||I==null||p===I))continue;const w=s.get(L),A=s.get(T);if(w==null||A==null)continue;const B=M(w,A);if(B===-1)continue;const N=u[B];for(let k=p;k<I;k++)N.set(k,(N.get(k)??0)+1)}const m=new Map,d=c.__name((b,L)=>{if(L.size!==0)for(const[T,p]of L)b.set(T,(b.get(T)??0)+p)},"mergeInto"),y=new Set,C=c.__name(b=>{const L=s.get(b);y.add(b);const T=L==null?void 0:u[L],p=T?new Map(T):new Map,I=n.children.get(b)??[];for(const w of I){const A=C(w),B=e[b];if(B!=null){let N=m.get(b);N||(N=new Map,m.set(b,N));let k=A.get(B)??0;const H=e[w];H!=null&&H>B&&(k+=1),N.set(w,k)}d(p,A)}return p},"dfs");for(const b of n.roots)y.has(b)||C(b);for(const b of o)y.has(b)||C(b);return m}c.__name(ks,"computeSubtreeCrossCounts");function Fs(t,e,n){const o=new Map,s=c.__name(r=>{let i=n[r]??0;const a=[...e.get(r)??[]];a.sort(bo(n));for(const l of a){s(l);const f=o.get(l);f!=null&&(i=Math.min(i,f))}o.set(r,i)},"annotate");for(const r of t)s(r);return o}c.__name(Fs,"annotateMinimumLayers");function bo(t){return(e,n)=>{const o=t[e]??0,s=t[n]??0;return o===s?e.localeCompare(n):o-s}}c.__name(bo,"compareByRankThenId");function Ds(t,e,n,o){let s=0;for(const l of e){const f=n[l]??0;f>s&&(s=f)}const r=Array.from({length:s+1},()=>[]),i=new Set,a=c.__name(l=>{if(i.has(l))return;i.add(l);const f=n[l]??0;r[f]||(r[f]=[]),r[f].push(l);for(const g of o(l))a(g)},"emit");for(const l of t)a(l);for(const l of e)if(!i.has(l)){const f=n[l]??0;r[f]||(r[f]=[]),r[f].push(l),i.add(l)}return r}c.__name(Ds,"emitNodesInTreeOrder");function Hs(t){const e=[];for(const n of t){const o=new Set,s=[];for(const r of n)o.has(r)||(o.add(r),s.push(r));e.push(s)}return e}c.__name(Hs,"deduplicateLayers");function Xs(t,e,n,o){return s=>{const r=t.get(s)??[];if(r.length===0)return[];const i=e[s]??0,a=[],l=[],f=n.get(s);for(const g of r){const x=o.get(g)??i;x>i?a.push({child:g,min:x}):l.push(g)}return a.sort((g,x)=>g.min===x.min?g.child.localeCompare(x.child):g.min-x.min),l.sort((g,x)=>{const M=f?.get(g)??0,u=f?.get(x)??0;if(M!==u)return M-u;const m=o.get(g)??i,d=o.get(x)??i;return m!==d?m-d:g.localeCompare(x)}),[...a.map(g=>g.child),...l]}}c.__name(Xs,"createChildOrderer");function nn(t,e,n){const o=As(t,{rankHint:e,laneOf:n}),{children:s,roots:r}=o;for(const x of t.nodes)s.has(x)||s.set(x,[]);const i=ks(t,e,o),a=[...r].sort(bo(e)),l=Fs(a,s,e),f=Xs(s,e,i,l);let g=Ds(a,t.nodes,e,f);return g=Hs(g),g}c.__name(nn,"buildMultitreeLayerOrder");function Ys(t,e,n){const o=new Set(t),s=new Set(e),r=Re(e),i=[];for(const a of n)o.has(a.src)&&s.has(a.dst)&&i.push(r.get(a.dst));return xo(i)}c.__name(Ys,"countCrossingsBetweenAdjacent");function zn(t,e,n){const o=[];for(const r of e){const i=n[r.src],a=n[r.dst];if(i==null||a==null||i===a)continue;let l=r.src,f=r.dst,g=i,x=a;i>a&&(l=r.dst,f=r.src,g=a,x=i);for(let M=g;M<x;M++)o.push({id:`${r.id}@${M}`,src:l,dst:f,ref:r.ref})}let s=0;for(let r=0;r+1<t.length;r++)s+=Ys(t[r],t[r+1],o);return s}c.__name(zn,"totalCrossings");function Gs(t,e){const n={...e},{preds:o}=rn(t),s=fe(t),r=nn(t,n,s);let i=zn(r,t.edges,n);const a=en.MAX_CROSSING_OPTIMIZATION_PASSES;for(let l=0;l<a;l++){let f=!1;const g=[...t.nodes].sort((x,M)=>(n[M]??0)-(n[x]??0));for(const x of g){const M=n[x]??0;if(M===0)continue;let u=0;for(const C of o.get(x)??[])u=Math.max(u,(n[C]??0)+1);if(u>=M)continue;const m=M;n[x]=u;const d=nn(t,n,s),y=zn(d,t.edges,n);y<i?(i=y,f=!0):n[x]=m}if(!f)break}return n}c.__name(Gs,"optimizeRanksByCrossings");function $s(t,e){const n=fe(t),o=[...t.nodes].sort((s,r)=>(e[s]??0)-(e[r]??0)||s.localeCompare(r));for(const s of o){const r=n(s);if(!r)continue;const i=t.edges.filter(d=>d.src===s);if(i.length===0)continue;let a=!1,l=0;for(const d of i){const y=n(d.dst);y==null||y===r?a=!0:l++}if(l===0||a)continue;let f=0,g=!1;for(const d of t.edges){if(d.dst!==s)continue;const y=n(d.src);y&&(y===r?g=!0:f++)}if(f>0||!g)continue;const x=e[s]??0,M=x+l;let u=0;for(const d of t.edges)d.dst===s&&(u=Math.max(u,(e[d.src]??0)+1));const m=Math.max(x,u,M);m!==x&&(e[s]=m)}}c.__name($s,"adjustCrossLaneSources");function zs(t,e){const n=ye(t),o=Oe(n)??[...n.nodes].sort(),s=e?.compactSingleInput??!1,r=fe(n);let i=Object.create(null);for(const l of o){const f=ho(n,l),g=e?.ignoreCrossLaneEdges?f.filter(x=>{const M=r(x.src),u=r(l);return!M||!u?!0:M===u}):f;if(g.length===0)i[l]=0;else if(s&&g.length===1){const x=g[0].src,M=r(x),u=r(l);M!==u?i[l]=i[x]??0:i[l]=(i[x]??0)+1}else{let x=-1/0;for(const M of g)x=Math.max(x,(i[M.src]??0)+1);i[l]=x===-1/0?0:x}}return(e?.optimizeRanksByCrossings??!1)&&(i=Gs(n,i)),e?.ignoreCrossLaneEdges&&$s(n,i),{layers:nn(n,i,r),rankOf:i,dummy:new Set}}c.__name(zs,"assignLayers_LongestPath");function Vs(t,e){const n=ye(t),s={...zs(n,{compactSingleInput:e?.compactSingleInput,ignoreCrossLaneEdges:e?.ignoreCrossLaneEdges,optimizeRanksByCrossings:e?.optimizeRanksByCrossings}).rankOf},r=fe(n),{preds:i,succs:a}=rn(n,m=>{if(e?.ignoreCrossLaneEdges){const d=r(m.src),y=r(m.dst);if(d&&y&&d!==y)return!1}return!0}),l=Oe(n)??[...n.nodes],f=[...l].reverse(),g=c.__name((m,d)=>{let y=0;for(const L of i.get(m)??[])y=Math.max(y,(s[L]??0)+1);let C=Number.POSITIVE_INFINITY;const b=a.get(m)??[];return b.length>0&&(C=Math.min(...b.map(L=>(s[L]??0)-1))),Number.isFinite(C)||(C=Math.max(y,d)),Math.min(Math.max(d,y),C)},"clampFeasible"),x=en.GRAVITY_ITERATIONS,M=c.__name(m=>{let d=!1;for(const y of m){const C=i.get(y)??[],b=a.get(y)??[];if(C.length===0&&b.length===0)continue;const L=C.length>0?C.reduce((w,A)=>w+(s[A]??0)+1,0)/C.length:s[y]??0,T=b.length>0?b.reduce((w,A)=>w+(s[A]??0)-1,0)/b.length:s[y]??0,p=Math.round((L+T)/2),I=g(y,p);I!==s[y]&&(s[y]=I,d=!0)}return d},"relaxOrder");for(let m=0;m<x;m++){const d=M(l),y=M(f);if(!d&&!y)break}for(const m of l){let d=0;for(const y of i.get(m)??[])d=Math.max(d,(s[y]??0)+1);(s[m]??0)<d&&(s[m]=d)}for(const m of f){const d=a.get(m)??[];if(d.length>0){const y=Math.min(...d.map(C=>(s[C]??0)-1));(s[m]??0)>y&&(s[m]=y)}}return{layers:yo(n,l,s),rankOf:s,dummy:new Set}}c.__name(Vs,"assignLayers_Gravity");function js(t){const e=mo(t),n=go(t);let o=po(e);const s=[];for(;o.length>0;){const r=[];for(const i of o){s.push(i);for(const a of n.get(i)??[])e.set(a,(e.get(a)??0)-1),(e.get(a)??0)===0&&r.push(a)}o=r.sort((i,a)=>i.localeCompare(a))}return s.length===t.nodes.length?s:null}c.__name(js,"topoSortByGenerationIfAcyclic");function Us(t,e){const n=ye(t),o=e?.direction==="LR"?js(n)??[...n.nodes].sort():Oe(n)??[...n.nodes].sort(),s=fe(n),r=c.__name(g=>s(g)??g,"laneOf"),i=Object.create(null),a=new Map,l=c.__name((g,x)=>e?.ignoreCrossLaneEdges??!0?r(g)===r(x)?1:0:1,"edgeWeight");for(const g of o){if(n.nodeById.get(g)?.isGroup)continue;const M=ho(n,g);let u=0;if(M.length>0)for(const C of M){const b=C.src,L=i[b]??0;u=Math.max(u,L+l(b,g))}const m=r(g),d=a.get(m)??0,y=Math.max(u,d);i[g]=y,a.set(m,y+1)}return{layers:yo(n,o,i,{skipGroups:!0}),rankOf:i,dummy:new Set}}c.__name(Us,"assignLayers_LaneAwareCompact");function Ws(t,e){const n=ye(e),{rankOf:o}=t,s=t.layers.map(u=>[...u]),r=new Set(t.dummy?[...t.dummy]:[]);let i=0;const a=new Map(n.nodeById),l=c.__name(u=>{const m=`placeholder-${i++}`,d={id:m,isGroup:!1,isDummy:!0,width:0,height:0};for(a.set(m,d),r.add(m);s.length<=u;)s.push([]);return s[u].push(m),o[m]=u,m},"addDummyAt"),f=[...n.edges].sort((u,m)=>u.id===m.id?u.src===m.src?u.dst.localeCompare(m.dst):u.src.localeCompare(m.src):u.id.localeCompare(m.id)),g=[];for(const u of f){const m=o[u.src]??0,d=o[u.dst]??0;if(d-m<=1){g.push(u);continue}let y=u.src;for(let b=m+1,L=0;b<d;b++,L++){const T=l(b);g.push({id:`${u.id}#${L}`,src:y,dst:T,weight:u.weight,ref:u.ref}),y=T}const C=d-m-2;g.push({id:`${u.id}#${Math.max(C+1,0)}`,src:y,dst:u.dst,weight:u.weight,ref:u.ref})}const M={nodes:[...n.nodes,...[...r].filter(u=>!n.nodes.includes(u))],edges:g,layout:n.layout,nodeById:a};return{layering:{layers:s,rankOf:o,dummy:r},graphWithDummies:M}}c.__name(Ws,"makeProperLayering");function Vn(t){const e=t.length;if(e===0)return Number.POSITIVE_INFINITY;const n=[...t].sort((o,s)=>o-s);return e%2===1?n[(e-1)/2]:.5*(n[e/2-1]+n[e/2])}c.__name(Vn,"median");function jn(t){return t.length===0?Number.POSITIVE_INFINITY:t.reduce((n,o)=>n+o,0)/t.length}c.__name(jn,"barycenter");function Ks(t,e,n,o){const s=new Map;for(const r of t)s.set(r,[]);for(const r of n)o==="down"?e.has(r.src)&&s.has(r.dst)&&s.get(r.dst).push(e.get(r.src)):e.has(r.dst)&&s.has(r.src)&&s.get(r.src).push(e.get(r.dst));return s}c.__name(Ks,"neighborPositionsFor");function qs(t,e,n){const o=n.get(t)??0,s=n.get(e)??0;return o!==s?o-s:t.localeCompare(e)}c.__name(qs,"currentOrderTieBreak");function Un(t,e,n){const o=new Set(t),s=new Set(e),r=Re(t),i=Re(e),a=[];for(const f of n)o.has(f.src)&&s.has(f.dst)&&a.push({u:r.get(f.src),v:i.get(f.dst)});a.sort((f,g)=>f.u===g.u?f.v-g.v:f.u-g.u);const l=a.map(f=>f.v);return xo(l)}c.__name(Un,"countCrossingsBetweenAdjacent");function je(t,e,n){return[...t].sort((o,s)=>{const r=Vn(e.get(o)??[]),i=Vn(e.get(s)??[]);return r===i?qs(o,s,n):isFinite(r)?isFinite(i)?r-i:-1:1})}c.__name(je,"sortByHeuristic");function Wn(t,e,n,o,s,r){const i=Re(t),a=Re(e),l=Ks(e,i,n,o);if(!s||!r||r.length===0)return je(e,l,a);const f=new Map;for(const M of e){const u=s(M),m=f.get(u)??[];m.push(M),f.set(u,m)}const g=[];for(const M of r){const u=f.get(M);if(!u||u.length===0)continue;const m=je(u,l,a);g.push(...m)}const x=f.get(null);if(x&&x.length>0){const M=je(x,l,a);for(const u of M){const m=jn(l.get(u)??[]);let d=g.length;if(isFinite(m))for(const[y,C]of g.entries()){const b=jn(l.get(C)??[]);if(m<b){d=y;break}}g.splice(d,0,u)}}return g}c.__name(Wn,"reorderLayer");function Kn(t,e,n,o,s){const r=[...e],i=new Set(t),a=new Set(e),l=o?new Set(o):null,f=n.filter(d=>i.has(d.src)&&a.has(d.dst)),g=l?n.filter(d=>a.has(d.src)&&l.has(d.dst)):void 0,x=c.__name(d=>{let y=Un(t,d,f);return g&&o&&(y+=Un(d,o,g)),y},"crossingScore"),M=s?new Map:null;if(s&&M)for(const d of e)M.set(d,s(d));let u=!0,m=x(r);for(;u;){u=!1;for(let d=0;d+1<r.length;d++){if(M){const b=M.get(r[d]),L=M.get(r[d+1]);if(b!==L)continue}const y=m;[r[d],r[d+1]]=[r[d+1],r[d]];const C=x(r);C<y?(m=C,u=!0):[r[d],r[d+1]]=[r[d+1],r[d]]}}return r}c.__name(Kn,"transposeImprove");function Js(t,e,n){const o=t.layers.map(a=>[...a]),s=e.edges,r=fe(e),i=_o(e,n?.laneOrder);for(let a=0;a<3;a++){for(let l=1;l<o.length;l++)o[l]=Wn(o[l-1],o[l],s,"down",r,i),o[l]=Kn(o[l-1],o[l],s,o[l+1],r);for(let l=o.length-2;l>=0;l--)o[l]=Wn(o[l+1],o[l],s,"up",r,i),o[l]=Kn(o[l+1],o[l],s,o[l-1],r)}return{layers:o}}c.__name(Js,"orderLayers");function Zs(t,e,n){const o=n?.layerGap??Ro.DEFAULT_LAYER_GAP,s=n?.nodeGap??Ro.DEFAULT_NODE_GAP,r=n?.laneGap??s*2,i=n?.direction??"TB",a=i==="LR"||i==="RL",l=t.layers,f=Object.create(null),g=Object.create(null),x=c.__name(N=>e.nodeById.get(N),"getNode"),M=c.__name(N=>x(N)?.width??0,"getWidth"),u=c.__name(N=>x(N)?.height??0,"getHeight"),m=fe(e),d=_o(e,n?.laneOrder),y=l.map(N=>N.reduce((k,H)=>Math.max(k,u(H)),0)),C=[];if(a)for(let N=0;N+1<l.length;N++){const k=l[N].reduce((pt,Bt)=>Math.max(pt,M(Bt)),0),H=l[N+1].reduce((pt,Bt)=>Math.max(pt,M(Bt)),0),O=y[N],G=y[N+1],j=O/2+G/2,J=(k+H)/2,dt=Math.max(0,J-j-o);C.push(dt)}const b=new Set;for(const N of l)for(const k of N)b.add(m(k));const L=b.has(null),T=d.filter(N=>b.has(N)),p=[...L?[null]:[],...T],I=Object.create(null);for(const N of T)I[N]=0;L&&(I.null=0);for(const N of l){const k=Object.create(null),H=[];for(const O of N){const G=m(O);G===null?H.push(O):(k[G]||=[]).push(O)}for(const[O,G]of Object.entries(k)){const j=G.reduce((J,dt)=>J+M(dt),0)+s*Math.max(0,G.length-1);I[O]=Math.max(I[O]??0,j)}if(L&&H.length){const O=H.reduce((G,j)=>G+M(j),0)+s*Math.max(0,H.length-1);I.null=Math.max(I.null??0,O)}}const w=new Map;{const N=p.map(O=>(O===null?I.null:I[O])??0);let H=-(N.reduce((O,G)=>O+G,0)+r*Math.max(0,p.length-1))/2;for(let O=0;O<p.length;O++){const G=p[O],j=N[O]??0,J=H+j/2;w.set(G,J),H+=j,O<p.length-1&&(H+=r)}}let A=0;for(const[N,k]of l.entries()){const H=y[N]??0,O=new Map;for(const j of k){const J=m(j),dt=O.get(J)??[];dt.push(j),O.set(J,dt)}for(const j of p){const J=O.get(j)??[];if(J.length===0)continue;const dt=w.get(j);if(J.length===1){const pt=J[0];f[pt]=dt,g[pt]=A+H/2}else{const pt=J.map(Q=>M(Q)),Bt=pt.reduce((Q,W)=>Q+W,0)+s*(J.length-1);let Ot=dt-Bt/2;for(const[Q,W]of J.entries()){const et=pt[Q];f[W]=Ot+et/2,g[W]=A+H/2,Ot+=et+s}}}const G=C[N]??0;A+=H+o+G}const B=new Map;for(const N of e.edges){const k=N.ref.id;B.has(k)||B.set(k,[]),B.get(k).push(N)}for(const[,N]of B){if(N.length===0)continue;const k=N[0].ref,H=k.start,O=k.end;if(H==null||O==null)continue;const G=Math.round(((f[H]??0)+(f[O]??0))/2),j=new Set;for(const J of N)j.add(J.src),j.add(J.dst);for(const J of j){if(J===H||J===O)continue;e.nodeById.get(J)?.isDummy&&(f[J]=G)}}return{x:f,y:g}}c.__name(Zs,"assignCoordinates");var Qs=8;function tr(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}c.__name(tr,"hashString");function er(t){let e=t>>>0;return()=>{e+=1831565813;let n=e;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}c.__name(er,"mulberry32");function nr(t,e){const n=[...t],o=er(e);for(let s=n.length-1;s>0;s--){const r=Math.floor(o()*(s+1));[n[s],n[r]]=[n[r],n[s]]}return n}c.__name(nr,"deterministicShuffle");function or(t,e){let n=0;for(const[o,s]of t.entries())n+=Math.abs(o-(e.get(s)??o));return n}c.__name(or,"sourceDistance");function qn(t,e){const n=new Map;for(const[s,r]of t.entries())n.set(r,s);let o=0;for(const{a:s,b:r,weight:i}of e){const a=n.get(s),l=n.get(r);a==null||l==null||(o+=i*Math.abs(a-l))}return o}c.__name(qn,"laneArrangementCost");function sr(t){const e=cn(t);if(e.length<2)return[];const n=new Map(e.map((r,i)=>[r,i])),o=fe(t),s=new Map;for(const r of t.layout.edges??[]){if(r.isLayoutOnly)continue;const i=typeof r.start=="string"?r.start:void 0,a=typeof r.end=="string"?r.end:void 0;if(!i||!a||!t.nodeById.has(i)||!t.nodeById.has(a))continue;const l=o(i),f=o(a);if(!l||!f||l===f)continue;const g=n.get(l),x=n.get(f);if(g==null||x==null)continue;const[M,u]=g<=x?[l,f]:[f,l],m=`${M}\0${u}`,d=s.get(m);d?d.weight++:s.set(m,{a:M,b:u,weight:1})}return[...s.values()]}c.__name(sr,"buildWeightedLaneEdges");function Jn(t,e,n){const o=[...t];let s=qn(o,e),r=!0,i=0;const a=Math.max(1,o.length);for(;r&&i<a;){r=!1,i++;for(let l=0;l+1<o.length;l++){[o[l],o[l+1]]=[o[l+1],o[l]];const f=qn(o,e);f<s?(s=f,r=!0):[o[l],o[l+1]]=[o[l+1],o[l]]}}return{order:o,cost:s,sourceDistance:or(o,n)}}c.__name(Jn,"greedySwitch");function rr(t,e){return t.cost!==e.cost?t.cost<e.cost:t.sourceDistance<e.sourceDistance}c.__name(rr,"isBetterCandidate");function ir(t,e,n){const o=[...e].sort((s,r)=>s.a===r.a?s.b.localeCompare(r.b):s.a.localeCompare(r.a)).map(({a:s,b:r,weight:i})=>`${s}:${r}:${i}`).join("|");return tr(`${t.join("|")}#${o}#${n}`)}c.__name(ir,"seedForRestart");function cr(t,e={}){const n=cn(t);if(n.length<2)return n;const o=sr(t);if(o.length===0)return n;const s=new Map(n.map((a,l)=>[a,l]));let r=Jn(n,o,s);const i=Math.max(0,e.restarts??Qs);for(let a=0;a<i;a++){const l=ir(n,o,a),f=nr(n,l),g=Jn(f,o,s);rr(g,r)&&(r=g)}return r.order}c.__name(cr,"optimizeTopLaneOrder");function ar(t,e){const n=e?.ignoreCrossLaneEdges??!0,o=e?.optimizeRanksByCrossings??!0,s=ye(t),r=e?.automaticLaneOrdering?cr(s,{restarts:Qs}):void 0,i=Es(s),a=i.acyclic,l=n?Us(a,{compactSingleInput:e?.compactSingleInput??en.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:e?.direction}):Vs(a,{compactSingleInput:e?.compactSingleInput??en.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:o}),{layering:f,graphWithDummies:g}=Ws(l,a),x=Js(f,g,{laneOrder:r}),M=Zs(x,g,{layerGap:e?.layerGap,nodeGap:e?.nodeGap,direction:e?.direction,laneOrder:r});return{acyclic:a,reversed:i.reversed,layering:f,ordered:x,coordinates:M}}c.__name(ar,"sugiyamaLayout");var ct=Pr.EPSILON,Br=8,_e=15,Te=15,ze=25,ne=20,bn=10;function Zn(t,e,n){const o=t.x??0,s=t.y??0,r=e.x-o,i=e.y-s,a=Math.abs(r),l=Math.abs(i);return a<ct&&l<ct?n:l>ct&&l*3>=a?i>0?"bottom":"top":a>ct?r>0?"right":"left":n}c.__name(Zn,"chooseOrthogonalSide");function Qn(t,e){return Math.abs(t.to-e.from)<ct||Math.abs(t.to-e.to)<ct?t.to:t.from}c.__name(Qn,"sharedLineEndpointCoord");function be(t,e){return t.orient==="vertical"?{x:t.coord,y:e}:{x:e,y:t.coord}}c.__name(be,"pointOnLine");function lr(t,e){const n=t.nodes??[],o=t.edges??[],s=[];for(const h of o)h.isLayoutOnly||s.push({...h,__originalEdge:h});const r=new Map,i=new Map,a=[],l=e==="LR";for(const h of n)r.set(h.id,h);const f=n.filter(h=>h.isGroup&&!h.parentId);for(const h of f){const _={id:h.id},S=c.__name(v=>{i.set(v.id,_),n.filter(E=>E.parentId===v.id).forEach(S)},"assignLane");S(h)}const g=n.filter(h=>!h.isGroup&&!h.isEdgeLabel).map(h=>{const _=h.width??10,S=h.height??10,v=h.x??0,E=h.y??0,P=Br;return{nodeId:h.id,minX:v-_/2-P,maxX:v+_/2+P,minY:E-S/2-P,maxY:E+S/2+P,visualXHalfExtent:l?S/2+P:_/2+P}}),x=c.__name((h,_,S,v)=>{let E=a.find(P=>P.orientation===h&&Math.abs(P.coord-_)<1);return E||(E={id:`pipe-${h}-${_.toFixed(0)}`,orientation:h,coord:_,spanMin:S,spanMax:v,tracks:[]},a.push(E)),E.spanMin=Math.min(E.spanMin,S),E.spanMax=Math.max(E.spanMax,v),E},"getOrAddPipe"),M=c.__name((h,_)=>{const S=h.width??10,v=h.height??10,E=h.x??0,P=h.y??0;switch(_){case"top":return{x:E,y:P-v/2};case"bottom":return{x:E,y:P+v/2};case"left":return{x:E-S/2,y:P};case"right":return{x:E+S/2,y:P}}},"portForSide"),u=c.__name((h,_,S)=>M(h,Zn(h,_,S?"bottom":"top")),"getOrthogonalPort"),m=[],d=[],y=new Set,C=1e3,b=c.__name((h,_,S)=>{if(m.length===0)return 0;const v=Math.abs(_.y-S.y)<ct,E=Math.abs(_.x-S.x)<ct;if(!v&&!E)return 0;let P=0;if(v){const U=_.y,q=Math.min(_.x,S.x)-ct,z=Math.max(_.x,S.x)+ct;if(z<=q)return 0;for(const Y of m)Y.edgeIndex===h||Y.orientation!=="vertical"||Y.pipe.coord<q||Y.pipe.coord>z||Y.from-ct<=U&&Y.to+ct>=U&&(P+=C)}else if(E){const U=_.x,q=Math.min(_.y,S.y)-ct,z=Math.max(_.y,S.y)+ct;if(z<=q)return 0;for(const Y of m)Y.edgeIndex===h||Y.orientation!=="horizontal"||Y.pipe.coord<q||Y.pipe.coord>z||Y.from-ct<=U&&Y.to+ct>=U&&(P+=C)}return P},"crossingPenalty"),L=s.map((h,_)=>{if(!h.start||!h.end)return{idx:_,crossLane:0,dx:0,dy:0};const S=r.get(h.start),v=r.get(h.end),E=i.get(h.start),P=i.get(h.end),U=E&&P&&E.id!==P.id?1:0,q=S&&v?Math.abs((v.x??0)-(S.x??0)):0,z=S&&v?Math.abs((v.y??0)-(S.y??0)):0;return{idx:_,crossLane:U,dx:q,dy:z}}).sort((h,_)=>{if(h.crossLane!==_.crossLane)return _.crossLane-h.crossLane;const S=h.dx+h.dy,v=_.dx+_.dy;return Math.abs(S-v)>1?S-v:h.idx-_.idx}).map(h=>h.idx),T=c.__name((h,_,S,v)=>{const E=Math.min(h.x,_.x),P=Math.max(h.x,_.x),U=Math.min(h.y,_.y),q=Math.max(h.y,_.y);return!!g.find(Y=>S&&Y.nodeId===S||v&&Y.nodeId===v?!1:Math.abs(h.x-_.x)>ct?Y.minY<h.y&&Y.maxY>h.y&&Y.maxX>E&&Y.minX<P:Y.minX<h.x&&Y.maxX>h.x&&Y.maxY>U&&Y.minY<q)},"isSegmentBlocked"),p=new Map,I=new Map;for(const h of s)!h.start||!h.end||h.start===h.end||(I.set(h.start,(I.get(h.start)??0)+1),I.set(h.end,(I.get(h.end)??0)+1));const w=c.__name((h,_)=>Zn(h,_,"bottom"),"determineSide"),A=new Map;for(const[h,_]of s.entries()){if(!_.start||!_.end||_.start===_.end||_.points&&_.points.length>0)continue;const S=r.get(_.start),v=r.get(_.end);if(!S||!v)continue;const E=(v.x??0)-(S.x??0),P=(v.y??0)-(S.y??0);A.set(h,{edgeIdx:h,srcId:_.start,dstId:_.end,srcSide:w(S,{x:v.x??0,y:v.y??0}),dstSide:w(v,{x:S.x??0,y:S.y??0}),absDx:Math.abs(E),absDy:Math.abs(P),dxSign:Math.sign(E),dySign:Math.sign(P)})}const B=c.__name(h=>h.srcSide==="top"||h.srcSide==="bottom"?h.absDx===0?1/0:h.absDy/h.absDx:h.absDy===0?1/0:h.absDx/h.absDy,"preferenceStrength"),N=c.__name(h=>h.srcSide==="top"||h.srcSide==="bottom"?h.dxSign>=0?"right":"left":h.dySign>=0?"bottom":"top","secondarySide"),k=new Map;for(const h of A.values()){const _=`${h.srcId}:${h.srcSide}`;k.has(_)||k.set(_,[]),k.get(_).push(h)}const H=new Map,O=c.__name((h,_)=>`${h}:${_}`,"loadKey");for(const h of A.values())H.set(O(h.srcId,h.srcSide),(H.get(O(h.srcId,h.srcSide))??0)+1),H.set(O(h.dstId,h.dstSide),(H.get(O(h.dstId,h.dstSide))??0)+1);for(const h of k.values())if(!(h.length<2)){h.sort((_,S)=>{const v=B(_),E=B(S);return Math.abs(v-E)>1e-9?E-v:_.edgeIdx-S.edgeIdx});for(let _=1;_<h.length;_++){const S=h[_],v=N(S),E=H.get(O(S.srcId,S.srcSide))??0,P=H.get(O(S.srcId,v))??0;P>=E||(H.set(O(S.srcId,S.srcSide),E-1),H.set(O(S.srcId,v),P+1),S.srcSide=v)}}const G=c.__name(h=>{const _=h?.shape;return _==="question"||_==="diamond"},"isDiamondNode"),j=new Map;for(const h of A.values())j.has(h.dstId)||j.set(h.dstId,new Set),j.get(h.dstId).add(h.dstSide);for(const h of A.values()){if(!G(r.get(h.srcId)))continue;const _=j.get(h.srcId);if(!_?.has(h.srcSide))continue;const S=N(h);if(_.has(S)||(H.get(O(h.srcId,S))??0)>0)continue;const v=H.get(O(h.srcId,h.srcSide))??0;H.set(O(h.srcId,h.srcSide),Math.max(0,v-1)),H.set(O(h.srcId,S),1),h.srcSide=S}for(const h of A.values()){const{edgeIdx:_,srcId:S,dstId:v,srcSide:E,dstSide:P}=h,U=r.get(S),q=r.get(v),z=`${S}:${E}:src`,Y=E==="top"||E==="bottom"?q.x??0:q.y??0;p.has(z)||p.set(z,[]),p.get(z).push({edgeIdx:_,oppositeCoord:Y});const ot=`${v}:${P}:dst`,rt=P==="top"||P==="bottom"?U.x??0:U.y??0;p.has(ot)||p.set(ot,[]),p.get(ot).push({edgeIdx:_,oppositeCoord:rt})}const J=new Map,dt=8;for(const[h,_]of p){if(_.length<2)continue;_.sort((vt,Dt)=>vt.oppositeCoord-Dt.oppositeCoord);const S=h.split(":"),v=S.slice(0,-2).join(":"),E=S[S.length-2],P=S[S.length-1],U=r.get(v);if(!U)continue;const z=E==="left"||E==="right"?U.height??10:U.width??10,Y=U.shape,rt=Y==="question"||Y==="diamond"?z*.3:z,tt=Math.min(20,Math.max(dt,rt/(_.length+1))),At=-(tt*(_.length-1))/2;for(const[vt,Dt]of _.entries()){const Jt=At+vt*tt,dn=`${Dt.edgeIdx}:${P}`;J.set(dn,Jt)}}const pt=c.__name(h=>!!s[h]?.labelNodeId,"edgeHasLabelNode"),Bt=c.__name((h,_)=>h?(p.get(`${h}:${_}:src`)??[]).some(({edgeIdx:S})=>pt(S))||(p.get(`${h}:${_}:dst`)??[]).some(({edgeIdx:S})=>pt(S)):!1,"faceHasLabelNode"),Ot=c.__name((h,_,S)=>_==="top"||_==="bottom"?{x:h.x+S,y:h.y}:{x:h.x,y:h.y+S},"applyPortOffset"),Q=c.__name((h,_,S)=>{const v=A.get(h),E={x:S.x??0,y:S.y??0},P={x:_.x??0,y:_.y??0},U=v?.srcSide??w(_,E),q=v?.dstSide??w(S,P);let z=v?M(_,v.srcSide):u(_,E,!0),Y=v?M(S,v.dstSide):u(S,P,!1);const ot=J.get(`${h}:src`),rt=J.get(`${h}:dst`);return ot!==void 0&&(z=Ot(z,U,ot)),rt!==void 0&&(Y=Ot(Y,q,rt)),{pSrcPort:z,pDstPort:Y,srcSide:U,dstSide:q}},"portsForEdge");for(const h of L){const _=s[h];if(d[h]=[],!_.start||!_.end||_.points&&_.points.length>0||_.start===_.end)continue;const S=r.get(_.start),v=r.get(_.end);if(!S||!v)continue;const{pSrcPort:E,pDstPort:P,srcSide:U,dstSide:q}=Q(h,S,v),z={...E},Y={...P},ot=U==="top"||U==="bottom",rt=q==="top"||q==="bottom";if(ot){const X=E.y>(S.y??0);z.y=X?E.y+ne:E.y-ne}else{const X=E.x>(S.x??0);z.x=X?E.x+ne:E.x-ne}if(rt){const X=P.y>(v.y??0);Y.y=X?P.y+ne:P.y-ne}else{const X=P.x>(v.x??0);Y.x=X?P.x+ne:P.x-ne}const st=c.__name((X,$)=>{for(const K of g)if(!$.includes(K.nodeId)&&X.x>K.minX&&X.x<K.maxX&&X.y>K.minY&&X.y<K.maxY)return{inside:!0,obstacle:K};return{inside:!1}},"isPointInObstacle"),tt=c.__name((X,$,K,lt,St)=>{if(St){const Rt=X.y>($.y??0);return{x:(K.x??0)>=X.x?lt.maxX+_e:lt.minX-_e,y:Rt?lt.maxY+Te:lt.minY-Te,leavesPositiveSide:Rt}}const _t=X.x>($.x??0),Lt=(K.y??0)>=X.y;return{x:_t?lt.maxX+_e:lt.minX-_e,y:Lt?lt.maxY+Te:lt.minY-Te,leavesPositiveSide:_t}},"obstacleDetour");let yt=[];const At=[_.start,_.end],vt=st(z,At);if(vt.inside&&vt.obstacle){const X=vt.obstacle;if(ot){const $=tt(E,S,v,X,!0);z.x=$.x,z.y=$.y;const K=$.leavesPositiveSide?Math.min(X.minY-2,E.y+ne):Math.max(X.maxY+2,E.y-ne);yt=[{x:E.x,y:K},{x:$.x,y:K},{x:$.x,y:$.y}]}else{const $=tt(E,S,v,X,!1),K=$.leavesPositiveSide?Math.min(X.minX-2,E.x+ne):Math.max(X.maxX+2,E.x-ne);z.x=$.x,z.y=$.y,yt=[{x:K,y:E.y},{x:K,y:$.y},{x:$.x,y:$.y}]}}let Dt=[];const Jt=st(Y,At);if(Jt.inside&&Jt.obstacle){const X=Jt.obstacle;if(rt){const $=tt(P,v,S,X,!0);Y.x=$.x,Y.y=$.y,Dt=[{x:$.x,y:$.y},{x:P.x,y:$.y}]}else{const $=tt(P,v,S,X,!1);Y.x=$.x,Y.y=$.y,Dt=[{x:$.x,y:$.y},{x:$.x,y:P.y}]}}if(yt.length===0&&Dt.length===0){const X=_e,$=Math.abs(z.x-Y.x)<X,K=Math.abs(z.y-Y.y)<X,lt=J.get(`${h}:src`)!==void 0||J.get(`${h}:dst`)!==void 0,St=(p.get(`${_.start??""}:${U}:src`)?.length??0)+(p.get(`${_.start??""}:${U}:dst`)?.length??0),_t=(p.get(`${_.end??""}:${q}:src`)?.length??0)+(p.get(`${_.end??""}:${q}:dst`)?.length??0),Lt=St>1||_t>1,Rt=I.get(_.start??"")??0,ut=I.get(_.end??"")??0,Yt=St>1&&Bt(_.start,U)||_t>1&&Bt(_.end,q),ee=St<=1||Rt<=2,Pt=_t<=1||ut<=2;if(($||K)&&!lt&&(!Lt||Lt&&!Yt&&ee&&Pt)&&!T(E,P,_.start,_.end)){_.points=[{...E},{...z},{...Y},{...P}],y.add(h);const bt=K?"horizontal":"vertical",$t=K?E.y:E.x,Mt=K?Math.min(E.x,P.x):Math.min(E.y,P.y),It=K?Math.max(E.x,P.x):Math.max(E.y,P.y),Wt={id:`fast-path-${bt}-${$t.toFixed(0)}-${h}`,orientation:bt,coord:$t,spanMin:Mt,spanMax:It,tracks:[]};m.push({edgeIndex:h,segmentIndex:0,orientation:bt,pipe:Wt,trackIndex:0,from:Mt,to:It});continue}}const dn=x("vertical",z.x,z.y,z.y);z.x=dn.coord;const hr=x("vertical",Y.x,Y.y,Y.y);Y.x=hr.coord;let ue=Math.min(z.x,Y.x)-50,he=Math.max(z.x,Y.x)+50,Ce=Math.min(z.y,Y.y)-50,ve=Math.max(z.y,Y.y)+50;for(const X of g){const $=Math.min(z.x,Y.x),K=Math.max(z.x,Y.x),lt=Math.min(z.y,Y.y),St=Math.max(z.y,Y.y);X.minX<K&&X.maxX>$&&X.minY<St&&X.maxY>lt&&(ue=Math.min(ue,X.minX-ze),he=Math.max(he,X.maxX+ze),Ce=Math.min(Ce,X.minY-ze),ve=Math.max(ve,X.maxY+ze))}for(const X of g){if(X.maxX<ue||X.minX>he||X.maxY<Ce||X.minY>ve)continue;const $=_e;x("horizontal",X.minY-$,ue,he),x("horizontal",X.maxY+$,ue,he);const K=Te;x("vertical",X.minX-K,Ce,ve),x("vertical",X.maxX+K,Ce,ve)}x("horizontal",z.y,ue,he),x("horizontal",Y.y,ue,he);const gr=a.filter(X=>X.orientation==="horizontal"&&X.coord>=Ce&&X.coord<=ve),mr=a.filter(X=>X.orientation==="vertical"&&X.coord>=ue&&X.coord<=he),Pe=c.__name((X,$)=>`${X.toFixed(1)},${$.toFixed(1)}`,"getKey"),Be=Pe(z.x,z.y),Mo=Pe(Y.x,Y.y),ke=new Map,un=new Map,hn=new Map,Fe=new Set,xe=[];ke.set(Be,0),hn.set(Be,"n"),xe.push({key:Be,f:Math.hypot(Y.x-z.x,Y.y-z.y),pt:z}),Fe.add(Be);let Ht=[];const ge=c.__name((X,$)=>T(X,$,_.start,_.end),"checkSegmentBlocked"),gn={x:Y.x,y:z.y},pr=ge(z,gn),yr=ge(gn,Y),xr=pr||yr,mn={x:z.x,y:Y.y},_r=ge(z,mn),br=ge(mn,Y);if(xr?_r||br||(Math.abs(z.x-Y.x)<ct?Ht=[z,Y]:Ht=[z,mn,Y]):Math.abs(z.y-Y.y)<ct||Math.abs(z.x-Y.x)<ct?Ht=[z,Y]:Ht=[z,gn,Y],Ht.length===0)for(;xe.length>0;){xe.sort((ut,Yt)=>ut.f-Yt.f);const X=xe.shift();if(Fe.delete(X.key),X.key===Mo){let ut=Mo,Yt=Y;for(Ht=[Yt];un.has(ut);){const ee=un.get(ut);Ht.unshift(ee),Yt=ee,ut=Pe(ee.x,ee.y)}break}const $=X.pt.x,K=X.pt.y,lt=mr.sort((ut,Yt)=>ut.coord-Yt.coord),St=lt.findIndex(ut=>Math.abs(ut.coord-$)<1),_t=gr.sort((ut,Yt)=>ut.coord-Yt.coord),Lt=_t.findIndex(ut=>Math.abs(ut.coord-K)<1),Rt=[];St>0&&Rt.push({x:lt[St-1].coord,y:K}),St>=0&&St<lt.length-1&&Rt.push({x:lt[St+1].coord,y:K}),Lt>0&&Rt.push({x:$,y:_t[Lt-1].coord}),Lt>=0&&Lt<_t.length-1&&Rt.push({x:$,y:_t[Lt+1].coord});for(const ut of Rt){const Yt=Math.min($,ut.x),ee=Math.max($,ut.x),Pt=Math.min(K,ut.y),Gt=Math.max(K,ut.y);if(g.some(Zt=>Zt.nodeId===_.start||Zt.nodeId===_.end?!1:Yt!==ee?Zt.minY<K&&Zt.maxY>K&&Zt.maxX>Yt&&Zt.minX<ee:Zt.minX<$&&Zt.maxX>$&&Zt.maxY>Pt&&Zt.minY<Gt))continue;const bt=Pe(ut.x,ut.y),$t=Math.abs(ut.x-$)+Math.abs(ut.y-K),Mt=b(h,X.pt,ut);let It=0;const Wt=Y.x-z.x,Le=Y.y-z.y,De=ut.x-$,pn=ut.y-K;(Le>10&&pn<-5||Le<-10&&pn>5)&&(It=Math.abs(pn)*100),(Wt>10&&De<-5||Wt<-10&&De>5)&&(It+=Math.abs(De)*50);let Io=0;const So=hn.get(X.key)??"n",Co=Math.abs(De)>ct?"h":"v";So!=="n"&&So!==Co&&(Io=50);const Mr=$t+Mt+It+Io,He=(ke.get(X.key)??1/0)+Mr,vo=Math.abs(Y.x-ut.x)+Math.abs(Y.y-ut.y);if(He<(ke.get(bt)??1/0))if(un.set(bt,X.pt),ke.set(bt,He),hn.set(bt,Co),!Fe.has(bt))xe.push({key:bt,f:He+vo,pt:ut}),Fe.add(bt);else{const Zt=xe.findIndex(Ir=>Ir.key===bt);Zt!==-1&&(xe[Zt].f=He+vo)}}}if(Ht.length===0&&(Ht=[z,{x:z.x,y:Y.y},Y]),Ht.length>4){const X=Ht[0],$=Ht[Ht.length-1];let K=Math.min(X.x,$.x),lt=Math.max(X.x,$.x),St=Math.min(X.y,$.y),_t=Math.max(X.y,$.y);for(const Pt of Ht)K=Math.min(K,Pt.x),lt=Math.max(lt,Pt.x),St=Math.min(St,Pt.y),_t=Math.max(_t,Pt.y);const Lt=lt>Math.max(X.x,$.x),Rt=K<Math.min(X.x,$.x);if(l){const Pt=Te;if(Lt){const Gt=Math.max(X.x,$.x),Nt=Math.min(X.y,$.y),bt=Math.max(X.y,$.y),$t=g.filter(Mt=>Mt.minX<Gt&&Mt.maxX>Gt&&Mt.minY<bt&&Mt.maxY>Nt);if($t.length>0){let Mt=Math.max(X.x,$.x);for(const It of $t){const Wt=(It.minX+It.maxX)/2;if(It.visualXHalfExtent===void 0||isNaN(It.visualXHalfExtent))continue;const Le=Wt+It.visualXHalfExtent+Pt;Mt=Math.max(Mt,Le)}isNaN(Mt)||(lt=Mt)}}if(Rt){const Gt=g.filter(Nt=>Nt.minX<Math.min(X.x,$.x)+Pt&&Nt.minY<Math.max(X.y,$.y)&&Nt.maxY>Math.min(X.y,$.y));if(Gt.length>0){let Nt=Math.min(X.x,$.x);for(const bt of Gt){const Mt=(bt.minX+bt.maxX)/2-bt.visualXHalfExtent-Pt;Nt=Math.min(Nt,Mt)}K=Nt}}}const ut=c.__name(Pt=>{const Gt=$.y>X.y,Nt=g.filter(Mt=>{const It=Math.min(X.x,$.x)<Mt.maxX&&Math.max(X.x,$.x)>Mt.minX,Wt=Math.min(X.y,$.y)<Mt.maxY&&Math.max(X.y,$.y)>Mt.minY;return It&&Wt});let bt=Nt;if(l&&Nt.length>0){const Mt=Nt.filter(It=>It.minX<Pt&&It.maxX>Pt);Mt.length>0&&(bt=Mt)}if(bt.length===0)return $.y;const $t=_e;if(Gt){const It=Math.max(...bt.map(Wt=>Wt.maxY))+$t;if(It<$.y-ct)return It}else{const It=Math.min(...bt.map(Wt=>Wt.minY))-$t;if(It>$.y+ct)return It}return $.y},"findBestReturnY"),Yt=c.__name(Pt=>{const Gt=ut(Pt),Nt={x:Pt,y:X.y},bt={x:Pt,y:Gt},$t={x:$.x,y:Gt},Mt=ge(X,Nt),It=ge(Nt,bt),Wt=ge(bt,$t),Le=Gt!==$.y?ge($t,$):!1;return!Mt&&!It&&!Wt&&!Le?Math.abs(Gt-$.y)<ct?[X,Nt,bt,$]:[X,Nt,bt,$t,$]:null},"trySimplifyWithDetourX"),ee=Lt&&!Rt?Yt(lt):Rt&&!Lt?Yt(K):null;ee&&(Ht=ee)}const Xt=[E,...yt,...Ht,...Dt.reverse(),P];if(Xt.length>=3){const X=Xt[Xt.length-1],$=Xt[Xt.length-2],K=Xt[Xt.length-3],lt=Math.abs(K.y-$.y)<ct&&Math.abs($.y-X.y)<ct,St=Math.abs(K.x-$.x)<ct&&Math.abs($.x-X.x)<ct;if(lt){const _t=Math.sign($.x-K.x),Lt=Math.sign(X.x-K.x);_t!==0&&_t===Lt&&Math.abs($.x-K.x)>Math.abs(X.x-K.x)&&Xt.splice(-2,1)}else if(St){const _t=Math.sign($.y-K.y),Lt=Math.sign(X.y-K.y);_t!==0&&_t===Lt&&Math.abs($.y-K.y)>Math.abs(X.y-K.y)&&Xt.splice(-2,1)}}const ie=[Xt[0]];for(let X=1;X<Xt.length-1;X++){if(X===1){ie.push(Xt[X]);continue}const $=ie[ie.length-1],K=Xt[X],lt=Xt[X+1];if(Math.abs($.y-K.y)<ct&&Math.abs(K.y-lt.y)<ct){const St=K.x>$.x,_t=lt.x>K.x;if(St!==_t){ie.push(K);continue}continue}if(Math.abs($.x-K.x)<ct&&Math.abs(K.x-lt.x)<ct){const St=K.y>$.y,_t=lt.y>K.y;if(St!==_t){ie.push(K);continue}continue}ie.push(K)}ie.push(Xt[Xt.length-1]);for(let X=0;X<ie.length-1;X++){const $=ie[X],K=ie[X+1],lt=Math.abs($.x-K.x)<ct?"vertical":"horizontal",St=lt==="vertical"?$.x:$.y,_t=lt==="vertical"?Math.min($.y,K.y):Math.min($.x,K.x),Lt=lt==="vertical"?Math.max($.y,K.y):Math.max($.x,K.x),Rt=x(lt,St,_t,Lt),ut={edgeIndex:h,segmentIndex:X,orientation:lt,pipe:Rt,trackIndex:0,from:_t,to:Lt};m.push(ut),d[h].push(m.length-1),Rt.tracks[0]||(Rt.tracks[0]={index:0,coord:Rt.coord,segments:[]}),Rt.tracks[0].segments.push({edgeIndex:h,segmentIndex:X,from:_t,to:Lt})}}const W=c.__name((h,_)=>h.from<_.to&&_.from<h.to,"segmentsOverlap"),et=c.__name((h,_,S,v)=>{const E=!v.segments.some(U=>(U.edgeIndex!==_.edgeIndex||U.segmentIndex!==_.segmentIndex)&&W(U,h)),P=!S.segments.some(U=>(U.edgeIndex!==h.edgeIndex||U.segmentIndex!==h.segmentIndex)&&W(U,_));return E&&P?(h.trackIndex=v.index,_.trackIndex=S.index,S.segments=[...S.segments.filter(U=>U.edgeIndex!==h.edgeIndex||U.segmentIndex!==h.segmentIndex),{edgeIndex:_.edgeIndex,segmentIndex:_.segmentIndex,from:_.from,to:_.to}],v.segments=[...v.segments.filter(U=>U.edgeIndex!==_.edgeIndex||U.segmentIndex!==_.segmentIndex),{edgeIndex:h.edgeIndex,segmentIndex:h.segmentIndex,from:h.from,to:h.to}],!0):!1},"trySwapSegmentsAcrossTracks"),at=c.__name(h=>{const _=h.tracks.length;return h.tracks[_]={index:_,coord:h.coord,segments:[]},_},"createNewTrack"),gt=c.__name((h,_)=>{const S=h.pipe.tracks[h.trackIndex];S.segments=S.segments.filter(E=>E.edgeIndex!==h.edgeIndex||E.segmentIndex!==h.segmentIndex),h.trackIndex=_,h.pipe.tracks[_].segments.push({edgeIndex:h.edgeIndex,segmentIndex:h.segmentIndex,from:h.from,to:h.to})},"moveSegmentToTrack"),xt=c.__name((h,_)=>{const S=d[h.edgeIndex];for(const v of S){const E=m[v];E.pipe===h.pipe&&gt(E,_)}},"moveSegmentChainToTrack"),Ct=c.__name(h=>{const _=d[h.edgeIndex],S=_.indexOf(m.indexOf(h)),v=[];return S>0&&v.push(m[_[S-1]]),S<_.length-1&&v.push(m[_[S+1]]),v},"getAdjacentSegmentsAlongEdge"),Vt=c.__name((h,_)=>{if(h.orientation===_.orientation)return!1;const S=h.orientation==="horizontal"?h:_,v=h.orientation==="horizontal"?_:h;return v.pipe.coord>S.from&&v.pipe.coord<S.to&&S.pipe.coord>v.from&&S.pipe.coord<v.to},"haveAnyCrossing"),jt=c.__name((h,_)=>{for(const S of h.tracks)if(!S.segments.some(E=>(E.edgeIndex!==_.edgeIndex||E.segmentIndex!==_.segmentIndex)&&W(E,_)))return S.index;return-1},"findAvailableTrack"),Ut=c.__name((h,_)=>{if(h.trackIndex===_.trackIndex)return W(h,_);const S=Ct(h),v=Ct(_);return S.some(E=>v.some(P=>Vt(E,P)))},"segmentsConflict"),te=c.__name((h,_,S)=>{if(et(h,_,h.pipe.tracks[h.trackIndex],_.pipe.tracks[_.trackIndex]))return;const v=jt(h.pipe,_);S(_,v!==-1?v:at(h.pipe))},"resolveTrackConflict"),Ie=c.__name(h=>{let _=0;for(let S=0;S<h.length;S++)for(let v=S+1;v<h.length;v++){const E=h[S],P=h[v];E.pipe===P.pipe&&Ut(E,P)&&(_++,te(E,P,xt))}return _},"resolveHandleConflicts"),de=new Map,Se=c.__name(h=>{if(de.has(h))return de.get(h);const _=d[h];if(_.length===0){const q={dest:0,deviation:0,base:0,delta:0};return de.set(h,q),q}const v=m[_[0]].pipe.coord;let E=v;for(let q=1;q<_.length;q++){const z=m[_[q]];if(z.orientation==="horizontal"){const Y=z.from,ot=z.to;E=Math.abs(Y-v)>Math.abs(ot-v)?Y:ot;break}}const P=Math.abs(E-v),U={dest:E,deviation:P,base:v,delta:E-v};return de.set(h,U),U},"getDestInfo"),an=c.__name(()=>{let h=0;const _=new Map;for(const[v,E]of s.entries())d[v].length!==0&&E.start&&(_.has(E.start)||_.set(E.start,[]),_.get(E.start).push(v));const S=c.__name(v=>{const E=s[v];if(!E.start||!E.end)return 0;const P=r.get(E.start),U=r.get(E.end);if(!P||!U)return 0;const q=(U.x??0)-(P.x??0),z=(U.y??0)-(P.y??0);return Math.abs(q)+Math.abs(z)},"getEdgeDistance");for(const v of _.values()){v.sort((P,U)=>{const q=Se(P),z=Se(U);if(Math.abs(q.deviation-z.deviation)>1)return q.deviation-z.deviation;if(Math.abs(q.dest-z.dest)>1)return q.dest-z.dest;const Y=S(P),ot=S(U);if(Math.abs(Y-ot)>1)return ot-Y;const rt=d[P].length,st=d[U].length;if(rt!==st)return rt-st;if(rt===1){const tt=d[P][0],yt=d[U][0];if(m[tt]&&m[yt]){const At=m[tt],vt=m[yt],Dt=Math.abs(At.to-At.from),Jt=Math.abs(vt.to-vt.from);if(Math.abs(Dt-Jt)>1)return Dt-Jt}}return 0});const E=v.map(P=>m[d[P][0]]);h+=Ie(E)}return h},"fixSourceHandleCrossings"),ln=c.__name(()=>{let h=0;const _=new Map;for(const[S,v]of s.entries())d[S].length!==0&&v.end&&(_.has(v.end)||_.set(v.end,[]),_.get(v.end).push(S));for(const S of _.values()){S.sort((E,P)=>{const U=c.__name(Y=>{const ot=d[Y];if(ot.length<2)return 0;const rt=m[ot[ot.length-2]];return Math.abs(rt.to-rt.from)},"getDist"),q=U(E),z=U(P);return Math.abs(q-z)>.1?q-z:E-P});const v=S.map(E=>m[d[E][d[E].length-1]]);h+=Ie(v)}return h},"fixTargetHandleCrossings"),fn=c.__name(()=>{let h=0;for(const _ of a){const S=[];for(const v of _.tracks)for(const E of v.segments){const P=d[E.edgeIndex].find(U=>m[U].segmentIndex===E.segmentIndex);P!==void 0&&S.push(m[P])}S.sort((v,E)=>v.edgeIndex-E.edgeIndex||v.segmentIndex-E.segmentIndex);for(let v=0;v<S.length;v++)for(let E=v+1;E<S.length;E++){const P=S[v],U=S[E];Ut(P,U)&&(h++,te(P,U,gt))}}return h},"fixPipeCrossings");let R=0;const F=10;for(;R<F;){let h=0;if(h+=an(),h+=ln(),h+=fn(),h===0)break;R++}const D=new Map;for(const h of a){const _=[];h.tracks.forEach(v=>{v.segments.forEach(E=>{_.push({edgeIndex:E.edgeIndex,segmentIndex:E.segmentIndex,trackIndex:v.index,from:E.from,to:E.to})})}),_.sort((v,E)=>v.from-E.from);const S=[];if(_.length>0){let v=[_[0]],E=_[0].to;for(let P=1;P<_.length;P++){const U=_[P];U.from<E?(v.push(U),E=Math.max(E,U.to)):(S.push(v),v=[U],E=U.to)}S.push(v)}for(const v of S){const E=new Set;v.forEach(tt=>E.add(tt.trackIndex));const P=new Map;v.forEach(tt=>{const yt=Se(tt.edgeIndex);P.set(tt.trackIndex,(P.get(tt.trackIndex)??0)+yt.delta)});const U=[...E].filter(tt=>(P.get(tt)??0)<-1),q=[...E].filter(tt=>(P.get(tt)??0)>1),z=[...E].filter(tt=>Math.abs(P.get(tt)??0)<=1);U.sort((tt,yt)=>(P.get(yt)??0)-(P.get(tt)??0)),q.sort((tt,yt)=>(P.get(tt)??0)-(P.get(yt)??0));const Y=c.__name((tt,yt)=>{v.filter(At=>At.trackIndex===tt).forEach(At=>{const vt=y.has(At.edgeIndex)?h.coord:yt;D.set(`${At.edgeIndex}-${At.segmentIndex}`,vt)})},"assignCoord");let ot=0;for(const tt of U)ot++,Y(tt,h.coord-ot*bn);if(z.length===0&&E.size>0){const tt=[...E].sort((vt,Dt)=>Math.abs(P.get(vt)??0)-Math.abs(P.get(Dt)??0))[0],yt=U.indexOf(tt);yt!==-1&&U.splice(yt,1);const At=q.indexOf(tt);At!==-1&&q.splice(At,1),z.push(tt)}let rt=0;for(const tt of z){if(rt===0)Y(tt,h.coord);else{const yt=rt%2===1?1:-1,At=Math.ceil(rt/2);Y(tt,h.coord+yt*At*bn*.5)}rt++}let st=0;for(const tt of q)st++,Y(tt,h.coord+st*bn)}}for(const[h,_]of s.entries()){const S=d[h]??[];if(S.length===0)continue;const v=[],E=r.get(_.start),P=r.get(_.end),{pSrcPort:U,pDstPort:q}=Q(h,E,P),z=S.map(rt=>{const st=m[rt],tt=D.get(`${st.edgeIndex}-${st.segmentIndex}`)??st.pipe.coord;return{orient:st.orientation,coord:tt,from:st.from,to:st.to}});v.push(U);for(let rt=0;rt<z.length;rt++){const st=z[rt],tt=v[v.length-1],yt=st.orient==="vertical"?tt.y:tt.x,At=st.orient==="vertical"?tt.x:tt.y,vt=z[rt+1],Dt=rt<z.length-1;if(Math.abs(At-st.coord)>ct&&v.push(be(st,yt)),Dt&&vt.orient===st.orient)if(Math.abs(st.coord-vt.coord)>ct){const Jt=st.orient==="vertical"?(yt+vt.from)/2:Qn(st,vt);v.push(be(st,Jt),be(vt,Jt))}else(rt===0||rt===z.length-2)&&v.push(be(st,Qn(st,vt)));else if(Dt)v.push(be(st,vt.coord));else{const Jt=Math.abs(st.from-yt)<Math.abs(st.to-yt)?st.to:st.from;v.push(be(st,Jt))}}const Y=v[v.length-1];(Math.abs(Y.x-q.x)>ct||Math.abs(Y.y-q.y)>ct)&&v.push(q);const ot=[];v.length>0&&ot.push(v[0]);for(let rt=1;rt<v.length;rt++){const st=v[rt],tt=ot[ot.length-1];(Math.abs(st.x-tt.x)>ct||Math.abs(st.y-tt.y)>ct)&&ot.push(st)}_.points=ot}for(const h of s){const _=h.__originalEdge;_&&h.points&&(_.points=h.points)}t.edges=(t.edges??[]).filter(h=>!h.isLayoutOnly);const V=c.__name((h,_)=>{const S=_.x??0,v=_.y??0,E=_.width??0,P=_.height??0;if(E<=0||P<=0)return h;const U=S-E/2,q=S+E/2,z=v-P/2,Y=v+P/2;if(h.x<U||h.x>q||h.y<z||h.y>Y)return h;const ot=h.x-U,rt=q-h.x,st=h.y-z,tt=Y-h.y,yt=Math.min(ot,rt,st,tt);return yt===ot?{x:U,y:h.y}:yt===rt?{x:q,y:h.y}:yt===st?{x:h.x,y:z}:{x:h.x,y:Y}},"nodeBoundaryClamp");for(const h of t.edges){const _=h.points;if(!_||_.length<2)continue;const S=h.start,v=h.end,E=S?r.get(S):void 0,P=v?r.get(v):void 0;E&&(_[0]=V(_[0],E)),P&&(_[_.length-1]=V(_[_.length-1],P))}return t}c.__name(lr,"routeEdgesOrthogonal");function fr(t){return t.direction??"TB"}c.__name(fr,"getSwimlaneDirection");function dr(t){const e=Uo(t),n=t.config.flowchart?.nodeSpacing??40,o=t.config.flowchart?.rankSpacing??100,s=t.config.swimlane?.ignoreCrossLaneEdges??!0,r=t.config.swimlane?.optimizeRanksByCrossings??!0,i=t.config.swimlane?.automaticLaneOrdering??!1,a=fr(t),{ordered:l,coordinates:f}=ar(e,{nodeGap:n,layerGap:o,ignoreCrossLaneEdges:s,optimizeRanksByCrossings:r,automaticLaneOrdering:i,direction:a});Wo(e,l,f,{nodeGap:n,layerGap:o});for(const g of t.edges??[])delete g.points;lr(t,a);for(const g of t.edges??[])(!g.curve||g.curve==="basis")&&(g.curve="rounded");return Ls(t,a),vs(t),a}c.__name(dr,"runSwimlaneLayoutCore");async function ur(t,e){const n=e.select("g");c.markers_default(n,t.markers,t.type,t.diagramId),c.clear2(),c.clear$1(),c.clear$2(),Sr.clear(),jo(t);const o=Ko(t);t.nodes=o.nodes,t.edges=o.edges;const{groups:s}=await No(n,t);dr(t),await $o(t,s)}c.__name(ur,"render");exports.render=ur;
2
- //# sourceMappingURL=swimlanes-5IMT3BWC-JZVn9oCR.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Sr=require("./chunk-RYQCIY6F-he5fUSYo.cjs"),c=require("./extractHeadings-BsiIYa_e.cjs"),Cr=require("./graph-BgRih2Qv.cjs");async function No(t,e){const n=new Cr.Graph({multigraph:!0,compound:!0}),o=[...e.edges],s=c.getConfig2(),r=t.insert("g").attr("class","root"),i=r.insert("g").attr("class","clusters"),a=r.insert("g").attr("class","edges edgePath"),l=r.insert("g").attr("class","edgeLabels"),f=r.insert("g").attr("class","nodes"),g=new Map,x=t.node()!=null;await Promise.all(e.nodes.map(async M=>{if(M.isGroup)n.setNode(M.id,{...M});else{if(x){const u=await c.insertNode(f,M,{config:s,dir:M.dir}),m=u.node()?.getBBox()??{width:0,height:0};g.set(M.id,u),M.width=m.width,M.height=m.height}n.setNode(M.id,{...M})}}));for(const M of o)n.setEdge(M.start,M.end,{...M},M.id),e.edges.some(m=>m.id===M.id)||e.edges.push(M);if(globalThis.mermaidCaptureSizes){const{captureNodeSizes:M}=await Promise.resolve().then(()=>require("./sizeCapture-X5ZJPWSS-CedNWC9b.cjs"));M(t,e)}return{graph:n,groups:{clusters:i,edgePaths:a,edgeLabels:l,nodes:f,rootGroups:r},nodeElements:g}}c.__name(No,"createGraphWithElements");var Lo=5,Xe=1e-5,Ye=1e-6;function Ue(t){const e=[];for(let n=0;n<t.length-1;n++)e.push({a:t[n],b:t[n+1]});return e}c.__name(Ue,"buildSegmentList");function Oo(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,a=o.y-n.y,l=s*a-r*i;if(l===0)return null;const f=n.x-t.x,g=n.y-t.y,x=(f*a-g*i)/l,M=(f*r-g*s)/l;return x<=Ye||x>=1-Ye||M<=Ye||M>=1-Ye?null:{point:{x:t.x+x*s,y:t.y+x*r},tA:x,tB:M}}c.__name(Oo,"segmentIntersection");function Mn(t){return Math.abs(t.b.x-t.a.x)>=Math.abs(t.b.y-t.a.y)}c.__name(Mn,"isHorizontalSeg");function Po(t){const e=[];for(let n=0;n<t.length;n++){const o=t[n],s=Ue(o.points);for(let r=n+1;r<t.length;r++){const i=t[r],a=Ue(i.points);for(const[l,f]of s.entries())for(const[g,x]of a.entries()){const M=Oo(f.a,f.b,x.a,x.b);if(!M)continue;const u=Mn(f),m=Mn(x);(u!==m?u:!1)?e.push({jumpEdgeId:o.id,otherEdgeId:i.id,segIndex:l,t:M.tA,point:M.point}):e.push({jumpEdgeId:i.id,otherEdgeId:o.id,segIndex:g,t:M.tB,point:M.point})}}}return e}c.__name(Po,"findEdgeIntersections");function re(t){const e=Math.round(t*1e3)/1e3;return Number.isInteger(e)?`${e}`:`${e}`}c.__name(re,"fmt");function Ee(t){return`${re(t.x)},${re(t.y)}`}c.__name(Ee,"pointToString");function Bo(t){const e=t.b.x-t.a.x,n=t.b.y-t.a.y;return Math.abs(e)>=Math.abs(n)?e>=0?1:0:n>=0?1:0}c.__name(Bo,"getArcSweepFlag");var vr=.001;function ko(t,e){if(t.length<2)return t.map(r=>({...r}));const n=t.map(r=>({...r})),o=e.arrowTypeStart&&c.markerOffsets[e.arrowTypeStart];if(o){const r=t[0],i=t[1],a=Math.atan2(i.y-r.y,i.x-r.x);n[0].x=r.x+o*Math.cos(a),n[0].y=r.y+o*Math.sin(a)}const s=e.arrowTypeEnd&&c.markerOffsets[e.arrowTypeEnd];if(s){const r=t.length,i=t[r-2],a=t[r-1],l=Math.atan2(a.y-i.y,a.x-i.x);n[r-1].x=a.x-s*Math.cos(l),n[r-1].y=a.y-s*Math.sin(l)}return n}c.__name(ko,"applyMarkerOffsets");function Fo(t,e,n,o,s){const r=t.point.x,i=t.point.y,a={x:r-e*t.r,y:i-n*t.r},l={x:r+e*t.r,y:i+n*t.r},f=[`L${Ee(a)}`];return s==="arc"?f.push(`A${re(t.r)},${re(t.r)} 0 0 ${o} ${Ee(l)}`):f.push(`M${Ee(l)}`),f}c.__name(Fo,"emitJump");function In(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=n.x-e.x,a=n.y-e.y,l=Math.hypot(s,r),f=Math.hypot(i,a);if(l<Xe||f<Xe)return null;const g=s/l,x=r/l,M=i/f,u=a/f,m=g*M+x*u,d=Math.max(-1,Math.min(1,m)),y=Math.acos(d);if(y<Xe||Math.abs(Math.PI-y)<Xe)return null;const C=Math.min(o/Math.sin(y/2),l/2,f/2);return{startX:e.x-g*C,startY:e.y-x*C,endX:e.x+M*C,endY:e.y+u*C,ctrlX:e.x,ctrlY:e.y,cutLen:C}}c.__name(In,"computeRoundedCorner");function Do(t,e,n){const o=t.points;if(o.length<2)return"";const s=ko(o,t),r=t.curve==="rounded",i=Ue(s),a=new Map;for(const f of e){const g=i[f.segIndex];if(!g)continue;const x=Math.hypot(g.b.x-g.a.x,g.b.y-g.a.y),M=a.get(f.segIndex)??[];M.push({t:f.t,point:f.point,d:f.t*x,r:n.jumpRadius}),a.set(f.segIndex,M)}const l=[`M${Ee(s[0])}`];for(let f=0;f<i.length;f++){const g=i[f],x=Math.hypot(g.b.x-g.a.x,g.b.y-g.a.y),M=x===0?0:(g.b.x-g.a.x)/x,u=x===0?0:(g.b.y-g.a.y)/x,m=Bo(g);let d=0;if(r&&f>0){const L=In(s[f-1],s[f],s[f+1]??s[f],Lo);L&&(d=L.cutLen)}let y=x,C=null;r&&f<i.length-1&&(C=In(s[f],s[f+1],s[f+2]??s[f+1],Lo),C&&(y=x-C.cutLen));const b=[...a.get(f)??[]].sort((L,T)=>L.t-T.t);for(const L of b)L.r=Math.min(L.r,L.d-d,y-L.d);for(let L=0;L<b.length-1;L++){const T=b[L+1].d-b[L].d;if(b[L].r+b[L+1].r>T){const p=T/2;b[L].r=Math.min(b[L].r,p),b[L+1].r=Math.min(b[L+1].r,p)}}for(const L of b)L.r<vr||l.push(...Fo(L,M,u,m,n.jumpStyle));r&&C?(l.push(`L${re(C.startX)},${re(C.startY)}`),l.push(`Q${re(C.ctrlX)},${re(C.ctrlY)} ${re(C.endX)},${re(C.endY)}`)):l.push(`L${Ee(g.b)}`)}return l.join(" ")}c.__name(Do,"rewriteEdgePath");function Ho(t){return/^[\d\s+,.LMelm-]*$/.test(t)}c.__name(Ho,"isStraightPath");function Xo(t){return t?t==="linear"||t==="rounded"||t==="step"||t==="stepBefore"||t==="stepAfter":!0}c.__name(Xo,"curveSupportsLineHops");function Yo(t){if(!t)return null;try{const e=typeof atob=="function"?atob(t):Buffer.from(t,"base64").toString(),n=JSON.parse(e);if(!Array.isArray(n))return null;const o=[];for(const s of n)s&&typeof s.x=="number"&&typeof s.y=="number"&&o.push({x:s.x,y:s.y});return o.length>=2?o:null}catch{return null}}c.__name(Yo,"decodeDataPoints");function Go(t,e,n){if(!n.enabled)return;const o=t.node();if(!o)return;const s=new Map;for(const f of e)s.set(f.id,f);const r=[],i=new Map;for(const f of e){const g=typeof CSS<"u"&&CSS.escape?CSS.escape(f.id):f.id,x=o.querySelector(`path[data-id="${g}"]`);if(!x)continue;i.set(f.id,x);const u=Yo(x.getAttribute("data-points"))??f.points;r.push({...f,points:u})}const a=Po(r);if(a.length===0)return;const l=new Map;for(const f of a){const g=l.get(f.jumpEdgeId)??[];g.push(f),l.set(f.jumpEdgeId,g)}for(const f of r){const g=l.get(f.id);if(!g||g.length===0)continue;const M=s.get(f.id)?.curve;if(M!==void 0&&!Xo(M))continue;const u=i.get(f.id);if(!u)continue;if(M===void 0){const L=u.getAttribute("d")??"";if(!Ho(L))continue}const m=u.getAttribute("style")??"",d=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(m),y=d?Number.parseFloat(d[1]):null,C=d?Number.parseFloat(d[2]):null,b=Do(f,g,n);if(u.setAttribute("d",b),y!==null&&C!==null&&typeof u.getTotalLength=="function"){const L=u.getTotalLength(),T=Math.max(0,L-y-C),p=`0 ${y} ${T} ${C}`,I=m.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${p};`).replace(/;\s*;+/g,";");u.setAttribute("style",I)}}}c.__name(Go,"applyLineJumpsToSvg");async function $o(t,e){for(const s of t.nodes)s.isGroup?await c.insertCluster(e.clusters,s):c.positionNode(s);const n=new Map;for(const s of t.nodes)s?.id&&n.set(s.id,s);for(const s of t.edges){const r=s.start?n.get(s.start)??{}:{},i=s.end?n.get(s.end)??{}:{},a=c.insertEdge(e.edgePaths,{...s},{},t.type,r,i,t.diagramId);s.label&&await c.insertEdgeLabel(e.rootGroups,s),s.label&&zo(s,a)}const o=t.config?.swimlane?.lineHops;if(o!==!1){const s=o==="gap"?"gap":"arc",r=t.edges.filter(i=>Array.isArray(i.points)&&i.points.length>=2).map(i=>({id:i.id,points:i.points,curve:i.curve,arrowTypeStart:i.arrowTypeStart,arrowTypeEnd:i.arrowTypeEnd}));Go(e.edgePaths,r,{enabled:!0,jumpRadius:6,jumpStyle:s})}}c.__name($o,"adjustLayout");function zo(t,e){const n=e?.updatedPath??e?.originalPath,o=c.getConfig(),{subGraphTitleTotalMargin:s}=c.getSubGraphTitleMargins({flowchart:o.flowchart??{}});if(t.label){const r=c.edgeLabels.get(t.id);let i=t.x,a=t.y;if(n){const l=c.utils_default.calcLabelPosition(n);c.log.debug("Moving label "+t.label+" from (",i,",",a,") to (",l.x,",",l.y,") abc88"),e&&(i=l.x,a=l.y)}r.attr("transform",`translate(${i}, ${a+s/2})`)}if(t?.startLabelLeft){const r=c.terminalLabels.get(t.id).startLeft;let i=t?.x,a=t?.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.startLabelRight){const r=c.terminalLabels.get(t.id).startRight;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.endLabelLeft){const r=c.terminalLabels.get(t.id).endLeft;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}if(t.endLabelRight){const r=c.terminalLabels.get(t.id).endRight;let i=t.x,a=t.y;if(n){const l=c.utils_default.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);i=l.x,a=l.y}r.attr("transform",`translate(${i}, ${a})`)}}c.__name(zo,"positionEdgeLabel");var yn="__swimlane_default__",Lr=21,To=20;function Sn(t){return Math.max(t.padding??To,To)}c.__name(Sn,"topLaneHorizontalPadding");function Vo(t){const{x:e,y:n,width:o,height:s}=t,r=t.swimlaneContentTop;if(typeof e!="number"||typeof n!="number"||typeof o!="number"||typeof s!="number"||typeof r!="number"||!Number.isFinite(e)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(r)||o<=0||s<=0){delete t.groupTitleRect;return}const i=n-s/2,a=Math.min(r,n+s/2),l=Math.min(Lr,Math.max(0,a-i)),f=i+l;if(f<=i){delete t.groupTitleRect;return}t.groupTitleRect={left:e-o/2,right:e+o/2,top:i,bottom:f}}c.__name(Vo,"assignTopLaneTitleRect");function jo(t){const e=t.direction,n=t.nodes??=[];for(const r of t.nodes??[])r.isGroup&&!r.parentId&&(r.shape="swimlane",e&&(r.direction=e));const o=n.filter(r=>!r.isGroup&&!r.parentId);if(o.length===0)return;let s=n.find(r=>r.id===yn);s?s.isGroup&&(s.shape="swimlane",e&&(s.direction=e)):(s={id:yn,label:"",isGroup:!0,shape:"swimlane",padding:20,...e?{direction:e}:{}},n.push(s));for(const r of o)r.parentId=yn}c.__name(jo,"prepareLayoutForSwimlanes");function Uo(t){const e=new Map;for(const l of t.nodes??[])e.set(l.id,l);const n=[];for(const l of t.edges??[]){const f=typeof l.start=="string"?l.start:void 0,g=typeof l.end=="string"?l.end:void 0;!f||!g||l.labelNodeId||n.push({id:l.id,src:f,dst:g,ref:l})}const o=t.nodes??[],s=o.filter(l=>l.isGroup),r=o.filter(l=>!l.isGroup);return{nodes:[...[...s].reverse(),...r].map(l=>l.id),edges:n,layout:t,nodeById:e}}c.__name(Uo,"toGraphView");function Wo(t,e,n,o){const{layout:s}=t,r=t.nodeById,i=o?.layerGap??100,a=o?.nodeGap??40;let l=0;for(const M of e.layers){let u=0;for(const m of M){const d=r.get(m);if(!d){u++;continue}d.layer=l,d.order=u;const y=n.x[m]??u*a,C=n.y[m]??l*i;d.x=y,d.y=C,u++}l++}const f=s.nodes??[],g=new Map,x=[];for(const M of f){if(!M?.isGroup)continue;M.parentId||x.push(M);const u=f.filter(b=>b.parentId===M.id);let m=1/0,d=-1/0,y=1/0,C=-1/0;for(const b of u){const L=b.x??n.x[b.id],T=b.y??n.y[b.id],p=b.width??0,I=b.height??0;L!=null&&T!=null&&(m=Math.min(m,L-p/2),d=Math.max(d,L+p/2),y=Math.min(y,T-I/2),C=Math.max(C,T+I/2))}if(m===1/0||y===1/0)M.x=M.x??0,M.y=M.y??0,M.width=M.width??0,M.height=M.height??0;else{const b=M.padding??20,L=M.parentId?b:2*Sn(M),T=b,p=Math.max(0,d-m)+L,I=Math.max(0,C-y)+T,w=(m+d)/2,A=(y+C)/2;M.x=w,M.y=A,M.width=p,M.height=I,g.set(M.id,{minX:m,maxX:d,minY:y,maxY:C})}}if(x.length>0&&g.size>0){let M=1/0,u=-1/0,m=0;for(const d of x){const y=d.padding??20;y>m&&(m=y);const C=g.get(d.id);C&&(M=Math.min(M,C.minY),u=Math.max(u,C.maxY))}if(M!==1/0&&u!==-1/0){const d=Math.max(0,u-M),C=Math.max(m,36),b=d+2*C,L=(M+u)/2;for(const B of x)B.y=L,B.height=b,B.swimlaneContentTop=M;const T=[...x].sort((B,N)=>{const k=B.x??0,H=N.x??0;return k-H}),p=[],I=[],w=[];for(const B of T){const N=g.get(B.id);if(!N)continue;const k=Math.max(0,N.maxX-N.minX)+2*Sn(B),H=(N.minX+N.maxX)/2;p.push(B.id),I.push(H),w.push(k)}const A=p.length;if(A>0){const B=new Map;if(A===1)B.set(p[0],w[0]);else{const N=[];for(let j=0;j<A-1;j++)N.push(I[j+1]-I[j]);const k=new Array(A);k[0]=0;for(let j=0;j<A-1;j++)k[j+1]=2*N[j]-k[j];let H=0,O=Number.POSITIVE_INFINITY;for(let j=0;j<A;j++){const J=w[j];j%2===0?H=Math.max(H,J-k[j]):O=Math.min(O,k[j]-J)}let G=H;H<=O?G=(H+O)/2:G=H;for(let j=0;j<A;j++){const J=k[j]+(j%2===0?G:-G),dt=Math.max(w[j],J);B.set(p[j],dt)}}for(const N of x){const k=B.get(N.id);k!=null&&(N.width=k),Vo(N)}}}}}c.__name(Wo,"writeBackToLayoutData");var Tr="[EdgeLabelNodes]";function Ko(t){const e=[],n=[],o=new Map;for(const i of t.nodes)o.set(i.id,i);for(const i of t.edges){if(!i.label||i.label.length===0||i.isLayoutOnly||i.labelNodeId)continue;const a=i.start?o.get(i.start):void 0,l=i.end?o.get(i.end):void 0;if(!a||!l){c.log.warn(Tr,`Edge ${i.id} has missing source or target node`);continue}const f=`edge-label-${i.start}-${i.end}-${i.id}`,x=a.parentId!==l.parentId?l.parentId:a.parentId,M={id:f,label:i.label,edgeStart:i.start??"",edgeEnd:i.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:x,isGroup:!1,labelStyle:Array.isArray(i.labelStyle)?i.labelStyle[0]:i.labelStyle??"",...a.dir?{dir:a.dir}:{}};e.push(M),i.labelNodeId=f,i.label=void 0,i.text=void 0;const u={id:`${i.id}-to-label`,start:i.start,end:f,type:"normal",isLayoutOnly:!0},m={id:`${i.id}-from-label`,start:f,end:i.end,type:"normal",isLayoutOnly:!0};n.push(u,m)}const s=[...t.nodes,...e],r=[...t.edges,...n];return{...t,nodes:s,edges:r}}c.__name(Ko,"createEdgeLabelNodes");var Ft=.001;function to(t){const e=t.x??0,n=t.y??0,o=t.width??0,s=t.height??0;return o>0&&s>0?{cx:e,cy:n,rect:we(e,n,o,s)}:void 0}c.__name(to,"measuredNodeRect");function eo(t){if(t.isGroup)return;const e=to(t);return e?{id:String(t.id??""),cx:e.cx,cy:e.cy,rect:e.rect}:void 0}c.__name(eo,"nodeBoundsInfoFor");function oe(t,e,n=Ft){return Math.abs(t.x-e.x)<n&&Math.abs(t.y-e.y)<n}c.__name(oe,"samePoint");function ft(t,e,n=Ft){return Math.abs(t.x-e.x)<n}c.__name(ft,"sameX");function ht(t,e,n=Ft){return Math.abs(t.y-e.y)<n}c.__name(ht,"sameY");function Tt(t,e,n=Ft){return ht(t,e,n)&&Math.abs(t.x-e.x)>n}c.__name(Tt,"isHorizontalSegment");function Et(t,e,n=Ft){return ft(t,e,n)&&Math.abs(t.y-e.y)>n}c.__name(Et,"isVerticalSegment");function zt(t,e,n,o){return Math.max(0,Math.min(Math.max(t,e),Math.max(n,o))-Math.max(Math.min(t,e),Math.min(n,o)))}c.__name(zt,"overlapLength");function ce(t,e,n=Ft){return t.horizontal&&e.horizontal&&ht(t.a,e.a,n)?zt(t.a.x,t.b.x,e.a.x,e.b.x):t.vertical&&e.vertical&&ft(t.a,e.a,n)?zt(t.a.y,t.b.y,e.a.y,e.b.y):0}c.__name(ce,"sameAxisSegmentOverlapLength");function Ae(t,e=Ft){const n=[];for(let o=0;o<t.length-1;o++){const s=t[o],r=t[o+1],i=Tt(s,r,e),a=Et(s,r,e);(i||a)&&n.push({index:o,a:s,b:r,horizontal:i,vertical:a})}return n}c.__name(Ae,"orthogonalSegmentsForPoints");function Qt(t,e=Ft){const n=Ae(t,e);let o=0;for(let s=1;s<n.length;s++)n[s-1].horizontal!==n[s].horizontal&&o++;return o}c.__name(Qt,"countOrthogonalBends");function mt(t,e=Ft){const n=[];for(const o of t){const s=n.length>0?n[n.length-1]:void 0;(!s||!oe(s,o,e))&&n.push({x:o.x,y:o.y})}return n}c.__name(mt,"dedupeConsecutivePoints");function no(t,e=Ft){if(!t||t.length!==4)return;const[n,o,s,r]=t;return Tt(n,o,e)&&Et(o,s,e)&&Tt(s,r,e)?{kind:"HVH",p0:n,p1:o,p2:s,p3:r}:Et(n,o,e)&&Tt(o,s,e)&&Et(s,r,e)?{kind:"VHV",p0:n,p1:o,p2:s,p3:r}:void 0}c.__name(no,"classifyThreeSegmentRoute");function on(t,e,n,o=0){const s=Math.min(t.x,e.x),r=Math.max(t.x,e.x),i=Math.min(t.y,e.y),a=Math.max(t.y,e.y);return r>n.left-o&&s<n.right+o&&a>n.top-o&&i<n.bottom+o}c.__name(on,"segmentBoundsOverlapRect");function oo(t,e,n=0){return t.x>e.left+n&&t.x<e.right-n&&t.y>e.top+n&&t.y<e.bottom-n}c.__name(oo,"pointInsideRect");function qo(t,e){return t.left<=e.left&&t.right>=e.right&&t.top<=e.top&&t.bottom>=e.bottom}c.__name(qo,"rectContainsRect");function We(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}c.__name(We,"rectsOverlap");function Cn(t,e){return{left:t.left-e,right:t.right+e,top:t.top-e,bottom:t.bottom+e}}c.__name(Cn,"inflateRect");function we(t,e,n,o){return{left:t-n/2,right:t+n/2,top:e-o/2,bottom:e+o/2}}c.__name(we,"rectFromCenterSize");function qt(t){return to(t)?.rect}c.__name(qt,"rectOfNodeBounds");function Me(t,e){switch(e){case"top":return{x:t.cx,y:t.rect.top};case"bottom":return{x:t.cx,y:t.rect.bottom};case"left":return{x:t.rect.left,y:t.cy};case"right":return{x:t.rect.right,y:t.cy}}}c.__name(Me,"portForRectSide");function so(t,e,n,o,s,r=Ft){const i=e==="left"||e==="right",a=o==="left"||o==="right";if(i&&a){if(e==="right"&&o==="left"&&t.x<n.x||e==="left"&&o==="right"&&t.x>n.x){if(ht(t,n,r))return[t,n];const x=(t.x+n.x)/2;return[t,{x,y:t.y},{x,y:n.y},n]}if(e===o){if(ht(t,n,r))return;const x=e==="left"?Math.min(t.x,n.x)-s:Math.max(t.x,n.x)+s;return[t,{x,y:t.y},{x,y:n.y},n]}return}if(!i&&!a){if(e===o){if(ft(t,n,r))return;const M=e==="top"?Math.min(t.y,n.y)-s:Math.max(t.y,n.y)+s;return[t,{x:t.x,y:M},{x:n.x,y:M},n]}if(!(e==="bottom"&&o==="top"&&t.y<n.y||e==="top"&&o==="bottom"&&t.y>n.y))return;if(ft(t,n,r))return[t,n];const x=(t.y+n.y)/2;return[t,{x:t.x,y:x},{x:n.x,y:x},n]}if(i&&!a){const g=e==="right"&&n.x>t.x||e==="left"&&n.x<t.x,x=o==="top"&&t.y<n.y||o==="bottom"&&t.y>n.y;return g&&x?[t,{x:n.x,y:t.y},n]:void 0}const l=e==="bottom"&&n.y>t.y||e==="top"&&n.y<t.y,f=o==="left"&&t.x<n.x||o==="right"&&t.x>n.x;return l&&f?[t,{x:t.x,y:n.y},n]:void 0}c.__name(so,"buildOrthogonalPortPath");function ro(t,e,n,o){return e==="left"||e==="right"?[t,{x:o,y:t.y},{x:o,y:n.y},n]:[t,{x:t.x,y:o},{x:n.x,y:o},n]}c.__name(ro,"buildSameSideTrackPath");function sn(t){const e=new Map,n=[];for(const o of t){if(o.isEdgeLabel)continue;const s=eo(o);s&&(e.set(s.id,s),n.push({id:s.id,rect:s.rect}))}return{nodeInfoById:e,realNodeRects:n}}c.__name(sn,"collectRealNodeBounds");function pe(t){const e=[],n=[];for(const o of t){const s=eo(o);if(!s)continue;const r={id:s.id,rect:s.rect};o.isEdgeLabel?n.push(r):e.push(r)}return{realNodeRects:e,labelNodeRects:n}}c.__name(pe,"collectNodeRectEntries");function Jo(t,{includeEdgeLabels:e=!0}={}){const n=[];for(const o of t){if(o.isGroup||!e&&o.isEdgeLabel)continue;const s=o.x??0,r=o.y??0,i=o.width??0,a=o.height??0;n.push({nodeId:o.id,...we(s,r,i,a)})}return n}c.__name(Jo,"collectLayoutNodeRects");function io(t,e,n=Ft){const o=t.start,s=t.end;if(!o||!s)return;const r=e.get(o),i=e.get(s);if(!(!r||!i))return{srcId:o,dstId:s,srcInfo:r,dstInfo:i,collinearX:Math.abs(r.cx-i.cx)<n,collinearY:Math.abs(r.cy-i.cy)<n}}c.__name(io,"getNodePairGeometry");function wt(t,e,n,o=[],s=0){for(const r of n)if(!o.includes(r.id)&&on(t,e,r.rect,-s))return!0;return!1}c.__name(wt,"segmentHitsAnyRect");function co(t,e,n,o,s=Ft,r=1e-6){const i=ht(t,e,s),a=ft(t,e,s),l=ht(n,o,s),f=ft(n,o,s);if(i&&l||a&&f||!(i||a)||!(l||f))return!1;const g=i?{a:t,b:e}:{a:n,b:o},x=a?{a:t,b:e}:{a:n,b:o},M=g.a.y,u=Math.min(g.a.x,g.b.x),m=Math.max(g.a.x,g.b.x),d=x.a.x,y=Math.min(x.a.y,x.b.y),C=Math.max(x.a.y,x.b.y);if(d<u||d>m||M<y||M>C)return!1;const b=Math.abs(d-g.a.x)<r&&Math.abs(M-g.a.y)<r||Math.abs(d-g.b.x)<r&&Math.abs(M-g.b.y)<r,L=Math.abs(d-x.a.x)<r&&Math.abs(M-x.a.y)<r||Math.abs(d-x.b.x)<r&&Math.abs(M-x.b.y)<r;return!(b&&L)}c.__name(co,"orthogonalSegmentsCross");function Zo(t,e,n,o,s=Ft){const r=ht(t,e,s),i=ft(t,e,s),a=ht(n,o,s),l=ft(n,o,s);return i&&l&&ft(t,n,s)?zt(t.y,e.y,n.y,o.y)>s:r&&a&&ht(t,n,s)?zt(t.x,e.x,n.x,o.x)>s:!1}c.__name(Zo,"sameAxisSegmentsOverlap");function Ke(t,e,n,o,{epsilon:s=Ft,skipDegenerateOther:r=!1}={}){for(const i of n){if(i===o||i.isLayoutOnly)continue;const a=i.points;if(!(!a||a.length<2))for(let l=0;l<a.length-1;l++){const f=a[l],g=a[l+1];if(!(r&&oe(f,g,s))&&(co(t,e,f,g,s)||Zo(t,e,f,g,s)))return!0}}return!1}c.__name(Ke,"segmentConflictsWithAnyEdge");function le(t,e,n,o,s=Ft){const r=ht(t,e,s),i=ft(t,e,s),a=ht(n,o,s),l=ft(n,o,s);if(!(r&&l||i&&a))return!1;const f=r?{a:t,b:e}:{a:n,b:o},g=r?{a:n,b:o}:{a:t,b:e},x=f.a.y,M=Math.min(f.a.x,f.b.x),u=Math.max(f.a.x,f.b.x),m=g.a.x,d=Math.min(g.a.y,g.b.y),y=Math.max(g.a.y,g.b.y);return m>M+s&&m<u-s&&x>d+s&&x<y-s}c.__name(le,"orthogonalSegmentsStrictlyCross");function vn(t,e,n){const o=Math.min(e,n),s=Math.max(e,n);return t>o+Ft&&t<s-Ft}c.__name(vn,"strictlyBetween");function Qo(t,e,n){return ft(t,e)&&ft(e,n)?vn(e.y,t.y,n.y):ht(t,e)&&ht(e,n)?vn(e.x,t.x,n.x):!1}c.__name(Qo,"isCollinearIntermediate");function ts(t){let e=!1;const n=[];for(let o=0;o<t.length;o++){const s=n[n.length-1],r=t[o],i=o+1<t.length?t[o+1]:void 0;if(s&&i){if(oe(s,i)){o++,e=!0;continue}if(Qo(s,r,i)){e=!0;continue}}n.push(r)}return{points:n,changed:e}}c.__name(ts,"simplifyPolylineOnce");function qe(t){const e=[t[0]];for(let o=1;o<t.length;o++){const s=e[e.length-1],r=t[o];if(!ft(s,r)&&!ht(s,r)){const i=e.length>=2?e[e.length-2]:void 0,l=(i?ft(i,s):!1)?{x:s.x,y:r.y}:{x:r.x,y:s.y};e.push(l)}e.push(r)}const n=[];for(const o of e){const s=n[n.length-1];(!s||!oe(s,o))&&n.push(o)}return n}c.__name(qe,"orthogonalizePolyline");function ae(t){if(t.length<3)return t;let e=[...t];for(let n=0;n<32;n++){const o=ts(e);if(e=o.points,!o.changed)break}return e}c.__name(ae,"simplifyPolyline");var nt=.001,Er=.5,Eo=4;function ao(t,e,n){const o=t;if(o.isLayoutOnly||!o.points||o.points.length<n)return;const s=o.start?e.get(o.start):void 0,r=o.end?e.get(o.end):void 0;return{edge:o,points:o.points,srcRect:s?qt(s):void 0,dstRect:r?qt(r):void 0}}c.__name(ao,"endpointContextFor");function es(t,e,n){if(ht(t,e,nt))return{x:t.x<n.left?n.left:n.right,y:t.y};if(ft(t,e,nt)){const o=t.y<n.top?n.top:n.bottom;return{x:t.x,y:o}}return{x:Math.min(n.right,Math.max(n.left,t.x)),y:Math.min(n.bottom,Math.max(n.top,t.y))}}c.__name(es,"segmentEnterPoint");function Ln(t,e,n){const o=n?1:-1;let s=n?0:t.length-1;for(;s>=0&&s<t.length&&oo(t[s],e,Er);)s+=o;if(s<0||s>=t.length)return t;const r=s-o;if(r<0||r>=t.length)return t;const i=es(t[s],t[r],e);return n?[i,...t.slice(s)]:[...t.slice(0,s+1),i]}c.__name(Ln,"clipEndpoint");function ns(t,e){for(const n of t){const o=ao(n,e,2);if(!o)continue;let s=[...o.points];o.srcRect&&(s=Ln(s,o.srcRect,!0)),o.dstRect&&(s=Ln(s,o.dstRect,!1)),s=ae(qe(s)),s=lo(s,o.srcRect,o.dstRect),o.edge.points=ae(qe(s))}}c.__name(ns,"clipEdgeEndpointsToNodeBoundaries");function Tn(t,e,n,o=!1){if(ht(t,e,nt)){if(e.y<n.top-nt||e.y>n.bottom+nt)return e;if(o){if(t.x<n.left-nt)return{x:n.left,y:t.y};if(t.x>n.right+nt)return{x:n.right,y:t.y}}return{x:Math.abs(e.x-n.left)<=Math.abs(e.x-n.right)?n.left:n.right,y:t.y}}if(ft(t,e,nt)){if(e.x<n.left-nt||e.x>n.right+nt)return e;if(o){if(t.y<n.top-nt)return{x:t.x,y:n.top};if(t.y>n.bottom+nt)return{x:t.x,y:n.bottom}}const s=Math.abs(e.y-n.top)<=Math.abs(e.y-n.bottom);return{x:t.x,y:s?n.top:n.bottom}}return e}c.__name(Tn,"snapEndpointToBoundary");function Je(t,e,n){const o=t[e];for(let s=e+n;s>=0&&s<t.length;s+=n){const r=t[s];if(!oe(r,o,nt))return r}return t[e+n]}c.__name(Je,"firstDistinctAdjacent");function Ze(t,e){const n=t+Eo,o=e-Eo;return n<=o?{lo:n,hi:o}:{lo:(t+e)/2,hi:(t+e)/2}}c.__name(Ze,"cornerClearanceRange");function En(t,e,n){const{lo:o,hi:s}=Ze(e,n);return Math.min(s,Math.max(o,t))}c.__name(En,"clampToCornerClearance");function os(t){const e=Math.max(...t.map(o=>o.lo)),n=Math.min(...t.map(o=>o.hi));if(!(e>n))return{lo:e,hi:n}}c.__name(os,"intersectRanges");function wn(t,e){return e==="left"||e==="right"?Ze(t.top,t.bottom):Ze(t.left,t.right)}c.__name(wn,"clearanceRangeForSide");function Qe(t,e,n){const o=t.y>=n.top-nt&&t.y<=n.bottom+nt,s=t.x>=n.left-nt&&t.x<=n.right+nt;if(ht(t,e,nt)&&o){if(Math.abs(t.x-n.left)<nt)return"left";if(Math.abs(t.x-n.right)<nt)return"right"}if(ft(t,e,nt)&&s){if(Math.abs(t.y-n.top)<nt)return"top";if(Math.abs(t.y-n.bottom)<nt)return"bottom"}}c.__name(Qe,"terminalSideForSegment");function Ne(t){return t==="left"||t==="right"}c.__name(Ne,"isHorizontalSide");function ss(t,e,n,o,s){const r=[],i=n?Qe(t,e,n):void 0,a=o?Qe(e,t,o):void 0;return n&&i&&Ne(i)===s&&r.push(wn(n,i)),o&&a&&Ne(a)===s&&r.push(wn(o,a)),r.length>0?os(r):void 0}c.__name(ss,"straightClearanceRange");function An(t,e,n,o,s){const r=ss(t,e,n,o,s);if(!r)return;const i=s?t.y:t.x,a=Math.min(r.hi,Math.max(r.lo,i));if(!(Math.abs(a-i)<nt))return s?[{x:t.x,y:a},{x:e.x,y:a}]:[{x:a,y:t.y},{x:a,y:e.y}]}c.__name(An,"clearStraightEndpointCornerAxis");function lo(t,e,n){if(t.length!==2)return t;const[o,s]=t;return ht(o,s,nt)?An(o,s,e,n,!0)??t:ft(o,s,nt)?An(o,s,e,n,!1)??t:t}c.__name(lo,"clearStraightEndpointCornerConnections");function rs(t,e,n){return Ne(n)?{x:t.x,y:En(t.y,e.top,e.bottom)}:{x:En(t.x,e.left,e.right),y:t.y}}c.__name(rs,"cornerClearedEndpoint");function is(t,e,n,o,s,r){const i=t.map(a=>({...a}));for(let a=e;a>=0&&a<t.length;a+=n){const l=t[a];if(r&&!ht(l,o,nt)||!r&&!ft(l,o,nt))break;r?i[a].y=s.y:i[a].x=s.x}return i}c.__name(is,"moveCollinearEndpointRun");function Rn(t,e,n){if(t.length<2)return t;const o=n?0:t.length-1,s=n?1:-1,r=t[o],i=Je(t,o,s);if(!i)return t;const a=Qe(r,i,e);if(!a)return t;const l=Ne(a),f=rs(r,e,a);return oe(r,f,nt)?t:is(t,o,s,r,f,l)}c.__name(Rn,"clearEndpointCornerConnection");function Nn(t,e,n){const o=Math.min(t.x,e.x)>=n.left-nt&&Math.max(t.x,e.x)<=n.right+nt,s=Math.min(t.y,e.y)>=n.top-nt&&Math.max(t.y,e.y)<=n.bottom+nt;if(Math.abs(t.y-n.top)<nt&&Math.abs(e.y-n.top)<nt&&o)return"top";if(Math.abs(t.y-n.bottom)<nt&&Math.abs(e.y-n.bottom)<nt&&o)return"bottom";if(Math.abs(t.x-n.left)<nt&&Math.abs(e.x-n.left)<nt&&s)return"left";if(Math.abs(t.x-n.right)<nt&&Math.abs(e.x-n.right)<nt&&s)return"right"}c.__name(Nn,"borderSideForSegment");function On(t,e,n,o){switch(t){case"top":return ft(e,n,nt)&&n.y<o.top-nt;case"bottom":return ft(e,n,nt)&&n.y>o.bottom+nt;case"left":return ht(e,n,nt)&&n.x<o.left-nt;case"right":return ht(e,n,nt)&&n.x>o.right+nt}}c.__name(On,"leavesOutward");function Pn(t,e,n){if(t.length<3)return t;if(n){const r=Nn(t[0],t[1],e);return r&&On(r,t[1],t[2],e)?t.slice(1):t}const o=t.length-1,s=Nn(t[o-1],t[o],e);return s&&On(s,t[o-1],t[o-2],e)?t.slice(0,o):t}c.__name(Pn,"collapseOwnBorderStub");function cs(t,e,n){let o=t;if(e){const r=Je(o,0,1);if(r){const i=Tn(r,o[0],e);i!==o[0]&&(o=[i,...o.slice(1)])}o=Pn(o,e,!0)}if(n){const r=o.length-1,i=Je(o,r,-1);if(i){const a=Tn(i,o[r],n,!0);a!==o[r]&&(o=[...o.slice(0,r),a])}o=Pn(o,n,!1)}const s=lo(o,e,n);return s!==o||o.length===2?s:(e&&(o=Rn(o,e,!0)),n&&(o=Rn(o,n,!1)),o)}c.__name(cs,"snapAndCollapseEndpoints");function Bn(t,e){for(const n of t){const o=ao(n,e,2);if(!o)continue;const s=mt(o.points,nt),r=cs(s,o.srcRect,o.dstRect);if(r.length<3){o.edge.points=r;continue}const i=[r[0],{...r[0]},...r.slice(1,-1),r[r.length-1],{...r[r.length-1]}];o.edge.points=i}}c.__name(Bn,"prepareEdgeEndpointsForRenderer");function fo(t){return new Map(t.map(e=>[e.id,e]))}c.__name(fo,"buildNodeMap");function as(t,e){let n=t.parentId,o=null;for(;n;){const s=e.get(n);if(!s?.isGroup)break;o=s.id,n=s.parentId}return o}c.__name(as,"resolveTopLevelGroupId");function kn(t,e){let n=0,o=t.parentId;for(;o;){const s=e.get(o);if(!s?.isGroup)break;n++,o=s.parentId}return n}c.__name(kn,"groupDepth");function uo(t){let e=1/0,n=-1/0,o=1/0,s=-1/0;for(const r of t){const i=r.x,a=r.y;if(typeof i!="number"||typeof a!="number")continue;const l=r.width??0,f=r.height??0;e=Math.min(e,i-l/2),n=Math.max(n,i+l/2),o=Math.min(o,a-f/2),s=Math.max(s,a+f/2)}return e===1/0||o===1/0?null:{minX:e,maxX:n,minY:o,maxY:s}}c.__name(uo,"boundsForChildren");function ls(t,e){const n=t.padding??20;t.x=(e.minX+e.maxX)/2,t.y=(e.minY+e.maxY)/2,t.width=Math.max(0,e.maxX-e.minX)+n,t.height=Math.max(0,e.maxY-e.minY)+n}c.__name(ls,"applyGroupBounds");function fs(t){const e=fo(t),n=t.filter(o=>o.isGroup&&o.parentId).sort((o,s)=>kn(s,e)-kn(o,e));for(const o of n){const s=t.filter(i=>i.parentId===o.id),r=uo(s);r&&ls(o,r)}}c.__name(fs,"recomputeNestedGroupBounds");function tn(t,e){const n=t.nodes??[],o=t.edges??[],s=n.filter(l=>!l.isGroup);let r=1/0,i=-1/0;for(const l of s){const f=l[e];typeof f=="number"&&(r=Math.min(r,f),i=Math.max(i,f))}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;const a=c.__name(l=>r+i-l,"mirror");for(const l of n){const f=l[e];typeof f=="number"&&(l[e]=a(f));const g=l.groupTitleRect;g&&(l.groupTitleRect=e==="x"?{...g,left:a(g.right),right:a(g.left)}:{...g,top:a(g.bottom),bottom:a(g.top)})}for(const l of o)for(const f of l.points??[])f[e]=a(f[e]);return!0}c.__name(tn,"mirrorAxis");function ds(t){return(t.nodes??[]).some(n=>!n.isGroup)?tn(t,"y"):!0}c.__name(ds,"applyBtDirectionTransform");function us(t,e="LR"){const n=t.nodes??[],o=t.edges??[],s=n.filter(O=>!O.isGroup);let r=1/0,i=1/0;for(const O of s){const G=O.x??0,j=O.y??0;G<r&&(r=G),j<i&&(i=j)}if(!Number.isFinite(r)||!Number.isFinite(i))return!1;const a=36;let l=0,f=0;for(const O of s)l+=O.width??0,f+=O.height??0;const g=l/s.length,x=f/s.length,M=x>0?Math.max(1,g/x):1;for(const O of s){const G=O.x??0,J=((O.y??0)-i)*M+a,dt=G-r;O.x=J,O.y=dt}for(const O of o)if(O.points)for(const G of O.points){const j=G.x,dt=(G.y-i)*M+a,pt=j-r;G.x=dt,G.y=pt}fs(n);const u=n.filter(O=>O.isGroup&&!O.parentId);if(u.length===0)return e==="RL"&&tn(t,"x"),!0;const m=fo(n),d=new Map;for(const O of n){if(O.isGroup)continue;const G=as(O,m);if(!G)continue;const j=d.get(G)??[];j.push(O),d.set(G,j)}let y=0;for(const O of u){const G=O.padding??0;G>y&&(y=G)}const C=[];let b=1/0,L=-1/0;for(const O of u){const G=d.get(O.id)??[],j=uo(G);j&&(b=Math.min(b,j.minX),L=Math.max(L,j.maxX),C.push({lane:O,contentTop:j.minY,contentBottom:j.maxY,centerY:(j.minY+j.maxY)/2}))}if(b===1/0||L===-1/0)return!0;const T=Math.max(0,L-b),p=Math.max(y,10),I=T+2*p,w=a+I,N=(b+L)/2-I/2-a,k=N+w/2,H=Math.max(y,a);C.sort((O,G)=>O.centerY-G.centerY);for(let O=0;O<C.length;O++){const G=C[O];let j,J;if(O===0?j=G.contentTop-H:j=(C[O-1].contentBottom+G.contentTop)/2,O===C.length-1)J=G.contentBottom+H;else{const Bt=C[O+1];J=(G.contentBottom+Bt.contentTop)/2}const dt=Math.max(0,J-j),pt=(j+J)/2;G.lane.x=k,G.lane.y=pt,G.lane.width=w,G.lane.height=dt,G.lane.swimlaneContentTop=G.contentTop,G.lane.groupTitleRect={left:N,right:N+a,top:j,bottom:J}}return e==="RL"&&tn(t,"x"),!0}c.__name(us,"applyLrDirectionTransform");var se=1e-6,wr=8,Ge=wr,Ar=[0,Ge,-Ge,2*Ge,-2*Ge];function hs(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e);for(const s of t){if(s.isLayoutOnly)continue;const r=s.points;if(!r||r.length<4)continue;const i=no(mt(r,se),se);if(!i)continue;const{p3:a}=i,l=i.kind==="HVH",f=io(s,n,se);if(!f)continue;const{srcId:g,dstId:x,srcInfo:M,dstInfo:u,collinearX:m,collinearY:d}=f;if(m||d)continue;let y;const C=M.rect;for(const b of Ar){let L,T,p;if(l){const k=u.cy>M.cy?C.bottom:C.top,H=M.cx+b;if(H<=C.left+se||H>=C.right-se)continue;L={x:H,y:k},T={x:H,y:a.y},p={x:a.x,y:a.y}}else{const k=u.cx>M.cx?C.right:C.left,H=M.cy+b;if(H<=C.top+se||H>=C.bottom-se)continue;L={x:k,y:H},T={x:a.x,y:H},p={x:a.x,y:a.y}}const I=oe(L,T,se),w=oe(T,p,se);if(I&&w||!I&&wt(L,T,o,[g],1)||!w&&wt(T,p,o,[x],1))continue;const A=!I&&Ke(L,T,t,s,{epsilon:se,skipDegenerateOther:!0}),B=!w&&Ke(T,p,t,s,{epsilon:se,skipDegenerateOther:!0});if(!(A||B)){I?y=[T,p]:w?y=[L,T]:y=[L,T,p];break}}y&&(s.points=y)}}c.__name(hs,"portSwapToLShape");function gs(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values());for(const a of t){if(a.isLayoutOnly)continue;const l=a.points;if(!l||l.length<4)continue;const f=mt(l,.001);if(f.length<4)continue;const g=f.length-1,x=f[g],M=f[g-1],u=f[g-2],m=x.x-M.x,d=x.y-M.y,y=Math.hypot(m,d);if(y>=10||y<.001)continue;const C=M.x-u.x,b=M.y-u.y;if(Math.hypot(C,b)<.001)continue;const T=Tt(M,x,.001),p=Et(M,x,.001),I=Tt(u,M,.001),w=Et(u,M,.001);if(!(T&&w||p&&I))continue;const A=a.end,B=a.start,N=A?e.get(A):void 0;if(!N)continue;const k=N.x??0,H=N.y??0,O=qt(N);if(!O)continue;let G,j;if(w){const W=b<0;G={x:k,y:u.y},j={x:k,y:W?O.bottom:O.top}}else{const W=C>0;G={x:u.x,y:H},j={x:W?O.right:O.left,y:H}}if(wt(G,j,r,A?[A]:[],-2)||wt(G,j,i,[],-2))continue;if(B){const W=e.get(B),et=W?qt(W):void 0;if(et&&oo(G,et,2))continue}const J=c.__name((W,et)=>`${W.x.toFixed(3)},${W.y.toFixed(3)}|${et.x.toFixed(3)},${et.y.toFixed(3)}`,"ownSegmentKey"),dt=new Set;for(let W=0;W<f.length-1;W++)dt.add(J(f[W],f[W+1]));const pt=c.__name((W,et)=>{for(const at of t){if(at===a||at.isLayoutOnly)continue;const gt=at.points;if(!(!gt||gt.length<2))for(let xt=0;xt<gt.length-1;xt++){const Ct=gt[xt],Vt=gt[xt+1];if(!dt.has(J(Ct,Vt))&&le(W,et,Ct,Vt,.001))return!0}}return!1},"segmentCrossesOtherEdge");if(pt(G,j))continue;if(g-3>=0){const W=f[g-3],et=[B,A].filter(at=>!!at);if(wt(W,G,r,et,-2)||pt(W,G))continue}const Ot=[...f.slice(0,g-2),G,j];a.points=Ot;const Q=a.labelNodeId;if(Q){const W=e.get(Q);if(W){const et=W.width??0,at=W.height??0;if(et>0&&at>0){let gt,xt,Ct=-1;for(let Vt=0;Vt<Ot.length-1;Vt++){const jt=Ot[Vt],Ut=Ot[Vt+1],te=Math.hypot(Ut.x-jt.x,Ut.y-jt.y),Ie=ht(jt,Ut,.001),de=ft(jt,Ut,.001);(Ie&&te>=et+2||de&&te>=at+2)&&te>Ct&&(Ct=te,gt=(jt.x+Ut.x)/2,xt=(jt.y+Ut.y)/2)}gt!==void 0&&xt!==void 0&&(W.x=gt,W.y=xt)}}}}}c.__name(gs,"collapseShortTerminalStub");var Z=.001,kt=8,it=Ae,xn=c.__name((t,e)=>ft(t,e,Z)||ht(t,e,Z),"orthogonallyAligned");function ms(t,e){const s=c.__name((u,m)=>{const d=u.x??0,y=u.y??0,C=m.x-d,b=m.y-y;let L=(u.width??0)/2,T=(u.height??0)/2;return Math.abs(b)*L>Math.abs(C)*T?(b<0&&(T=-T),{x:d+(b===0?0:T*C/b),y:y+T}):(C<0&&(L=-L),{x:d+L,y:y+(C===0?0:L*b/C)})},"rectIntersect"),r=c.__name((u,m)=>{const d=mt(u.points??[]);if(d.length<2)return;const y=m?u.start:u.end,C=y?e.get(y):void 0,b=C?qt(C):void 0;if(!C||!y||!b)return;const L=m?d[0]:d[d.length-1],T=m?d[1]:d[d.length-2],p=s(C,L);let I=L;if(xn(T,p)&&(I=T),ft(p,I,Z))return{edge:u,edgeId:String(u.id??""),nodeId:y,atStart:m,orientation:"V",coord:p.x,min:Math.min(p.y,I.y),max:Math.max(p.y,I.y),boundary:p,railEnd:I,rect:b};if(ht(p,I,Z))return{edge:u,edgeId:String(u.id??""),nodeId:y,atStart:m,orientation:"H",coord:p.y,min:Math.min(p.x,I.x),max:Math.max(p.x,I.x),boundary:p,railEnd:I,rect:b}},"terminalLaneFor"),i=c.__name((u,m)=>Math.max(0,Math.min(u.max,m.max)-Math.max(u.min,m.min)),"projectedOverlapLength"),a=c.__name((u,m)=>u.nodeId!==m.nodeId||u.orientation!==m.orientation?!1:u.orientation==="H"?(Math.abs(u.boundary.x-u.rect.left)<1||Math.abs(u.boundary.x-u.rect.right)<1)&&ft(u.boundary,m.boundary,1):(Math.abs(u.boundary.y-u.rect.top)<1||Math.abs(u.boundary.y-u.rect.bottom)<1)&&ht(u.boundary,m.boundary,1),"sameTerminalFace"),l=c.__name((u,m)=>u.nodeId!==m.nodeId||u.orientation!==m.orientation?!1:i(u,m)>=kt&&Math.abs(u.coord-m.coord)<.5,"exactTerminalLaneConflict"),f=c.__name((u,m)=>{if(u.nodeId!==m.nodeId||u.orientation!==m.orientation||u.orientation!=="H"||u.atStart===m.atStart)return!1;const d=i(u,m);if(d<kt)return!1;const y=u.rect.bottom-u.rect.top;return d<y||d>2*y?!1:a(u,m)&&Math.abs(u.coord-m.coord)<16},"nearTerminalLaneConflict"),g=c.__name((u,m)=>{const d=mt(u.edge.points??[]);if(d.length<2)return;const y=u.orientation==="V"?{x:u.boundary.x+m,y:u.boundary.y}:{x:u.boundary.x,y:u.boundary.y+m},C=u.orientation==="V"?{x:u.railEnd.x+m,y:u.railEnd.y}:{x:u.railEnd.x,y:u.railEnd.y+m};if(!c.__name(()=>Math.abs(u.boundary.y-u.rect.top)<1||Math.abs(u.boundary.y-u.rect.bottom)<1?ht(y,u.boundary,Z)&&y.x>=u.rect.left+1&&y.x<=u.rect.right-1:Math.abs(u.boundary.x-u.rect.left)<1||Math.abs(u.boundary.x-u.rect.right)<1?ft(y,u.boundary,Z)&&y.y>=u.rect.top+1&&y.y<=u.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(u.atStart){const I=d.length>1&&oe(d[1],u.railEnd,Z),w=d.slice(I?2:1),A=w[0];return A&&!xn(A,C)?void 0:[y,C,...w]}const L=d.length>1&&oe(d[d.length-2],u.railEnd,Z),T=d.slice(0,L?-2:-1),p=T[T.length-1];if(!(p&&!xn(p,C)))return[...T,C,y]},"shiftedCandidate"),x=c.__name(u=>{const m=u.edge,d=mt(m.points??[]);if(d.length!==2)return!1;const y=m.start,C=m.end,b=y?e.get(y):void 0,L=C?e.get(C):void 0;if(!b||!L)return!1;const T=b.x??0,p=b.y??0,I=L.x??0,w=L.y??0,[A,B]=d;return ht(A,B,Z)&&Math.abs(p-w)<1&&Math.abs(T-I)>1||ft(A,B,Z)&&Math.abs(T-I)<1&&Math.abs(p-w)>1},"laneIsStraightCollinearConnector"),M=[-7,7,-14,14,-21,21];for(let u=0;u<8;u++){const m=t.filter(y=>!y.isLayoutOnly).flatMap(y=>[r(y,!0),r(y,!1)]).filter(y=>!!y);let d=!1;for(let y=0;y<m.length&&!d;y++)for(let C=y+1;C<m.length&&!d;C++){const b=m[y],L=m[C];if(b.edge===L.edge||!(l(b,L)||f(b,L)))continue;const T=!l(b,L),p=[b,L].sort((I,w)=>{const A=x(I),B=x(w);return A!==B?Number(A)-Number(B):+!w.atStart-+!I.atStart});for(const I of p){for(const w of M){const A=g(I,w);if(!A)continue;const B=r({...I.edge,points:A},I.atStart);if(!(!B||m.some(N=>N.edge!==I.edge&&(l(B,N)||T&&f(B,N))))){I.edge.points=A,d=!0;break}}if(d)break}}if(!d)return}}c.__name(ms,"separateSharedRenderedTerminalLanes");function ps(t,e){const{realNodeRects:o,labelNodeRects:s}=pe(e.values()),r=c.__name((a,l)=>{const f=a.start,g=a.end,x=it(l);if(x.length!==l.length-1)return!1;const M=[f,g].filter(u=>!!u);for(const u of x)if(wt(u.a,u.b,o,M,-2)||wt(u.a,u.b,s,[],-2))return!1;for(const u of t){if(u===a||u.isLayoutOnly)continue;const m=u.points;if(!(!m||m.length<2)){for(const d of x)for(const y of it(mt(m)))if(ce(d,y,.5)>=kt||le(d.a,d.b,y.a,y.b,Z))return!1}}return!0},"candidateIsSafe"),i=c.__name((a,l)=>{if(l+4>=a.length)return;const f=a[l],g=a[l+1],x=a[l+2],M=a[l+3],u=a[l+4],m=Tt(f,g)&&Et(g,x)&&Tt(x,M)&&Et(M,u)&&ft(f,M,Z)&&ft(f,u,Z)&&ft(g,x,Z)&&(g.x-f.x)*(M.x-x.x)<0,d=Et(f,g)&&Tt(g,x)&&Et(x,M)&&Tt(M,u)&&ht(f,M,Z)&&ht(f,u,Z)&&ht(g,x,Z)&&(g.y-f.y)*(M.y-x.y)<0;if(m||d)return mt([...a.slice(0,l+1),u,...a.slice(l+5)]);if(l+5>=a.length)return;const y=a[l+5],C=Et(f,g)&&Tt(g,x)&&Et(x,M)&&Tt(M,u)&&Et(u,y)&&ft(f,u,Z)&&ft(f,y,Z)&&ft(x,M,Z)&&(x.x-g.x)*(u.x-M.x)<0,b=Tt(f,g)&&Et(g,x)&&Tt(x,M)&&Et(M,u)&&Tt(u,y)&&ht(f,u,Z)&&ht(f,y,Z)&&ht(x,M,Z)&&(x.y-g.y)*(u.y-M.y)<0;if(!(!C&&!b))return mt([...a.slice(0,l+1),y,...a.slice(l+6)])},"withoutDogleg");for(let a=0;a<8;a++){let l=!1;for(const f of t){if(f.isLayoutOnly)continue;const g=mt(f.points??[]);for(let x=0;x<=g.length-5;x++){const M=i(g,x);if(!(!M||!r(f,M))){f.points=M,l=!0;break}}if(l)break}if(!l)return}}c.__name(ps,"collapseRedundantRectangularDoglegs");function Fn(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values()),a=t.filter(m=>!m.isLayoutOnly),l=c.__name((m,d,y)=>mt(m===d?y??[]:m.points??[]),"pointsFor"),f=c.__name((m,d)=>{let y=0;for(let C=0;C<a.length;C++){const b=it(l(a[C],m,d));for(let L=C+1;L<a.length;L++){const T=it(l(a[L],m,d));for(const p of b)for(const I of T)le(p.a,p.b,I.a,I.b,Z)&&y++}}return y},"strictCrossingCount"),g=c.__name(m=>{const d=it(m);if(d.length!==3)return;const y=d[1];if(!(d[0].horizontal===y.horizontal||d[2].horizontal===y.horizontal))return{index:y.index,horizontal:y.horizontal,vertical:y.vertical,segment:y}},"middleRail"),x=c.__name((m,d)=>{const y=[m.start,m.end].filter(C=>!!C);return r.filter(C=>{if(y.includes(C.id))return!1;const b=C.rect;return d.horizontal?zt(d.a.x,d.b.x,b.left,b.right)>=kt&&d.a.y>=b.top-2&&d.a.y<=b.bottom+2:zt(d.a.y,d.b.y,b.top,b.bottom)>=kt&&d.a.x>=b.left-2&&d.a.x<=b.right+2})},"blockingRectsFor"),M=c.__name((m,d,y)=>{const C=m.map(L=>({...L}));if(d.horizontal)C[d.index].y=y,C[d.index+1].y=y;else if(d.vertical)C[d.index].x=y,C[d.index+1].x=y;else return;const b=ae(mt(C));return it(b).length===b.length-1?b:void 0},"candidateByMovingRail"),u=c.__name((m,d,y)=>{const C=[m.start,m.end].filter(L=>!!L),b=it(d);if(b.length!==d.length-1)return!1;for(const L of b)if(wt(L.a,L.b,r,C,-2)||wt(L.a,L.b,i,[],-2))return!1;for(const L of a)if(L!==m){for(const T of b)for(const p of it(l(L)))if(ce(T,p,.5)>=kt)return!1}return f(m,d)<=y},"candidateIsSafe");for(let m=0;m<8;m++){const d=f();let y=!1;for(const C of a){const b=l(C),L=g(b);if(!L)continue;const T=x(C,L.segment);if(T.length===0)continue;const p=L.horizontal?[Math.min(...T.map(I=>I.rect.top))-20,Math.max(...T.map(I=>I.rect.bottom))+20]:[Math.min(...T.map(I=>I.rect.left))-20,Math.max(...T.map(I=>I.rect.right))+20];for(const I of p){const w=M(b,L.segment,I);if(!(!w||!u(C,w,d))){C.points=w,y=!0;break}}if(y)break}if(!y)return}}c.__name(Fn,"liftObstacleHuggingSameSideRails");function Dn(t,e){const o=c.__name(l=>{const f=l.groupTitleRect;if(!(!f||typeof f.left!="number"||typeof f.right!="number"||typeof f.top!="number"||typeof f.bottom!="number"||!Number.isFinite(f.left)||!Number.isFinite(f.right)||!Number.isFinite(f.top)||!Number.isFinite(f.bottom)||f.right<=f.left||f.bottom<=f.top))return{left:f.left,right:f.right,top:f.top,bottom:f.bottom}},"validTitleRect"),s=c.__name(l=>{if(!l.isGroup||l.parentId)return;const f=l.direction,g=typeof f=="string"?f.toUpperCase():"";if(g==="LR"||g==="RL"||g==="BT")return;const x=o(l),M=l.y,u=l.height;if(!x||typeof M!="number"||typeof u!="number"||!Number.isFinite(M)||!Number.isFinite(u)||u<=0)return;const m=x.right-x.left,d=x.bottom-x.top;if(!(d<=0||m<d))return{node:l,rect:x}},"topLaneTitleFor"),r=c.__name((l,f)=>{if(!l.horizontal)return!1;const g=l.a.y;return g<=f.top+Z||g>=f.bottom-Z?!1:zt(l.a.x,l.b.x,f.left,f.right)>=kt},"horizontalSegmentIntersectsTitle"),i=[...e.values()].map(s).filter(l=>!!l);if(i.length===0)return;let a=0;for(const l of t){if(l.isLayoutOnly)continue;const f=mt(l.points??[]);for(const g of it(f))for(const x of i)r(g,x.rect)&&(a=Math.max(a,x.rect.bottom-g.a.y+4))}if(!(a<=Z))for(const l of i){const f=l.node.y,g=l.node.height;typeof f!="number"||typeof g!="number"||!Number.isFinite(f)||!Number.isFinite(g)||g<=0||(l.node.y=f-a/2,l.node.height=g+a,l.node.groupTitleRect={...l.rect,top:l.rect.top-a,bottom:l.rect.bottom-a})}}c.__name(Dn,"liftTopLaneTitleBandsAboveRails");function Hn(t,e){const o=c.__name(f=>{const 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{left:g.left,right:g.right,top:g.top,bottom:g.bottom}},"validTitleRect"),s=c.__name(f=>{if(!f.isGroup||f.parentId||f.direction!=="LR")return;const x=o(f),M=f.x,u=f.width;if(!x||typeof M!="number"||typeof u!="number"||!Number.isFinite(M)||!Number.isFinite(u)||u<=0)return;const m=x.right-x.left,d=x.bottom-x.top;if(!(m<=0||d<m))return{node:f,rect:x}},"leftLaneTitleFor"),r=c.__name((f,g)=>{if(!f.vertical)return!1;const x=f.a.x;return x<=g.left+Z||x>=g.right-Z?!1:zt(f.a.y,f.b.y,g.top,g.bottom)>=kt},"verticalSegmentIntersectsTitle"),i=c.__name((f,g)=>{if(!f.horizontal)return!1;const x=f.a.y;return x<=g.top+Z||x>=g.bottom-Z?!1:zt(f.a.x,f.b.x,g.left,g.right)>=kt},"horizontalSegmentIntersectsTitle"),a=[...e.values()].map(s).filter(f=>!!f);if(a.length===0)return;let l=0;for(const f of t){if(f.isLayoutOnly)continue;const g=mt(f.points??[]);for(const x of it(g))for(const M of a)if(r(x,M.rect))l=Math.max(l,M.rect.right-x.a.x+4);else if(i(x,M.rect)){const u=Math.min(x.a.x,x.b.x);l=Math.max(l,M.rect.right-u+4)}}if(!(l<=Z))for(const f of a){const g=f.node.x,x=f.node.width;typeof g!="number"||typeof x!="number"||!Number.isFinite(g)||!Number.isFinite(x)||x<=0||(f.node.x=g-l/2,f.node.width=x+l,f.node.groupTitleRect={...f.rect,left:f.rect.left-l,right:f.rect.right-l})}}c.__name(Hn,"shiftLeftLaneTitleBandsLeftOfRails");function ys(t,e){const{realNodeRects:o}=pe(e.values()),s=t.filter(m=>!m.isLayoutOnly),r=c.__name((m,d=new Map)=>mt(d.get(m)??m.points??[]),"replacementPointsFor"),i=c.__name((m=new Map)=>{let d=0;for(let y=0;y<s.length;y++){const C=it(r(s[y],m));for(let b=y+1;b<s.length;b++){const L=it(r(s[b],m));for(const T of C)for(const p of L)le(T.a,T.b,p.a,p.b,Z)&&d++}}return d},"crossingCount"),a=c.__name((m=new Map)=>s.reduce((d,y)=>d+Qt(r(y,m)),0),"totalBends"),l=c.__name(m=>{const d=r(m);if(d.length<4)return;const y=d[d.length-2],C=d[d.length-1];if(!(!Tt(y,C,Z)&&!Et(y,C,Z)))return{tailStart:y,terminal:C}},"terminalTailFor"),f=c.__name((m,d)=>{const y=r(m);if(y.length<3)return;const C=y[0],b=y[1];let L;if(Tt(C,b,Z))L={x:b.x,y:d.tailStart.y};else if(Et(C,b,Z))L={x:d.tailStart.x,y:b.y};else return;const T=ae(mt([C,b,L,d.tailStart,d.terminal]));return it(T).length===T.length-1?T:void 0},"candidateWithDestinationTail"),g=c.__name((m,d)=>{const y=[m.start,m.end].filter(C=>!!C);for(const C of it(d))if(wt(C.a,C.b,o,y,-2))return!0;return!1},"pathHasNodeHit"),x=c.__name((m,d,y)=>{for(const C of s)if(C!==m){for(const b of it(d))for(const L of it(r(C,y)))if(ce(b,L,.5)>=kt)return!0}return!1},"pathHasSharedTrack"),M=c.__name((m,d,y)=>!g(m,d)&&!x(m,d,y),"candidateIsSafe"),u=c.__name(()=>{const m=new Map;for(const d of s){const y=d.end;if(!y||!e.has(y)||r(d).length<4)continue;const b=m.get(y)??[];b.push(d),m.set(y,b)}return m},"edgesByDestination");for(let m=0;m<4;m++){const d=i();if(d===0)return;const y=a();let C,b=d,L=y;for(const T of u().values())for(let p=0;p<T.length;p++)for(let I=p+1;I<T.length;I++){const w=T[p],A=T[I],B=l(w),N=l(A);if(!B||!N)continue;const k=f(w,N),H=f(A,B);if(!k||!H)continue;const O=new Map([[w,k],[A,H]]);if(!M(w,k,O)||!M(A,H,O))continue;const G=i(O),j=a(O);G>=d||G>b||G===b&&j>=L||(C=O,b=G,L=j)}if(!C)return;for(const[T,p]of C)T.points=p}}c.__name(ys,"swapDestinationTerminalTailsToReduceCrossings");function xs(t,e){const{realNodeRects:r,labelNodeRects:i}=pe(e.values()),a=t.filter(T=>!T.isLayoutOnly),l=c.__name((T,p=new Map)=>mt(p.get(T)??T.points??[]),"replacementPointsFor"),f=c.__name((T=new Map)=>{let p=0;for(let I=0;I<a.length;I++){const w=it(l(a[I],T));for(let A=I+1;A<a.length;A++){const B=it(l(a[A],T));for(const N of w)for(const k of B)le(N.a,N.b,k.a,k.b,Z)&&p++}}return p},"strictCrossingCount"),g=c.__name((T=new Map)=>a.reduce((p,I)=>p+Qt(l(I,T)),0),"totalBends"),x=c.__name(T=>{const p=T.start,I=T.end,w=p?e.get(p):void 0,A=I?e.get(I):void 0,B=w?qt(w):void 0,N=A?qt(A):void 0;return B&&N?{src:B,dst:N}:void 0},"endpointRectsFor"),M=c.__name((T,p,I)=>{if(I.index<=0||I.index+1>=p.length-1)return;const w=x(T);if(w){if(I.vertical){const A=I.a.x,B=Math.min(w.src.left,w.dst.left),N=Math.max(w.src.right,w.dst.right),k=A<B-Z?"left":A>N+Z?"right":void 0;return k?{edge:T,points:p,segmentIndex:I.index,axis:"vertical",side:k,coord:A,min:Math.min(I.a.y,I.b.y),max:Math.max(I.a.y,I.b.y)}:void 0}if(I.horizontal){const A=I.a.y,B=Math.min(w.src.top,w.dst.top),N=Math.max(w.src.bottom,w.dst.bottom),k=A<B-Z?"top":A>N+Z?"bottom":void 0;return k?{edge:T,points:p,segmentIndex:I.index,axis:"horizontal",side:k,coord:A,min:Math.min(I.a.x,I.b.x),max:Math.max(I.a.x,I.b.x)}:void 0}}},"externalRailForSegment"),u=c.__name(()=>{const T=[];for(const p of a){const I=l(p);for(const w of it(I)){const A=M(p,I,w);A&&T.push(A)}}return T},"collectExternalRails"),m=c.__name((T,p)=>T.edge!==p.edge&&T.axis===p.axis&&T.side===p.side&&zt(T.min,T.max,p.min,p.max)>=kt,"railsInteract"),d=c.__name(T=>{const p=[],I=new Set;for(const w of T){if(I.has(w))continue;const A=[w],B=[];for(I.add(w);A.length>0;){const N=A.pop();B.push(N);for(const k of T)!I.has(k)&&m(N,k)&&(I.add(k),A.push(k))}B.length>1&&p.push(B)}return p},"connectedComponents"),y=c.__name(T=>{const p=[];for(const I of T)p.some(w=>Math.abs(w-I.coord)<Z)||p.push(I.coord);for(;p.length<T.length;){const I=Math.min(...p),w=Math.max(...p),A=T[0].side;p.push(A==="left"||A==="top"?I-12*(T.length-p.length):w+12*(T.length-p.length))}return p},"uniqueCoordsFor"),C=c.__name(T=>{const p=T.map(A=>A.coord),I=y(T),w=[];if(T.length<=6){const A=new Array(I.length).fill(!1),B=[],N=c.__name(()=>{if(B.length===T.length){B.some((k,H)=>Math.abs(k-p[H])>=Z)&&w.push([...B]);return}for(const[k,H]of I.entries())A[k]||(A[k]=!0,B.push(H),N(),B.pop(),A[k]=!1)},"visit");return N(),w}for(let A=0;A<p.length;A++)for(let B=A+1;B<p.length;B++){const N=[...p];[N[A],N[B]]=[N[B],N[A]],w.push(N)}return w},"coordinateAssignmentsFor"),b=c.__name((T,p)=>{const I=new Map;for(const[A,B]of T.entries()){const N=p[A],k=I.get(B.edge)??B.points.map(H=>({x:H.x,y:H.y}));B.axis==="vertical"?(k[B.segmentIndex].x=N,k[B.segmentIndex+1].x=N):(k[B.segmentIndex].y=N,k[B.segmentIndex+1].y=N),I.set(B.edge,k)}const w=new Map;for(const[A,B]of I){const N=ae(mt(B));if(it(N).length!==N.length-1)return;w.set(A,N)}return w},"replacementsForAssignment"),L=c.__name(T=>{for(const[p,I]of T){const w=[p.start,p.end].filter(A=>!!A);for(const A of it(I))if(wt(A.a,A.b,r,w,-2)||wt(A.a,A.b,i,[],-2))return!1}for(let p=0;p<a.length;p++){const I=a[p],w=T.has(I),A=it(l(I,T));for(let B=p+1;B<a.length;B++){const N=a[B];if(!w&&!T.has(N))continue;const k=it(l(N,T));for(const H of A)for(const O of k)if(ce(H,O,.5)>=kt)return!1}}return!0},"candidateIsSafe");for(let T=0;T<4;T++){const p=f();if(p===0)return;let I,w=p,A=g(),B=Number.POSITIVE_INFINITY;for(const N of d(u()))for(const k of C(N)){const H=b(N,k);if(!H||!L(H))continue;const O=f(H);if(O>=p)continue;const G=g(H),j=N.reduce((J,dt,pt)=>J+Math.abs(k[pt]-dt.coord),0);O>w||O===w&&(G>A||G===A&&j>=B)||(I=H,w=O,A=G,B=j)}if(!I)return;for(const[N,k]of I)N.points=k}}c.__name(xs,"reassignCrossingExternalRailChannels");function _s(t,e){const{realNodeRects:o,labelNodeRects:s}=pe(e.values()),r=t.filter(u=>!u.isLayoutOnly),i=c.__name((u,m,d)=>mt(u===m?d??[]:u.points??[]),"pointsFor"),a=c.__name(u=>it(u).reduce((m,d)=>{const y=d.a.x-d.b.x,C=d.a.y-d.b.y;return m+Math.hypot(y,C)},0),"pathLength"),l=c.__name((u,m)=>{let d=0;for(let y=0;y<r.length;y++){const C=it(i(r[y],u,m));for(let b=y+1;b<r.length;b++){const L=it(i(r[b],u,m));for(const T of C)for(const p of L)le(T.a,T.b,p.a,p.b,Z)&&d++}}return d},"strictCrossingCount"),f=c.__name((u,m)=>{if(u.horizontal){const d=u.a.y;return(Math.abs(d-m.top)<1||Math.abs(d-m.bottom)<1)&&zt(u.a.x,u.b.x,m.left,m.right)>=kt}if(u.vertical){const d=u.a.x;return(Math.abs(d-m.left)<1||Math.abs(d-m.right)<1)&&zt(u.a.y,u.b.y,m.top,m.bottom)>=kt}return!1},"segmentRunsAlongRectBorder"),g=c.__name(u=>{const m=[u.start,u.end].filter(y=>!!y),d=[];for(const y of m){const C=e.get(y),b=C?qt(C):void 0;b&&d.push(b)}return d},"endpointRectsFor"),x=c.__name((u,m)=>{if(m+3>=u.length)return[];const d=u[m],y=u[m+1],C=u[m+2],b=u[m+3],L=Tt(d,y,Z)&&Et(y,C,Z)&&Tt(C,b,Z),T=Et(d,y,Z)&&Tt(y,C,Z)&&Et(C,b,Z);if(!L&&!T)return[];if(!(L?Math.sign(y.x-d.x)!==Math.sign(b.x-C.x):Math.sign(y.y-d.y)!==Math.sign(b.y-C.y)))return[];const I=ft(d,b,Z)||ht(d,b,Z)?[]:[{x:d.x,y:b.y},{x:b.x,y:d.y}],w=I.length===0?[[...u.slice(0,m+1),...u.slice(m+3)]]:I.map(B=>[...u.slice(0,m+1),B,...u.slice(m+3)]),A=new Set;return w.map(B=>ae(mt(B))).filter(B=>{if(it(B).length!==B.length-1||!B.some(k=>oe(k,b,Z)))return!1;const N=B.map(k=>`${k.x.toFixed(3)},${k.y.toFixed(3)}`).join("|");return A.has(N)?!1:(A.add(N),!0)})},"shortcutCandidatesAt"),M=c.__name((u,m,d)=>{const y=[u.start,u.end].filter(b=>!!b),C=g(u);for(const b of it(m))if(wt(b.a,b.b,o,y,-2)||wt(b.a,b.b,s,[],-2)||C.some(L=>f(b,L)))return!1;for(const b of r)if(b!==u){for(const L of it(m))for(const T of it(i(b)))if(ce(L,T,.5)>=kt)return!1}return l(u,m)<=d},"candidateIsSafe");for(let u=0;u<8;u++){const m=l();let d,y,C=m,b=Number.POSITIVE_INFINITY,L=Number.POSITIVE_INFINITY;for(const T of r){const p=i(T),I=Qt(p,Z),w=a(p);for(let A=0;A<=p.length-4;A++)for(const B of x(p,A)){const N=Qt(B,Z),k=a(B);if(!(N<I||N===I&&k<w-Z)||!M(T,B,m))continue;const O=l(T,B);O>C||O===C&&(N>b||N===b&&k>=L)||(d=T,y=B,C=O,b=N,L=k)}}if(!d||!y)return;d.points=y}}c.__name(_s,"shortcutRedundantOrthogonalJogs");function bs(t,e){const i=[];for(const R of e.values()){if(R.isGroup||R.isEdgeLabel)continue;const F=R.x??0,D=R.y??0,V=qt(R);V&&i.push({id:String(R.id??""),cx:F,cy:D,rect:V})}if(i.length===0)return;const a=new Map(i.map(R=>[R.id,R])),l=i.map(R=>({id:R.id,rect:R.rect})),f=["top","bottom","left","right"],g={top:Math.min(...i.map(R=>R.rect.top))-20,bottom:Math.max(...i.map(R=>R.rect.bottom))+20,left:Math.min(...i.map(R=>R.rect.left))-20,right:Math.max(...i.map(R=>R.rect.right))+20},x=t.filter(R=>!R.isLayoutOnly),M=new Map(x.map((R,F)=>[R,F])),u=c.__name(R=>{const F=R==="left"||R==="top"?-1:1,D=[];for(let V=0;V<=2;V++)D.push(g[R]+F*20*V);return D},"outwardTracksForSide"),m=c.__name((R,F=new Map)=>mt(F.get(R)??R.points??[]),"replacementPointsFor"),d=c.__name((R,F)=>{let D=0;for(const V of R)for(const h of F)le(V.a,V.b,h.a,h.b,Z)&&D++;return D},"crossingCountBetweenSegments"),y=c.__name((R,F)=>d(it(R),it(F)),"crossingCountBetweenPaths"),C=c.__name((R=new Map)=>{let F=0;const D=[],V=new Set,h=[],_=c.__name(S=>{V.has(S)||(V.add(S),h.push(S))},"addEdge");for(let S=0;S<x.length;S++){const v=x[S],E=m(v,R);for(let P=S+1;P<x.length;P++){const U=x[P],q=y(E,m(U,R));q>0&&(F+=q,D.push({first:v,second:U,count:q}),_(v),_(U))}}return h.sort((S,v)=>(M.get(S)??0)-(M.get(v)??0)),{count:F,pairs:D,edgeSet:V,edges:h}},"crossingSnapshot"),b=c.__name((R,F)=>{const D=new Set(F.keys());if(D.size===0)return R.count;let V=0;for(const _ of R.pairs)(D.has(_.first)||D.has(_.second))&&(V+=_.count);let h=0;for(let _=0;_<x.length;_++){const S=x[_],v=D.has(S),E=m(S,F);for(let P=_+1;P<x.length;P++){const U=x[P];!v&&!D.has(U)||(h+=y(E,m(U,F)))}}return R.count-V+h},"crossingCountWithReplacements"),L=c.__name(R=>{const F=new Map;for(const h of R.pairs){const _=F.get(h.first)??new Set;_.add(h.second),F.set(h.first,_);const S=F.get(h.second)??new Set;S.add(h.first),F.set(h.second,S)}const D=[],V=new Set;for(const h of R.edges){if(V.has(h))continue;const _=[h],S=[];for(V.add(h);_.length>0;){const v=_.pop();S.push(v);for(const E of F.get(v)??[])V.has(E)||(V.add(E),_.push(E))}S.sort((v,E)=>(M.get(v)??0)-(M.get(E)??0)),S.length>1&&D.push(S)}return D},"crossingComponents"),T=c.__name(R=>[R.start,R.end].filter(F=>!!F),"endpointIdsFor"),p=c.__name(R=>{const F=[];for(const D of L(R)){const V=new Set(D),h=new Set(D.flatMap(S=>T(S))),_=[...D];for(const S of x)V.has(S)||T(S).some(v=>h.has(v))&&_.push(S);_.sort((S,v)=>(M.get(S)??0)-(M.get(v)??0)),F.push(_)}return F},"pairSearchGroups"),I=c.__name((R,F,D)=>b(R,new Map([[F,D]])),"crossingCountWithSingleReplacement"),w=c.__name(R=>{const F=new Map;for(const D of R.pairs)F.set(D.first,(F.get(D.first)??0)+D.count),F.set(D.second,(F.get(D.second)??0)+D.count);return F},"currentCrossingsByEdge"),A=c.__name(R=>R.slice(1).reduce((F,D,V)=>{const h=R[V];return F+Math.abs(D.x-h.x)+Math.abs(D.y-h.y)},0),"pathLength"),B=c.__name((R=new Map)=>x.reduce((F,D)=>F+Qt(m(D,R)),0),"totalBends"),N=c.__name((R=new Map)=>x.reduce((F,D)=>F+A(m(D,R)),0),"totalLength"),k=c.__name((R,F,D=new Map)=>{const V=it(F);for(const h of x)if(h!==R){for(const _ of V)for(const S of it(m(h,D)))if(ce(_,S,.5)>=kt)return!0}return!1},"pathHasSegmentConflict"),H=c.__name((R,F)=>{const D=[R.start,R.end].filter(V=>!!V);for(const V of it(F))if(wt(V.a,V.b,l,D,-2))return!0;return!1},"pathHitsNode"),O=c.__name((R,F)=>{const D=ae(mt(F));it(D).length===D.length-1&&R.push(D)},"pushOrthogonalCandidate"),G=c.__name(R=>R==="left"||R==="right","sideIsHorizontal"),j=c.__name((R,F,D)=>{switch(F){case"left":return Math.min(R.x,D.x)-20;case"right":return Math.max(R.x,D.x)+20;case"top":return Math.min(R.y,D.y)-20;case"bottom":return Math.max(R.y,D.y)+20}},"localTrackForSameSide"),J=c.__name((R,F,D,V)=>{const h=D==="left"||D==="top"?-1:1,_=[j(F,D,V),g[D]];for(const S of _)for(let v=0;v<=2;v++)O(R,ro(F,D,V,S+h*20*v))},"addSameSideCandidates"),dt=c.__name((R,F,D,V,h)=>{for(const _ of u(D))for(const S of u(h))O(R,[F,{x:_,y:F.y},{x:_,y:S},{x:V.x,y:S},V])},"addHorizontalToVerticalCandidates"),pt=c.__name((R,F,D,V,h)=>{for(const _ of u(D))for(const S of u(h))O(R,[F,{x:F.x,y:_},{x:S,y:_},{x:S,y:V.y},V])},"addVerticalToHorizontalCandidates"),Bt=c.__name((R,F,D,V,h)=>{const _=[...u("top"),...u("bottom")];for(const S of u(D))for(const v of u(h))for(const E of _)O(R,[F,{x:S,y:F.y},{x:S,y:E},{x:v,y:E},{x:v,y:V.y},V])},"addHorizontalPairCandidates"),Ot=c.__name((R,F,D,V,h)=>{const _=[...u("left"),...u("right")];for(const S of u(D))for(const v of u(h))for(const E of _)O(R,[F,{x:F.x,y:S},{x:E,y:S},{x:E,y:v},{x:V.x,y:v},V])},"addVerticalPairCandidates"),Q=c.__name(R=>{const F=new Set;return R.map(D=>mt(D)).filter(D=>{const V=D.map(h=>`${h.x.toFixed(3)},${h.y.toFixed(3)}`).join("|");return F.has(V)||D.length<2?!1:(F.add(V),!0)})},"dedupeCandidatePaths"),W=c.__name((R,F,D,V)=>{const h=[],_=so(R,F,D,V,20,Z);_&&O(h,_),F===V&&J(h,R,F,D);const S=G(F),v=G(V);return S&&!v?dt(h,R,F,D,V):!S&&v?pt(h,R,F,D,V):S?Bt(h,R,F,D,V):Ot(h,R,F,D,V),Q(h)},"buildCandidatesForSides"),et=c.__name((R,F,D,V)=>{const h=[...u("left"),...u("right")],_=[...u("top"),...u("bottom")];for(const S of f){const v=Me(V,S),E=S==="top"||S==="bottom"?u(S):_;for(const P of h){O(R,[F,D,{x:P,y:D.y},{x:P,y:v.y},v]);for(const U of E)O(R,[F,D,{x:P,y:D.y},{x:P,y:U},{x:v.x,y:U},v])}}},"addVerticalDepartureOuterTrackCandidates"),at=c.__name((R,F,D,V)=>{const h=[...u("left"),...u("right")],_=[...u("top"),...u("bottom")];for(const S of f){const v=Me(V,S),E=S==="left"||S==="right"?u(S):h;for(const P of _){O(R,[F,D,{x:D.x,y:P},{x:v.x,y:P},v]);for(const U of E)O(R,[F,D,{x:D.x,y:P},{x:U,y:P},{x:U,y:v.y},v])}}},"addHorizontalDepartureOuterTrackCandidates"),gt=c.__name(R=>{const F=R.start,D=R.end,V=D?a.get(D):void 0;if(!F||!V)return[];const h=mt(R.points??[]);if(h.length<4)return[];const _=h[0],S=h[1],v=[];return Et(_,S,Z)?et(v,_,S,V):Tt(_,S,Z)&&at(v,_,S,V),v},"terminalPreservingOuterTrackCandidates"),xt=c.__name(R=>{const F=R.start,D=R.end,V=F?a.get(F):void 0,h=D?a.get(D):void 0;if(!V||!h)return[];const _=[];for(const S of f){const v=Me(V,S);for(const E of f)_.push(...W(v,S,Me(h,E),E))}return _.push(...gt(R)),_},"candidatePathsFor"),Ct=c.__name(()=>new Map(x.map(R=>[R,it(m(R))])),"currentSegmentsByEdge"),Vt=c.__name((R,F,D)=>{const V=new Set;for(const h of x){if(h===R)continue;const _=D.get(h)??it(m(h));F.some(S=>_.some(v=>ce(S,v,.5)>=kt))&&V.add(h)}return V},"sharedTrackConflictsFor"),jt=c.__name((R,F,D,V)=>{const h=new Set;return xt(R).map(S=>ae(mt(S))).filter(S=>{if(H(R,S))return!1;const v=S.map(E=>`${E.x.toFixed(3)},${E.y.toFixed(3)}`).join("|");return h.has(v)||S.length<2?!1:(h.add(v),!0)}).map(S=>{const v=it(S);let E=0;for(const P of x)P!==R&&(E+=d(v,D.get(P)??it(m(P))));return{candidate:S,candidateSegments:v,crossings:F.count-(V.get(R)??0)+E,bends:Qt(S,Z),totalBends:Qt(S),length:A(S)}}).filter(({crossings:S})=>S<=F.count).sort((S,v)=>S.crossings-v.crossings||S.bends-v.bends||S.length-v.length).slice(0,48).map(S=>({path:S.candidate,segments:S.candidateSegments,sharedTrackConflicts:Vt(R,S.candidateSegments,D),totalBends:S.totalBends,length:S.length}))},"pairCandidatesFor"),Ut=c.__name((R,F,D,V,h,_)=>{let S=0;for(const E of R.pairs)(E.first===F||E.second===F||E.first===V||E.second===V)&&(S+=E.count);let v=d(D.segments,h.segments);for(const E of x){if(E===F||E===V)continue;const P=_.get(E)??it(m(E));v+=d(D.segments,P)+d(h.segments,P)}return R.count-S+v},"pairCrossingCount"),te=c.__name((R,F)=>{for(const D of R.sharedTrackConflicts)if(D!==F)return!1;return!0},"conflictsOnlyWith"),Ie=c.__name((R,F)=>R.segments.some(D=>F.segments.some(V=>ce(D,V,.5)>=kt)),"candidatesShareTrack"),de=c.__name((R,F,D,V)=>te(F,D.edge)&&te(V,R.edge)&&!Ie(F,V),"pairCandidatesAreCompatible"),Se=c.__name((R,F,D,V,h)=>{const _=Ut(R.current,F.edge,D,V.edge,h,R.baseSegments);if(!(_>=R.current.count))return{replacements:new Map([[F.edge,D.path],[V.edge,h.path]]),crossings:_,bends:R.currentBends-(R.baseBendsByEdge.get(F.edge)??0)-(R.baseBendsByEdge.get(V.edge)??0)+D.totalBends+h.totalBends,length:R.currentLength-(R.baseLengthByEdge.get(F.edge)??0)-(R.baseLengthByEdge.get(V.edge)??0)+D.length+h.length}},"scorePairReplacement"),an=c.__name((R,F)=>R.crossings<F.crossings||R.crossings===F.crossings&&(R.bends<F.bends||R.bends===F.bends&&R.length<F.length),"pairScoreIsBetter"),ln=c.__name((R,F,D,V)=>{let h=V;for(const _ of F.candidates)for(const S of D.candidates){if(!de(F,_,D,S))continue;const v=Se(R,F,_,D,S);v&&an(v,h)&&(h=v)}return h},"bestScoreForOptionPair"),fn=c.__name(R=>{const F=B(),D=N(),V=Ct(),h=w(R),_=new Map(x.map(q=>[q,Qt(m(q))])),S=new Map(x.map(q=>[q,A(m(q))])),v=new Map,E=p(R);for(const q of E)for(const z of q){if(v.has(z))continue;const Y=jt(z,R,V,h);Y.length>0&&v.set(z,{edge:z,candidates:Y})}let P={replacements:new Map,crossings:R.count,bends:F,length:D};const U={current:R,currentBends:F,currentLength:D,baseBendsByEdge:_,baseLengthByEdge:S,baseSegments:V};for(const q of E){const z=new Set(q.filter(ot=>R.edgeSet.has(ot))),Y=q.map(ot=>v.get(ot)).filter(ot=>!!ot);for(let ot=0;ot<Y.length;ot++){const rt=Y[ot];for(let st=ot+1;st<Y.length;st++){const tt=Y[st];!z.has(rt.edge)&&!z.has(tt.edge)||(P=ln(U,rt,tt,P))}}}return P.replacements.size>0?P.replacements:void 0},"bestPairedReplacement");for(let R=0;R<4;R++){const F=C(),D=F.count;if(D===0)return;let V,h,_=D,S=Number.POSITIVE_INFINITY;for(const E of F.edges){const P=Qt(m(E),Z);for(const U of xt(E)){const q=H(E,U),z=!q&&k(E,U),Y=I(F,E,U),ot=Qt(U,Z);q||z||!(Y<D||Y===D&&ot<P)||Y>_||Y===_&&ot>=S||(V=E,h=U,_=Y,S=ot)}}if(V&&h){V.points=h;continue}const v=fn(F);if(!v)return;for(const[E,P]of v)E.points=P}}c.__name(bs,"resolveRenderedOrthogonalCrossings");var me=.001,Rr=8;function Ms(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e),s=["top","bottom","left","right"],r=20,i={top:Math.min(...o.map(d=>d.rect.top))-r,bottom:Math.max(...o.map(d=>d.rect.bottom))+r,left:Math.min(...o.map(d=>d.rect.left))-r,right:Math.max(...o.map(d=>d.rect.right))+r},a=c.__name((d,y,C,b)=>{const L=[],T=so(d,y,C,b,r,me);return T&&L.push(T),y===b&&L.push(ro(d,y,C,i[y])),L},"buildOrthogonalPathCandidates"),l=c.__name((d,y)=>{for(let C=0;C<d.length-1;C++){const b=d[C],L=d[C+1];if(wt(b,L,o,y,1))return!0}return!1},"pathHitsNode"),f=c.__name((d,y,C=!1)=>{let b=0;const L=Ae(d,me),T=y.start,p=y.end;for(const I of t){if(I===y||I.isLayoutOnly)continue;const w=I.start,A=I.end;if(!C&&T&&p&&(w===T||w===p||A===T||A===p))continue;const B=I.points;if(!(!B||B.length<2))for(const N of L)for(const k of Ae(B,me)){if(co(N.a,N.b,k.a,k.b,me,me)){b++;continue}ce(N,k,me)>=Rr&&b++}}return b},"pathConflictCount"),g=4,x=c.__name((d,y)=>{const C=Math.abs(d.y-y.rect.top),b=Math.abs(d.y-y.rect.bottom),L=Math.abs(d.x-y.rect.left),T=Math.abs(d.x-y.rect.right);let p="top",I=C;return b<I&&(p="bottom",I=b),L<I&&(p="left",I=L),T<I&&(p="right",I=T),p},"nearestSideOfRect"),M=new Map,u=c.__name((d,y,C)=>{const b=M.get(d)??[];b.push({side:y,edgeId:C}),M.set(d,b)},"addFaceClaim");for(const d of t){if(d.isLayoutOnly)continue;const y=d.points??[];if(y.length<1)continue;const C=d.id??"",b=d.start,L=d.end;if(b){const T=n.get(b);T&&u(b,x(y[0],T),C)}if(L){const T=n.get(L);T&&u(L,x(y[y.length-1],T),C)}}const m=c.__name((d,y,C)=>M.get(d)?.some(b=>b.edgeId!==C&&b.side===y)??!1,"faceIsClaimed");for(const d of t){if(d.isLayoutOnly)continue;const y=d.points;if(!y||y.length<2)continue;const C=Qt(y,me);if(C<g)continue;const b=d.start,L=d.end;if(!b||!L)continue;const T=n.get(b),p=n.get(L);if(!T||!p)continue;const I=d.id??"",w=f(y,d,!0),A=f(y,d);let B,N=w,k=C;for(const H of s){if(m(b,H,I))continue;const O=Me(T,H);for(const G of s){if(m(L,G,I))continue;const j=Me(p,G);for(const J of a(O,H,j,G)){if(l(J,[b,L]))continue;const dt=Qt(J,me);if(w>0){const pt=f(J,d,!0);if(pt>N||pt===N&&dt>=k)continue;N=pt,k=dt,B=J;continue}f(J,d)>A||dt<k&&(k=dt,B=J)}}}if(B){d.points=B;const H=M.get(b);H&&M.set(b,H.filter(G=>G.edgeId!==I));const O=M.get(L);O&&M.set(L,O.filter(G=>G.edgeId!==I)),u(b,x(B[0],T),I),u(L,x(B[B.length-1],p),I)}}}c.__name(Ms,"simplifyDetouredEdges");var Kt=.001,wo=10,$e=7;function Xn(t,e){const n=e?0:t.length-1,o=e?1:-1,s=t[n],r=t[n+o];if(!s||!r)return;const i=r.x-s.x,a=r.y-s.y;if(!(Math.abs(i)+Math.abs(a)<Kt)){if(Math.abs(a)<=Kt){const f=s.x+Math.sign(i)*wo;return{left:Math.min(s.x,f),right:Math.max(s.x,f),top:s.y-$e,bottom:s.y+$e}}if(Math.abs(i)<=Kt){const f=s.y+Math.sign(a)*wo;return{left:s.x-$e,right:s.x+$e,top:Math.min(s.y,f),bottom:Math.max(s.y,f)}}return{left:Math.min(s.x,r.x),right:Math.max(s.x,r.x),top:Math.min(s.y,r.y),bottom:Math.max(s.y,r.y)}}}c.__name(Xn,"markerClearanceRectFor");function Is(t){return{left:Math.min(t.left,t.right),right:Math.max(t.left,t.right),top:Math.min(t.top,t.bottom),bottom:Math.max(t.top,t.bottom)}}c.__name(Is,"normalizeRect");function Yn(t,e){const n=mt(e),o=Xn(n,!0),s=Xn(n,!1);return[o,s].some(r=>r&&We(t,Is(r)))}c.__name(Yn,"labelOverlapsOwnMarker");function Ve(t,e){const n=[];for(const m of t){if(m.isLayoutOnly)continue;const d=m.points;if(!(!d||d.length<2))for(let y=0;y<d.length-1;y++)n.push({edgeId:m.id,p1:d[y],p2:d[y+1]})}const o=[],s=[];for(const m of e.values()){const d=m.isGroup,y=m.parentId;if(d&&!y){const b=qt(m);b&&s.push({id:m.id,rect:b});continue}if(d||m.isEdgeLabel)continue;const C=qt(m);C&&o.push({nodeId:m.id,rect:C})}const r=3,i=1,a=12,l=c.__name((m,d)=>{const y=Cn(d,r);for(const{nodeId:C,rect:b}of o)if(C!==m&&We(y,b))return!0;return!1},"labelOverlapsForeignNode"),f=c.__name((m,d)=>{const y=Cn(d,r);for(const C of n)if(C.edgeId!==m&&on(C.p1,C.p2,y))return!0;return!1},"labelOverlapsForeignEdge"),g=c.__name((m,d,y)=>l(m,y)||f(d,y),"labelOverlapsAnything"),x=[],M=c.__name(m=>{for(const{id:d,rect:y}of s)if(qo(y,m))return d},"findContainingLane"),u=c.__name((m,d)=>x.some(y=>y.labelId!==m&&We(d,y.rect)),"overlapsPlacedLabel");for(const m of t){if(m.isLayoutOnly)continue;const d=m.labelNodeId;if(!d)continue;const y=e.get(d);if(!y)continue;const C=m.points;if(!C||C.length<2)continue;const b=y.width??0,L=y.height??0;if(b<=0||L<=0)continue;const T=[];for(let Q=0;Q<C.length-1;Q++){const W=C[Q],et=C[Q+1],at=Math.abs(W.x-et.x),gt=Math.abs(W.y-et.y);at<Kt&&gt<Kt||at>=Kt&&gt>=Kt||T.push({idx:Q,length:at+gt,orientation:at>=Kt?"horizontal":"vertical",midX:(W.x+et.x)/2,midY:(W.y+et.y)/2})}if(T.length===0)continue;const p=T.length>=3?T.filter(Q=>Q.idx>0&&Q.idx<T.length-1):T,I=p.length>0?p:T,w=b>=L?"horizontal":"vertical",A=c.__name(Q=>[...Q].sort((W,et)=>{const at=W.orientation===w,gt=et.orientation===w;if(at!==gt)return at?-1:1;const xt=W.length>=(W.orientation==="horizontal"?b:L)+2,Ct=et.length>=(et.orientation==="horizontal"?b:L)+2;return xt!==Ct?xt?-1:1:et.length-W.length}),"rankSegments"),B=T[0],N=T[T.length-1],k=[.5,.25,.75,.05,.95,.15,.85,.1,.9],H=c.__name((Q,W)=>{const et=C[Q.idx],at=C[Q.idx+1];return{midX:et.x+(at.x-et.x)*W,midY:et.y+(at.y-et.y)*W}},"anchorAtT"),O=c.__name((Q,W,et)=>Math.min(et,Math.max(W,Q)),"clamp"),G=c.__name((Q,W)=>Q.midX>=W.left-Kt&&Q.midX<=W.right+Kt&&Q.midY>=W.top-Kt&&Q.midY<=W.bottom+Kt,"pointInsideRectInclusive"),j=c.__name(Q=>{const W=we(Q.midX,Q.midY,b,L),et=M(W);if(et)return{laneId:et,anchor:Q,rect:W};const at=s.find(({rect:te})=>G(Q,te));if(!at)return;const gt=at.rect.left+b/2+i,xt=at.rect.right-b/2-i,Ct=at.rect.top+L/2+i,Vt=at.rect.bottom-L/2-i;if(gt>xt||Ct>Vt)return;const jt={midX:O(Q.midX,gt,xt),midY:O(Q.midY,Ct,Vt)},Ut=we(jt.midX,jt.midY,b,L);return G(Q,Ut)?{laneId:at.id,anchor:jt,rect:Ut}:void 0},"placementForAnchor"),J=c.__name((Q,W,et)=>Q.orientation==="horizontal"?Math.abs(W.midX-et.x):Math.abs(W.midY-et.y),"distanceAlongSegment"),dt=c.__name((Q,W)=>{const at=(Q.orientation==="horizontal"?b/2:L/2)+a;if(Q===B){const gt=C[Q.idx];if(J(Q,W,gt)+Kt<at)return!1}if(Q===N){const gt=C[Q.idx+1];if(J(Q,W,gt)+Kt<at)return!1}return!0},"labelClearsTerminalEndpoints"),pt=c.__name(Q=>{const W=A(Q);for(const et of W)for(const at of k){const gt=H(et,at);if(!dt(et,gt))continue;const xt=j(gt);if(xt&&!Yn(xt.rect,C)&&!u(d,xt.rect)&&!g(d,m.id,xt.rect))return{laneId:xt.laneId,anchor:xt.anchor}}},"tryPool"),Bt=c.__name((Q,W,et=!1)=>{const at=A(Q);for(const gt of at){const xt={midX:gt.midX,midY:gt.midY};if(W&&!dt(gt,xt))continue;const Ct=j(xt);if(Ct&&!Yn(Ct.rect,C)&&!u(d,Ct.rect)&&!l(d,Ct.rect)&&(et||!f(m.id,Ct.rect)))return{laneId:Ct.laneId,anchor:Ct.anchor}}},"findLaneContainingFallback"),Ot=pt(I)??(I.length<T.length?pt(T):void 0)??Bt(T,!0)??Bt(T,!1)??Bt(T,!1,!0);if(Ot){y.x=Ot.anchor.midX,y.y=Ot.anchor.midY,y.parentId=Ot.laneId;const Q=we(Ot.anchor.midX,Ot.anchor.midY,b,L),W=x.findIndex(et=>et.labelId===d);W>=0?x[W]={labelId:d,rect:Q}:x.push({labelId:d,rect:Q})}}}c.__name(Ve,"anchorLabelsToPolyline");var _n=1e-6,Nr=8,Ao=Nr/2,Or=3;function Gn(t,e){return t<e?`${t}::${e}`:`${e}::${t}`}c.__name(Gn,"pairKey");function Ss(t,e){const{nodeInfoById:n,realNodeRects:o}=sn(e),s=new Map;for(const i of e){const a=i.id;if(!i.isGroup&&i.isEdgeLabel){s.set(a,{w:i.width??0,h:i.height??0});continue}}const r=c.__name((i,a,l,f)=>{const g=Gn(a,l);let x=0;const M=c.__name(u=>{if(!u)return;const m=s.get(u);if(!m)return;const d=f==="x"?m.w/2:m.h/2;d>x&&(x=d)},"consider");M(i.labelNodeId);for(const u of t){if(u===i||u.isLayoutOnly)continue;const m=u.start,d=u.end;!m||!d||Gn(m,d)===g&&M(u.labelNodeId)}return x>0?x+Or:0},"labelClearanceFor");for(const i of t){if(i.isLayoutOnly)continue;const a=i.points;if(!no(a,_n))continue;const l=io(i,n,_n);if(!l)continue;const{srcId:f,dstId:g,srcInfo:x,dstInfo:M,collinearX:u,collinearY:m}=l;if(u===m)continue;let d,y;if(u){const p=M.cy>x.cy;d={x:x.cx,y:p?x.rect.bottom:x.rect.top},y={x:M.cx,y:p?M.rect.top:M.rect.bottom}}else{const p=M.cx>x.cx;d={x:p?x.rect.right:x.rect.left,y:x.cy},y={x:p?M.rect.left:M.rect.right,y:M.cy}}if(wt(d,y,o,[f,g],1))continue;const b=r(i,f,g,u?"x":"y"),L=b>Ao?b:Ao,T=[0,L,-L];for(const p of T){const I={...d},w={...y};if(u){if(I.x+=p,w.x+=p,I.x<=x.rect.left||I.x>=x.rect.right||w.x<=M.rect.left||w.x>=M.rect.right)continue}else if(I.y+=p,w.y+=p,I.y<=x.rect.top||I.y>=x.rect.bottom||w.y<=M.rect.top||w.y>=M.rect.bottom)continue;if(!wt(I,w,o,[f,g],1)&&!Ke(I,w,t,i,{epsilon:_n})){i.points=[I,w];break}}}}c.__name(Ss,"straightenCollinearSiblingDetours");function $n(t,e){const{realNodeRects:l,labelNodeRects:f}=pe(e.values()),g=c.__name((p,I)=>Ae(I,.001).map(w=>({...w,edge:p,interior:w.index>=1&&w.index<=I.length-3})),"segmentsFor"),x=c.__name(()=>{const p=[];for(const I of t){if(I.isLayoutOnly)continue;const w=I.points;!w||w.length<2||p.push(...g(I,mt(w)))}return p},"allSegments"),M=c.__name((p,I)=>p.horizontal&&I.horizontal?zt(p.a.x,p.b.x,I.a.x,I.b.x)>=8&&Math.abs(p.a.y-I.a.y)<7:p.vertical&&I.vertical?zt(p.a.y,p.b.y,I.a.y,I.b.y)>=8&&Math.abs(p.a.x-I.a.x)<7:!1,"hasCrowdedParallelTrack"),u=c.__name((p,I)=>{const w=p.start,A=p.end,B=g(p,I);if(B.length!==I.length-1)return!1;const N=[w,A].filter(H=>!!H),k=p.labelNodeId?[p.labelNodeId]:[];for(const H of B)if(wt(H.a,H.b,l,N,-2)||wt(H.a,H.b,f,k,-2))return!1;for(const H of t){if(H===p||H.isLayoutOnly)continue;const O=H.points;if(!(!O||O.length<2)){for(const G of B)for(const j of g(H,mt(O)))if(M(G,j)||le(G.a,G.b,j.a,j.b,.001))return!1}}return!0},"candidateIsSafe"),m=c.__name((p,I)=>{const w=mt(p.edge.points??[]);if(w.length<4||p.index>=w.length-1)return;const A=w.map(B=>({...B}));if(p.horizontal)A[p.index].y+=I,A[p.index+1].y+=I;else if(p.vertical)A[p.index].x+=I,A[p.index+1].x+=I;else return;return g(p.edge,A).length===A.length-1?A:void 0},"shiftedCandidate"),d=c.__name((p,I)=>({x:p.x??(I.left+I.right)/2,y:p.y??(I.top+I.bottom)/2}),"nodeCenter"),y=c.__name(p=>{const I=p.edge,w=mt(I.points??[]);if(w.length!==4||p.index!==1)return;const A=I.start?e.get(I.start):void 0,B=I.end?e.get(I.end):void 0,N=A?qt(A):void 0,k=B?qt(B):void 0,H=w.slice(p.index+2);if(!(!A||!B||!N||!k||H.length===0))return{sourceCenter:d(A,N),targetCenter:d(B,k),sourceRect:N,tail:H}},"sourceDetourContextFor"),C=c.__name((p,I,w,A,B,N)=>{const k=A.y>=w.y,H=k?B.bottom:B.top,O=H+(k?20:-20);if(k&&p.b.y<=O+.001||!k&&p.b.y>=O-.001)return;const G=p.a.x+I;return mt([{x:w.x,y:H},{x:w.x,y:O},{x:G,y:O},{x:G,y:p.b.y},...N],.001)},"verticalSourceDetour"),b=c.__name((p,I,w,A,B,N)=>{const k=A.x>=w.x,H=k?B.right:B.left,O=H+(k?20:-20);if(k&&p.b.x<=O+.001||!k&&p.b.x>=O-.001)return;const G=p.a.y+I;return mt([{x:H,y:w.y},{x:O,y:w.y},{x:O,y:G},{x:p.b.x,y:G},...N],.001)},"horizontalSourceDetour"),L=c.__name((p,I)=>{const w=y(p);if(w){if(p.vertical)return C(p,I,w.sourceCenter,w.targetCenter,w.sourceRect,w.tail);if(p.horizontal)return b(p,I,w.sourceCenter,w.targetCenter,w.sourceRect,w.tail)}},"sourceDetourCandidate"),T=[-7,7,-14,14,-21,21];for(let p=0;p<12;p++){const I=x();let w=!1;for(let A=0;A<I.length&&!w;A++)for(let B=A+1;B<I.length&&!w;B++){const N=I[A],k=I[B];if(N.edge===k.edge||!M(N,k))continue;const H=[N,k].filter(O=>O.interior);for(const O of H){for(const G of T){const j=m(O,G);if(j&&u(O.edge,j)){O.edge.points=j,w=!0;break}const J=L(O,G);if(J&&u(O.edge,J)){O.edge.points=J,w=!0;break}}if(w)break}}if(!w)return}}c.__name($n,"nudgeSharedInteriorSubpaths");function Cs(t,e,n,o){const s=e.x-t.x,r=e.y-t.y,i=o.x-n.x,a=o.y-n.y,l=s*a-r*i;if(Math.abs(l)<1e-10)return!1;const f=n.x-t.x,g=n.y-t.y,x=(f*a-g*i)/l,M=(f*r-g*s)/l,u=.01;return x>u&&x<1-u&&M>u&&M<1-u}c.__name(Cs,"segmentsIntersect");function vs(t){const e=t.nodes??[],n=t.edges??[],o=[];if(!n.length||!e.length)return o;const s=Jo(e),r=[];for(const a of n){if(a.isLayoutOnly)continue;const l=a.points;if(!l||l.length<2)continue;const f=a.start,g=a.end,x=a.labelNodeId,M=a.id??`${f}->${g}`;for(const u of s)if(!(u.nodeId===f||u.nodeId===g)&&!(x&&u.nodeId===x)){for(let m=0;m<l.length-1;m++)if(on(l[m],l[m+1],u,-1)){o.push({type:"edge-node-overlap",edgeId:M,targetId:u.nodeId,detail:`segment ${m} passes through node "${u.nodeId}"`});break}}for(let u=0;u<l.length-1;u++)r.push({edgeId:M,start:f,end:g,p1:l[u],p2:l[u+1]})}const i=new Set;for(let a=0;a<r.length;a++)for(let l=a+1;l<r.length;l++){const f=r[a],g=r[l];if(f.edgeId!==g.edgeId&&!(f.start===g.start||f.start===g.end||f.end===g.start||f.end===g.end)&&Cs(f.p1,f.p2,g.p1,g.p2)){const x=f.edgeId<g.edgeId?`${f.edgeId}|${g.edgeId}`:`${g.edgeId}|${f.edgeId}`;i.has(x)||(i.add(x),o.push({type:"edge-edge-crossing",edgeId:f.edgeId,targetId:g.edgeId,detail:`edges "${f.edgeId}" and "${g.edgeId}" cross`}))}}if(o.length>0){const a=o.filter(f=>f.type==="edge-node-overlap").length,l=o.filter(f=>f.type==="edge-edge-crossing").length;c.log.warn(`[SWIMLANE_VALIDATE] ${o.length} issue(s) detected: ${a} edge-node overlap(s), ${l} edge crossing(s)`);for(const f of o)c.log.warn(`[SWIMLANE_VALIDATE] ${f.type}: ${f.detail}`)}return o}c.__name(vs,"validateSwimlanesLayout");function Ls(t,e){const n=t.nodes??[],o=t.edges??[],s=n.filter(a=>!a.isGroup);if((e==="LR"||e==="RL")&&s.length>0&&!us(t,e)||e==="BT"&&s.length>0&&!ds(t))return;for(const a of o){if(a.isLayoutOnly)continue;const l=a.points;!l||l.length<2||(a.points=ae(qe(l)))}Ms(o,n),Ss(o,n),hs(o,n);const r=new Map;for(const a of n)r.set(String(a.id),a);Ve(o,r),ns(o,r),gs(o,r),$n(o,r),ms(o,r),ps(o,r),Fn(o,r),ys(o,r);const i=c.__name(()=>{bs(o,r),xs(o,r),_s(o,r),Ve(o,r),Bn(o,r),Fn(o,r),Ve(o,r),Bn(o,r)},"finalizeRenderedEdges");i(),$n(o,r),i(),Dn(o,r),Hn(o,r),Dn(o,r),Hn(o,r)}c.__name(Ls,"postProcessSwimlaneLayout");function ye(t){const e=new Map(t.nodeById),n=new Set,o=[];for(const r of t.edges){if(!e.has(r.src)||!e.has(r.dst))continue;const i=`${r.id}:${r.src}->${r.dst}`;n.has(i)||(n.add(i),o.push(r))}return{nodes:[...e.keys()],edges:o,layout:t.layout,nodeById:e}}c.__name(ye,"normalizeGraph");function ho(t,e){return t.edges.filter(n=>n.dst===e)}c.__name(ho,"incoming");function Ts(t){const e=new Map;for(const n of t.nodes)e.set(n,[]);for(const n of t.edges)e.get(n.src).push(n.dst);return e}c.__name(Ts,"buildSuccessorMap");function go(t){const e=Ts(t);for(const n of e.values())n.sort((o,s)=>o.localeCompare(s));return e}c.__name(go,"buildSortedSuccessorMap");function mo(t){const e=new Map;for(const n of t.nodes)e.set(n,0);for(const n of t.edges)e.set(n.dst,(e.get(n.dst)??0)+1);return e}c.__name(mo,"buildInDegreeMap");function po(t){return[...t.entries()].filter(([,e])=>e===0).map(([e])=>e).sort((e,n)=>e.localeCompare(n))}c.__name(po,"sortedZeroInDegreeNodes");function rn(t,e=()=>!0){const n=new Map,o=new Map;for(const s of t.nodes)n.set(s,[]),o.set(s,[]);for(const s of t.edges)e(s)&&(o.get(s.src).push(s.dst),n.get(s.dst).push(s.src));return{preds:n,succs:o}}c.__name(rn,"buildPredecessorSuccessorMaps");function yo(t,e,n,o){let s=0;for(const i of t.nodes)o?.skipGroups&&t.nodeById.get(i)?.isGroup||(s=Math.max(s,n[i]??0));const r=Array.from({length:s+1},()=>[]);for(const i of e)o?.skipGroups&&t.nodeById.get(i)?.isGroup||r[Math.max(0,n[i]??0)].push(i);return r}c.__name(yo,"buildLayersFromRanks");function Oe(t){const e=mo(t),n=po(e),o=[],s=go(t);for(;n.length;){const r=n.shift();o.push(r);for(const i of s.get(r)??[])if(e.set(i,(e.get(i)??0)-1),(e.get(i)??0)===0){let a=0;for(;a<n.length&&n[a]<i;)a++;n.splice(a,0,i)}}return o.length===t.nodes.length?o:null}c.__name(Oe,"topoSortIfAcyclic");function Re(t){const e=new Map;let n=0;for(const o of t)e.set(o,n),n++;return e}c.__name(Re,"buildLayerIndex");function xo(t){const e=new Array(t.length),n=c.__name((o,s)=>{if(s-o<=1)return 0;const r=o+s>>1;let i=n(o,r)+n(r,s),a=o,l=r,f=o;for(;a<r||l<s;)l>=s||a<r&&t[a]<=t[l]?e[f++]=t[a++]:(e[f++]=t[l++],i+=r-a);for(let g=o;g<s;g++)t[g]=e[g];return i},"count");return n(0,t.length)}c.__name(xo,"countInversions");function Es(t){const e=ye(t),n=new Map;for(const g of e.nodes)n.set(g,[]);for(const g of e.edges)n.get(g.src).push(g);for(const g of n.values())g.sort((x,M)=>x.dst===M.dst?x.id.localeCompare(M.id):x.dst.localeCompare(M.dst));const o=Object.create(null);for(const g of e.nodes)o[g]=0;const s=[],r=c.__name(g=>{o[g]=1;for(const x of n.get(g)??[]){const M=x.dst;o[M]===0?r(M):o[M]===1&&s.push(x)}o[g]=2},"dfs"),i=[...e.nodes].sort((g,x)=>g.localeCompare(x));for(const g of i)o[g]===0&&r(g);const a=new Set(s.map(g=>`${g.id}:${g.src}->${g.dst}`)),l=e.edges.map(g=>a.has(`${g.id}:${g.src}->${g.dst}`)?{id:g.id,src:g.dst,dst:g.src,weight:g.weight,ref:g.ref}:g);return{acyclic:{nodes:[...e.nodes],edges:l,layout:e.layout,nodeById:new Map(e.nodeById)},reversed:s}}c.__name(Es,"removeCycles_DFS");function ws(t){const e=new Map,n=c.__name(o=>{if(e.has(o))return e.get(o);const s=t.nodeById.get(o);if(!s)return e.set(o,null),null;const r=s.parentId;if(!r)return e.set(o,null),null;const a=n(r)??r;return e.set(o,a),a},"resolve");for(const o of t.nodes)n(o);return e}c.__name(ws,"buildTopLaneMap");function fe(t){const e=ws(t);return n=>e.get(n)??null}c.__name(fe,"createTopLaneResolver");function cn(t){const e=[];for(const n of t.layout.nodes??[])n.isGroup&&!n.parentId&&e.push(n.id);return[...new Set(e)].reverse()}c.__name(cn,"buildTopLaneOrder");function _o(t,e){const n=cn(t);if(!e||e.length===0)return n;const o=new Set(n),s=new Set,r=[];for(const i of e)!o.has(i)||s.has(i)||(s.add(i),r.push(i));for(const i of n)s.has(i)||r.push(i);return r}c.__name(_o,"resolveTopLaneOrder");var Pr={EPSILON:1e-6},en={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},Ro={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function As(t,e){const n=ye(t),o=e?.laneOf??(()=>null),s=e?.rankHint,{preds:r}=rn(n);for(const p of r.values())p.sort((I,w)=>I.localeCompare(w));const i=Oe(n)??[...n.nodes].sort((p,I)=>p.localeCompare(I)),a=new Map;for(const[p,I]of i.entries())a.set(I,p);const l=new Map,f=new Map;for(const p of n.nodes)f.set(p,[]);for(const p of i){const I=(r.get(p)??[]).filter(w=>l.has(w));if(I.length>0){const w=Rs(p,I,{laneOf:o,rankHint:s,topoIndex:a});l.set(p,w),f.get(w).push(p)}else l.has(p)||l.set(p,null)}for(const p of n.nodes)l.has(p)||l.set(p,null);const g=new Set;for(const p of n.nodes)(l.get(p)??null)===null&&g.add(p);const x=[...g].sort((p,I)=>{const w=a.get(p)??0,A=a.get(I)??0;return w===A?p.localeCompare(I):w-A}),M=Ns(n),u=new Map;for(const[p,I]of M.entries())u.set(p,[...I].sort((w,A)=>w.localeCompare(A)));const m=Os(u),d=Ps(u),y=new Map;for(const p of n.nodes)y.set(p,[]);for(const p of d)for(const I of p.nodes){const w=y.get(I);w?w.push(p.id):y.set(I,[p.id])}const C=[],b=[],L=new Set,T=c.__name(p=>{if(!L.has(p)){L.add(p),C.push(p);for(const I of f.get(p)??[])T(I);b.push(p)}},"walk");for(const p of x)T(p);for(const p of i)T(p);return{parent:l,children:f,roots:x,componentOf:m,blocks:d,nodeBlocks:y,adjacency:u,preorder:C,postorder:b,topologicalOrder:i}}c.__name(As,"buildDrivingTree");function Rs(t,e,n){const o=n.laneOf(t);return[...e].sort((r,i)=>{const a=n.laneOf(r),l=n.laneOf(i),f=a!=null&&a===o,g=l!=null&&l===o;if(f!==g)return f?-1:1;const x=n.rankHint?.[r],M=n.rankHint?.[i];if(x!=null&&M!=null&&x!==M)return M-x;const u=n.topoIndex.get(r)??0,m=n.topoIndex.get(i)??0;return u!==m?u-m:r.localeCompare(i)})[0]}c.__name(Rs,"chooseParent");function Ns(t){const e=new Map;for(const n of t.nodes)e.set(n,new Set);for(const n of t.edges)e.get(n.src).add(n.dst),e.get(n.dst).add(n.src);return e}c.__name(Ns,"buildAdjacency");function Os(t){const e=new Map;let n=0;for(const o of t.keys()){if(e.has(o))continue;const s=[o];for(;s.length>0;){const r=s.pop();if(!e.has(r)){e.set(r,n);for(const i of t.get(r)??[])e.has(i)||s.push(i)}}n++}return e}c.__name(Os,"assignComponents");function Ps(t){const e=new Map,n=new Map,o=[],s=[];let r=0;const i=c.__name((a,l)=>{e.set(a,++r),n.set(a,r);for(const f of t.get(a)??[])f!==l&&(e.has(f)?(e.get(f)??0)<(e.get(a)??0)&&(o.push([a,f]),n.set(a,Math.min(n.get(a)??r,e.get(f)??r))):(o.push([a,f]),i(f,a),n.set(a,Math.min(n.get(a)??r,n.get(f)??r)),(n.get(f)??0)>=(e.get(a)??0)&&s.push(Bs(a,f,o,s.length))))},"visit");for(const a of t.keys())e.has(a)||i(a,null);return s}c.__name(Ps,"computeBlocks");function Bs(t,e,n,o){const s=[],r=new Set;for(;n.length>0;){const i=n.pop();if(s.push(i),r.add(i[0]),r.add(i[1]),i[0]===t&&i[1]===e||i[0]===e&&i[1]===t)break}return{id:o,edges:s,nodes:[...r]}}c.__name(Bs,"popBlock");function ks(t,e,n){const o=[...t.nodes],s=new Map;for(const[b,L]of o.entries())s.set(L,b);const r=o.length,i=new Array(r).fill(-1),a=new Array(r).fill(0),l=[],f=new Set;for(const b of o){const L=n.parent.get(b)??null,T=s.get(b);T!=null&&L==null&&(i[T]=-1,a[T]=0,f.has(b)||(f.add(b),l.push(b)))}for(;l.length>0;){const b=l.shift(),L=s.get(b);if(L==null)continue;const T=n.children.get(b)??[];for(const p of T){if(f.has(p))continue;const I=s.get(p);I!=null&&(i[I]=L,a[I]=a[L]+1,f.add(p),l.push(p))}}for(const b of o){if(f.has(b))continue;const L=s.get(b);L!=null&&(i[L]=-1,a[L]=0,f.add(b))}const g=Math.max(1,Math.ceil(Math.log2(Math.max(1,r)))+1),x=Array.from({length:g},()=>new Array(r).fill(-1));for(let b=0;b<r;b++)x[0][b]=i[b];for(let b=1;b<g;b++)for(let L=0;L<r;L++){const T=x[b-1][L];x[b][L]=T===-1?-1:x[b-1][T]}const M=c.__name((b,L)=>{if(b===-1||L===-1)return-1;a[b]<a[L]&&([b,L]=[L,b]);const T=a[b]-a[L];for(let p=0;p<g;p++)if(T>>p&1&&(b=x[p][b],b===-1))return-1;if(b===L)return b;for(let p=g-1;p>=0;p--){const I=x[p][b],w=x[p][L];I===-1||w===-1||I!==w&&(b=I,L=w)}return x[0][b]},"lcaIndex"),u=Array.from({length:r},()=>new Map);for(const b of t.edges){let L=b.src,T=b.dst,p=e[L],I=e[T];if(p==null||I==null||(p>I&&([L,T]=[T,L],[p,I]=[I,p]),p==null||I==null||p===I))continue;const w=s.get(L),A=s.get(T);if(w==null||A==null)continue;const B=M(w,A);if(B===-1)continue;const N=u[B];for(let k=p;k<I;k++)N.set(k,(N.get(k)??0)+1)}const m=new Map,d=c.__name((b,L)=>{if(L.size!==0)for(const[T,p]of L)b.set(T,(b.get(T)??0)+p)},"mergeInto"),y=new Set,C=c.__name(b=>{const L=s.get(b);y.add(b);const T=L==null?void 0:u[L],p=T?new Map(T):new Map,I=n.children.get(b)??[];for(const w of I){const A=C(w),B=e[b];if(B!=null){let N=m.get(b);N||(N=new Map,m.set(b,N));let k=A.get(B)??0;const H=e[w];H!=null&&H>B&&(k+=1),N.set(w,k)}d(p,A)}return p},"dfs");for(const b of n.roots)y.has(b)||C(b);for(const b of o)y.has(b)||C(b);return m}c.__name(ks,"computeSubtreeCrossCounts");function Fs(t,e,n){const o=new Map,s=c.__name(r=>{let i=n[r]??0;const a=[...e.get(r)??[]];a.sort(bo(n));for(const l of a){s(l);const f=o.get(l);f!=null&&(i=Math.min(i,f))}o.set(r,i)},"annotate");for(const r of t)s(r);return o}c.__name(Fs,"annotateMinimumLayers");function bo(t){return(e,n)=>{const o=t[e]??0,s=t[n]??0;return o===s?e.localeCompare(n):o-s}}c.__name(bo,"compareByRankThenId");function Ds(t,e,n,o){let s=0;for(const l of e){const f=n[l]??0;f>s&&(s=f)}const r=Array.from({length:s+1},()=>[]),i=new Set,a=c.__name(l=>{if(i.has(l))return;i.add(l);const f=n[l]??0;r[f]||(r[f]=[]),r[f].push(l);for(const g of o(l))a(g)},"emit");for(const l of t)a(l);for(const l of e)if(!i.has(l)){const f=n[l]??0;r[f]||(r[f]=[]),r[f].push(l),i.add(l)}return r}c.__name(Ds,"emitNodesInTreeOrder");function Hs(t){const e=[];for(const n of t){const o=new Set,s=[];for(const r of n)o.has(r)||(o.add(r),s.push(r));e.push(s)}return e}c.__name(Hs,"deduplicateLayers");function Xs(t,e,n,o){return s=>{const r=t.get(s)??[];if(r.length===0)return[];const i=e[s]??0,a=[],l=[],f=n.get(s);for(const g of r){const x=o.get(g)??i;x>i?a.push({child:g,min:x}):l.push(g)}return a.sort((g,x)=>g.min===x.min?g.child.localeCompare(x.child):g.min-x.min),l.sort((g,x)=>{const M=f?.get(g)??0,u=f?.get(x)??0;if(M!==u)return M-u;const m=o.get(g)??i,d=o.get(x)??i;return m!==d?m-d:g.localeCompare(x)}),[...a.map(g=>g.child),...l]}}c.__name(Xs,"createChildOrderer");function nn(t,e,n){const o=As(t,{rankHint:e,laneOf:n}),{children:s,roots:r}=o;for(const x of t.nodes)s.has(x)||s.set(x,[]);const i=ks(t,e,o),a=[...r].sort(bo(e)),l=Fs(a,s,e),f=Xs(s,e,i,l);let g=Ds(a,t.nodes,e,f);return g=Hs(g),g}c.__name(nn,"buildMultitreeLayerOrder");function Ys(t,e,n){const o=new Set(t),s=new Set(e),r=Re(e),i=[];for(const a of n)o.has(a.src)&&s.has(a.dst)&&i.push(r.get(a.dst));return xo(i)}c.__name(Ys,"countCrossingsBetweenAdjacent");function zn(t,e,n){const o=[];for(const r of e){const i=n[r.src],a=n[r.dst];if(i==null||a==null||i===a)continue;let l=r.src,f=r.dst,g=i,x=a;i>a&&(l=r.dst,f=r.src,g=a,x=i);for(let M=g;M<x;M++)o.push({id:`${r.id}@${M}`,src:l,dst:f,ref:r.ref})}let s=0;for(let r=0;r+1<t.length;r++)s+=Ys(t[r],t[r+1],o);return s}c.__name(zn,"totalCrossings");function Gs(t,e){const n={...e},{preds:o}=rn(t),s=fe(t),r=nn(t,n,s);let i=zn(r,t.edges,n);const a=en.MAX_CROSSING_OPTIMIZATION_PASSES;for(let l=0;l<a;l++){let f=!1;const g=[...t.nodes].sort((x,M)=>(n[M]??0)-(n[x]??0));for(const x of g){const M=n[x]??0;if(M===0)continue;let u=0;for(const C of o.get(x)??[])u=Math.max(u,(n[C]??0)+1);if(u>=M)continue;const m=M;n[x]=u;const d=nn(t,n,s),y=zn(d,t.edges,n);y<i?(i=y,f=!0):n[x]=m}if(!f)break}return n}c.__name(Gs,"optimizeRanksByCrossings");function $s(t,e){const n=fe(t),o=[...t.nodes].sort((s,r)=>(e[s]??0)-(e[r]??0)||s.localeCompare(r));for(const s of o){const r=n(s);if(!r)continue;const i=t.edges.filter(d=>d.src===s);if(i.length===0)continue;let a=!1,l=0;for(const d of i){const y=n(d.dst);y==null||y===r?a=!0:l++}if(l===0||a)continue;let f=0,g=!1;for(const d of t.edges){if(d.dst!==s)continue;const y=n(d.src);y&&(y===r?g=!0:f++)}if(f>0||!g)continue;const x=e[s]??0,M=x+l;let u=0;for(const d of t.edges)d.dst===s&&(u=Math.max(u,(e[d.src]??0)+1));const m=Math.max(x,u,M);m!==x&&(e[s]=m)}}c.__name($s,"adjustCrossLaneSources");function zs(t,e){const n=ye(t),o=Oe(n)??[...n.nodes].sort(),s=e?.compactSingleInput??!1,r=fe(n);let i=Object.create(null);for(const l of o){const f=ho(n,l),g=e?.ignoreCrossLaneEdges?f.filter(x=>{const M=r(x.src),u=r(l);return!M||!u?!0:M===u}):f;if(g.length===0)i[l]=0;else if(s&&g.length===1){const x=g[0].src,M=r(x),u=r(l);M!==u?i[l]=i[x]??0:i[l]=(i[x]??0)+1}else{let x=-1/0;for(const M of g)x=Math.max(x,(i[M.src]??0)+1);i[l]=x===-1/0?0:x}}return(e?.optimizeRanksByCrossings??!1)&&(i=Gs(n,i)),e?.ignoreCrossLaneEdges&&$s(n,i),{layers:nn(n,i,r),rankOf:i,dummy:new Set}}c.__name(zs,"assignLayers_LongestPath");function Vs(t,e){const n=ye(t),s={...zs(n,{compactSingleInput:e?.compactSingleInput,ignoreCrossLaneEdges:e?.ignoreCrossLaneEdges,optimizeRanksByCrossings:e?.optimizeRanksByCrossings}).rankOf},r=fe(n),{preds:i,succs:a}=rn(n,m=>{if(e?.ignoreCrossLaneEdges){const d=r(m.src),y=r(m.dst);if(d&&y&&d!==y)return!1}return!0}),l=Oe(n)??[...n.nodes],f=[...l].reverse(),g=c.__name((m,d)=>{let y=0;for(const L of i.get(m)??[])y=Math.max(y,(s[L]??0)+1);let C=Number.POSITIVE_INFINITY;const b=a.get(m)??[];return b.length>0&&(C=Math.min(...b.map(L=>(s[L]??0)-1))),Number.isFinite(C)||(C=Math.max(y,d)),Math.min(Math.max(d,y),C)},"clampFeasible"),x=en.GRAVITY_ITERATIONS,M=c.__name(m=>{let d=!1;for(const y of m){const C=i.get(y)??[],b=a.get(y)??[];if(C.length===0&&b.length===0)continue;const L=C.length>0?C.reduce((w,A)=>w+(s[A]??0)+1,0)/C.length:s[y]??0,T=b.length>0?b.reduce((w,A)=>w+(s[A]??0)-1,0)/b.length:s[y]??0,p=Math.round((L+T)/2),I=g(y,p);I!==s[y]&&(s[y]=I,d=!0)}return d},"relaxOrder");for(let m=0;m<x;m++){const d=M(l),y=M(f);if(!d&&!y)break}for(const m of l){let d=0;for(const y of i.get(m)??[])d=Math.max(d,(s[y]??0)+1);(s[m]??0)<d&&(s[m]=d)}for(const m of f){const d=a.get(m)??[];if(d.length>0){const y=Math.min(...d.map(C=>(s[C]??0)-1));(s[m]??0)>y&&(s[m]=y)}}return{layers:yo(n,l,s),rankOf:s,dummy:new Set}}c.__name(Vs,"assignLayers_Gravity");function js(t){const e=mo(t),n=go(t);let o=po(e);const s=[];for(;o.length>0;){const r=[];for(const i of o){s.push(i);for(const a of n.get(i)??[])e.set(a,(e.get(a)??0)-1),(e.get(a)??0)===0&&r.push(a)}o=r.sort((i,a)=>i.localeCompare(a))}return s.length===t.nodes.length?s:null}c.__name(js,"topoSortByGenerationIfAcyclic");function Us(t,e){const n=ye(t),o=e?.direction==="LR"?js(n)??[...n.nodes].sort():Oe(n)??[...n.nodes].sort(),s=fe(n),r=c.__name(g=>s(g)??g,"laneOf"),i=Object.create(null),a=new Map,l=c.__name((g,x)=>e?.ignoreCrossLaneEdges??!0?r(g)===r(x)?1:0:1,"edgeWeight");for(const g of o){if(n.nodeById.get(g)?.isGroup)continue;const M=ho(n,g);let u=0;if(M.length>0)for(const C of M){const b=C.src,L=i[b]??0;u=Math.max(u,L+l(b,g))}const m=r(g),d=a.get(m)??0,y=Math.max(u,d);i[g]=y,a.set(m,y+1)}return{layers:yo(n,o,i,{skipGroups:!0}),rankOf:i,dummy:new Set}}c.__name(Us,"assignLayers_LaneAwareCompact");function Ws(t,e){const n=ye(e),{rankOf:o}=t,s=t.layers.map(u=>[...u]),r=new Set(t.dummy?[...t.dummy]:[]);let i=0;const a=new Map(n.nodeById),l=c.__name(u=>{const m=`placeholder-${i++}`,d={id:m,isGroup:!1,isDummy:!0,width:0,height:0};for(a.set(m,d),r.add(m);s.length<=u;)s.push([]);return s[u].push(m),o[m]=u,m},"addDummyAt"),f=[...n.edges].sort((u,m)=>u.id===m.id?u.src===m.src?u.dst.localeCompare(m.dst):u.src.localeCompare(m.src):u.id.localeCompare(m.id)),g=[];for(const u of f){const m=o[u.src]??0,d=o[u.dst]??0;if(d-m<=1){g.push(u);continue}let y=u.src;for(let b=m+1,L=0;b<d;b++,L++){const T=l(b);g.push({id:`${u.id}#${L}`,src:y,dst:T,weight:u.weight,ref:u.ref}),y=T}const C=d-m-2;g.push({id:`${u.id}#${Math.max(C+1,0)}`,src:y,dst:u.dst,weight:u.weight,ref:u.ref})}const M={nodes:[...n.nodes,...[...r].filter(u=>!n.nodes.includes(u))],edges:g,layout:n.layout,nodeById:a};return{layering:{layers:s,rankOf:o,dummy:r},graphWithDummies:M}}c.__name(Ws,"makeProperLayering");function Vn(t){const e=t.length;if(e===0)return Number.POSITIVE_INFINITY;const n=[...t].sort((o,s)=>o-s);return e%2===1?n[(e-1)/2]:.5*(n[e/2-1]+n[e/2])}c.__name(Vn,"median");function jn(t){return t.length===0?Number.POSITIVE_INFINITY:t.reduce((n,o)=>n+o,0)/t.length}c.__name(jn,"barycenter");function Ks(t,e,n,o){const s=new Map;for(const r of t)s.set(r,[]);for(const r of n)o==="down"?e.has(r.src)&&s.has(r.dst)&&s.get(r.dst).push(e.get(r.src)):e.has(r.dst)&&s.has(r.src)&&s.get(r.src).push(e.get(r.dst));return s}c.__name(Ks,"neighborPositionsFor");function qs(t,e,n){const o=n.get(t)??0,s=n.get(e)??0;return o!==s?o-s:t.localeCompare(e)}c.__name(qs,"currentOrderTieBreak");function Un(t,e,n){const o=new Set(t),s=new Set(e),r=Re(t),i=Re(e),a=[];for(const f of n)o.has(f.src)&&s.has(f.dst)&&a.push({u:r.get(f.src),v:i.get(f.dst)});a.sort((f,g)=>f.u===g.u?f.v-g.v:f.u-g.u);const l=a.map(f=>f.v);return xo(l)}c.__name(Un,"countCrossingsBetweenAdjacent");function je(t,e,n){return[...t].sort((o,s)=>{const r=Vn(e.get(o)??[]),i=Vn(e.get(s)??[]);return r===i?qs(o,s,n):isFinite(r)?isFinite(i)?r-i:-1:1})}c.__name(je,"sortByHeuristic");function Wn(t,e,n,o,s,r){const i=Re(t),a=Re(e),l=Ks(e,i,n,o);if(!s||!r||r.length===0)return je(e,l,a);const f=new Map;for(const M of e){const u=s(M),m=f.get(u)??[];m.push(M),f.set(u,m)}const g=[];for(const M of r){const u=f.get(M);if(!u||u.length===0)continue;const m=je(u,l,a);g.push(...m)}const x=f.get(null);if(x&&x.length>0){const M=je(x,l,a);for(const u of M){const m=jn(l.get(u)??[]);let d=g.length;if(isFinite(m))for(const[y,C]of g.entries()){const b=jn(l.get(C)??[]);if(m<b){d=y;break}}g.splice(d,0,u)}}return g}c.__name(Wn,"reorderLayer");function Kn(t,e,n,o,s){const r=[...e],i=new Set(t),a=new Set(e),l=o?new Set(o):null,f=n.filter(d=>i.has(d.src)&&a.has(d.dst)),g=l?n.filter(d=>a.has(d.src)&&l.has(d.dst)):void 0,x=c.__name(d=>{let y=Un(t,d,f);return g&&o&&(y+=Un(d,o,g)),y},"crossingScore"),M=s?new Map:null;if(s&&M)for(const d of e)M.set(d,s(d));let u=!0,m=x(r);for(;u;){u=!1;for(let d=0;d+1<r.length;d++){if(M){const b=M.get(r[d]),L=M.get(r[d+1]);if(b!==L)continue}const y=m;[r[d],r[d+1]]=[r[d+1],r[d]];const C=x(r);C<y?(m=C,u=!0):[r[d],r[d+1]]=[r[d+1],r[d]]}}return r}c.__name(Kn,"transposeImprove");function Js(t,e,n){const o=t.layers.map(a=>[...a]),s=e.edges,r=fe(e),i=_o(e,n?.laneOrder);for(let a=0;a<3;a++){for(let l=1;l<o.length;l++)o[l]=Wn(o[l-1],o[l],s,"down",r,i),o[l]=Kn(o[l-1],o[l],s,o[l+1],r);for(let l=o.length-2;l>=0;l--)o[l]=Wn(o[l+1],o[l],s,"up",r,i),o[l]=Kn(o[l+1],o[l],s,o[l-1],r)}return{layers:o}}c.__name(Js,"orderLayers");function Zs(t,e,n){const o=n?.layerGap??Ro.DEFAULT_LAYER_GAP,s=n?.nodeGap??Ro.DEFAULT_NODE_GAP,r=n?.laneGap??s*2,i=n?.direction??"TB",a=i==="LR"||i==="RL",l=t.layers,f=Object.create(null),g=Object.create(null),x=c.__name(N=>e.nodeById.get(N),"getNode"),M=c.__name(N=>x(N)?.width??0,"getWidth"),u=c.__name(N=>x(N)?.height??0,"getHeight"),m=fe(e),d=_o(e,n?.laneOrder),y=l.map(N=>N.reduce((k,H)=>Math.max(k,u(H)),0)),C=[];if(a)for(let N=0;N+1<l.length;N++){const k=l[N].reduce((pt,Bt)=>Math.max(pt,M(Bt)),0),H=l[N+1].reduce((pt,Bt)=>Math.max(pt,M(Bt)),0),O=y[N],G=y[N+1],j=O/2+G/2,J=(k+H)/2,dt=Math.max(0,J-j-o);C.push(dt)}const b=new Set;for(const N of l)for(const k of N)b.add(m(k));const L=b.has(null),T=d.filter(N=>b.has(N)),p=[...L?[null]:[],...T],I=Object.create(null);for(const N of T)I[N]=0;L&&(I.null=0);for(const N of l){const k=Object.create(null),H=[];for(const O of N){const G=m(O);G===null?H.push(O):(k[G]||=[]).push(O)}for(const[O,G]of Object.entries(k)){const j=G.reduce((J,dt)=>J+M(dt),0)+s*Math.max(0,G.length-1);I[O]=Math.max(I[O]??0,j)}if(L&&H.length){const O=H.reduce((G,j)=>G+M(j),0)+s*Math.max(0,H.length-1);I.null=Math.max(I.null??0,O)}}const w=new Map;{const N=p.map(O=>(O===null?I.null:I[O])??0);let H=-(N.reduce((O,G)=>O+G,0)+r*Math.max(0,p.length-1))/2;for(let O=0;O<p.length;O++){const G=p[O],j=N[O]??0,J=H+j/2;w.set(G,J),H+=j,O<p.length-1&&(H+=r)}}let A=0;for(const[N,k]of l.entries()){const H=y[N]??0,O=new Map;for(const j of k){const J=m(j),dt=O.get(J)??[];dt.push(j),O.set(J,dt)}for(const j of p){const J=O.get(j)??[];if(J.length===0)continue;const dt=w.get(j);if(J.length===1){const pt=J[0];f[pt]=dt,g[pt]=A+H/2}else{const pt=J.map(Q=>M(Q)),Bt=pt.reduce((Q,W)=>Q+W,0)+s*(J.length-1);let Ot=dt-Bt/2;for(const[Q,W]of J.entries()){const et=pt[Q];f[W]=Ot+et/2,g[W]=A+H/2,Ot+=et+s}}}const G=C[N]??0;A+=H+o+G}const B=new Map;for(const N of e.edges){const k=N.ref.id;B.has(k)||B.set(k,[]),B.get(k).push(N)}for(const[,N]of B){if(N.length===0)continue;const k=N[0].ref,H=k.start,O=k.end;if(H==null||O==null)continue;const G=Math.round(((f[H]??0)+(f[O]??0))/2),j=new Set;for(const J of N)j.add(J.src),j.add(J.dst);for(const J of j){if(J===H||J===O)continue;e.nodeById.get(J)?.isDummy&&(f[J]=G)}}return{x:f,y:g}}c.__name(Zs,"assignCoordinates");var Qs=8;function tr(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}c.__name(tr,"hashString");function er(t){let e=t>>>0;return()=>{e+=1831565813;let n=e;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}c.__name(er,"mulberry32");function nr(t,e){const n=[...t],o=er(e);for(let s=n.length-1;s>0;s--){const r=Math.floor(o()*(s+1));[n[s],n[r]]=[n[r],n[s]]}return n}c.__name(nr,"deterministicShuffle");function or(t,e){let n=0;for(const[o,s]of t.entries())n+=Math.abs(o-(e.get(s)??o));return n}c.__name(or,"sourceDistance");function qn(t,e){const n=new Map;for(const[s,r]of t.entries())n.set(r,s);let o=0;for(const{a:s,b:r,weight:i}of e){const a=n.get(s),l=n.get(r);a==null||l==null||(o+=i*Math.abs(a-l))}return o}c.__name(qn,"laneArrangementCost");function sr(t){const e=cn(t);if(e.length<2)return[];const n=new Map(e.map((r,i)=>[r,i])),o=fe(t),s=new Map;for(const r of t.layout.edges??[]){if(r.isLayoutOnly)continue;const i=typeof r.start=="string"?r.start:void 0,a=typeof r.end=="string"?r.end:void 0;if(!i||!a||!t.nodeById.has(i)||!t.nodeById.has(a))continue;const l=o(i),f=o(a);if(!l||!f||l===f)continue;const g=n.get(l),x=n.get(f);if(g==null||x==null)continue;const[M,u]=g<=x?[l,f]:[f,l],m=`${M}\0${u}`,d=s.get(m);d?d.weight++:s.set(m,{a:M,b:u,weight:1})}return[...s.values()]}c.__name(sr,"buildWeightedLaneEdges");function Jn(t,e,n){const o=[...t];let s=qn(o,e),r=!0,i=0;const a=Math.max(1,o.length);for(;r&&i<a;){r=!1,i++;for(let l=0;l+1<o.length;l++){[o[l],o[l+1]]=[o[l+1],o[l]];const f=qn(o,e);f<s?(s=f,r=!0):[o[l],o[l+1]]=[o[l+1],o[l]]}}return{order:o,cost:s,sourceDistance:or(o,n)}}c.__name(Jn,"greedySwitch");function rr(t,e){return t.cost!==e.cost?t.cost<e.cost:t.sourceDistance<e.sourceDistance}c.__name(rr,"isBetterCandidate");function ir(t,e,n){const o=[...e].sort((s,r)=>s.a===r.a?s.b.localeCompare(r.b):s.a.localeCompare(r.a)).map(({a:s,b:r,weight:i})=>`${s}:${r}:${i}`).join("|");return tr(`${t.join("|")}#${o}#${n}`)}c.__name(ir,"seedForRestart");function cr(t,e={}){const n=cn(t);if(n.length<2)return n;const o=sr(t);if(o.length===0)return n;const s=new Map(n.map((a,l)=>[a,l]));let r=Jn(n,o,s);const i=Math.max(0,e.restarts??Qs);for(let a=0;a<i;a++){const l=ir(n,o,a),f=nr(n,l),g=Jn(f,o,s);rr(g,r)&&(r=g)}return r.order}c.__name(cr,"optimizeTopLaneOrder");function ar(t,e){const n=e?.ignoreCrossLaneEdges??!0,o=e?.optimizeRanksByCrossings??!0,s=ye(t),r=e?.automaticLaneOrdering?cr(s,{restarts:Qs}):void 0,i=Es(s),a=i.acyclic,l=n?Us(a,{compactSingleInput:e?.compactSingleInput??en.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:e?.direction}):Vs(a,{compactSingleInput:e?.compactSingleInput??en.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:o}),{layering:f,graphWithDummies:g}=Ws(l,a),x=Js(f,g,{laneOrder:r}),M=Zs(x,g,{layerGap:e?.layerGap,nodeGap:e?.nodeGap,direction:e?.direction,laneOrder:r});return{acyclic:a,reversed:i.reversed,layering:f,ordered:x,coordinates:M}}c.__name(ar,"sugiyamaLayout");var ct=Pr.EPSILON,Br=8,_e=15,Te=15,ze=25,ne=20,bn=10;function Zn(t,e,n){const o=t.x??0,s=t.y??0,r=e.x-o,i=e.y-s,a=Math.abs(r),l=Math.abs(i);return a<ct&&l<ct?n:l>ct&&l*3>=a?i>0?"bottom":"top":a>ct?r>0?"right":"left":n}c.__name(Zn,"chooseOrthogonalSide");function Qn(t,e){return Math.abs(t.to-e.from)<ct||Math.abs(t.to-e.to)<ct?t.to:t.from}c.__name(Qn,"sharedLineEndpointCoord");function be(t,e){return t.orient==="vertical"?{x:t.coord,y:e}:{x:e,y:t.coord}}c.__name(be,"pointOnLine");function lr(t,e){const n=t.nodes??[],o=t.edges??[],s=[];for(const h of o)h.isLayoutOnly||s.push({...h,__originalEdge:h});const r=new Map,i=new Map,a=[],l=e==="LR";for(const h of n)r.set(h.id,h);const f=n.filter(h=>h.isGroup&&!h.parentId);for(const h of f){const _={id:h.id},S=c.__name(v=>{i.set(v.id,_),n.filter(E=>E.parentId===v.id).forEach(S)},"assignLane");S(h)}const g=n.filter(h=>!h.isGroup&&!h.isEdgeLabel).map(h=>{const _=h.width??10,S=h.height??10,v=h.x??0,E=h.y??0,P=Br;return{nodeId:h.id,minX:v-_/2-P,maxX:v+_/2+P,minY:E-S/2-P,maxY:E+S/2+P,visualXHalfExtent:l?S/2+P:_/2+P}}),x=c.__name((h,_,S,v)=>{let E=a.find(P=>P.orientation===h&&Math.abs(P.coord-_)<1);return E||(E={id:`pipe-${h}-${_.toFixed(0)}`,orientation:h,coord:_,spanMin:S,spanMax:v,tracks:[]},a.push(E)),E.spanMin=Math.min(E.spanMin,S),E.spanMax=Math.max(E.spanMax,v),E},"getOrAddPipe"),M=c.__name((h,_)=>{const S=h.width??10,v=h.height??10,E=h.x??0,P=h.y??0;switch(_){case"top":return{x:E,y:P-v/2};case"bottom":return{x:E,y:P+v/2};case"left":return{x:E-S/2,y:P};case"right":return{x:E+S/2,y:P}}},"portForSide"),u=c.__name((h,_,S)=>M(h,Zn(h,_,S?"bottom":"top")),"getOrthogonalPort"),m=[],d=[],y=new Set,C=1e3,b=c.__name((h,_,S)=>{if(m.length===0)return 0;const v=Math.abs(_.y-S.y)<ct,E=Math.abs(_.x-S.x)<ct;if(!v&&!E)return 0;let P=0;if(v){const U=_.y,q=Math.min(_.x,S.x)-ct,z=Math.max(_.x,S.x)+ct;if(z<=q)return 0;for(const Y of m)Y.edgeIndex===h||Y.orientation!=="vertical"||Y.pipe.coord<q||Y.pipe.coord>z||Y.from-ct<=U&&Y.to+ct>=U&&(P+=C)}else if(E){const U=_.x,q=Math.min(_.y,S.y)-ct,z=Math.max(_.y,S.y)+ct;if(z<=q)return 0;for(const Y of m)Y.edgeIndex===h||Y.orientation!=="horizontal"||Y.pipe.coord<q||Y.pipe.coord>z||Y.from-ct<=U&&Y.to+ct>=U&&(P+=C)}return P},"crossingPenalty"),L=s.map((h,_)=>{if(!h.start||!h.end)return{idx:_,crossLane:0,dx:0,dy:0};const S=r.get(h.start),v=r.get(h.end),E=i.get(h.start),P=i.get(h.end),U=E&&P&&E.id!==P.id?1:0,q=S&&v?Math.abs((v.x??0)-(S.x??0)):0,z=S&&v?Math.abs((v.y??0)-(S.y??0)):0;return{idx:_,crossLane:U,dx:q,dy:z}}).sort((h,_)=>{if(h.crossLane!==_.crossLane)return _.crossLane-h.crossLane;const S=h.dx+h.dy,v=_.dx+_.dy;return Math.abs(S-v)>1?S-v:h.idx-_.idx}).map(h=>h.idx),T=c.__name((h,_,S,v)=>{const E=Math.min(h.x,_.x),P=Math.max(h.x,_.x),U=Math.min(h.y,_.y),q=Math.max(h.y,_.y);return!!g.find(Y=>S&&Y.nodeId===S||v&&Y.nodeId===v?!1:Math.abs(h.x-_.x)>ct?Y.minY<h.y&&Y.maxY>h.y&&Y.maxX>E&&Y.minX<P:Y.minX<h.x&&Y.maxX>h.x&&Y.maxY>U&&Y.minY<q)},"isSegmentBlocked"),p=new Map,I=new Map;for(const h of s)!h.start||!h.end||h.start===h.end||(I.set(h.start,(I.get(h.start)??0)+1),I.set(h.end,(I.get(h.end)??0)+1));const w=c.__name((h,_)=>Zn(h,_,"bottom"),"determineSide"),A=new Map;for(const[h,_]of s.entries()){if(!_.start||!_.end||_.start===_.end||_.points&&_.points.length>0)continue;const S=r.get(_.start),v=r.get(_.end);if(!S||!v)continue;const E=(v.x??0)-(S.x??0),P=(v.y??0)-(S.y??0);A.set(h,{edgeIdx:h,srcId:_.start,dstId:_.end,srcSide:w(S,{x:v.x??0,y:v.y??0}),dstSide:w(v,{x:S.x??0,y:S.y??0}),absDx:Math.abs(E),absDy:Math.abs(P),dxSign:Math.sign(E),dySign:Math.sign(P)})}const B=c.__name(h=>h.srcSide==="top"||h.srcSide==="bottom"?h.absDx===0?1/0:h.absDy/h.absDx:h.absDy===0?1/0:h.absDx/h.absDy,"preferenceStrength"),N=c.__name(h=>h.srcSide==="top"||h.srcSide==="bottom"?h.dxSign>=0?"right":"left":h.dySign>=0?"bottom":"top","secondarySide"),k=new Map;for(const h of A.values()){const _=`${h.srcId}:${h.srcSide}`;k.has(_)||k.set(_,[]),k.get(_).push(h)}const H=new Map,O=c.__name((h,_)=>`${h}:${_}`,"loadKey");for(const h of A.values())H.set(O(h.srcId,h.srcSide),(H.get(O(h.srcId,h.srcSide))??0)+1),H.set(O(h.dstId,h.dstSide),(H.get(O(h.dstId,h.dstSide))??0)+1);for(const h of k.values())if(!(h.length<2)){h.sort((_,S)=>{const v=B(_),E=B(S);return Math.abs(v-E)>1e-9?E-v:_.edgeIdx-S.edgeIdx});for(let _=1;_<h.length;_++){const S=h[_],v=N(S),E=H.get(O(S.srcId,S.srcSide))??0,P=H.get(O(S.srcId,v))??0;P>=E||(H.set(O(S.srcId,S.srcSide),E-1),H.set(O(S.srcId,v),P+1),S.srcSide=v)}}const G=c.__name(h=>{const _=h?.shape;return _==="question"||_==="diamond"},"isDiamondNode"),j=new Map;for(const h of A.values())j.has(h.dstId)||j.set(h.dstId,new Set),j.get(h.dstId).add(h.dstSide);for(const h of A.values()){if(!G(r.get(h.srcId)))continue;const _=j.get(h.srcId);if(!_?.has(h.srcSide))continue;const S=N(h);if(_.has(S)||(H.get(O(h.srcId,S))??0)>0)continue;const v=H.get(O(h.srcId,h.srcSide))??0;H.set(O(h.srcId,h.srcSide),Math.max(0,v-1)),H.set(O(h.srcId,S),1),h.srcSide=S}for(const h of A.values()){const{edgeIdx:_,srcId:S,dstId:v,srcSide:E,dstSide:P}=h,U=r.get(S),q=r.get(v),z=`${S}:${E}:src`,Y=E==="top"||E==="bottom"?q.x??0:q.y??0;p.has(z)||p.set(z,[]),p.get(z).push({edgeIdx:_,oppositeCoord:Y});const ot=`${v}:${P}:dst`,rt=P==="top"||P==="bottom"?U.x??0:U.y??0;p.has(ot)||p.set(ot,[]),p.get(ot).push({edgeIdx:_,oppositeCoord:rt})}const J=new Map,dt=8;for(const[h,_]of p){if(_.length<2)continue;_.sort((vt,Dt)=>vt.oppositeCoord-Dt.oppositeCoord);const S=h.split(":"),v=S.slice(0,-2).join(":"),E=S[S.length-2],P=S[S.length-1],U=r.get(v);if(!U)continue;const z=E==="left"||E==="right"?U.height??10:U.width??10,Y=U.shape,rt=Y==="question"||Y==="diamond"?z*.3:z,tt=Math.min(20,Math.max(dt,rt/(_.length+1))),At=-(tt*(_.length-1))/2;for(const[vt,Dt]of _.entries()){const Jt=At+vt*tt,dn=`${Dt.edgeIdx}:${P}`;J.set(dn,Jt)}}const pt=c.__name(h=>!!s[h]?.labelNodeId,"edgeHasLabelNode"),Bt=c.__name((h,_)=>h?(p.get(`${h}:${_}:src`)??[]).some(({edgeIdx:S})=>pt(S))||(p.get(`${h}:${_}:dst`)??[]).some(({edgeIdx:S})=>pt(S)):!1,"faceHasLabelNode"),Ot=c.__name((h,_,S)=>_==="top"||_==="bottom"?{x:h.x+S,y:h.y}:{x:h.x,y:h.y+S},"applyPortOffset"),Q=c.__name((h,_,S)=>{const v=A.get(h),E={x:S.x??0,y:S.y??0},P={x:_.x??0,y:_.y??0},U=v?.srcSide??w(_,E),q=v?.dstSide??w(S,P);let z=v?M(_,v.srcSide):u(_,E,!0),Y=v?M(S,v.dstSide):u(S,P,!1);const ot=J.get(`${h}:src`),rt=J.get(`${h}:dst`);return ot!==void 0&&(z=Ot(z,U,ot)),rt!==void 0&&(Y=Ot(Y,q,rt)),{pSrcPort:z,pDstPort:Y,srcSide:U,dstSide:q}},"portsForEdge");for(const h of L){const _=s[h];if(d[h]=[],!_.start||!_.end||_.points&&_.points.length>0||_.start===_.end)continue;const S=r.get(_.start),v=r.get(_.end);if(!S||!v)continue;const{pSrcPort:E,pDstPort:P,srcSide:U,dstSide:q}=Q(h,S,v),z={...E},Y={...P},ot=U==="top"||U==="bottom",rt=q==="top"||q==="bottom";if(ot){const X=E.y>(S.y??0);z.y=X?E.y+ne:E.y-ne}else{const X=E.x>(S.x??0);z.x=X?E.x+ne:E.x-ne}if(rt){const X=P.y>(v.y??0);Y.y=X?P.y+ne:P.y-ne}else{const X=P.x>(v.x??0);Y.x=X?P.x+ne:P.x-ne}const st=c.__name((X,$)=>{for(const K of g)if(!$.includes(K.nodeId)&&X.x>K.minX&&X.x<K.maxX&&X.y>K.minY&&X.y<K.maxY)return{inside:!0,obstacle:K};return{inside:!1}},"isPointInObstacle"),tt=c.__name((X,$,K,lt,St)=>{if(St){const Rt=X.y>($.y??0);return{x:(K.x??0)>=X.x?lt.maxX+_e:lt.minX-_e,y:Rt?lt.maxY+Te:lt.minY-Te,leavesPositiveSide:Rt}}const _t=X.x>($.x??0),Lt=(K.y??0)>=X.y;return{x:_t?lt.maxX+_e:lt.minX-_e,y:Lt?lt.maxY+Te:lt.minY-Te,leavesPositiveSide:_t}},"obstacleDetour");let yt=[];const At=[_.start,_.end],vt=st(z,At);if(vt.inside&&vt.obstacle){const X=vt.obstacle;if(ot){const $=tt(E,S,v,X,!0);z.x=$.x,z.y=$.y;const K=$.leavesPositiveSide?Math.min(X.minY-2,E.y+ne):Math.max(X.maxY+2,E.y-ne);yt=[{x:E.x,y:K},{x:$.x,y:K},{x:$.x,y:$.y}]}else{const $=tt(E,S,v,X,!1),K=$.leavesPositiveSide?Math.min(X.minX-2,E.x+ne):Math.max(X.maxX+2,E.x-ne);z.x=$.x,z.y=$.y,yt=[{x:K,y:E.y},{x:K,y:$.y},{x:$.x,y:$.y}]}}let Dt=[];const Jt=st(Y,At);if(Jt.inside&&Jt.obstacle){const X=Jt.obstacle;if(rt){const $=tt(P,v,S,X,!0);Y.x=$.x,Y.y=$.y,Dt=[{x:$.x,y:$.y},{x:P.x,y:$.y}]}else{const $=tt(P,v,S,X,!1);Y.x=$.x,Y.y=$.y,Dt=[{x:$.x,y:$.y},{x:$.x,y:P.y}]}}if(yt.length===0&&Dt.length===0){const X=_e,$=Math.abs(z.x-Y.x)<X,K=Math.abs(z.y-Y.y)<X,lt=J.get(`${h}:src`)!==void 0||J.get(`${h}:dst`)!==void 0,St=(p.get(`${_.start??""}:${U}:src`)?.length??0)+(p.get(`${_.start??""}:${U}:dst`)?.length??0),_t=(p.get(`${_.end??""}:${q}:src`)?.length??0)+(p.get(`${_.end??""}:${q}:dst`)?.length??0),Lt=St>1||_t>1,Rt=I.get(_.start??"")??0,ut=I.get(_.end??"")??0,Yt=St>1&&Bt(_.start,U)||_t>1&&Bt(_.end,q),ee=St<=1||Rt<=2,Pt=_t<=1||ut<=2;if(($||K)&&!lt&&(!Lt||Lt&&!Yt&&ee&&Pt)&&!T(E,P,_.start,_.end)){_.points=[{...E},{...z},{...Y},{...P}],y.add(h);const bt=K?"horizontal":"vertical",$t=K?E.y:E.x,Mt=K?Math.min(E.x,P.x):Math.min(E.y,P.y),It=K?Math.max(E.x,P.x):Math.max(E.y,P.y),Wt={id:`fast-path-${bt}-${$t.toFixed(0)}-${h}`,orientation:bt,coord:$t,spanMin:Mt,spanMax:It,tracks:[]};m.push({edgeIndex:h,segmentIndex:0,orientation:bt,pipe:Wt,trackIndex:0,from:Mt,to:It});continue}}const dn=x("vertical",z.x,z.y,z.y);z.x=dn.coord;const hr=x("vertical",Y.x,Y.y,Y.y);Y.x=hr.coord;let ue=Math.min(z.x,Y.x)-50,he=Math.max(z.x,Y.x)+50,Ce=Math.min(z.y,Y.y)-50,ve=Math.max(z.y,Y.y)+50;for(const X of g){const $=Math.min(z.x,Y.x),K=Math.max(z.x,Y.x),lt=Math.min(z.y,Y.y),St=Math.max(z.y,Y.y);X.minX<K&&X.maxX>$&&X.minY<St&&X.maxY>lt&&(ue=Math.min(ue,X.minX-ze),he=Math.max(he,X.maxX+ze),Ce=Math.min(Ce,X.minY-ze),ve=Math.max(ve,X.maxY+ze))}for(const X of g){if(X.maxX<ue||X.minX>he||X.maxY<Ce||X.minY>ve)continue;const $=_e;x("horizontal",X.minY-$,ue,he),x("horizontal",X.maxY+$,ue,he);const K=Te;x("vertical",X.minX-K,Ce,ve),x("vertical",X.maxX+K,Ce,ve)}x("horizontal",z.y,ue,he),x("horizontal",Y.y,ue,he);const gr=a.filter(X=>X.orientation==="horizontal"&&X.coord>=Ce&&X.coord<=ve),mr=a.filter(X=>X.orientation==="vertical"&&X.coord>=ue&&X.coord<=he),Pe=c.__name((X,$)=>`${X.toFixed(1)},${$.toFixed(1)}`,"getKey"),Be=Pe(z.x,z.y),Mo=Pe(Y.x,Y.y),ke=new Map,un=new Map,hn=new Map,Fe=new Set,xe=[];ke.set(Be,0),hn.set(Be,"n"),xe.push({key:Be,f:Math.hypot(Y.x-z.x,Y.y-z.y),pt:z}),Fe.add(Be);let Ht=[];const ge=c.__name((X,$)=>T(X,$,_.start,_.end),"checkSegmentBlocked"),gn={x:Y.x,y:z.y},pr=ge(z,gn),yr=ge(gn,Y),xr=pr||yr,mn={x:z.x,y:Y.y},_r=ge(z,mn),br=ge(mn,Y);if(xr?_r||br||(Math.abs(z.x-Y.x)<ct?Ht=[z,Y]:Ht=[z,mn,Y]):Math.abs(z.y-Y.y)<ct||Math.abs(z.x-Y.x)<ct?Ht=[z,Y]:Ht=[z,gn,Y],Ht.length===0)for(;xe.length>0;){xe.sort((ut,Yt)=>ut.f-Yt.f);const X=xe.shift();if(Fe.delete(X.key),X.key===Mo){let ut=Mo,Yt=Y;for(Ht=[Yt];un.has(ut);){const ee=un.get(ut);Ht.unshift(ee),Yt=ee,ut=Pe(ee.x,ee.y)}break}const $=X.pt.x,K=X.pt.y,lt=mr.sort((ut,Yt)=>ut.coord-Yt.coord),St=lt.findIndex(ut=>Math.abs(ut.coord-$)<1),_t=gr.sort((ut,Yt)=>ut.coord-Yt.coord),Lt=_t.findIndex(ut=>Math.abs(ut.coord-K)<1),Rt=[];St>0&&Rt.push({x:lt[St-1].coord,y:K}),St>=0&&St<lt.length-1&&Rt.push({x:lt[St+1].coord,y:K}),Lt>0&&Rt.push({x:$,y:_t[Lt-1].coord}),Lt>=0&&Lt<_t.length-1&&Rt.push({x:$,y:_t[Lt+1].coord});for(const ut of Rt){const Yt=Math.min($,ut.x),ee=Math.max($,ut.x),Pt=Math.min(K,ut.y),Gt=Math.max(K,ut.y);if(g.some(Zt=>Zt.nodeId===_.start||Zt.nodeId===_.end?!1:Yt!==ee?Zt.minY<K&&Zt.maxY>K&&Zt.maxX>Yt&&Zt.minX<ee:Zt.minX<$&&Zt.maxX>$&&Zt.maxY>Pt&&Zt.minY<Gt))continue;const bt=Pe(ut.x,ut.y),$t=Math.abs(ut.x-$)+Math.abs(ut.y-K),Mt=b(h,X.pt,ut);let It=0;const Wt=Y.x-z.x,Le=Y.y-z.y,De=ut.x-$,pn=ut.y-K;(Le>10&&pn<-5||Le<-10&&pn>5)&&(It=Math.abs(pn)*100),(Wt>10&&De<-5||Wt<-10&&De>5)&&(It+=Math.abs(De)*50);let Io=0;const So=hn.get(X.key)??"n",Co=Math.abs(De)>ct?"h":"v";So!=="n"&&So!==Co&&(Io=50);const Mr=$t+Mt+It+Io,He=(ke.get(X.key)??1/0)+Mr,vo=Math.abs(Y.x-ut.x)+Math.abs(Y.y-ut.y);if(He<(ke.get(bt)??1/0))if(un.set(bt,X.pt),ke.set(bt,He),hn.set(bt,Co),!Fe.has(bt))xe.push({key:bt,f:He+vo,pt:ut}),Fe.add(bt);else{const Zt=xe.findIndex(Ir=>Ir.key===bt);Zt!==-1&&(xe[Zt].f=He+vo)}}}if(Ht.length===0&&(Ht=[z,{x:z.x,y:Y.y},Y]),Ht.length>4){const X=Ht[0],$=Ht[Ht.length-1];let K=Math.min(X.x,$.x),lt=Math.max(X.x,$.x),St=Math.min(X.y,$.y),_t=Math.max(X.y,$.y);for(const Pt of Ht)K=Math.min(K,Pt.x),lt=Math.max(lt,Pt.x),St=Math.min(St,Pt.y),_t=Math.max(_t,Pt.y);const Lt=lt>Math.max(X.x,$.x),Rt=K<Math.min(X.x,$.x);if(l){const Pt=Te;if(Lt){const Gt=Math.max(X.x,$.x),Nt=Math.min(X.y,$.y),bt=Math.max(X.y,$.y),$t=g.filter(Mt=>Mt.minX<Gt&&Mt.maxX>Gt&&Mt.minY<bt&&Mt.maxY>Nt);if($t.length>0){let Mt=Math.max(X.x,$.x);for(const It of $t){const Wt=(It.minX+It.maxX)/2;if(It.visualXHalfExtent===void 0||isNaN(It.visualXHalfExtent))continue;const Le=Wt+It.visualXHalfExtent+Pt;Mt=Math.max(Mt,Le)}isNaN(Mt)||(lt=Mt)}}if(Rt){const Gt=g.filter(Nt=>Nt.minX<Math.min(X.x,$.x)+Pt&&Nt.minY<Math.max(X.y,$.y)&&Nt.maxY>Math.min(X.y,$.y));if(Gt.length>0){let Nt=Math.min(X.x,$.x);for(const bt of Gt){const Mt=(bt.minX+bt.maxX)/2-bt.visualXHalfExtent-Pt;Nt=Math.min(Nt,Mt)}K=Nt}}}const ut=c.__name(Pt=>{const Gt=$.y>X.y,Nt=g.filter(Mt=>{const It=Math.min(X.x,$.x)<Mt.maxX&&Math.max(X.x,$.x)>Mt.minX,Wt=Math.min(X.y,$.y)<Mt.maxY&&Math.max(X.y,$.y)>Mt.minY;return It&&Wt});let bt=Nt;if(l&&Nt.length>0){const Mt=Nt.filter(It=>It.minX<Pt&&It.maxX>Pt);Mt.length>0&&(bt=Mt)}if(bt.length===0)return $.y;const $t=_e;if(Gt){const It=Math.max(...bt.map(Wt=>Wt.maxY))+$t;if(It<$.y-ct)return It}else{const It=Math.min(...bt.map(Wt=>Wt.minY))-$t;if(It>$.y+ct)return It}return $.y},"findBestReturnY"),Yt=c.__name(Pt=>{const Gt=ut(Pt),Nt={x:Pt,y:X.y},bt={x:Pt,y:Gt},$t={x:$.x,y:Gt},Mt=ge(X,Nt),It=ge(Nt,bt),Wt=ge(bt,$t),Le=Gt!==$.y?ge($t,$):!1;return!Mt&&!It&&!Wt&&!Le?Math.abs(Gt-$.y)<ct?[X,Nt,bt,$]:[X,Nt,bt,$t,$]:null},"trySimplifyWithDetourX"),ee=Lt&&!Rt?Yt(lt):Rt&&!Lt?Yt(K):null;ee&&(Ht=ee)}const Xt=[E,...yt,...Ht,...Dt.reverse(),P];if(Xt.length>=3){const X=Xt[Xt.length-1],$=Xt[Xt.length-2],K=Xt[Xt.length-3],lt=Math.abs(K.y-$.y)<ct&&Math.abs($.y-X.y)<ct,St=Math.abs(K.x-$.x)<ct&&Math.abs($.x-X.x)<ct;if(lt){const _t=Math.sign($.x-K.x),Lt=Math.sign(X.x-K.x);_t!==0&&_t===Lt&&Math.abs($.x-K.x)>Math.abs(X.x-K.x)&&Xt.splice(-2,1)}else if(St){const _t=Math.sign($.y-K.y),Lt=Math.sign(X.y-K.y);_t!==0&&_t===Lt&&Math.abs($.y-K.y)>Math.abs(X.y-K.y)&&Xt.splice(-2,1)}}const ie=[Xt[0]];for(let X=1;X<Xt.length-1;X++){if(X===1){ie.push(Xt[X]);continue}const $=ie[ie.length-1],K=Xt[X],lt=Xt[X+1];if(Math.abs($.y-K.y)<ct&&Math.abs(K.y-lt.y)<ct){const St=K.x>$.x,_t=lt.x>K.x;if(St!==_t){ie.push(K);continue}continue}if(Math.abs($.x-K.x)<ct&&Math.abs(K.x-lt.x)<ct){const St=K.y>$.y,_t=lt.y>K.y;if(St!==_t){ie.push(K);continue}continue}ie.push(K)}ie.push(Xt[Xt.length-1]);for(let X=0;X<ie.length-1;X++){const $=ie[X],K=ie[X+1],lt=Math.abs($.x-K.x)<ct?"vertical":"horizontal",St=lt==="vertical"?$.x:$.y,_t=lt==="vertical"?Math.min($.y,K.y):Math.min($.x,K.x),Lt=lt==="vertical"?Math.max($.y,K.y):Math.max($.x,K.x),Rt=x(lt,St,_t,Lt),ut={edgeIndex:h,segmentIndex:X,orientation:lt,pipe:Rt,trackIndex:0,from:_t,to:Lt};m.push(ut),d[h].push(m.length-1),Rt.tracks[0]||(Rt.tracks[0]={index:0,coord:Rt.coord,segments:[]}),Rt.tracks[0].segments.push({edgeIndex:h,segmentIndex:X,from:_t,to:Lt})}}const W=c.__name((h,_)=>h.from<_.to&&_.from<h.to,"segmentsOverlap"),et=c.__name((h,_,S,v)=>{const E=!v.segments.some(U=>(U.edgeIndex!==_.edgeIndex||U.segmentIndex!==_.segmentIndex)&&W(U,h)),P=!S.segments.some(U=>(U.edgeIndex!==h.edgeIndex||U.segmentIndex!==h.segmentIndex)&&W(U,_));return E&&P?(h.trackIndex=v.index,_.trackIndex=S.index,S.segments=[...S.segments.filter(U=>U.edgeIndex!==h.edgeIndex||U.segmentIndex!==h.segmentIndex),{edgeIndex:_.edgeIndex,segmentIndex:_.segmentIndex,from:_.from,to:_.to}],v.segments=[...v.segments.filter(U=>U.edgeIndex!==_.edgeIndex||U.segmentIndex!==_.segmentIndex),{edgeIndex:h.edgeIndex,segmentIndex:h.segmentIndex,from:h.from,to:h.to}],!0):!1},"trySwapSegmentsAcrossTracks"),at=c.__name(h=>{const _=h.tracks.length;return h.tracks[_]={index:_,coord:h.coord,segments:[]},_},"createNewTrack"),gt=c.__name((h,_)=>{const S=h.pipe.tracks[h.trackIndex];S.segments=S.segments.filter(E=>E.edgeIndex!==h.edgeIndex||E.segmentIndex!==h.segmentIndex),h.trackIndex=_,h.pipe.tracks[_].segments.push({edgeIndex:h.edgeIndex,segmentIndex:h.segmentIndex,from:h.from,to:h.to})},"moveSegmentToTrack"),xt=c.__name((h,_)=>{const S=d[h.edgeIndex];for(const v of S){const E=m[v];E.pipe===h.pipe&&gt(E,_)}},"moveSegmentChainToTrack"),Ct=c.__name(h=>{const _=d[h.edgeIndex],S=_.indexOf(m.indexOf(h)),v=[];return S>0&&v.push(m[_[S-1]]),S<_.length-1&&v.push(m[_[S+1]]),v},"getAdjacentSegmentsAlongEdge"),Vt=c.__name((h,_)=>{if(h.orientation===_.orientation)return!1;const S=h.orientation==="horizontal"?h:_,v=h.orientation==="horizontal"?_:h;return v.pipe.coord>S.from&&v.pipe.coord<S.to&&S.pipe.coord>v.from&&S.pipe.coord<v.to},"haveAnyCrossing"),jt=c.__name((h,_)=>{for(const S of h.tracks)if(!S.segments.some(E=>(E.edgeIndex!==_.edgeIndex||E.segmentIndex!==_.segmentIndex)&&W(E,_)))return S.index;return-1},"findAvailableTrack"),Ut=c.__name((h,_)=>{if(h.trackIndex===_.trackIndex)return W(h,_);const S=Ct(h),v=Ct(_);return S.some(E=>v.some(P=>Vt(E,P)))},"segmentsConflict"),te=c.__name((h,_,S)=>{if(et(h,_,h.pipe.tracks[h.trackIndex],_.pipe.tracks[_.trackIndex]))return;const v=jt(h.pipe,_);S(_,v!==-1?v:at(h.pipe))},"resolveTrackConflict"),Ie=c.__name(h=>{let _=0;for(let S=0;S<h.length;S++)for(let v=S+1;v<h.length;v++){const E=h[S],P=h[v];E.pipe===P.pipe&&Ut(E,P)&&(_++,te(E,P,xt))}return _},"resolveHandleConflicts"),de=new Map,Se=c.__name(h=>{if(de.has(h))return de.get(h);const _=d[h];if(_.length===0){const q={dest:0,deviation:0,base:0,delta:0};return de.set(h,q),q}const v=m[_[0]].pipe.coord;let E=v;for(let q=1;q<_.length;q++){const z=m[_[q]];if(z.orientation==="horizontal"){const Y=z.from,ot=z.to;E=Math.abs(Y-v)>Math.abs(ot-v)?Y:ot;break}}const P=Math.abs(E-v),U={dest:E,deviation:P,base:v,delta:E-v};return de.set(h,U),U},"getDestInfo"),an=c.__name(()=>{let h=0;const _=new Map;for(const[v,E]of s.entries())d[v].length!==0&&E.start&&(_.has(E.start)||_.set(E.start,[]),_.get(E.start).push(v));const S=c.__name(v=>{const E=s[v];if(!E.start||!E.end)return 0;const P=r.get(E.start),U=r.get(E.end);if(!P||!U)return 0;const q=(U.x??0)-(P.x??0),z=(U.y??0)-(P.y??0);return Math.abs(q)+Math.abs(z)},"getEdgeDistance");for(const v of _.values()){v.sort((P,U)=>{const q=Se(P),z=Se(U);if(Math.abs(q.deviation-z.deviation)>1)return q.deviation-z.deviation;if(Math.abs(q.dest-z.dest)>1)return q.dest-z.dest;const Y=S(P),ot=S(U);if(Math.abs(Y-ot)>1)return ot-Y;const rt=d[P].length,st=d[U].length;if(rt!==st)return rt-st;if(rt===1){const tt=d[P][0],yt=d[U][0];if(m[tt]&&m[yt]){const At=m[tt],vt=m[yt],Dt=Math.abs(At.to-At.from),Jt=Math.abs(vt.to-vt.from);if(Math.abs(Dt-Jt)>1)return Dt-Jt}}return 0});const E=v.map(P=>m[d[P][0]]);h+=Ie(E)}return h},"fixSourceHandleCrossings"),ln=c.__name(()=>{let h=0;const _=new Map;for(const[S,v]of s.entries())d[S].length!==0&&v.end&&(_.has(v.end)||_.set(v.end,[]),_.get(v.end).push(S));for(const S of _.values()){S.sort((E,P)=>{const U=c.__name(Y=>{const ot=d[Y];if(ot.length<2)return 0;const rt=m[ot[ot.length-2]];return Math.abs(rt.to-rt.from)},"getDist"),q=U(E),z=U(P);return Math.abs(q-z)>.1?q-z:E-P});const v=S.map(E=>m[d[E][d[E].length-1]]);h+=Ie(v)}return h},"fixTargetHandleCrossings"),fn=c.__name(()=>{let h=0;for(const _ of a){const S=[];for(const v of _.tracks)for(const E of v.segments){const P=d[E.edgeIndex].find(U=>m[U].segmentIndex===E.segmentIndex);P!==void 0&&S.push(m[P])}S.sort((v,E)=>v.edgeIndex-E.edgeIndex||v.segmentIndex-E.segmentIndex);for(let v=0;v<S.length;v++)for(let E=v+1;E<S.length;E++){const P=S[v],U=S[E];Ut(P,U)&&(h++,te(P,U,gt))}}return h},"fixPipeCrossings");let R=0;const F=10;for(;R<F;){let h=0;if(h+=an(),h+=ln(),h+=fn(),h===0)break;R++}const D=new Map;for(const h of a){const _=[];h.tracks.forEach(v=>{v.segments.forEach(E=>{_.push({edgeIndex:E.edgeIndex,segmentIndex:E.segmentIndex,trackIndex:v.index,from:E.from,to:E.to})})}),_.sort((v,E)=>v.from-E.from);const S=[];if(_.length>0){let v=[_[0]],E=_[0].to;for(let P=1;P<_.length;P++){const U=_[P];U.from<E?(v.push(U),E=Math.max(E,U.to)):(S.push(v),v=[U],E=U.to)}S.push(v)}for(const v of S){const E=new Set;v.forEach(tt=>E.add(tt.trackIndex));const P=new Map;v.forEach(tt=>{const yt=Se(tt.edgeIndex);P.set(tt.trackIndex,(P.get(tt.trackIndex)??0)+yt.delta)});const U=[...E].filter(tt=>(P.get(tt)??0)<-1),q=[...E].filter(tt=>(P.get(tt)??0)>1),z=[...E].filter(tt=>Math.abs(P.get(tt)??0)<=1);U.sort((tt,yt)=>(P.get(yt)??0)-(P.get(tt)??0)),q.sort((tt,yt)=>(P.get(tt)??0)-(P.get(yt)??0));const Y=c.__name((tt,yt)=>{v.filter(At=>At.trackIndex===tt).forEach(At=>{const vt=y.has(At.edgeIndex)?h.coord:yt;D.set(`${At.edgeIndex}-${At.segmentIndex}`,vt)})},"assignCoord");let ot=0;for(const tt of U)ot++,Y(tt,h.coord-ot*bn);if(z.length===0&&E.size>0){const tt=[...E].sort((vt,Dt)=>Math.abs(P.get(vt)??0)-Math.abs(P.get(Dt)??0))[0],yt=U.indexOf(tt);yt!==-1&&U.splice(yt,1);const At=q.indexOf(tt);At!==-1&&q.splice(At,1),z.push(tt)}let rt=0;for(const tt of z){if(rt===0)Y(tt,h.coord);else{const yt=rt%2===1?1:-1,At=Math.ceil(rt/2);Y(tt,h.coord+yt*At*bn*.5)}rt++}let st=0;for(const tt of q)st++,Y(tt,h.coord+st*bn)}}for(const[h,_]of s.entries()){const S=d[h]??[];if(S.length===0)continue;const v=[],E=r.get(_.start),P=r.get(_.end),{pSrcPort:U,pDstPort:q}=Q(h,E,P),z=S.map(rt=>{const st=m[rt],tt=D.get(`${st.edgeIndex}-${st.segmentIndex}`)??st.pipe.coord;return{orient:st.orientation,coord:tt,from:st.from,to:st.to}});v.push(U);for(let rt=0;rt<z.length;rt++){const st=z[rt],tt=v[v.length-1],yt=st.orient==="vertical"?tt.y:tt.x,At=st.orient==="vertical"?tt.x:tt.y,vt=z[rt+1],Dt=rt<z.length-1;if(Math.abs(At-st.coord)>ct&&v.push(be(st,yt)),Dt&&vt.orient===st.orient)if(Math.abs(st.coord-vt.coord)>ct){const Jt=st.orient==="vertical"?(yt+vt.from)/2:Qn(st,vt);v.push(be(st,Jt),be(vt,Jt))}else(rt===0||rt===z.length-2)&&v.push(be(st,Qn(st,vt)));else if(Dt)v.push(be(st,vt.coord));else{const Jt=Math.abs(st.from-yt)<Math.abs(st.to-yt)?st.to:st.from;v.push(be(st,Jt))}}const Y=v[v.length-1];(Math.abs(Y.x-q.x)>ct||Math.abs(Y.y-q.y)>ct)&&v.push(q);const ot=[];v.length>0&&ot.push(v[0]);for(let rt=1;rt<v.length;rt++){const st=v[rt],tt=ot[ot.length-1];(Math.abs(st.x-tt.x)>ct||Math.abs(st.y-tt.y)>ct)&&ot.push(st)}_.points=ot}for(const h of s){const _=h.__originalEdge;_&&h.points&&(_.points=h.points)}t.edges=(t.edges??[]).filter(h=>!h.isLayoutOnly);const V=c.__name((h,_)=>{const S=_.x??0,v=_.y??0,E=_.width??0,P=_.height??0;if(E<=0||P<=0)return h;const U=S-E/2,q=S+E/2,z=v-P/2,Y=v+P/2;if(h.x<U||h.x>q||h.y<z||h.y>Y)return h;const ot=h.x-U,rt=q-h.x,st=h.y-z,tt=Y-h.y,yt=Math.min(ot,rt,st,tt);return yt===ot?{x:U,y:h.y}:yt===rt?{x:q,y:h.y}:yt===st?{x:h.x,y:z}:{x:h.x,y:Y}},"nodeBoundaryClamp");for(const h of t.edges){const _=h.points;if(!_||_.length<2)continue;const S=h.start,v=h.end,E=S?r.get(S):void 0,P=v?r.get(v):void 0;E&&(_[0]=V(_[0],E)),P&&(_[_.length-1]=V(_[_.length-1],P))}return t}c.__name(lr,"routeEdgesOrthogonal");function fr(t){return t.direction??"TB"}c.__name(fr,"getSwimlaneDirection");function dr(t){const e=Uo(t),n=t.config.flowchart?.nodeSpacing??40,o=t.config.flowchart?.rankSpacing??100,s=t.config.swimlane?.ignoreCrossLaneEdges??!0,r=t.config.swimlane?.optimizeRanksByCrossings??!0,i=t.config.swimlane?.automaticLaneOrdering??!1,a=fr(t),{ordered:l,coordinates:f}=ar(e,{nodeGap:n,layerGap:o,ignoreCrossLaneEdges:s,optimizeRanksByCrossings:r,automaticLaneOrdering:i,direction:a});Wo(e,l,f,{nodeGap:n,layerGap:o});for(const g of t.edges??[])delete g.points;lr(t,a);for(const g of t.edges??[])(!g.curve||g.curve==="basis")&&(g.curve="rounded");return Ls(t,a),vs(t),a}c.__name(dr,"runSwimlaneLayoutCore");async function ur(t,e){const n=e.select("g");c.markers_default(n,t.markers,t.type,t.diagramId),c.clear2(),c.clear$1(),c.clear$2(),Sr.clear(),jo(t);const o=Ko(t);t.nodes=o.nodes,t.edges=o.edges;const{groups:s}=await No(n,t);dr(t),await $o(t,s)}c.__name(ur,"render");exports.render=ur;
2
+ //# sourceMappingURL=swimlanes-5IMT3BWC-ByyaHYdJ.cjs.map