agentic-mermaid 0.5.3 → 0.5.4

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 (135) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/agent-core.d.ts +7 -7
  3. package/dist/agent-core.js +1 -1
  4. package/dist/agent.d.ts +7 -7
  5. package/dist/agent.js +1 -1
  6. package/dist/agentic-mermaid-mcp.js +1 -1
  7. package/dist/am.js +1 -1
  8. package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
  9. package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
  10. package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
  11. package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
  12. package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
  13. package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
  14. package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
  15. package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
  16. package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
  17. package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
  18. package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
  19. package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
  20. package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
  21. package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
  24. package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
  25. package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
  27. package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
  28. package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
  29. package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
  30. package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
  31. package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
  32. package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
  33. package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
  34. package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
  35. package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
  36. package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
  37. package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
  39. package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
  40. package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
  41. package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
  42. package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
  44. package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
  45. package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
  46. package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
  47. package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
  48. package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
  49. package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
  50. package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
  51. package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
  52. package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
  53. package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
  54. package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
  55. package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
  56. package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
  57. package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
  58. package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
  59. package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
  60. package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
  61. package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
  62. package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
  63. package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
  64. package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
  65. package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
  66. package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
  67. package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
  69. package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
  70. package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
  71. package/dist/browser-lazy/index.js +1 -1
  72. package/dist/browser.global.js +507 -507
  73. package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
  74. package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
  75. package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
  76. package/dist/chunk-DOFB572I.js +58 -0
  77. package/dist/chunk-EHJI3QYE.js +52 -0
  78. package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
  79. package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
  80. package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
  81. package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
  82. package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
  83. package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js +1 -1
  86. package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
  87. package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
  88. package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
  89. package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
  90. package/dist/svg-styles.d.ts +1 -1
  91. package/dist/svg-styles.js +1 -1
  92. package/dist/svg.d.ts +4 -4
  93. package/dist/svg.js +1 -1
  94. package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
  95. package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
  96. package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
  97. package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
  98. package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
  99. package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
  100. package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
  101. package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
  102. package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
  103. package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
  104. package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
  105. package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
  106. package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
  107. package/dist/zenuml.d.ts +2 -2
  108. package/dist/zenuml.js +1 -1
  109. package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
  110. package/docs/api.md +1 -1
  111. package/package.json +1 -1
  112. package/server.json +2 -2
  113. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
  114. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
  115. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
  116. package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
  117. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
  118. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
  119. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
  120. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
  121. package/dist/chunk-EHCMJUMD.js +0 -52
  122. package/dist/chunk-OMY6NRQD.js +0 -58
  123. package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
  124. package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
  125. package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
  126. /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
  127. /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
  128. /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
  129. /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
  130. /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
  131. /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
  132. /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
  133. /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
  134. /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
  135. /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
@@ -0,0 +1 @@
1
+ import{a as e,c as t}from"./chunk-MFTQWHUB.js";import{a as i,b as r,c as n,e as o,f as a}from"./chunk-O34YYEQV.js";import{$ as s,A as l,B as d,C as h,D as g,E as u,F as f,G as c,H as p,I as y,J as m,K as x,L as b,M as w,O as M,P as v,Q as S,R as k,S as E,T as P,U as N,V as C,W as I,X as L,Y as R,Z as O,_ as $,a as z,aa as A,b as B,ba as F,c as T,ca as _,da as H,ea as D,fa as W,g as j,ga as V,ha as X,i as U,ia as G,j as Y,ja as q,k as Q,ka as K,l as J,la as Z,m as ee,ma as et,na as ei,oa as er,pa as en,q as eo,qa as ea,r as es,ra as el,s as ed,sa as eh,t as eg,ta as eu,u as ef,ua as ec,v as ep,va as ey,w as em,wa as ex,x as eb,xa as ew,y as eM,ya as ev,z as eS}from"./chunk-NKW2ZNCD.js";import{b as ek}from"./chunk-HJVO5VC3.js";import{a as eE,b as eP,c as eN,d as eC,h as eI}from"./chunk-PXTLV57R.js";import{A as eL,B as eR,k as eO,l as e$,m as ez,n as eA,o as eB,p as eF,r as eT,s as e_,t as eH,u as eD,v as eW,w as ej,x as eV,y as eX,z as eU}from"./chunk-QVSZOF5M.js";import{L as eG,P as eY,ja as eq,ka as eQ,la as eK}from"./chunk-G4JBA7HU.js";import{c as eJ,d as eZ,e as e0,h as e1,l as e2,m as e5,n as e6}from"./chunk-YVNJDVQO.js";import{$b as e4,A as e8,Ab as e3,C as e9,G as e7,La as te,Oa as tt,Ob as ti,Pb as tr,Q as tn,Qb as to,R as ta,Ua as ts,Ub as tl,Wa as td,Yb as th,_ as tg,_b as tu,bb as tf,t as tc}from"./chunk-EIYLJ4FI.js";function tp(e){throw Error(`LAYOUT_HINT_INVALID: ${e}`)}var ty=class extends Error{constructor(e,t,i){super(i),this.pass=e,this.contract=t,this.name="LayoutPassContractError"}pass;contract;code="LAYOUT_PASS_CONTRACT_VIOLATION"},tm=class extends ty{constructor(e,t,i,r,n){super(e,"metric-budget",`Layout pass '${e}' worsened ${t} from ${i} to ${r} (allowance ${n})`),this.metric=t,this.before=i,this.after=r,this.allowance=n,this.name="LayoutMetricBudgetError"}metric;before;after;allowance;code="LAYOUT_METRIC_BUDGET_EXCEEDED"},tx=e=>{let t=[...e.nodes],i=e=>{for(let r of e)t.push(r),i(r.children??[])};return i(e.groups??[]),t},tb=["unreadableTitles","edgeCrossings","labelConflicts","totalBends","nonCanonicalEndpointRate","peerBarycenterDelta","area"];function tw(e,t){let i=new Map,r=e=>{for(let t of e)i.set(t.id,t),r(t.children)};r(e.subgraphs);let n=t=>{for(let r of t)r.nodeIds=i.get(r.id).nodeIds.filter(t=>e.nodes.has(t)&&!i.has(t)),n(r.children)};n(t.groups)}function tM(e,t){let i=[];if(![e.width,e.height].every(Number.isFinite)||e.width<0||e.height<0)return["non-finite or negative canvas"];let r=(t,r,n,o,a)=>{![r,n,o,a].every(Number.isFinite)||o<0||a<0?i.push(`${t}: non-finite or negative geometry`):(r<-.5||n<-.5||r+o>e.width+.5||n+a>e.height+.5)&&i.push(`${t}: outside canvas`)};for(let t of e.nodes)r(`node ${t.id}`,t.x,t.y,t.width,t.height);let n=e=>{r(`group ${e.id}`,e.x,e.y,e.width,e.height),e.children.forEach(n)};for(let o of(e.groups.forEach(n),e.edges)){for(let e of("invisible"!==o.style&&o.points.length<2&&i.push(`edge ${o.source}->${o.target}: missing route`),!o.label||o.labelPosition&&o.labelBlock||i.push(`label ${o.source}->${o.target}: missing retained geometry`),o.points))r(`edge ${o.source}->${o.target}`,e.x,e.y,0,0);if(void 0!==o.label&&o.labelPosition&&o.labelBlock){let e=eI(o,t);e&&r(`label ${o.source}->${o.target}`,e.x,e.y,e.w,e.h)}}for(let t of e.notes??[])r(`note ${t.id}`,t.x,t.y,t.width,t.height);if(e.title?.block){let t=e.title,i=t.block;r("diagram title",t.x-i.width/2,t.y-i.height/2,i.width,i.height)}return i}function tv(e,t){let i,r,n,o=tM(e,t);return o.length?o:(i=[],r=(e,t,i,r)=>{let n=0,o=1;for(let[a,s,l,d]of[[e.x,t.x-e.x,i.x,i.x+i.width],[e.y,t.y-e.y,i.y,i.y+r]]){if(0===s){if(a<=l||a>=d)return!1;continue}let e=(l-a)/s,t=(d-a)/s;if((n=Math.max(n,Math.min(e,t)))>=(o=Math.min(o,Math.max(e,t))))return!1}return n<o},n=o=>{if(!o.concurrencyRegion){let n=o.labelBlock??eP(e9(o.label,o.labelContent),t,"group"),a=o.headerHeight??t.groupHeaderFontSize+16+n.height-n.lineHeight;if(!Number.isFinite(a)||a<0)i.push(`group-header ${o.id}: invalid retained height`);else if(a>0&&o.width>0){for(let t of e.edges)if("invisible"!==t.style){for(let e=1;e<t.points.length;e++)if(r(t.points[e-1],t.points[e],o,a)){i.push(`group-header ${o.id}: edge ${t.source}->${t.target} segment ${e} enters reserved band`);break}}}}o.children.forEach(n)},e.groups.forEach(n),i)}function tS(e,t,i,r=!1){return tk(e,t,i,r)}function tk(e,t,i,r=!1,n="final"){try{var o;let a=i.produce(),s=function(e,t,i){let r=[],n=(e,t,n,o)=>{if(!n)return;let a=e7(t,"formatted","node"===o?i.nodeTextTransform:"edge"===o?i.edgeTextTransform:i.groupTextTransform),s=n.prepared,l=s.lines.length===a.lines.length&&s.lines.every((e,t)=>e.length===a.lines[t].length&&e.every((e,i)=>{let r=a.lines[t][i];return e.text===r.text&&e.bold===r.bold&&e.italic===r.italic&&e.underline===r.underline&&e.strikethrough===r.strikethrough&&e.sourceStart===r.sourceStart&&e.sourceEnd===r.sourceEnd&&e.clusters?.length===r.clusters?.length&&(e.clusters?.every((e,t)=>{let i=r.clusters[t];return e.text===i.text&&e.sourceStart===i.sourceStart&&e.sourceEnd===i.sourceEnd})??!0)}));(s.source!==a.source||s.display!==a.display||s.transform!==a.transform||s.lineStarts.length!==a.lineStarts.length||s.lineStarts.some((e,t)=>e!==a.lineStarts[t])||!l)&&r.push(`${e}: changed retained prepared text`)},o=new Map,a=new Map,s=new Map,l=new Map,d=(e,t="")=>{for(let i of e)o.set(i.id,t),s.set(i.id,i),d(i.children,i.id)},h=(e,t="")=>{for(let i of e)a.has(i.id)&&r.push(`group ${i.id}: duplicate identity`),a.set(i.id,t),l.set(i.id,i),h(i.children,i.id)};for(let[i,n]of(d(e.subgraphs),h(t.groups),o))a.get(i)!==n&&r.push(`group ${i}: missing or changed parent`);for(let e of a.keys())o.has(e)||r.push(`group ${e}: unexpected identity`);let g=new Set,u=new Map(t.nodes.map(e=>[e.id,e]));for(let i of t.nodes)if(g.has(i.id)&&r.push(`node ${i.id}: duplicate identity`),g.add(i.id),e.nodes.has(i.id))if(i.label!==e.nodes.get(i.id).label)r.push(`node ${i.id}: changed label`);else{let t=e.nodes.get(i.id);n(`node ${i.id}`,e9(t.label,t.labelContent),i.labelBlock,"node")}else r.push(`node ${i.id}: unexpected identity`);for(let t of e.nodes.keys())g.has(t)||a.has(t)||r.push(`node ${t}: missing identity`);for(let[e,t]of s){let i=l.get(e);if(!i)continue;i.label!==t.label&&r.push(`group ${e}: changed label`),n(`group ${e}`,e9(t.label,t.labelContent),i.labelBlock,"group");let a=l.get(o.get(e)??"");for(let n of(a&&(i.x<a.x-.5||i.y<a.y-.5||i.x+i.width>a.x+a.width+.5||i.y+i.height>a.y+a.height+.5)&&r.push(`group ${e}: outside authored parent ${a.id}`),t.nodeIds)){if(s.has(n))continue;let t=u.get(n);t&&(t.x<i.x-.5||t.y<i.y-.5||t.x+t.width>i.x+i.width+.5||t.y+t.height>i.y+i.height+.5)&&r.push(`member ${n}: outside authored group ${e}`)}}let f=new Set;for(let[i,o]of t.edges.entries()){let t=o.edgeIndex??i,a=e.edges[t];if(f.has(t)&&r.push(`edge ${t}: duplicate identity`),f.add(t),!a){r.push(`edge ${t}: unexpected identity`);continue}void 0!==a.label&&n(`edge ${t}`,e9(a.label,a.labelContent),o.labelBlock,"edge"),(o.source!==a.source||o.target!==a.target||(o.id??"")!==(a.id??"")||(o.label??"")!==(a.label??"")||o.style!==a.style||o.hasArrowStart!==a.hasArrowStart||o.hasArrowEnd!==a.hasArrowEnd||(o.startMarker??"arrow")!==(a.startMarker??"arrow")||(o.endMarker??"arrow")!==(a.endMarker??"arrow"))&&r.push(`edge ${t}: changed endpoints, identity, label, shaft or markers`)}return e.edges.forEach((e,t)=>{f.has(t)||r.push(`edge ${t}: missing identity`)}),r}(e,a,t);if(r&&s.length)throw TypeError(`Owned layout changed authored meaning: ${s.join("; ")}`);let l=[...s,..."placement"===n?tM(a,t):tv(a,t)],d=0===l.length?D(e,a,t):void 0;d&&l.push(...V(d).map(e=>`${e.metric}: ${e.detail}`));let h=0===l.length&&(i.preferNext?.(a)??!1);return{attempt:{strategy:i.strategy,violations:l},...0===l.length&&d?{certified:{positioned:a,strategy:i.strategy,score:(o=d.metrics,{unreadableTitles:+!!h,labelConflicts:o.labelConflicts,edgeCrossings:o.edgeCrossings,totalBends:o.totalBends,nonCanonicalEndpointRate:1-o.portEndpointRate,peerBarycenterDelta:Math.round(1e3*o.peerBarycenterDelta)/1e3,area:a.width*a.height})}}:{}}}catch(e){if(r||e instanceof ty||e instanceof eG||e instanceof to)throw e;return{attempt:{strategy:i.strategy,violations:[e instanceof Error?e.message:String(e)]}}}}function tE(e,t){for(let i of tb){if(t.score[i]<e.score[i])return{selected:t,reason:i};if(t.score[i]>e.score[i])return{selected:e,reason:i}}return{selected:e,reason:"candidate-order"}}function tP(e,t,i,r,n="final"){let o=[],a=i.slice(0,4),s=r?[r,...a]:a,l,d,h=!1,g=[],u=(e,t)=>({selected:e,reason:t,compared:g,attempts:o.length});for(let[i,r]of s.entries()){if(l&&"routing"===d&&!1===r.qualityAlternative)continue;h&&(tf("layout-candidate","candidate-rejected",o.length+1),h=!1);let a=tk(e,t,r,!1,n);o.push(a.attempt);let f=a.certified;if(f){if(g.push({strategy:f.strategy,score:f.score}),l){let e=tE(l,f);return u(e.selected,e.reason)}let t=s.slice(i+1);if(f.score.unreadableTitles&&t.length>0){l=f,d="readability";continue}if(0===f.score.edgeCrossings&&0===f.score.labelConflicts)return u(f,"first-certified");if(!ep(e))return u(f,"work-budget");if(!t.some(e=>!1!==e.qualityAlternative))return u(f,"no-alternative");l=f,d="routing";continue}if(l)return u(l,"alternative-invalid");h=!0}if(l)return u(l,"no-alternative");throw new tr(o)}function tN(e,t){let{selected:i,reason:r,compared:n,attempts:o}=t;return tw(e,i.positioned),i.positioned.certification={status:"passed",strategy:i.strategy,attempts:o,hardViolations:0,preference:{selectedScore:i.score,reason:r,compared:n}},i.positioned}function tC(e,t,i){let r=e.labelBlock??eE(e9(e.label,e.labelContent),i);return{x:t.x-(r.width+16)/2,y:t.y-(r.height+16)/2,width:r.width+16,height:r.height+16}}function tI(e){let t=[e[0],e[e.length-1]],i=-1;for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r],a=Math.hypot(o.x-n.x,o.y-n.y);a>i&&(i=a,t=[n,o])}return{x:(t[0].x+t[1].x)/2,y:(t[0].y+t[1].y)/2}}function tL(e){return Math.max(8,.75*e.edgeLabelFontSize)}function tR(e){return Math.max(12,e.edgeLabelFontSize)}function tO(e){let t=(e.lineWidth??1)*2;return Math.max(18,e.edgeLabelFontSize+eZ.width+2*t)}function t$(e){return tO(e)+(3*e0.dash+2*e0.gap)}function tz(e,t,i){return Math.abs(i.x-t.x)>=Math.abs(i.y-t.y)?e.width/2:e.height/2}function tA(e,t,i,r,n,o){let a,s,l=(a=o.lineWidth??1,s="thick"===e.style?2*a:a,Math.max(18,o.edgeLabelFontSize+eZ.width+2*s));if(e.hasArrowStart&&1===i){let e=t[0],i=tz(n,e,t[1]);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}if(e.hasArrowEnd&&i===t.length-1){let e=t[t.length-1],i=tz(n,t[t.length-2],e);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}return!0}function tB(e,t,i,r,n,o){if(!e.label)return[];let a=eA(t);if(0===a)return[];let s=a/2,l=[],d=[.5,.45,.55,.4,.6,.35,.65,.3,.7,.25,.75,.2,.8,1/6,5/6],h=0;for(let a=1;a<t.length;a++){var g;let u=t[a-1],f=t[a],c=Math.hypot(f.x-u.x,f.y-u.y);if(0===c)continue;let p=eF(r).isHorizontal?.01>Math.abs(u.y-f.y):.01>Math.abs(u.x-f.x),y=e.hasArrowStart&&1===a||e.hasArrowEnd&&a===t.length-1,m=tC(e,{x:0,y:0},n),x=(g=a,{start:e.hasArrowStart&&1===g?tO(n):tR(n),end:e.hasArrowEnd&&g===t.length-1?t$(n):tR(n)}),b=[...d,...function(e,t,i,r){let n=Math.hypot(i.x-t.x,i.y-t.y);if(0===n)return[];let o=tz(e,t,i),a=(o+r.start)/n,s=1-(o+r.end)/n;return a>s?[]:[(a+s)/2]}(m,u,f,x)].filter((e,t,i)=>e>=0&&e<=1&&i.findIndex(t=>.001>Math.abs(t-e))===t),w=.01>Math.abs(u.x-f.x),M=Math.min(m.height/2+3,(w?m.width:m.height)/2-1),v=o?[0,M/4,-M/4,M/2,-M/2,M,-M]:[0];for(let r=0;r<b.length;r++){let d=b[r];for(let g of v){let m={x:u.x+(f.x-u.x)*d+(w?g:0),y:u.y+(f.y-u.y)*d+(w?0:g)},b=tC(e,m,n);if(i.some(e=>eV(b,e,2))||!tA(e,t,a,m,b,n))continue;let M=function(e,t,i,r,n){let o=tz(e,i,r);return Math.hypot(t.x-i.x,t.y-i.y)>=o+n.start&&Math.hypot(t.x-r.x,t.y-r.y)>=o+n.end}(b,m,u,f,x),v=w?b.y>=Math.min(u.y,f.y)&&b.y+b.height<=Math.max(u.y,f.y):b.x>=Math.min(u.x,f.x)&&b.x+b.width<=Math.max(u.x,f.x);(!o||M&&v&&o(e,m))&&l.push({point:m,box:b,order:r,rank:0,pathDistance:h+c*d,routeMidpointDistance:Math.abs(h+c*d-s),segmentMidpointDistance:Math.abs(c*(d-.5)),straightRunPenalty:p&&M?0:p?2:10,terminalSegmentPenalty:+!!y})}}h+=c}return l.sort((e,t)=>e.straightRunPenalty-t.straightRunPenalty||e.terminalSegmentPenalty-t.terminalSegmentPenalty||e.segmentMidpointDistance-t.segmentMidpointDistance||e.routeMidpointDistance-t.routeMidpointDistance||e.order-t.order||e.pathDistance-t.pathDistance),l.map((e,t)=>({...e,rank:t}))}function tF(e,t,i,r,n){return tB(e,t,i,r,n)[0]?.point??eB(t)}function tT(e,t){let i=0,r=[];for(let e=1;e<t.length;e++){let n=Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y);r.push(n),i+=n}let n=1/0,o=0,a=0;for(let i=1;i<t.length;i++){let s=t[i-1],l=t[i],d=l.x-s.x,h=l.y-s.y,g=d*d+h*h,u=g?((e.x-s.x)*d+(e.y-s.y)*h)/g:0;u=Math.max(0,Math.min(1,u));let f=s.x+u*d,c=s.y+u*h,p=Math.hypot(e.x-f,e.y-c);p<n&&(n=p,o=a+u*r[i-1]),a+=r[i-1]}return i?o/i:.5}function t_(e,t,i,r,n=!1,o){let a=e.filter(({edge:e})=>e.label);if(0===a.length)return!0;if(1===a.length){let e=a[0],n=tB(e.edge,e.points,t,i,r,o);if(o&&0===n.length)return!1;e.edge.labelPosition=n[0]?.point??eB(e.points)}else{let e=a.map(({edge:e,points:n})=>tB(e,n,t,i,r,o));if(e.some(e=>0===e.length)){if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}else{let n=tL(r),s,l=1/0,d=[],h=t=>{if(t===e.length){let e,t,r,n,o,a,h,g=(e=eF(i),r=Math.max(...t=d.map(t=>t.point[e.main]))-Math.min(...t),n=d.reduce((e,t)=>e+t.straightRunPenalty,0),o=d.reduce((e,t)=>e+t.terminalSegmentPenalty,0),a=d.reduce((e,t)=>e+t.segmentMidpointDistance,0),h=d.reduce((e,t)=>e+t.routeMidpointDistance,0),1e4*n+100*r+1e3*o+4*a+.25*d.reduce((e,t)=>e+t.rank,0)+.1*h);g<l&&(l=g,s=d.slice());return}for(let i of e[t])d.some(e=>eV(i.box,e.box,n))||(d.push(i),h(t+1),d.pop())};if(h(0),s)for(let e=0;e<a.length;e++)a[e].edge.labelPosition=s[e].point;else{if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}}}if(!n)return!0;let s=[],l=tL(r);for(let{edge:e}of a)e.labelPosition&&s.push(tC(e,e.labelPosition,r));for(let e=0;e<a.length;e++){let{edge:n,points:o}=a[e],d=n.labelPosition;(function(e,t,i,r,n,o=[],a=0){if(!e.label||!e.labelPosition)return;let s=function(e,t){let i=eF(t),r=e.map(e=>e[i.main]),n=(Math.min(...r)+Math.max(...r))/2,o=null;for(let t=1;t<e.length;t++){let r=e[t-1],a=e[t],s=Math.min(r[i.main],a[i.main]),l=Math.max(r[i.main],a[i.main]);if(n<s-1e-6||n>l+1e-6)continue;let d=a[i.main]-r[i.main];if(1e-6>=Math.abs(d))continue;let h=(n-r[i.main])/d,g={[i.main]:n,[i.cross]:r[i.cross]+h*(a[i.cross]-r[i.cross])};if(.01>Math.abs(r[i.cross]-a[i.cross]))return g;o??=g}return o}(t,r);if(!s)return;let l=Math.abs(tT(e.labelPosition,t)-.5);if(Math.abs(tT(s,t)-.5)>=l-1e-6)return;let d=tC(e,s,n);if(i.some(e=>eV(d,e,2))||o.some(e=>eV(d,e,a)))return;let h=eF(r);for(let i=1;i<t.length;i++){let r=t[i-1],o=t[i],a=Math.min(r[h.main],o[h.main]),l=Math.max(r[h.main],o[h.main]);if(!(1e-6>=Math.abs(o[h.main]-r[h.main]))&&!(s[h.main]<a-1e-6||s[h.main]>l+1e-6)){if(!tA(e,t,i,s,d,n))return;break}}e.labelPosition=s})(n,o,t,i,r,s.filter((t,i)=>i!==e),l),n.labelPosition&&n.labelPosition!==d&&(s[e]=tC(n,n.labelPosition,r))}return!0}function tH(e,t,i,r){let n=new Map;if(eU("APL_NO_CORANK_FANIN"))return n;let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=e=>!!e&&eb.has(e.shape)&&!K(e,i),l=e=>!!e&&"rectangle"===e.shape&&!K(e,i),d=new Map;for(let e of t)e.source!==e.target&&X(e,a,r.direction)&&(d.has(e.target)||d.set(e.target,[]),d.get(e.target).push(e));for(let[e,t]of d){if(t.length<2||t.length>6||!s(a.get(e)))continue;let i=t.filter(e=>!!e.label);if(0===i.length||i.length===t.length)continue;let d=t[0].style;if(t.some(e=>e.style!==d))continue;let h=t.map(e=>a.get(e.source)).filter(e=>!!e);if(h.length!==t.length||new Set(h.map(e=>e.id)).size!==h.length||!h.every(l)||!G(h,r.direction,28))continue;let g=!0;for(let e=0;e<h.length&&g;e++)for(let t=0;t<h.length;t++)if(e!==t&&o(h[e].id,h[t].id)){g=!1;break}g&&n.set(e,t)}return n}function tD(e,t,i,r,n,o){let a=4e6,s=m(t,i,r,o,e=>(a-=e)>=0);if(!s)return!1;let l=N({nodes:t,edges:i,groups:r},o),d=new Set(e.map(({edge:e})=>e)),h=t.find(t=>t.id===e[0].edge.source),g=Z(r).filter(e=>et(h,e)),u=(e,t)=>{let i=eI({...e,labelPosition:t},o),r=i&&l.clearPaintRect(i,eC(e,o.lineWidth??1),e);return!!r&&g.every(e=>r.x>e.x&&r.y>e.y&&r.x+r.w<e.x+e.width&&r.y+r.h<e.y+e.height)&&s.clear(e,t,new Map,void 0,d)},f=()=>e.every(({edge:e})=>!e.label||!!e.labelPosition&&s.clear(e,e.labelPosition,new Map));return e.every(({edge:e,points:t})=>{if(!e.label)return!0;if(!e.labelPosition||!u(e,e.labelPosition))return!1;let i=eI(e,o);return t.some((e,r)=>{if(!r)return!1;let n=t[r-1];return n.x===e.x&&n.x>=i.x&&n.x<=i.x+i.w&&i.y>=Math.min(n.y,e.y)&&i.y+i.h<=Math.max(n.y,e.y)||n.y===e.y&&n.y>=i.y&&n.y<=i.y+i.h&&i.x>=Math.min(n.x,e.x)&&i.x+i.w<=Math.max(n.x,e.x)})})&&f()||t_(e,t,n,o,!1,u)&&f()}function tW(e,t){return Z(t).filter(t=>et(e,t)).map(e=>e.id).join("\0")}function tj(e,t,i,r,n,o,a){if(t.length<2||t.length>3||"rectangle"!==e.shape&&"diamond"!==e.shape)return;let s="diamond"!==e.shape&&K(e,n),l=[...t].sort((e,t)=>eW(r.get(e.target),o)-eW(r.get(t.target),o)),d=l.map(e=>r.get(e.target)).filter(Boolean);if(d.length!==l.length)return;let h=s?tW(e,n):"";if(d.every(t=>"rectangle"===t.shape&&(s?tW(t,n)===h:"diamond"===e.shape||!K(t,n)))&&G(d,o,40)&&d.every(t=>i.every(i=>i.source!==t.id&&(i.target!==t.id||i.source===e.id)))){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return l}}function tV(e,t,i){if(e.length>eg||t.length>ef)return!1;let r=eg-e.length,n=e=>e.every(e=>--r>=0&&n(e.children));return n(i)}var tX=(e,t)=>e.points.length!==t.points.length||e.points.some((e,i)=>e.x!==t.points[i].x||e.y!==t.points[i].y);function tU(){return{remaining:eg*ef}}function tG(e,t,i,r,n,o,a=tU()){let s=e.map((e,t)=>e.x!==i[t].x||e.y!==i[t].y),d=t.map((e,t)=>tX(e,r[t]));if(!s.some(Boolean)&&!d.some(Boolean))return!0;let h=()=>--a.remaining>=0,g=new Map,u=e=>(g.has(e)||g.set(e,y(e,o,h)),g.get(e)),m=new Map,x=e=>{if(!m.has(e)){let t=ee(e,{fill:e.inlineStyle?.fill??o.nodeFillColor??"var(--_node-fill)",stroke:e.inlineStyle?.stroke??o.nodeBorderColor??"var(--_node-stroke)",strokeWidth:ta("stroke-width",e.inlineStyle?.["stroke-width"]??String(o.nodeLineWidth??eJ.innerBox))},o.cornerRadius);m.set(e,td({kind:"shape",id:e.id,role:"node",geometry:f(t.geometry),paint:t.paint,...t.childPaints?{childPaints:t.childPaints}:{}}))}return m.get(e)};try{let o,a,g;for(let t=0;t<e.length;t++){if(!s[t])continue;let i=x(e[t]);if(!c(i))return!1;for(let r=0;r<e.length;r++){if(r===t||s[r]&&r<t)continue;if(!h())return!1;let n=x(e[r]);if(!c(n)||p(i,n))return!1}}for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<t.length;e++){let a=t[e];if(!s[n]&&!d[e]||"invisible"===a.style)continue;if(!h()||a.source===o.id&&l(a,o)>l(r[e],i[n])||a.target===o.id&&l(a,void 0,o)>l(r[e],void 0,i[n]))return!1;let g=u(a);if(!g)return!1;let f=x(o);if(!c(f))return!1;if(a.source!==o.id&&a.target!==o.id){for(let e of g.shafts)if(!h()||p(f,e))return!1}for(let e of g.markers)if(("start"===e.position?a.source:a.target)!==o.id&&(!h()||!c(e.bounds)||p(f,e.bounds)))return!1;if(g.label&&(!h()||p(f,g.label)))return!1}}return o=e.filter((e,t)=>e.x!==i[t].x||e.y!==i[t].y),a=t.filter((e,t)=>"invisible"!==e.style&&tX(e,r[t])),g=e=>{if(!h())return!1;if(!e.concurrencyRegion&&0!==e.width){let t=e.headerHeight??e.height;if(!Number.isFinite(e.width)||e.width<0||!Number.isFinite(t)||t<0)return!1;if(t>0&&e.width>0){let i=te({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+t},tt(f({kind:"rect",x:e.x,y:e.y,width:e.width,height:t})));if(!c(i))return!1;for(let e of o){if(!h())return!1;let t=x(e);if(!c(t))return!1;let r=te(t,{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height});if(!c(r)||p(r,i))return!1}for(let e of a){let t=u(e);if(!t)return!1;for(let e of t.shafts)if(!h()||p(e,i))return!1;for(let e of t.markers)if(!h()||!c(e.bounds)||p(e.bounds,i))return!1}}}return e.children.every(g)},n.every(g)}catch{return!1}}function tY(e,t){return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e,points:e.points.map(e=>({...e})),...e.labelPosition?{labelPosition:{...e.labelPosition}}:{}}))}}function tq(e,t,i,r){e.forEach((e,t)=>{e.x!==i[t].x&&(e.x=i[t].x),e.y!==i[t].y&&(e.y=i[t].y)}),t.forEach((e,t)=>{let i=r[t];tX(i,e)&&(e.points=i.points),(i.labelPosition?.x!==e.labelPosition?.x||i.labelPosition?.y!==e.labelPosition?.y)&&(e.labelPosition=i.labelPosition),i.routeCertificate!==e.routeCertificate&&(e.routeCertificate=i.routeCertificate)})}function tQ(e,t,i){for(let r of i)if(r!==e){for(let e=1;e<r.points.length;e++)if(function(e,t,i,r=2){let n=i.x-r,o=i.x+i.w+r,a=i.y-r,s=i.y+i.h+r;if(.01>Math.abs(e.x-t.x)){let i=Math.min(e.y,t.y),r=Math.max(e.y,t.y);return e.x>=n&&e.x<=o&&r>=a&&i<=s}if(.01>Math.abs(e.y-t.y)){let i=Math.min(e.x,t.x),r=Math.max(e.x,t.x);return e.y>=a&&e.y<=s&&r>=n&&i<=o}return!1}(r.points[e-1],r.points[e],t))return!0}return!1}function tK(e,t){for(let i=1;i<e.length;i++)for(let r=1;r<t.length;r++){let n=e[i-1],o=e[i],a=t[r-1],s=t[r],l=(o.x-n.x)*(s.y-a.y)-(o.y-n.y)*(s.x-a.x);if(1e-9>Math.abs(l))continue;let d=((a.x-n.x)*(s.y-a.y)-(a.y-n.y)*(s.x-a.x))/l,h=((a.x-n.x)*(o.y-n.y)-(a.y-n.y)*(o.x-n.x))/l;if(d>.001&&d<.999&&h>.001&&h<.999)return!0}return!1}function tJ(e,t,i){let r=new Map(t.map(e=>[e.edge,e])),n=new Set,o=e.map((e,t)=>{let i=r.get(e);return i?(n.add(t),{...e,points:i.points,labelPosition:i.label}):e}),{nodes:a,style:s}=i;return $({nodes:a,edges:o},s,n).total<=$({nodes:a,edges:e},s,n).total}function tZ(e,t,i,r){let n=new Map(t.map(e=>[e.edge,e.points])),o=new Set,a=e.map((e,t)=>{let i=n.get(e);return i?(o.add(t),{...e,points:i}):e});for(let t of o){let r=e[t],n=a[t];if(J(r,n.points,a,i,n))return"marker-blocked"}if(r?.labelClearance&&!tJ(e,t,r.labelClearance))return!1;let s=F(a,o)-F(e,o);if(!r?.allowCrossingsForOverlap)return s<=0;let l=_(e,o)-_(a,o);return!(l<0)&&(s<=0||s<=l)}function t0(e,t,i){if(!t)return;let r=i?0:e.length-1,n=i?1:-1,o=e[r];if(!o)return!1;for(let i=r+n;i>=0&&i<e.length;i+=n){let r=e[i];if(r.x!==o.x||r.y!==o.y)return eo(t,o,r)}return!1}function t1(e,t,i){let r={...e,points:e.points.filter((t,i)=>0===i||t.x!==e.points[i-1].x||t.y!==e.points[i-1].y).map(e=>({...e}))};return d(r,t,i),t&&(r.points=ed(r.points,t,!0)),i&&(r.points=ed(r.points,i,!1)),r}function t2(e,t,i,r){if(e.length<2||void 0===i&&void 0===r)return e;let n=e.map(e=>({...e})),o=t?"x":"y";for(let[e,t,a]of[[i,0,1],[r,n.length-1,n.length-2]]){if(void 0===e)continue;let i=n[t],r=n[a];i[o]+=e,r[o]===i[o]-e&&(r[o]+=e)}return n}function t5(e,t,i){let r=[];for(let n of i)e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height&&(r.push(n),r.push(...t5(e,t,n.children)));return r}function t6(e,t,i,r,n){let o="LR"===n,a="RL"===n,s=o||a,l=new Set(t5(t,i,r).map(e=>e.id)),d=t5(s?e:t,s?i:e,r).find(e=>!l.has(e.id));return d?o?d.x-12:a?d.x+d.width+12:"BT"===n?d.y+d.height+12:d.y-12:e}function t4(e,t){let i=new Set(e),r=new Map(e.map((e,t)=>[e,t])),n=new Map(e.map(e=>[e,new Set])),o=new Map(e.map(e=>[e,0])),a=(e,t)=>{let i=new Set,r=[e];for(;r.length>0;){let e=r.pop();if(e===t)return!0;if(!i.has(e))for(let t of(i.add(e),n.get(e)??[]))r.push(t)}return!1};for(let e of t){if(e.source===e.target||!i.has(e.source)||!i.has(e.target))continue;let t=e.source,r=e.target,s=n.get(t);s.has(r)||a(r,t)||(s.add(r),o.set(r,(o.get(r)??0)+1))}let s=(e,t)=>(r.get(e)??0)-(r.get(t)??0),l=e.filter(e=>(o.get(e)??0)===0).sort(s),d=e=>{let t=l.length;for(l.push(e);t>0;){let i=t-1>>>1;if(0>=s(l[i],e))break;l[t]=l[i],t=i}l[t]=e},h=[];for(;l.length>0;){let e=l[0],t=l.pop();if(l.length){let e=0;for(;2*e+1<l.length;){let i=2*e+1;if(i+1<l.length&&0>s(l[i+1],l[i])&&i++,0>=s(t,l[i]))break;l[e]=l[i],e=i}l[e]=t}for(let t of(h.push(e),Array.from(n.get(e)??[]).sort(s))){let e=(o.get(t)??0)-1;o.set(t,e),0===e&&d(t)}}if(h.length<e.length){let t=new Set(h);h.push(...e.filter(e=>!t.has(e)).sort(s))}return h}function t8(e,t,i,r,n="TB",o,a){let s=a??eP(t,r,"node");if("state-fork"===i||"state-join"===i){let e=o?.forkWidth??70,t=o?.forkHeight??10;return"LR"===n||"RL"===n?{width:t,height:e}:{width:e,height:t}}if("state-choice"===i)return{width:36,height:36};if("state-history"===i)return{width:32,height:32};let l=s.width+2*r.nodePaddingX,d=s.height+2*r.nodePaddingY;if("service"===i&&(l=Math.max(l+34,120),d=Math.max(d+6,48)),"diamond"===i){let e=Math.max(l,d)+r.diamondExtraPadding;l=e,d=e}if("circle"===i||"doublecircle"===i){let e=Math.ceil(Math.sqrt(l*l+d*d))+8;d=l="doublecircle"===i?e+12:e}return"ellipse"===i&&(l=Math.ceil(l*Math.SQRT2),d=Math.ceil(d*Math.SQRT2)),"hexagon"===i&&(l+=r.nodePaddingX),("trapezoid"===i||"trapezoid-alt"===i||"lean-r"===i||"lean-l"===i)&&(l+=r.nodePaddingX),"asymmetric"===i&&(l+=12),"cylinder"===i&&(d+=14),"state-start"===i||"state-end"===i?{width:28,height:28}:{width:l=Math.max(l,60),height:d=Math.max(d,36)}}function t3(e,t){let i=new Map;if(eU("APL_NO_CORANK_FANIN"))return i;let r=new Map;for(let t=0;t<e.edges.length;t++){let i=e.edges[t];i.source!==i.target&&(r.has(i.target)||r.set(i.target,[]),r.get(i.target).push(t))}for(let[n,o]of r){if(o.length<2)continue;let r=o.filter(t=>!!e.edges[t].label),a=o.filter(t=>!e.edges[t].label);if(0===r.length||0===a.length)continue;let s=e.nodes.get(n)?.shape;if(void 0===s||!eb.has(s))continue;let l=t=>e.nodes.get(t)?.shape==="rectangle";if(!o.every(t=>l(e.edges[t].source)))continue;let d=0,h=0;for(let i of r){let r=eP(e9(e.edges[i].label,e.edges[i].labelContent),t,"edge");r.text,d=Math.max(d,r.width+8),h=Math.max(h,r.height+6)}for(let e of a)i.set(e,{width:d,height:h})}return i}function t9(e){return{text:" ",width:e.width,height:e.height,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}}function t7(e,t){return t>em({})&&function(e){let t=new Map,i=new Map;for(let{source:r,target:n}of e){if(r===n)return!0;t.set(r,t.get(r)??0),t.set(n,(t.get(n)??0)+1),i.set(r,[...i.get(r)??[],n])}let r=[...t].filter(([,e])=>0===e).map(([e])=>e),n=0;for(let e=r.pop();void 0!==e;e=r.pop())for(let o of(n++,i.get(e)??[])){let e=t.get(o)-1;t.set(o,e),0===e&&r.push(o)}return n<t.size}(e.edges)?{"elk.spacing.edgeNode":String(t)}:{}}function ie(e,t,i){var r;let n,o,a,s,l,d,g,{hook:u,corridor:f}=function(e,t){let i=em(e),r=0;for(let[n,o]of t.edges.entries()){if("invisible"===o.style)continue;let a={...o,inlineStyle:eK(n,t)},s=em(e,a,"start"),l=em(e,a,"end");i=Math.max(i,s,l),r=Math.max(r,(o.hasArrowStart?s-(e.edgeBendRadius??0):0)+(o.hasArrowEnd?l-(e.edgeBendRadius??0):0))}return{hook:i,corridor:r}}(i,e);t={...t,layerSpacing:Math.max(t.layerSpacing??eO.layerSpacing,f),markerPortExtents:t.preserveSubgraphChildOrder||t.stateVisual?void 0:function(e,t){let i=new Map;for(let r=0;r<e.edges.length;r++){let n=e.edges[r],o=e.nodes.get(n.target);if(!o||"rectangle"!==o.shape||o.semanticShape||"invisible"===n.style||n.source===n.target)continue;let a=i.get(o.id)??{count:0,span:0,known:!0};a.count++;let s="thick"===n.style?2:1,l=t.lineWidth*s,d=(Number.isFinite(l)&&l>0?U({...n,curve:void 0,points:[{x:0,y:0},{x:100,y:0}],inlineStyle:eK(r,e)},{...t,lineWidth:Number(tn(l))/s,edgeBendRadius:0}):void 0)?.find(e=>"end"===e.position);!n.hasArrowEnd||d?.bounds&&Object.values(d.bounds).every(Number.isFinite)?d?.bounds&&(a.span=Math.max(a.span,d.bounds.y1-d.bounds.y0)):a.known=!1,i.set(o.id,a)}let r=new Map;for(let[e,t]of i)t.count<2||!t.known||t.span<=0||r.set(e,{count:t.count,span:t.span});return r}(e,i)};let c=new Set,p=new Set;for(let t of e.subgraphs)p.add(t.id),function e(t,i,r){for(let e of t.nodeIds)i.add(e);for(let n of t.children)r.add(n.id),e(n,i,r)}(t,c,p);let y=new Map;for(let t of e.edges)t.source===t.target&&y.set(t.source,(y.get(t.source)??0)+1);let m=Math.max(0,...y.values());m>4&&(t={...t,layerSpacing:Math.max(t.layerSpacing,t.layerSpacing+(m-4)*16)});let x=t.disableCorankFanIn?new Map:t3(e,i),b=function(e){let t=new Map;for(let i of e)!function e(i){for(let e of i.nodeIds)t.set(e,i.id);for(let t of i.children)e(t)}(i);return t}(e.subgraphs),w=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let e of i.nodeIds)t.set(e,r);for(let t of i.children)e(t,r)}(i,i.id);return t}(e.subgraphs),M=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let e of i.nodeIds)t.set(e,n);for(let t of i.children)e(t,n)}(i,[]);return t}(e.subgraphs),v=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let n of(t.set(i.id,r),i.children))e(n,i.id)}(i,void 0);return t}(e.subgraphs),S=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let r of(t.set(i.id,n),i.children))e(r,n)}(i,[]);return t}(e.subgraphs),k=e=>b.get(e)??v.get(e),E=e=>M.get(e)??S.get(e)?.slice(0,-1)??[],P=il(e,t),N=function(e,t){let i=h(e),r=new Set,n=new Set,o=function(e){let t=new Set,i=(e,r)=>{let n=r||void 0!==e.direction;if(n)for(let i of e.nodeIds)t.add(i);for(let t of e.children)i(t,n)};for(let t of e)i(t,!1);return t}(e.subgraphs),a=new Set;for(let t=0;t<e.edges.length;t++){let o=e.edges[t],s=i[t]??"primary-forward";"primary-forward"===s&&o.label&&a.add(`${o.source}\0${o.target}`),"primary-forward"!==s&&(r.add(o.source),r.add(o.target)),"primary-forward"!==s&&"feedback"!==s&&(n.add(o.source),n.add(o.target))}let s=[],l=[],d=e=>e.replace(/[^A-Za-z0-9_\-]/g,"_"),g=(e,t,i)=>{l.push({edgeIndex:e,routeClass:t,reason:i})};for(let l=0;l<e.edges.length;l++){let h=e.edges[l],u=i[l]??"primary-forward";if(h.source===h.target){g(l,u,"self-loop");continue}if(t.has(h.source)||t.has(h.target)){g(l,u,"subgraph-endpoint");continue}if(!e.nodes.has(h.source)||!e.nodes.has(h.target)){g(l,u,"missing-node");continue}if("primary-forward"!==u&&"feedback"!==u){g(l,u,"unsupported-route-class");continue}if("primary-forward"===u&&(r.has(h.source)||r.has(h.target))){g(l,u,"unsafe-non-primary-incident");continue}if("feedback"===u&&h.label){g(l,u,"unsupported-route-class");continue}if("feedback"===u&&a.has(`${h.target}\0${h.source}`)){g(l,u,"labeled-reciprocal-primary");continue}if("feedback"===u&&(!ii(e.nodes.get(h.source))||!ii(e.nodes.get(h.target)))){g(l,u,"unsupported-shape");continue}if(n.has(h.source)||n.has(h.target)){g(l,u,"unsafe-non-primary-incident");continue}if(o.has(h.source)||o.has(h.target)){g(l,u,"direction-override-node");continue}let f=function(e,t){let i=function(e){switch(e){case"RL":return{source:"W",target:"E"};case"BT":return{source:"N",target:"S"};case"TD":case"TB":return{source:"S",target:"N"};default:return{source:"E",target:"W"}}}(e);return"feedback"===t?{source:i.target,target:i.source}:i}(e.direction,u);s.push({nodeId:h.source,portId:`rp_${d(h.source)}_${l}_s`,side:f.source,edgeIndex:l,sourceId:h.source,targetId:h.target,endpoint:"source",slotIndex:0,routeClass:u,labeled:!!h.label,constraint:"FIXED_SIDE"}),s.push({nodeId:h.target,portId:`rp_${d(h.target)}_${l}_t`,side:f.target,edgeIndex:l,sourceId:h.source,targetId:h.target,endpoint:"target",slotIndex:0,routeClass:u,labeled:!!h.label,constraint:"FIXED_SIDE"})}let u=new Map;for(let e of s){let t=u.get(e.nodeId)??[];t.push(e),u.set(e.nodeId,t)}for(let t of u.values()){var f;t.sort((e,t)=>ir(e.side)-ir(t.side)||e.edgeIndex-t.edgeIndex||io(e.endpoint)-io(t.endpoint));let i=new Map;for(let e of t){let t=i.get(e.side)??0;e.slotIndex=t,i.set(e.side,t+1)}let r=(f=e.nodes.get(t[0].nodeId),f?.shape==="rectangle"&&function(e){if(e.length<2||!e.every(e=>"primary-forward"===e.routeClass&&!e.labeled))return!1;let t=e[0].side;if(!e.every(e=>e.side===t))return!1;let i=new Map;for(let t of e){let e=`${t.sourceId}\0${t.targetId}`;i.set(e,(i.get(e)??0)+1)}return!![...i.values()].some(e=>e>=2)&&(!!e.every(e=>"target"===e.endpoint)||!!e.every(e=>"source"===e.endpoint)&&e.every(e=>(i.get(`${e.sourceId}\0${e.targetId}`)??0)>=2))}(t));for(let e of t)r?(e.constraint="FIXED_ORDER",e.orderReason="primary-duplicate-face"):(e.constraint="FIXED_SIDE",e.orderReason=void 0)}let c=new Map;for(let e of s)c.set(it(e.edgeIndex,e.endpoint),e);return{byEndpoint:c,byNode:u,relaxations:l}}(e,p),C=new Map,I=new Map,L,R=t=>{L??=new Set([...e.nodes.keys(),...p,...[...N.byEndpoint.values()].map(e=>e.portId)]);let i=t;for(;L.has(i);)i+="_";return L.add(i),i},O=(e,t,i)=>{let r=R(`${e}_${i}_${t}`),n=C.get(e)??[];return n.push({id:r,direction:i}),C.set(e,n),r},$=(e,t)=>{let r=p.has(e.source)&&E(e.target).includes(e.source),n=p.has(e.target)&&E(e.source).includes(e.target),o=r?S.get(e.source):E(e.source),a=n?S.get(e.target):E(e.target),s=ig(o,a),l=s?o.indexOf(s)+1:0,d=r?O(e.source,t,"in"):N.byEndpoint.get(it(t,"source"))?.portId??e.source,h=n?O(e.target,t,"out"):N.byEndpoint.get(it(t,"target"))?.portId??e.target,g=0,u=(r,n,o,a=!1)=>{let s=a?function(e,t,i,r,n,o){let a={id:`e${e}`,sources:[i],targets:[r]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(t.label,t.labelContent),n,"edge");a.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&o?.has(e)&&(a.labels=[t9(o.get(e))]);return a}(t,e,n,o,i,x):{id:`e${t}_internal_${g}`,sources:[n],targets:[o]},l={...s,id:R(s.id),hierarchySegment:{edgeIndex:t,order:g++}},d=I.get(r??null)??[];d.push(l),I.set(r??null,d)};for(let e of o.slice(l).reverse()){let i=O(e,t,"out");u(e,d,i),d=i}let f=a.slice(l).map(e=>({scope:e,port:O(e,t,"in")}));u(s,d,f[0]?.port??h,!0);for(let e=0;e<f.length;e++){let t=f[e];u(t.scope,t.port,f[e+1]?.port??h)}},z=new Map;z.set(null,[]);for(let t=0;t<e.edges.length;t++){let i=e.edges[t],r=k(i.source),n=k(i.target);if(r&&r===n)z.has(r)||z.set(r,[]),z.get(r).push({index:t,edge:i});else if(r||n)if(P)$(i,t);else{let e=ig(E(i.source),E(i.target));e?(z.has(e)||z.set(e,[]),z.get(e).push({index:t,edge:i})):z.get(null).push({index:t,edge:i})}else z.get(null).push({index:t,edge:i})}let A={id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":e4(e.direction),"elk.spacing.nodeNode":String(t.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(t.layerSpacing),"elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(u),...t7(e,u),"elk.padding":`[top=${t.padding},left=${t.padding},bottom=${t.padding},right=${t.padding}]`,"elk.edgeRouting":"ORTHOGONAL","elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.contentAlignment":"H_CENTER V_CENTER","elk.layered.thoroughness":String(eO.thoroughness),"elk.layered.highDegreeNodes.treatment":"true","elk.layered.highDegreeNodes.threshold":"8","elk.layered.compaction.postCompaction.strategy":"LEFT_RIGHT_CONSTRAINT_LOCKING","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.layered.cycleBreaking.strategy":"MODEL_ORDER","elk.layered.feedbackEdges":"true","elk.layered.crossingMinimization.forceNodeModelOrder":"true","elk.layered.wrapping.strategy":"OFF","elk.hierarchyHandling":P?"SEPARATE":"INCLUDE_CHILDREN"},children:[],edges:[]},B=!t.preserveSubgraphChildOrder,F=new Map(e.subgraphs.map(e=>[e.id,e]));for(let d of(r=!!t.preserveSubgraphChildOrder,n=[],o=new Set,a=e=>{o.has(e)||(o.add(e),n.push(e))},s=()=>{for(let t of e.nodes.keys()){let e=w.get(t);e?a(e):c.has(t)||p.has(t)||a(t)}},l=()=>{for(let t of e.subgraphs)a(t.id)},r?(l(),s()):(s(),l()),t4(n,e.edges.map(e=>({source:w.get(e.source)??e.source,target:w.get(e.target)??e.target}))))){let r=F.get(d);if(r){A.children.push(function e(t,i,r,n,o,a,s,l,d,h,g,u,f="TB"){let c=ih(t,n),p=t.concurrencyRegion?r.stateVisual?.dividerMargin??0:0,y=t.direction??f,m={"elk.algorithm":"layered","elk.padding":`[top=${c+n.groupPaddingY+p},left=${n.groupPaddingX+p},bottom=${n.groupPaddingY+p},right=${n.groupPaddingX+p}]`,"elk.edgeRouting":"ORTHOGONAL","elk.contentAlignment":"H_CENTER V_CENTER","elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(o),...t7(i,o),"elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.layered.spacing.nodeNodeBetweenLayers":String(r.layerSpacing),"elk.spacing.nodeNode":String(r.nodeSpacing)};(t.direction||u)&&(m["elk.direction"]=e4(y));let x=id(t,n);x>0&&u&&(m["elk.nodeSize.constraints"]="MINIMUM_SIZE",m["elk.nodeSize.minimum"]=`(${x}, 0)`);let b={id:t.id,layoutOptions:m,labels:t.label?[{text:t.label}]:void 0,children:[],edges:[],...void 0!==t.headerMinHeight&&0===t.nodeIds.length&&0===t.children.length?{width:Math.max(x,2*n.groupPaddingX),height:c+2*n.groupPaddingY}:{}},w=s.get(t.id)??[];if(w.length>0){let e=c>0,t=eF(i.direction);b.ports=w.map(i=>{let r="in"===i.direction?t.targetSide:t.sourceSide,n="N"===r?"in"===i.direction?"W":"E":r;return{id:i.id,...e&&("N"===r||"BT"===y)?{layoutOptions:{"elk.port.side":ia(n)}}:{}}}),e&&(b.layoutOptions["elk.portConstraints"]="FIXED_SIDE")}for(let e of h?t4(t.nodeIds,i.edges):t.nodeIds){let t=i.nodes.get(e);t&&b.children.push(is(e,t,n,d,y,r.stateVisual,r.nodeSizes?.get(e),r.markerPortExtents?.get(e)))}for(let f of t.children)b.children.push(e(f,i,r,n,o,a,s,l,d,h,g,u,y));for(let{index:e,edge:i}of a.get(t.id)??[]){let t={id:`e${e}`,sources:[d.byEndpoint.get(it(e,"source"))?.portId??i.source],targets:[d.byEndpoint.get(it(e,"target"))?.portId??i.target]};if(i.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(i.label,i.labelContent),n,"edge");t.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!i.label&&g.has(e)&&(t.labels=[t9(g.get(e))]);b.edges.push(t)}for(let e of l.get(t.id)??[])b.edges.push(e);return b}(r,e,t,i,u,z,C,I,N,B,x,P,e.direction));continue}let n=e.nodes.get(d);!n||c.has(d)||p.has(d)||A.children.push(is(d,n,i,N,e.direction,t.stateVisual,t.nodeSizes?.get(d),t.markerPortExtents?.get(d)))}for(let{index:e,edge:t}of z.get(null)){let r={id:`e${e}`,sources:[N.byEndpoint.get(it(e,"source"))?.portId??t.source],targets:[N.byEndpoint.get(it(e,"target"))?.portId??t.target]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(t.label,t.labelContent),i,"edge");r.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&x.has(e)&&(r.labels=[t9(x.get(e))]);A.edges.push(r)}for(let e of I.get(null)??[])A.edges.push(e);return function(e,t,i){if(!i)return;let r=new Map,n=e=>{for(let t of e.children??[])r.set(t.id,{node:t,parent:e}),n(t)};n(e);let o=e=>{let i=r.get(e);return i&&t.nodes.has(e)||tp(`unknown node "${e}"`),i},a=new Set;if(i.ranks)for(let[e,t]of Object.entries(i.ranks)){let{node:i,parent:r}=o(e);(!Number.isSafeInteger(t)||t<0||t>1e4)&&tp(`rank for "${e}" must be an integer in [0,10000]`),a.add(r),r.layoutOptions={...r.layoutOptions,"elk.partitioning.activate":"true"},i.layoutOptions={...i.layoutOptions,"elk.partitioning.partition":String(t)}}for(let e of a)for(let t of e.children??[])t.layoutOptions={"elk.partitioning.partition":"0",...t.layoutOptions};let s=new Set;for(let e of i.adjacent??[]){e.length<2&&tp("adjacent needs two or more nodes");let t=e.map(o),i=t[0].parent;for(let r of(t.some(e=>e.parent!==i)&&tp("adjacent nodes need the same container"),e))s.has(r)&&tp("a node cannot repeat in adjacency groups"),s.add(r);let r=i.children,n=Math.min(...t.map(e=>r.indexOf(e.node)));i.children=[...r.slice(0,n),...t.map(e=>e.node),...r.slice(n).filter(t=>!e.includes(t.id))],i.layoutOptions={...i.layoutOptions,"elk.layered.crossingMinimization.forceNodeModelOrder":"true"}}let l=eR(t.edges),d=new Set((i.shortEdges??[]).map(e=>{let t=l.get(e);return void 0===t&&tp(`unknown edge "${e}"`),t})),h=e=>{for(let t of e.edges??[]){let e=/^e(\d+)(?:_|$)/.exec(t.id);e&&d.has(Number(e[1]))&&(t.layoutOptions={...t.layoutOptions,"elk.layered.priority.shortness":"100","elk.layered.priority.direction":"100"})}e.children?.forEach(h)};h(e)}(A,e,t.layoutHints),P&&C.size>0&&(d=e=>"RIGHT"===e||"LEFT"===e,(g=e=>{let t=d(e.layoutOptions?.["elk.direction"]),i=!1;for(let r of e.children??[])void 0!==r.children&&(!i&&C.has(r.id)&&(i=d(r.layoutOptions?.["elk.direction"])!==t||(r.ports??[]).some(e=>{let i=e.layoutOptions?.["elk.port.side"];return t?"NORTH"===i||"SOUTH"===i:"EAST"===i||"WEST"===i})),g(r));i&&e.layoutOptions?.["elk.layered.crossingMinimization.forceNodeModelOrder"]==="true"&&(e.layoutOptions["elk.layered.crossingMinimization.forceNodeModelOrder"]="false",e.layoutOptions["elk.layered.considerModelOrder.strategy"]??="NODES_AND_EDGES")})(A)),A}function it(e,t){return`${e}:${t}`}function ii(e){return e?.shape==="rectangle"||e?.shape==="diamond"}function ir(e){return({N:0,E:1,S:2,W:3})[e]}function io(e){return+("source"!==e)}function ia(e){switch(e){case"N":return"NORTH";case"E":return"EAST";case"S":return"SOUTH";case"W":return"WEST"}}function is(e,t,i,r,n="TB",o,a,s){let l=a??t8(e,e9(t.label,t.labelContent),t.shape,i,n,o,t.labelBlock),d="LR"===n||"RL"===n,h=d?l.height:l.width;if(!a&&s){let e=Math.max(s.span,Math.min(i.cornerRadius??0,(d?l.width:l.height)/2));if(!(h/(s.count+1)>e)){let t=(s.count+1)*(e+1);Number.isFinite(t)&&t>h&&(h=t)}}let g={id:e,width:d?l.width:h,height:d?h:l.height,labels:[{text:t.label}]},u=r.byNode.get(e);if(u&&u.length>0){let e=u.some(e=>"FIXED_ORDER"===e.constraint)?"FIXED_ORDER":"FIXED_SIDE";g.layoutOptions={...g.layoutOptions??{},"elk.portConstraints":e},g.ports=u.map(e=>({id:e.portId,width:0,height:0,layoutOptions:{"elk.port.side":ia(e.side),"elk.port.index":String(e.slotIndex)}}))}return g}function il(e,t){let i=e=>void 0!==e.direction||e.children.some(i);return!0===t.separateHierarchy||e.subgraphs.some(i)}function id(e,t){if(!e.label||e.concurrencyRegion||void 0===e.headerMinHeight&&0===e.nodeIds.length&&0===e.children.length)return 0;let i=eP(e9(e.label,e.labelContent),t,"group").width;return Math.ceil((e.titleOffset??t.groupLabelPaddingX)+i+t.groupLabelPaddingX)}function ih(e,t,i=eP(e9(e.label,e.labelContent),t,"group")){if(e.concurrencyRegion)return 0;let r=t.groupHeaderFontSize+16+i.height-i.lineHeight;if(void 0===e.headerMinHeight)return r;if(!Number.isFinite(e.headerMinHeight)||e.headerMinHeight<=0)throw RangeError("Invalid internal group header minimum");return Math.max(r,e.headerMinHeight)}function ig(e,t){let i;for(let r=0;r<Math.min(e.length,t.length)&&e[r]===t[r];r++)i=e[r];return i}function iu(e,t=!1){let i=new Set;for(let r of e){if(r.source===r.target||t&&!r.label)continue;let e=JSON.stringify([r.source,r.target]);if(i.has(e))return!0;i.add(e)}return!1}var ic=[{id:"extractEdgesRecursively",after:[],mutates:["extract"],determinism:"pure-order",run:e=>{e.elkResult&&function(e,t,i,n,o,a){let s=new Map,l=new Map,d=(e,t,i)=>{for(let r of(l.set(e.id,{x:t,y:i}),e.children??[]))d(r,t+(r.x??0),i+(r.y??0))};d(e,0,0),function e(t,i,r,n,o){if(t.edges)for(let e of t.edges){let t,a=e.hierarchySegment,s=a?.edgeIndex??parseInt(e.id.substring(1),10);if(isNaN(s))continue;let l=e.container?o.get(e.container):void 0,d=l?.x??r,h=l?.y??n,g=[];if(e.sections&&e.sections.length>0){let t=e.sections[0];if(g.push({x:t.startPoint.x+d,y:t.startPoint.y+h}),t.bendPoints)for(let e of t.bendPoints)g.push({x:e.x+d,y:e.y+h});g.push({x:t.endPoint.x+d,y:t.endPoint.y+h})}if(e.labels&&e.labels.length>0){let i=e.labels[0];null!=i.x&&null!=i.y&&(t={x:i.x+(i.width??0)/2+d,y:i.y+(i.height??0)/2+h})}let u=i.get(s)??[];u.push({order:a?.order??0,points:g,labelPosition:t}),i.set(s,u)}if(t.children)for(let a of t.children)e(a,i,r+(a.x??0),n+(a.y??0),o)}(e,s,0,0,l);let h=0;for(let[e,n]of s){let o,s=t.edges[e];if(!s)continue;let l=[];for(let e of n.sort((e,t)=>e.order-t.order)){let t=l.at(-1),i=t?r([t,...e.points]).slice(1):r(e.points),n=i[0],o=i[1],a=t&&n&&1e-6>Math.abs(t.x-n.x)&&1e-6>Math.abs(t.y-n.y),s=t&&n&&o&&(t.x===n.x&&n.x===o.x&&n.y>=Math.min(t.y,o.y)&&n.y<=Math.max(t.y,o.y)||t.y===n.y&&n.y===o.y&&n.x>=Math.min(t.x,o.x)&&n.x<=Math.max(t.x,o.x));l.push(...a||s?i.slice(1):i)}s.label&&l.length>=2&&(o=n.find(e=>e.labelPosition)?.labelPosition??eB(l));let d=function(e,t,i=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let i=Math.abs(e[t].x-e[t-1].x),n=Math.abs(e[t].y-e[t-1].y);if(i>1&&n>1){r=!0;break}}if(!r)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let o=n[n.length-1],a=e[r],s=Math.abs(a.x-o.x),l=Math.abs(a.y-o.y);if(s>1&&l>1)if(t){let e=i%2==0,r=12*Math.floor(i/2),s=e?t.rightX+r:t.leftX-r;n.push({x:s,y:o.y}),n.push({x:s,y:a.y})}else{let e=(o.y+a.y)/2;n.push({x:o.x,y:e}),n.push({x:a.x,y:e})}n.push(a)}return n}(l,a,h);d!==l&&h++,s.label&&d!==l&&d.length>=2&&(o=eB(d)),i.push({source:s.source,target:s.target,...void 0!==s.id?{id:s.id}:{},label:s.label,...s.labelContent?{labelContent:s.labelContent}:{},style:s.style,hasArrowStart:s.hasArrowStart,hasArrowEnd:s.hasArrowEnd,startMarker:s.startMarker,endMarker:s.endMarker,...s.curve?{curve:s.curve}:{},...s.animate?{animate:!0}:{},...s.animation?{animation:s.animation}:{},points:d,labelPosition:o,inlineStyle:eK(e,t),...s.id&&t.classAssignments.has(s.id)?{classNames:t.classAssignments.get(s.id).split(/\s+/).filter(Boolean)}:{},edgeIndex:e})}}(e.elkResult,e.graph,e.edges,0,0,e.margins),ip(e,e.style)}},{id:"alignLayerNodes",after:["extractEdgesRecursively"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,mayChangeMetrics:{bends:"improve-only",straight:"improve-only"},run:e=>{!function(e,t,i){if(0===e.length)return;let r="LR"===i||"RL"===i,n=new Set,o=new Map;for(let e of t)for(let t of(n.add(`${e.source}:${e.target}`),n.add(`${e.target}:${e.source}`),new Set([e.source,e.target]))){let i=o.get(t)??[];i.push(e),o.set(t,i)}let a=new Map(e.map(e=>[e.id,e])),s=.6*eO.layerSpacing,l=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),d=[],h=[l[0]];for(let e=1;e<l.length;e++){let t=(r?l[e].x:l[e].y)-(r?l[e-1].x:l[e-1].y),i=h.some(t=>n.has(`${t.id}:${l[e].id}`));t<=s&&!i?h.push(l[e]):(d.push(h),h=[l[e]])}d.push(h);let g=new Map,u=(e,i)=>{let n=r?i:e.x,o=r?e.y:i;for(let i of t)if(i.source!==e.id&&i.target!==e.id)for(let t=1;t<i.points.length;t++){let r=i.points[t-1],a=i.points[t],s=Math.min(r.x,a.x),l=Math.max(r.x,a.x),d=Math.min(r.y,a.y),h=Math.max(r.y,a.y);if(l>n+.5&&s<n+e.width-.5&&h>o+.5&&d<o+e.height-.5)return!0}return!1};for(let e of d){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),i=Math.min(...t),n=Math.max(...t);if(n-i<=1)continue;let s=(i+n)/2;if(e.some(e=>Math.abs(s-(r?e.x:e.y))>.5&&u(e,s)))continue;let l=new Map(e.flatMap(e=>{let t=s-(r?e.x:e.y);return Math.abs(t)>.5?[[e.id,t]]:[]})),d=new Map(e.map(e=>[e.id,{...e,...r?{x:e.x+(l.get(e.id)??0)}:{y:e.y+(l.get(e.id)??0)}}])),h=new Set,f=!1;for(let e of l.keys())for(let t of o.get(e)??[]){if(h.has(t)||"invisible"===t.style)continue;h.add(t);let e={...t,points:t2(t.points,r,g.get(t.source),g.get(t.target))},i={...t,points:t2(t.points,r,l.get(t.source)??g.get(t.source),l.get(t.target)??g.get(t.target))},n,o;for(let r of[!0,!1]){let s=r?t.source:t.target,l=a.get(s),h=d.get(s)??l,g=t0(e.points,l,r),u;!0===g?u=t0(i.points,h,r):(n??=t1(e,a.get(t.source),a.get(t.target)),o??=t1(i,d.get(t.source)??a.get(t.source),d.get(t.target)??a.get(t.target)),g=t0(n.points,l,r),u=t0(o.points,h,r)),!0===g&&!0!==u&&(f=!0)}}if(!f)for(let t of e){let e=s-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=s:t.y=s,g.set(t.id,e))}}if(0!==g.size)for(let e of t)e.points=t2(e.points,r,g.get(e.source),g.get(e.target))}(e.nodes,e.edges,e.graph.direction)}},{id:"equalizePeerNodeDimensions",after:["alignLayerNodes"],mutates:["positions","dimensions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map,l=new Map;for(let e of t)X(e,a,r.direction)&&(s.has(e.target)||s.set(e.target,[]),s.get(e.target).push(e),l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=[],h=e=>{if(e.length<2||e.length>5||!e.every(e=>"rectangle"===e.shape)||e.some(e=>K(e,i))||!G(e,r.direction))return;let t=e.map(e=>e.id).sort().join("\0");d.some(e=>e.map(e=>e.id).sort().join("\0")===t)||d.push(e)};for(let e of s.values()){let i=e[0]?.target,r=e.map(e=>a.get(e.source)).filter(Boolean);i&&r.every(e=>t.every(t=>t.source!==e.id||t.target===i))&&h(r)}for(let e of l.values()){let i=e[0]?.source,r=e.map(e=>a.get(e.target)).filter(Boolean);if(!i||!r.every(e=>t.every(t=>t.target!==e.id||t.source===i)&&t.every(t=>t.source!==e.id)))continue;let n=!0;for(let e=0;e<r.length;e++)for(let t=0;t<r.length;t++)e!==t&&o(r[e].id,r[t].id)&&(n=!1);n&&h(r)}let g=!1,u,f=eF(r.direction);for(let t of d){let i=Math.max(...t.map(e=>e.width)),n=Math.max(...t.map(e=>e.height));if(t.every(e=>.5>Math.abs(e.width-i)&&.5>Math.abs(e.height-n)))continue;u??=e.map(e=>({...e}));let o=[...t].sort((e,t)=>e_(e,r.direction)-e_(t,r.direction)),a=Math.min(...o.map(e=>e_(e,r.direction))),l=Math.min(...o.map(e=>eT(e,r.direction))),d=[];for(let e of o)d.push({node:e,x:f.isHorizontal?l:a,y:f.isHorizontal?a:l}),a+=(f.isHorizontal?n:i)+24;let h=new Set(t.map(e=>e.id)),c=(e,t,i,r)=>e<r-.01&&i<t-.01,p=e=>{let t=f.isHorizontal?e.x:e.y;return[t,t+(f.isHorizontal?e.width:e.height)]},y=e=>{let t=f.isHorizontal?e.y:e.x;return[t,t+(f.isHorizontal?e.height:e.width)]},m=d.map(({node:e,x:t,y:r})=>({id:e.id,x:t,y:r,width:i,height:n,orig:p(e)})),x=0,b=new Set;for(let t of m){let[i,r]=p(t),[n,o]=y(t),[a,s]=t.orig;for(let t of e){if(h.has(t.id))continue;let[e,l]=p(t),[d,g]=y(t);c(i,r,e,l)&&!c(a,s,e,l)&&c(n,o,d,g)&&(b.add(t.id),x=Math.max(x,r+24-e))}}let w=new Set,M=e=>{if(!(w.has(e)||h.has(e)))for(let t of(w.add(e),s.get(e)??[]))M(t.source)};for(let e of b)M(e);let v=e.filter(e=>w.has(e.id)),S=new Map(v.map(e=>[e.id,p(e)])),k=[...t,...v].map(e=>({n:e,x:e.x,y:e.y,w:e.width,h:e.height}));if(x>0)for(let e of v)e[f.main]+=x;for(let{node:e,x:t,y:r}of d)e.x=t,e.y=r,e.width=i,e.height=n;let E=new Set([...h,...w]);if([...t,...v].some(t=>{let[i,r]=p(t),[n,o]=y(t),[a,s]=S.get(t.id)??m.find(e=>e.id===t.id).orig;return e.some(e=>{if(E.has(e.id))return!1;let[t,l]=p(e),[d,h]=y(e);return c(i,r,t,l)&&!c(a,s,t,l)&&c(n,o,d,h)})})){for(let e of k)e.n.x=e.x,e.n.y=e.y,e.n.width=e.w,e.n.height=e.h;continue}g=!0}g&&(q(e,r.direction),function(e,t,i,r,n){let o=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>1e-6&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>1e-6,a=e=>({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height}),s=new Map(e.map(e=>[e.id,e])),l=new Map(t.map(e=>[e.id,e])),d=i.flatMap(e=>{let t=eI(e,n);if(!t)return[];let i=Math.max(4,n.lineWidth*("thick"===e.style?2:1)*2);return[{x0:t.x-i,y0:t.y-i,x1:t.x+t.w+i,y1:t.y+t.h+i}]});for(let i of d)if(t.some((t,r)=>o(i,a(t))&&!o(i,a(e[r]))))return!1;for(let h of i){let i=U(h,n);if(0===i.length)continue;let g=h.points,u=l.get(h.source),f=l.get(h.target);u&&(g=es(g,u,!0)),f&&(g=es(g,f,!1));let c={...h,points:g};for(let e of(ex(t,[c],r,n),g=c.points,[!0,!1])){if(!(e?h.hasArrowStart:h.hasArrowEnd))continue;let t=e?h.source:h.target,i=s.get(t),r=l.get(t),n=e?h.points:[...h.points].reverse(),o=e?g:[...g].reverse(),a=n[0],d=o[0],u=a&&n.find(e=>e.x!==a.x||e.y!==a.y),f=d&&o.find(e=>e.x!==d.x||e.y!==d.y);if(i&&a&&u&&!0===eo(i,a,u)&&(!r||!d||!f||!0!==eo(r,d,f)))return!1}let p=U(c,n);for(let r=0;r<i.length;r++){let n=i[r],s=p[r];if(!n.bounds)continue;if(!s?.bounds)return!1;let l="start"===s.position?h.source:h.target;if(t.some((t,i)=>t.id!==l&&o(s.bounds,a(t))&&!o(n.bounds,a(e[i])))||d.some(e=>o(e,s.bounds)&&!o(e,n.bounds)))return!1}}return!0}(u,e,t,r,n)||e.forEach((e,t)=>{let i=u[t];e.x=i.x,e.y=i.y,e.width=i.width,e.height=i.height}))}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignForkRejoinPeerCenters",after:["equalizePeerNodeDimensions"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)X(e,a,r.direction)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));let l=e=>t.filter(t=>t.target===e&&X(t,a,r.direction)).length,d=e=>t.filter(t=>t.source===e&&t.target!==e&&X(t,a,r.direction)),h=(e,t)=>{let i=[],r=new Set(t),n=[e];for(;n.length>0;){let e=n.shift();if(!r.has(e.id))for(let t of(r.add(e.id),i.push(e),d(e.id))){let e=a.get(t.target);!e||r.has(e.id)||1===l(e.id)&&n.push(e)}}return i};for(let[l,g]of s){if(3!==g.length)continue;let s=a.get(l);if(!s||"diamond"!==s.shape||K(s,i))continue;let u=[...g].sort((e,t)=>eW(a.get(e.target),r.direction)-eW(a.get(t.target),r.direction)),f=u.map(e=>a.get(e.target)).filter(e=>!!e);if(f.length!==u.length||!f.every(e=>"rectangle"===e.shape&&!K(e,i))||!G(f,r.direction,28))continue;let c=!0;for(let e=0;e<f.length;e++)for(let t=0;t<f.length;t++)e!==t&&o(f[e].id,f[t].id)&&(c=!1);if(!c)continue;let p=f.map(e=>d(e.id));if(!p.every(e=>1===e.length))continue;let y=p[0][0].target;if(!p.every(e=>e[0].target===y))continue;let m=a.get(y);if(!m||K(m,i))continue;let x=new Set(f.map(e=>e.id));for(let e of h(m,x))x.add(e.id);if([...x].some(e=>{let t=a.get(e);return!t||K(t,i)}))continue;let b=(eW(f[0],r.direction)+eW(f[f.length-1],r.direction))/2,w=eW(s,r.direction)-b;.5>=Math.abs(w)||ey(x,e,t,r.direction,w,n)&&(eL("[fork-rejoin] center",s.id,"peer island by",w.toFixed(1)),ec(x,e,t,r.direction,w))}}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignPortLanes",after:["alignForkRejoinPeerCenters"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult,mayChangeMetrics:{straight:"improve-only",portRate:"improve-only",bends:"improve-only"},run:e=>{!function(e,t,i,r,n){if(!tV(e,t,i))return;let{nodes:o,edges:a}=tY(e,t);!function(e,t,i,r,n){let o="LR"===r||"RL"===r,a=o?"y":"x",s=o?"x":"y",l="LR"===r||"TD"===r?1:-1,d=new Set,h=e=>o?e.height:e.width,u=e=>e[a]+h(e)/2,f=new Map(e.map(e=>[e.id,e])),c=[],p=e=>{for(let t of e)c.push(t),p(t.children)};p(i);let y=e=>c.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),m=(e,t,i,r,n,o,a,s)=>e<n+a&&e+i>n&&t<o+s&&t+r>o,x=e=>o?e.width:e.height,b=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[a]-4&&t<e[a]+h(e)+4&&r>e[s]-4&&i<e[s]+x(e)+4),w=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[s]-4&&t<e[s]+x(e)+4&&r>e[a]-4&&i<e[a]+h(e)+4),M=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=i;for(;o>=0&&o<e.length&&.5>=Math.abs(e[o][a]-n);)o+=r;if(o<0||o>=e.length)return null;let l=e[o],d=e[o-r];return{mainPos:l[s],far:l[a],orthogonal:.5>=Math.abs(l[s]-d[s])}},v=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=1/0,l=-1/0;for(let t=i;t>=0&&t<e.length&&!(Math.abs(e[t][a]-n)>.5);t+=r)o=Math.min(o,e[t][s]),l=Math.max(l,e[t][s]);return{ref:n,lo:o,hi:l}},S=(e,t,i,r,n=!1)=>{let o=e.points,s=t?o.length-1:0,l=t?-1:1,d=t?0:o.length-1,h=o[s][a],g=1/0,u=-1/0;for(let e=s;e>=0&&e<o.length&&.5>=Math.abs(o[e][a]-h)&&!(n&&e===d);e+=l)g=Math.min(g,e),u=Math.max(u,e);if(u<g)return!1;let f=e=>e>=g&&e<=u?{...o[e],[a]:o[e][a]+i}:o[e];for(let e=Math.max(1,g);e<=Math.min(o.length-1,u+1);e++)if(A(f(e-1),f(e),r))return!0;return!1},k=(i,r,l,h=!1)=>{if(d.has(i.id)||y(i))return!1;let g=f.get(l.source),c=f.get(l.target);if(b(u(i.id===l.source?c:g),Math.min(g[s]+x(g)/2,c[s]+x(c)/2),Math.max(g[s]+x(g)/2,c[s]+x(c)/2),new Set([l.source,l.target])))return!1;for(let e of t){let t=e.source===i.id,n=e.target===i.id;if(!t&&!n)continue;let o=e===l;if(o&&2===e.points.length&&.5>=Math.abs(e.points[0][a]-e.points[1][a]))continue;if(!o){if(e.points.length<3)return!1;let t=n?e.points[e.points.length-1]:e.points[0];if(!e.points.some(e=>Math.abs(e[a]-t[a])>.5))return!1}let s=new Set([e.source,e.target]),d=v(e.points,n);if(b(d.ref+r,d.lo,d.hi,s))return!1;let g=M(e.points,n);if(g){if(!g.orthogonal)return!1;let e=Math.min(d.ref+r,g.far),t=Math.max(d.ref+r,g.far);if(w(g.mainPos,e,t,s))return!1}let u=f.get(n?e.source:e.target);if(u&&u!==i&&!(o&&h)&&S(e,n,r,u))return!1}let p=o?i.x:i.x+r,k=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(e.source!==i.id&&e.target!==i.id)for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>p+.5&&Math.min(r.x,n.x)<p+i.width-.5&&Math.max(r.y,n.y)>k+.5&&Math.min(r.y,n.y)<k+i.height-.5)return!1}for(let e of t){if(e===l)continue;let t=eI(e,n);if(t&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},E=(e,t,i,r=!1)=>{let n=e.points,o=t?n.length-1:0,l=t?-1:1,d=t?0:n.length-1,h=n[o][a],g=1/0,u=-1/0;for(let e=o;e>=0&&e<n.length&&!(Math.abs(n[e][a]-h)>.5||r&&e===d);e+=l)g=Math.min(g,n[e][s]),u=Math.max(u,n[e][s]),n[e][a]+=i;e.labelPosition&&12>=Math.abs(e.labelPosition[a]-h)&&e.labelPosition[s]>=g-.5&&e.labelPosition[s]<=u+.5&&(e.labelPosition[a]+=i)},P=(e,i,r)=>{for(let n of(o?e.y+=i:e.x+=i,t)){if(n===r||0===n.points.length)continue;let t=n.source===e.id,o=n.target===e.id;if(t&&o){for(let e of n.points)e[a]+=i;n.labelPosition&&(n.labelPosition[a]+=i);continue}o&&E(n,!0,i),t&&E(n,!1,i)}let n=r.points[0],s=r.points[r.points.length-1];2===r.points.length&&.5>=Math.abs(n[a]-s[a])?(r.points=[eM(f.get(r.source))[o?l>0?"E":"W":l>0?"S":"N"],eM(f.get(r.target))[o?l>0?"W":"E":l>0?"N":"S"]],r.labelPosition&&(r.labelPosition[a]=u(f.get(r.source)))):E(r,r.target===e.id,i)},N=e=>{if(e.points.length<2||e.source===e.target)return!1;let t=g(e.points);for(let e=1;e<t.length;e++)if((t[e][s]-t[e-1][s])*l<-.5)return!1;return!0},C=(i,r,a)=>{let s=o?i.x:i.x+r,l=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(!a.has(`${e.source}->${e.target}`))for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>s+.5&&Math.min(r.x,n.x)<s+i.width-.5&&Math.max(r.y,n.y)>l+.5&&Math.min(r.y,n.y)<l+i.height-.5)return!1}for(let e of t){if(a.has(`${e.source}->${e.target}`))continue;let t=eI(e,n);if(t&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},I=new Set,L=e=>t.filter(t=>t.source===e&&N(t)),R=e=>t.filter(t=>t.target===e&&N(t)).length,O=e=>{let t=[],i=new Set,r=[e];for(;r.length>0;){let e=r.shift();if(!i.has(e.id))for(let n of(i.add(e.id),t.push(e),L(e.id))){let e=f.get(n.target);!e||i.has(e.id)||1===R(e.id)&&r.push(e)}}return t},$=e=>2===e.points.length&&Number(tn(e.points[0][a]))===Number(tn(e.points[1][a]))&&Number(tn(e.points[0][s]))!==Number(tn(e.points[1][s])),z=(e,t,i)=>{if(e.routeCertificate)return;let r=f.get(e.source),n=f.get(e.target);if(!r||!n)return;let d=t.has(r.id)?{...r,[a]:r[a]+i}:r,h=t.has(n.id)?{...n,[a]:n[a]+i}:n,g=eM(d)[o?l>0?"E":"W":l>0?"S":"N"],u=eM(h)[o?l>0?"W":"E":l>0?"N":"S"];if(!(![g.x,g.y,u.x,u.y].every(Number.isFinite)||Number(tn(g[a]))!==Number(tn(u[a])))&&!(l>0?Number(tn(g[s]))>=Number(tn(u[s])):Number(tn(g[s]))<=Number(tn(u[s]))))return[g,u]},B=(i,r)=>{let n=new Set(i.map(e=>e.id));for(let t of i){let i=o?t.x:t.x+r,a=o?t.y+r:t.y;for(let r of e)if(!n.has(r.id)&&m(i-8,a-8,t.width+16,t.height+16,r.x,r.y,r.width,r.height))return!1}for(let e of t){let t=n.has(e.source),i=n.has(e.target);if(t===i||0===e.points.length)continue;if($(e)&&!z(e,n,r))return!1;let o=f.get(i?e.source:e.target);if(o&&S(e,i,r,o,!0))return!1}return!0},F=(e,i)=>{let r=new Set(e.map(e=>e.id)),n=new Map;for(let e of t)if(r.has(e.source)!==r.has(e.target)&&$(e)){let t=z(e,r,i);if(!t)return!1;n.set(e,t)}for(let t of e)o?t.y+=i:t.x+=i;for(let e of t){let t=r.has(e.source),o=r.has(e.target);if(t&&o){for(let t of e.points)t[a]+=i;e.labelPosition&&(e.labelPosition[a]+=i)}else n.has(e)?(e.points=n.get(e),e.labelPosition&&(e.labelPosition[a]=e.points[0][a])):o?E(e,!0,i,!0):t&&E(e,!1,i,!0)}return!0};for(let i of eU("APL_NO_CENTER")?[]:e){if(d.has(i.id)||y(i)||!eb.has(i.shape))continue;let e=t.filter(e=>e.target===i.id&&e.source!==i.id&&e.points.length>=2),r=new Map,n=e.length>=2;for(let t of e){if(t.label||!N(t)){n=!1;break}let e=f.get(t.source);if(!e||!eb.has(e.shape)){n=!1;break}r.set(e.id,e)}if(!n||r.size<2||t.filter(e=>e.source===i.id&&e.target!==i.id&&N(e)).length>1)continue;let o=[...r.values()],a=o.map(e=>e[s]+x(e)/2);if(Math.max(...a)-Math.min(...a)>Math.max(...o.map(x))+.6*eO.layerSpacing)continue;let l=o.reduce((e,t)=>e+u(t),0)/o.length-u(i);if(.5>=Math.abs(l)){I.add(i.id);continue}let h=O(i),g=new Set(t.filter(e=>e.source===i.id||e.target===i.id).map(e=>`${e.source}->${e.target}`));if(!(!C(i,l,g)||!B(h,l))&&(eL("[apl] center hub",i.id,"by",l.toFixed(1),"over",o.length,"sources"),F(h,l))){for(let e of h)I.add(e.id),d.add(e.id);for(let t of e)d.add(t.source)}}let T=new Set;if(!eU("APL_NO_FACET")){let i=()=>o?l>0?["NE","SE"]:["NW","SW"]:l>0?["SW","SE"]:["NW","NE"];for(let r of e){if("diamond"!==r.shape||d.has(r.id)||y(r))continue;let e=t.filter(e=>e.source===r.id&&e.target!==r.id&&e.points.length>=2&&N(e));if(2!==e.length||e.some(e=>{let t=f.get(e.target);return!t||!eb.has(t.shape)})||e.some(e=>d.has(e.target)||I.has(e.target)||y(f.get(e.target))))continue;let n=[...e].sort((e,t)=>u(f.get(e.target))-u(f.get(t.target))),[s,h]=i(),g=eS(r),c=[[n[0],s],[n[1],h]],p=eM(r),x=c.map(([e,t])=>({edge:e,src:{x:g[t].x,y:g[t].y},cross:g[t][a]})),b=!o&&c[0]&&c[1]?[{edge:c[0][0],src:{x:p.W.x,y:p.W.y},cross:p.W[a]},{edge:c[1][0],src:{x:p.E.x,y:p.E.y},cross:p.E[a]}]:null,w=e=>{let[t,i]=e.map(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return{x:o?t.x:t.x+i,y:o?t.y+i:t.y,w:t.width,h:t.height}});return!!(t&&i&&m(t.x-8,t.y-8,t.w+16,t.h+16,i.x,i.y,i.w,i.h))},M=e=>e.every(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return .5>=Math.abs(i)||k(t,i,e.edge,!0)}),v=e=>!!e&&M(e)&&!w(e),S;if(v(x))S=x;else{if(!v(b))continue;S=b}let P=o?l>0?"W":"E":l>0?"N":"S";for(let e of S){let i=e.edge,r=f.get(i.target),n=e.cross-u(r);if(Math.abs(n)>.5)for(let e of(o?r.y+=n:r.x+=n,t)){if(e===i)continue;let t=e.source===r.id,o=e.target===r.id;if(t&&o){for(let t of e.points)t[a]+=n;e.labelPosition&&(e.labelPosition[a]+=n)}else o?E(e,!0,n):t&&E(e,!1,n)}i.points=[{x:e.src.x,y:e.src.y},eM(r)[P]],i.labelPosition&&(i.labelPosition[a]=e.cross),T.add(i),d.add(i.target)}d.add(r.id)}}if(!eU("APL_NO_SVERTEX"))for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||"diamond"!==r.shape||d.has(i.id)||d.has(r.id)||y(i)||y(r)||!N(e)||e.label)continue;let n=r[a]+h(r)/2;if(!t.some(t=>{if(t===e||t.target!==r.id||!N(t)||t.points.length<2)return!1;let i=f.get(t.source);return!!i&&Math.abs(i[a]+h(i)/2-n)<=h(r)/2}))continue;let g=r[a]+h(r)/2,c=i[a]+h(i)/2,p=c>g,m=o?p?"S":"N":p?"E":"W",x=eM(r)[m];if(Math.abs(c-g)<.5*(h(r)/2))continue;let w=x[a]-u(i);if(Math.abs(w)>.5&&!k(i,w,e,!0))continue;let M=o?l>0?"E":"W":l>0?"S":"N",v=eM(i)[M],S=Math.min(v[s],x[s]),P=Math.max(v[s],x[s]);if(!((x[s]-v[s])*l<=.5)&&!b(x[a],S,P,new Set([i.id,r.id]))){if(eL("[apl] svertex",e.source,"->",e.target,"into",m,"vertex"),Math.abs(w)>.5)for(let r of(o?i.y+=w:i.x+=w,t)){if(r===e)continue;let t=r.source===i.id,n=r.target===i.id;if(t&&n){for(let e of r.points)e[a]+=w;r.labelPosition&&(r.labelPosition[a]+=w)}else n?E(r,!0,w):t&&E(r,!1,w)}e.points=[{x:eM(i)[M].x,y:eM(i)[M].y},{x:x.x,y:x.y}],T.add(e),d.add(i.id),d.add(r.id)}}let _,H=e=>void 0!==tj(e,t.filter(t=>t.source===e.id&&X(t,f,r)),t,f,i,r,_??=e$(t));for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||!eb.has(i.shape)||!eb.has(r.shape)||I.has(r.id)||"diamond"===i.shape&&t.some(t=>t!==e&&t.source===e.source&&N(t)))continue;let n=u(i)-u(r);if(.5>=Math.abs(n)||!N(e)||g(e.points).length>4)continue;let o=k(r,n,e)?r:!H(i)&&k(i,-n,e)?i:null;o&&(eL("[apl] slide",o.id,"by",(o===r?n:-n).toFixed(1),"for",e.source,"->",e.target),P(o,o===r?n:-n,e),d.add(e.source),d.add(e.target))}}(o,a,i,r,n);let s=tU();(tG(o,a,e,t,i,n,s)||!(s.remaining<0)&&(ex(o,a.filter((e,i)=>tX(e,t[i])),{direction:r},n),tG(o,a,e,t,i,n,s)))&&(H({nodes:o,edges:a},!0)+1e-6<H({nodes:e,edges:t},!0)||tq(e,t,o,a))}(e.nodes,e.edges,e.groups,e.graph.direction,e.style)}},{id:"centerPeerBarycenters",proposal:!0,after:["alignPortLanes"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{let t;return function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=!eU("APL_NO_CORANK_FANIN"),d=(e,t,n=!1)=>{if(e.length<2||e.length>6)return;let o=e[0].style;if(e.some(e=>e.style!==o)||!n&&e.some(e=>e.label))return;let l=e.map(e=>e[t]);if(new Set(l).size!==l.length)return;let d=l.map(e=>s.get(e)).filter(e=>!!e);if(d.length!==l.length)return;let h="source"===t?e=>eb.has(e.shape):e=>"rectangle"===e.shape;if(d.every(e=>h(e)&&!K(e,i))&&G(d,r.direction,28)){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return d}};for(let a=0;a<3;a++){let a=new Map,h=new Map;for(let e of t)X(e,s,r.direction)&&(a.has(e.source)||a.set(e.source,[]),a.get(e.source).push(e),h.has(e.target)||h.set(e.target,[]),h.get(e.target).push(e));let g=!1,u=e=>e.reduce((e,t)=>e+eW(t,r.direction),0)/e.length,f=(e,i)=>i.every(i=>t.every(t=>t.source!==i.id&&(t.target!==i.id||t.source===e))),c=(e,t)=>t.length>=2&&t.length<=3&&f(e,t),p=(a,s,l)=>{if(!a||!eb.has(a.shape)||K(a,i))return;let d=l?u(l):void 0,h=s?u(s):void 0;if(void 0!==d&&void 0!==h&&s.length>=4&&f(a.id,s)&&Math.abs(d-h)>1.5){let i=new Set(s.map(e=>e.id)),l=new Set([a.id]),u=d-h,f=d-eW(a,r.direction);if(ey(i,e,t,r.direction,u,n)&&ey(l,e,t,r.direction,f,n)){o?.(),ec(i,e,t,r.direction,u),Math.abs(f)>.5&&ec(l,e,t,r.direction,f),eL("[peer-barycenter] trunk-shift",a.id,"outs by",u.toFixed(1)),g=!0;return}}let p=[];if(void 0!==d&&p.push(d),void 0===h||s&&c(a.id,s)||p.push(h),0===p.length&&void 0!==h&&p.push(h),0===p.length)return;let y=(1===p.length?p[0]:(Math.min(...p)+Math.max(...p))/2)-eW(a,r.direction);if(.5>=Math.abs(y))return;let m=new Set([a.id]);ey(m,e,t,r.direction,y,n)&&(eL("[peer-barycenter] center",a.id,"by",y.toFixed(1),2===p.length?"(mixed)":""),o?.(),ec(m,e,t,r.direction,y),g=!0)};for(let e of[...new Set([...a.keys(),...h.keys()])].sort()){let t=a.get(e),i=h.get(e),r=t?d(t,"target"):void 0,n=i?d(i,"source",l):void 0;p(s.get(e),r,n)}if(!g)break}}(e.nodes,e.edges,e.groups,e.graph,e.style,()=>{let i,r;t??=(i=e.nodes.map(e=>({node:e,x:e.x,y:e.y})),r=e.edges.map(e=>({edge:e,points:e.points.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0})),()=>{for(let{node:e,x:t,y:r}of i)e.x=t,e.y=r;for(let{edge:e,points:t,labelPosition:i}of r)e.points=t,e.labelPosition=i})}),t}},{id:"honorLinkRankDistance",after:["centerPeerBarycenters"],mutates:["positions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r){if(!r.edges.some(e=>(e.length??1)>1))return;let n=h(r),o=eF(r.direction),a=new Map(e.map(e=>[e.id,e])),l=new Map,d=e=>{for(let t of e)l.set(t.id,t),d(t.children)};d(i);let u=(e,t)=>{for(let i of e.nodeIds)t.push(i);for(let i of e.children)u(i,t)},f=e=>{if(a.has(e))return[e];let t=eX(r.subgraphs,e);if(!t)return[];let i=[];return u(t,i),i},c=new Map,p=(e,t)=>{for(let i of e){let e=[...t,i.id];for(let t of i.nodeIds)c.set(t,e);p(i.children,e)}};p(r.subgraphs,[]);let y=(e,t)=>{if(l.has(t))return f(t);let i=c.get(t)??[],r=new Set(c.get(e)??[]);for(let t of(l.has(e)&&r.add(e),i))if(!r.has(t))return f(t);return[t]},m=e=>{let t=r.edges[e];return"feedback"===n[e]?{source:t.target,target:t.source}:{source:t.source,target:t.target}},x=e=>{let t=a.get(e);if(t)return{start:t[o.main],size:eD(t,r.direction)};let i=l.get(e);return i?{start:i[o.main],size:"x"===o.main?i.width:i.height}:null},b=e=>{let t=x(e);return t?1===o.sign?t.start:t.start+t.size:null},w=e=>{let t=x(e);return t?1===o.sign?t.start+t.size:t.start:null},M=(e,t)=>{let i=w(e),r=b(t);return null!==i&&null!==r&&(r-i)*o.sign>0},v=new Map;for(let e=0;e<r.edges.length;e++){let t=m(e);if(M(t.source,t.target))for(let e of f(t.source))for(let i of f(t.target))v.has(e)||v.set(e,[]),v.get(e).push(i)}let S=new Map,k=new Set,E=(e,t)=>{if(.5>Math.abs(t))return;let i=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(i.has(e))continue;i.add(e);let n=a.get(e);if(n){let i=n[o.main];n[o.main]+=t,n[o.main]!==i&&k.add(n),S.set(e,(S.get(e)??0)+t)}for(let t of v.get(e)??[])r.push(t)}},P=new Map,N=e=>{let t=1/0,i=1/0,n=-1/0,o=-1/0,s=eX(r.subgraphs,e.id);for(let e of s?.nodeIds??[]){let r=a.get(e);r&&(t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height))}for(let r of e.children)t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height);return Number.isFinite(t)?{x:t,y:i,r:n,b:o}:null},C=e=>{for(let t of e.children)C(t);let t=N(e);t&&P.set(e.id,{l:t.x-e.x,t:t.y-e.y,r:e.x+e.width-t.r,b:e.y+e.height-t.b})},I=e=>{for(let t of e.children)I(t);let t=N(e),i=P.get(e.id);t&&i&&(e.x=t.x-i.l,e.y=t.y-i.t,e.width=t.r+i.r-e.x,e.height=t.b+i.b-e.y)};for(let e of i)C(e);let L=(e,t)=>{let i=Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x),r=Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y);return i>.5&&r>.5},R=(e,t)=>e.id<t.id?`${e.id}\0${t.id}`:`${t.id}\0${e.id}`,O=new Set;for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)L(e[t],e[i])&&O.add(R(e[t],e[i]));let $=new Map,z=(t,i)=>{let r=e[t],n=e[i],o=t*e.length+i,a=R(r,n);O.has(a)||!L(r,n)?$.delete(o):$.has(o)||$.set(o,{a:r,b:n,key:a,index:o})},B=()=>{if(k.size){if(k.size>e.length/2)for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)z(t,i);else for(let t=0;t<e.length;t++)if(k.has(e[t]))for(let i=0;i<e.length;i++)t===i||i<t&&k.has(e[i])||z(Math.min(t,i),Math.max(t,i));k.clear()}};for(let e=0;e<r.edges.length;e++){let t=r.edges[e],i=m(e),n=t.length??1;if(n<=1||!M(i.source,i.target))continue;let a=w(i.source),s=b(i.target);if(null===a||null===s)continue;let l=(s-a)*o.sign,d=tl(n,eO.layerSpacing);l<d&&E(y(i.source,i.target),(d-l)*o.sign)}if(!k.size)return;B();let F=(e,t)=>{let i=new Set(c.get(t)??[]);for(let t of c.get(e)??[])if(!i.has(t))return f(t);return[e]};for(let t=0;t<4*e.length;t++){let e;for(let t of $.values())(!e||t.key<e.key||t.key===e.key&&t.index<e.index)&&(e=t);if(!e)break;let{a:t,b:i}=e,n=(ej(t,r.direction)-ej(i,r.direction))*o.sign,[a,s]=(0!==n?n>0:t.id>i.id)?[i,t]:[t,i],l=1===o.sign?a[o.main]+eD(a,r.direction)+eO.nodeSpacing-s[o.main]:s[o.main]+eD(s,r.direction)+eO.nodeSpacing-a[o.main];E(F(s.id,a.id),1===o.sign?l:-l),B()}let T=new Map;for(let[e,t]of l)T.set(e,{start:t[o.main],size:"x"===o.main?t.width:t.height});for(let e of i)I(e);let _=e=>eW(e,r.direction)+eH(e,r.direction)/2,H=e=>eW(e,r.direction)-eH(e,r.direction)/2,D=Math.max(...e.map(_))+10,W=Math.min(...e.map(H))-10,j=(e,t)=>"x"===o.main?{x:e,y:t}:{x:t,y:e},V=(e,t)=>{let i=a.get(e);if(i)return eM(i)[t];let r=l.get(e);if(!r)return null;let n=r.x+r.width/2,o=r.y+r.height/2;switch(t){case"E":return{x:r.x+r.width,y:o};case"W":return{x:r.x,y:o};case"S":return{x:n,y:r.y+r.height};default:return{x:n,y:r.y}}},X=e=>{for(let t of l.values()){if(t.concurrencyRegion||0===t.width)continue;let i=t.headerHeight??t.height;if(!Number.isFinite(i)||i<0)return!1;if(!(0===i||t.width<=0))for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r];if(Math.max(n.x,o.x)>t.x&&Math.min(n.x,o.x)<t.x+t.width&&Math.max(n.y,o.y)>t.y&&Math.min(n.y,o.y)<t.y+i)return!1}}return!0},U=t=>{let i=new Set;for(let r of e)i.add(r[t]),i.add(r[t]+("x"===t?r.width:r.height));for(let e of l.values()){let r=e.concurrencyRegion?0:e.headerHeight??e.height;r>0&&Number.isFinite(r)&&e.width>0&&(i.add(e[t]),i.add(e[t]+("x"===t?e.width:r)))}let r=[...i].sort((e,t)=>e-t),n=[];for(let e=1;e<r.length;e++)r[e]-r[e-1]>2&&n.push((r[e]+r[e-1])/2);return t===o.cross&&l.size&&r.length>0&&n.push(r[0]-10,r.at(-1)+10),n},G="x"===o.main?"y":"x",Y=(e,t)=>[...e].sort((e,i)=>Math.abs(e-t)-Math.abs(i-t)||e-i).slice(0,16),q=new Map,Q=(e,t)=>{for(let i of e)q.set(i.id,t),Q(i.children,i.id)};Q(r.subgraphs);let K=(e,t)=>{if((c.get(t)??[]).includes(e))return!0;for(let i=q.get(t);void 0!==i;i=q.get(i))if(i===e)return!0;return!1},J=(e,t)=>{for(let i of[t.source,t.target]){let t=a.get(i);if(t){for(let i=1;i<e.length;i++)if(A(e[i-1],e[i],t))return!1}}return!0},Z=e=>{let t=a.get(e),i=l.get(e),r=T.get(e);return t?S.get(e)??0:i&&r?i[o.main]-r.start:void 0},ee=(e,t)=>{let i=a.get(e),n=S.get(e)??0,s=new Set(c.get(t)??[]);l.has(t)&&s.add(t);let d=l.has(e)?e:(c.get(e)??[]).find(e=>!s.has(e));if(d&&l.has(d)){let e=T.get(d),t=l.get(d),r=f(d),n=r.length?S.get(r[0])??0:0;if(r.every(e=>(S.get(e)??0)===n)&&("x"===o.main?t.width:t.height)===e.size)return{...e,delta:t[o.main]-e.start};if(!i)return null}return i?{start:i[o.main]-n,size:eD(i,r.direction),delta:n}:null},et=t=>{let i=ee(t.source,t.target),r=ee(t.target,t.source);if(!i||!r||t.points.length<2)return null;let[n,a]=i.start<=r.start?[i,r]:[r,i],s=n.start+n.size,l=a.start,d=l-s,h=l+a.delta-(s+n.delta),g=i.delta===r.delta&&Number.isFinite(i.delta);if(!g&&!(d>0&&h>0&&[s,l,d,h,n.delta,a.delta].every(Number.isFinite)))return null;let u=g?1:h/d;if(!(u>0&&Number.isFinite(u)))return null;let f=e=>g?e+i.delta:e<=s?e+n.delta:e>=l?e+a.delta:s+n.delta+(e-s)*u,c=t.points.map(e=>({...e,[o.main]:f(e[o.main])}));if(c.some(e=>!Number.isFinite(e.x)||!Number.isFinite(e.y)))return null;let p=t.points.map(e=>e[o.main]).sort((e,t)=>e<t?-1:+(e>t));for(let e=1;e<p.length;e++)if(p[e]>p[e-1]&&!(f(p[e])>f(p[e-1])))return null;let y=(e,t)=>e===t||Math.abs(e-t)<=8*Number.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))&&tn(e)===tn(t);for(let t=1;t<c.length;t++){let i=c[t-1],r=c[t];if(!y(i.x,r.x)&&!y(i.y,r.y))return null;for(let t of e)if(A(i,r,t))return null}let m=Z(t.source),x=Z(t.target);return void 0!==m&&void 0!==x&&c[0][o.main]===t.points[0][o.main]+m&&c.at(-1)[o.main]===t.points.at(-1)[o.main]+x&&er(c,t)&&eu(c,e,new Set([t.source,t.target]))&&X(c)?c:null},ei=(e,t)=>{if(!t)return null;let i=Z(e);return void 0===i?null:{...t,[o.main]:t[o.main]+i}},er=(e,t)=>{for(let[i,r]of[[t.source,!0],[t.target,!1]]){let n,o=a.get(i),d=l.get(i),h=o??(d?{id:d.id,label:d.label,shape:"rectangle",x:d.x,y:d.y,width:d.width,height:d.height}:void 0);if(!h)return!1;let g=r?e[0]:e.at(-1);if(!g)return!1;for(let t=r?1:e.length-2;t>=0&&t<e.length;t+=r?1:-1){let i=e[t];if(i.x!==g.x||i.y!==g.y){n=i;break}}if(!n||!s(h,g))return!1;let u=!o&&K(i,r?t.target:t.source)?{x:g.x-(n.x-g.x),y:g.y-(n.y-g.y)}:n;if(!Number.isFinite(u.x)||!Number.isFinite(u.y)||!eo(h,g,u))return!1}return!0};for(let i of t){let t=void 0!==i.edgeIndex?n[i.edgeIndex]??"primary-forward":"primary-forward";if("self-loop"===t){let e=S.get(i.source)??0;0!==e&&(i.points=i.points.map(t=>({...t,[o.main]:t[o.main]+e}))),0!==e&&i.labelPosition&&(i.labelPosition[o.main]+=e);continue}let s=l.size>0&&("cross-hierarchy"===t||"container"===t),d=s?et(i):null;if(d){i.points=d,i.label&&(i.labelPosition=eB(d));continue}if("feedback"===t){let t=a.get(i.source),n=a.get(i.target);if(!t||!n)continue;let s=ej(t,r.direction),l=ej(n,r.direction),d=(e,i)=>[j(s,i(t)),j(s,e),j(l,e),j(l,i(n))],h=(e,i,r,o)=>[j(s,i(t)),j(s,e),j(r,e),j(r,o),j(l,o),j(l,i(n))],u=(e,i,r,o)=>[j(s,i(t)),j(s,o),j(r,o),j(r,e),j(l,e),j(l,i(n))],f=new Set([i.source,i.target]),c=t=>eu(g(t),e,f)&&X(t),p=[[D,_],[W,H]],y;for(let[e,t]of p){let i=d(e,t);if(c(i)){y=i;break}}if(!y){let e=Y(U("x"===o.main?"x":"y"),l);e:for(let[t,i]of p){let r=Y(U(G),i(n));for(let n of[h,u])for(let o of e)for(let e of r){let r=n(t,i,o,e);if(c(r)){y=g(r);break e}}}}i.points=y??d(D,_),i.label&&(i.labelPosition=eB(i.points));continue}let h=s?ei(i.source,i.points[0]):V(i.source,o.sourceSide),u=s?ei(i.target,i.points.at(-1)):V(i.target,o.targetSide);if(!h||!u)continue;let f=new Set([i.source,i.target]),c=t=>eu(t,e,f)&&X(t)&&(!s||er(t,i)&&J(t,i)),p=Math.min(h[o.main],u[o.main]),y=Math.max(h[o.main],u[o.main]),m=eh(h,u,r.direction,(p+y)/2),x=c(m);if(!x){let e,t=Y(U("x"===o.main?"x":"y").filter(e=>e>p&&e<y),(p+y)/2);for(let i of t){let t=eh(h,u,r.direction,i);if(c(t)){e=t;break}}if(!e){let i=h[G],r=u[G],n=Y(U(G),(i+r)/2);e:for(let a of n)for(let n of t)for(let s of Y(t.filter(e=>(e-n)*o.sign>0),u[o.main])){let t=g([h,j(n,i),j(n,a),j(s,a),j(s,r),u]);if(c(t)){e=t;break e}}}e&&(m=e,x=!0)}if(s&&!x)throw new tr([{strategy:"link-rank-reconnect",violations:[`edge ${i.source}->${i.target}: no proven contact-preserving route after rank move`]}]);i.points=m,i.label&&(i.labelPosition=eB(i.points))}}(e.nodes,e.edges,e.groups,e.graph)}},{id:"alignLabeledSourcePort",after:["honorLinkRankDistance"],mutates:["positions","edges"],determinism:"in-place",mayChangeMetrics:{portRate:"improve-only"},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){if(eU("APL_NO_LABELED_SOURCE_PORT")||!tV(e,t,i)||!t.some(e=>e.label))return;let a=tY(e,t);!function(e,t,i,r,n,o){let a=new Set;for(let[n]of tH(e,t,i,r))a.add(n);let s="LR"===n||"RL"===n,l=s?"y":"x",d=s?"x":"y",h=s?"LR"===n?"E":"W":"BT"===n?"N":"S",g=e=>e[l]+(s?e.height:e.width)/2,u=[],f=e=>{for(let t of e)u.push(t),f(t.children)};f(i);let c=e=>u.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),p=new Map(e.map(e=>[e.id,e])),y=e=>"x"===d?"E"===h?e.x+e.width:e.x:"S"===h?e.y+e.height:e.y,m=(e,i)=>{let r=new Set([e.id]),n=[e.id];for(;n.length;){let e=n.pop();for(let o of t){if(o.target!==e||o===i)continue;let a=p.get(o.source);if(!(!a||r.has(a.id))){if(1!==t.filter(e=>e.source===a.id).length||!eb.has(a.shape)||c(a))return null;r.add(a.id),n.push(a.id)}}}return r};for(let r of t){if(!r.label||r.points.length<2||r.source===r.target||a.has(r.target))continue;let u=p.get(r.source);if(!u||!eb.has(u.shape)||c(u)||t.some(e=>e!==r&&e.source===u.id&&e.target!==u.id)||Math.abs(r.points[0][d]-y(u))>1)continue;let f=p.get(r.target);if(!f||!eb.has(f.shape)||c(f))continue;let{ctx:x,axis:b}=S(e,t,n,o,i),w=0,M=!1,k={...u};for(let e=0;e<4;e++){let e=v(r,k,f,x,b);if(null===e)break;let t=e-g(k);if(w+=t,k[l]+=t,.5>=Math.abs(t)){M=!0;break}}if(!M||1>=Math.abs(w))continue;let E=m(u,r);if(!E)continue;let P=[...E].map(e=>p.get(e)).filter(Boolean),N=e=>({x:s?e.x:e.x+w,y:s?e.y+w:e.y,width:e.width,height:e.height});if(!(e.some(e=>!E.has(e.id)&&P.some(t=>{let i=N(t);return i.x-2<e.x+e.width&&i.x+i.width+2>e.x&&i.y-2<e.y+e.height&&i.y+i.height+2>e.y}))||t.some(e=>!E.has(e.source)&&!E.has(e.target)&&P.some(t=>{let i=N(t);return e.points.some((t,r)=>{if(0===r)return!1;let n=e.points[r-1];return Math.max(t.x,n.x)>i.x+.5&&Math.min(t.x,n.x)<i.x+i.width-.5&&Math.max(t.y,n.y)>i.y+.5&&Math.min(t.y,n.y)<i.y+i.height-.5})})))){for(let e of P)s?e.y+=w:e.x+=w;for(let e of t)if(E.has(e.source)&&E.has(e.target))for(let t of e.points)t[l]+=w;r.points[0]=eM(u)[h]}}}(a.nodes,a.edges,i,r,n,o);let s=tU();if(!tG(a.nodes,a.edges,e,t,i,o,s)){if(s.remaining<0)return;let{ctx:r,axis:l}=S(a.nodes,a.edges,n,o,i);for(let e=0;e<a.edges.length;e++){let i=a.edges[e];if(!i.label||!tX(i,t[e]))continue;let n=a.nodes.find(e=>e.id===i.source),o=a.nodes.find(e=>e.id===i.target);if(!n||!o||!M(i,n,o,r,l,i.points[0][l.cross]).applied)return;E(i,i.routeCertificate,n,o)}let d=Symbol(),h=()=>--s.remaining>=0,g=()=>{if(!h())throw d};try{let r=N({...a,groups:i},o,g),n=(t,n)=>{g();let l=eI(t,o);if(!l)return!1;let d=r.clearPaintRect(l,eC(t,o.lineWidth??1),t);if(!d)return!1;let u={x0:d.x,y0:d.y,x1:d.x+d.w,y1:d.y+d.h};for(let e of a.edges){g();let i=y(e,o,h);if(!i||i.markers.some(e=>(g(),p(u,e.bounds))))return!1;if(e===t)continue;if(i.shafts.some(e=>(g(),p(u,e))))return!1;let r=eI(e,o);if(r){g();let t=eC(e,o.lineWidth??1);if(p(u,{x0:r.x-t,y0:r.y-t,x1:r.x+r.w+t,y1:r.y+r.h+t}))return!1}}return tG(a.nodes,[t],e,[n],i,o,s)};for(let e=0;e<a.edges.length;e++){g();let i=a.edges[e],r=t[e];if(!i.label||!tX(i,r)||n(i,r))continue;let s=eI(i,o),d=i.points[0],h=i.points[1];if(!s||2!==i.points.length)return;let u=Math.hypot(h.x-d.x,h.y-d.y),f=("x"===l.main?s.w:s.h)/2;if(!(u>2*f))return;let c=!1;for(let e of P(f/u,g))if(g(),i.labelPosition={x:d.x+(h.x-d.x)*e,y:d.y+(h.y-d.y)*e},n(i,r)){c=!0;break}if(!c)return}}catch(e){if(e===d)return;throw e}if(!tG(a.nodes,a.edges,e,t,i,o,s))return}tq(e,t,a.nodes,a.edges)}(e.nodes,e.edges,e.groups,e.graph,e.graph.direction,e.style)}},{id:"bundleEdgePaths",after:["alignLabeledSourcePort"],mutates:["edges"],determinism:"pure-order",enabled:e=>e.mergeEdges,run:e=>{e.bundled=function(e,t,i,r,n){let o=new Map(t.map(e=>[e.id,e])),a=new Set,s=(r,a)=>{for(let[e,t]of a){let i=o.get(e.source),r=o.get(e.target);a.set(e,ed(ed(t,i,!0),r,!1))}let s=e.map(e=>a.has(e)?{...e,points:a.get(e)}:e),l=(t,i,r)=>e.some(e=>e.source===t&&e.target===i&&"invisible"!==e.style&&Q(r,e)&&e.hasArrowStart===r.hasArrowStart&&e.hasArrowEnd===r.hasArrowEnd&&(e.startMarker??"arrow")===(r.startMarker??"arrow")&&(e.endMarker??"arrow")===(r.endMarker??"arrow"));return r.filter(r=>{var o;let d,h,g=a.get(r.edge),u=s[e.indexOf(r.edge)];return function(e,t,i,r){let n=(e,t)=>{if(void 0!==e&&!/^\s*[+]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(e))return;let i=void 0===e?t:Number.parseFloat(e);return Number.isFinite(i)&&i>=0?Number(tn(i)):void 0},o=n(e.inlineStyle?.["stroke-width"],r.lineWidth*("thick"===e.style?2:1)),a=r.edgeBendRadius;if(void 0===o||!Number.isFinite(a)||a<0)return!1;let s=ts({stroke:"#000",strokeWidth:String(o)},!0);if(void 0===s)return!1;let l=s+a,d=e.points.map(e=>({x:Number(tn(e.x)),y:Number(tn(e.y))}));if(!d.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y)))return!1;let h=d.slice(1).map((e,t)=>{let i=d[t];return{x0:Math.min(i.x,e.x)-l,x1:Math.max(i.x,e.x)+l,y0:Math.min(i.y,e.y)-l,y1:Math.max(i.y,e.y)+l}}),g=(e,t)=>{let i=(Math.abs(e.x0)+Math.abs(e.x1)+Math.abs(e.y0)+Math.abs(e.y1)+Math.abs(t.x0)+Math.abs(t.x1)+Math.abs(t.y0)+Math.abs(t.y1))*1e-10+1e-9;return!Number.isFinite(i)||e.x1+i>t.x0&&e.x0<t.x1+i&&e.y1+i>t.y0&&e.y0<t.y1+i},u=Y(e,r);if(!u||u.length!==+!!e.hasArrowStart+ +!!e.hasArrowEnd)return!1;for(let i of t){let t=n(i.inlineStyle?.["stroke-width"],r.nodeLineWidth);if(void 0===t)return!1;let o=ee(i,{fill:"#000",stroke:"#000",strokeWidth:String(t)},r.cornerRadius),a=td(e3({id:i.id,role:"node",geometry:o.geometry,paint:o.paint,...o.childPaints?{childPaints:o.childPaints}:{}}));if(!a||i.id!==e.source&&i.id!==e.target&&h.some(e=>g(e,a)))return!1;for(let t of u)if(("start"===t.position?e.source:e.target)!==i.id&&(!t.bounds||g(t.bounds,a)))return!1}let f=e=>{let t=e.concurrencyRegion?0:e.headerHeight??e.height;if(t>0){let i={x0:e.x,x1:e.x+e.width,y0:e.y,y1:e.y+t};if(h.some(e=>g(e,i))||u.some(e=>!e.bounds||g(e.bounds,i)))return!1}return e.children.every(f)};return i.every(f)}(u,t,i,n)&&!J(r.edge,g,s,n,u)&&(o=r.edge,d=e.filter(e=>e!==o),h=new Set(B(o,d)),!B(u,d).some(e=>!h.has(e)&&(!Q(o,e)||!l(o.source,e.target,o)||!l(e.source,o.target,e))))})},l="LR"===r,d="RL"===r,h="BT"===r,g=l||d,u=(e,t)=>Math.max(...e.map(({edge:e})=>em(n,e,t))),f=new Map;for(let t of e)t.source!==t.target&&(f.has(t.source)||f.set(t.source,[]),f.get(t.source).push(t));for(let[e,t]of f){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.target);return!!t&&(l?t.x>f.x+f.width:d?t.x+t.width<f.x:h?t.y+t.height<f.y:t.y>f.y+f.height)});if(c.length<2||new Set(c.map(e=>e.target)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,m=c.map(e=>({edge:e,node:o.get(e.target)}));for(;m.length>=2;){let e=new Map;if(g){let t=l?f.x+f.width:f.x,n=el(t,l?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)),u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=l?a.x:a.x+a.width,r=a.y+a.height/2;e.set(o,[{x:t,y:y},{x:n,y:y},{x:n,y:r},{x:i,y:r}])}}else{let t=h?f.y:f.y+f.height,n=el(t,h?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)),u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=a.x+a.width/2,r=h?a.y+a.height:a.y;e.set(o,[{x:p,y:t},{x:p,y:n},{x:i,y:n},{x:i,y:r}])}}let t=s(m,e);if(t.length===m.length){for(let{edge:t}of m)t.points=e.get(t);x(m.map(e=>e.edge),a);break}if(new Set((m=t).map(e=>e.edge.target)).size<2)break}}let c=new Map;for(let t of e)a.has(t)||t.source===t.target||(c.has(t.target)||c.set(t.target,[]),c.get(t.target).push(t));for(let[e,t]of c){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.source);return!!t&&(l?t.x+t.width<f.x:d?t.x>f.x+f.width:h?t.y>f.y+f.height:t.y+t.height<f.y)});if(c.length<2||new Set(c.map(e=>e.source)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,m=c.map(e=>({edge:e,node:o.get(e.source)}));for(;m.length>=2;){let e=new Map;if(g){let t=l?f.x:f.x+f.width,n=el(l?Math.max(...m.map(e=>e.node.x+e.node.width)):Math.min(...m.map(e=>e.node.x)),t,u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=l?a.x+a.width:a.x,r=a.y+a.height/2;e.set(o,[{x:i,y:r},{x:n,y:r},{x:n,y:y},{x:t,y:y}])}}else{let t=h?f.y+f.height:f.y,n=el(h?Math.min(...m.map(e=>e.node.y)):Math.max(...m.map(e=>e.node.y+e.node.height)),t,u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=a.x+a.width/2,r=h?a.y:a.y+a.height;e.set(o,[{x:i,y:r},{x:i,y:n},{x:p,y:n},{x:p,y:t}])}}let t=s(m,e);if(t.length===m.length){for(let{edge:t}of m)t.points=e.get(t);x(m.map(e=>e.edge),a);break}if(new Set((m=t).map(e=>e.edge.source)).size<2)break}}return a}(e.edges,e.nodes,e.groups,e.graph.direction,e.style),e.genericBundled=e.bundled.size>0}},{id:"markCorankFanInBundles",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction);for(let[d,h]of tH(e,t,i,r)){let t=a.get(d),i=[...h].sort((e,t)=>eW(a.get(e.source),r.direction)-eW(a.get(t.source),r.direction)),g=i.map(e=>a.get(e.source)),u=eM(t)[l.targetSide],f=(l.isHorizontal?t.height:t.width)/2*1.6,c=Math.min(28,i.length>1?f/(i.length-1):0),p=ea(i.length,c),y=e=>l.isHorizontal?{x:u.x,y:u.y+e}:{x:u.x+e,y:u.y};p.every(e=>s(t,y(e)))||(p=p.map(()=>0));let m=l.isHorizontal?"E"===l.sourceSide?Math.max(...g.map(e=>e.x+e.width)):Math.min(...g.map(e=>e.x)):"S"===l.sourceSide?Math.max(...g.map(e=>e.y+e.height)):Math.min(...g.map(e=>e.y)),b=m+((l.isHorizontal?u.x:u.y)-m)/2,w=[],M=!0;for(let t=0;t<i.length;t++){let n=i[t],o=eh(eM(g[t])[l.sourceSide],y(p[t]),r.direction,b);if(!eu(o,e,new Set([n.source,n.target]))){M=!1;break}w.push({edge:n,points:o})}if(M){for(let{edge:e,points:t}of w)e.points=t,e.routeCertificate=void 0;x(w.map(e=>e.edge),n),t_(w,e,r.direction,o,!0)}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"clipEdgeToShape",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{portRate:{worsenBy:1,whenImproves:"endpointApproaches"},endpointApproaches:"improve-only"},run:e=>{let t=new Map(e.nodes.map(e=>[e.id,e]));for(let i of e.edges){let r=e.bundled.has(i)?b(i):void 0;i.points=i.points.filter((e,t,i)=>0===t||e.x!==i[t-1].x||e.y!==i[t-1].y);let n=t.get(i.source),o=t.get(i.target);d(i,n,o),n&&(i.points=ed(i.points,n,!0)),o&&(i.points=ed(i.points,o,!1)),w(i,r)}}},{id:"applySymmetricFanoutEmissions",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=new Map;for(let e of t)X(e,s,r.direction)&&(l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=eF(r.direction);for(let[h,g]of l){let l=s.get(h),u=l&&tj(l,g,t,s,i,r.direction,a);if(!l||!u)continue;let f=u.map(e=>s.get(e.target)),c="diamond"!==l.shape&&K(l,i);if(c){let{ctx:n,axis:a}=S(e,t,r.direction,o,i),d=eW(l,r.direction),h=u.map(e=>v(e,l,s.get(e.target),n,a));if(h.every((e,t)=>null!==e&&1>=Math.abs(e-d+(h[h.length-1-t]-d))))continue}let p=f.map(e=>({t:e,x:e.x,y:e.y,width:e.width,height:e.height})),y=Z(i).map(e=>({group:e,x:e.x,y:e.y,width:e.width,height:e.height})),m=()=>{for(let e of p)e.t.x=e.x,e.t.y=e.y,e.t.width=e.width,e.t.height=e.height;for(let e of y)e.group.x=e.x,e.group.y=e.y,e.group.width=e.width,e.group.height=e.height},b=Math.max(...f.map(e=>e.width)),w=Math.max(...f.map(e=>e.height)),M=eW(l,r.direction),k=Math.min(...f.map(e=>eT(e,r.direction))),E=(d.isHorizontal?w:b)+28,P=ea(f.length,E),N="diamond"===l.shape?u.map((e,t)=>er(l,r.direction,t,u.length)[d.cross]):void 0,C=e=>{for(let t=0;t<f.length;t++){let i=f[t];i.width=b,i.height=w,d.isHorizontal?(i.x=k,i.y=e[t]-w/2):(i.x=e[t]-b/2,i.y=k)}};c||C(N??P.map(e=>M+e));let I=new Set(f.map(e=>e.id)),L=()=>{for(let e=0;e<f.length;e++){let t=f[e];if(t.x<0||t.y<0)return!1;for(let i=e+1;i<f.length;i++)if(eV(t,f[i],8))return!1}for(let t of f)for(let i of e)if(!I.has(i.id)&&eV(t,i,8))return!1;return!0},R=c||L();if(!R&&N&&(C(P.map(e=>M+e)),R=L()),!R){m();continue}let O=d.isHorizontal?"E"===d.sourceSide?l.x+l.width:l.x:"S"===d.sourceSide?l.y+l.height:l.y,$=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height)),z=Math.max(0,...u.map(e=>(function(e,t,i){if(!e.label)return 0;let r=tC(e,{x:0,y:0},i);return(eF(t).isHorizontal?r.width:r.height)+3*Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i))})(e,r.direction,o))),A=($-O)*d.sign;if(!c&&z>A+.001){let e=z-A,t=f.map(e=>({x:e.x,y:e.y,width:e.width,height:e.height}));for(let t of f)d.isHorizontal?t.x+=e*d.sign:t.y+=e*d.sign;if(ei(i,t,r.direction,e),!(R=L())){m();continue}$=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height))}let B=Math.max(0,...u.map(e=>(function(e,t,i,r,n){if(!e.label)return 0;let o=eF(t),a=tC(e,{x:0,y:0},i),s=o.isHorizontal?a.width:a.height,l=Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i)),d=((n-r)*o.sign-s)/3;return d>=l-.001?s+2*d:s+tR(i)+l+2})(e,r.direction,o,O,$))),F=O+($-O)*.5,_=$-d.sign*B,H=(_-F)*d.sign<0?_:F;if(c&&(H-O)*d.sign<Math.max(...u.map(e=>em(o,e,"start")))-.001)continue;let D=[];for(let t=0;t<u.length;t++){let i=u[t],n=s.get(i.target),o=eh(er(l,r.direction,t,u.length),en(n,r.direction),r.direction,H);if(!eu(o,e,new Set([i.source,i.target]))){R=!1;break}D.push({edge:i,points:o})}if(R&&c){let e=t.filter(e=>!g.includes(e)&&"invisible"!==e.style),i=t=>e.reduce((e,i)=>e+T(t,i.points),0);R=D.reduce((e,{points:t})=>e+i(t),0)<=D.reduce((e,{edge:t})=>e+i(t.points),0)}if(!R){m();continue}let W=D.map(({edge:e,points:t})=>({edge:{...e,points:t},points:t}));if(c&&W.some(({edge:e})=>e.label)){let n=new Map(D.map(({edge:e},t)=>[e,W[t].edge]));if(!tD(W,e,t.map(e=>n.get(e)??e),i,r.direction,o)){m();continue}}else t_(W,e,r.direction,o);for(let e=0;e<D.length;e++){let{edge:t,points:i}=D[e];t.points=i,t.labelPosition=W[e].edge.labelPosition,t.routeCertificate=void 0}x(D.map(e=>e.edge),n)}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applySymmetricParallelEdgeLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges,!0),mayChangeMetrics:{symErr:"improve-only",crossings:"improve-only"},run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction),d=new Map;for(let e of t){if(e.source===e.target||!e.label)continue;let t=a.get(e.source),r=a.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=`${e.source}\0${e.target}`;d.has(n)||d.set(n,[]),d.get(n).push(e)}for(let i of d.values()){if(i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0)),2!==i.length)continue;let d=a.get(i[0].source),h=a.get(i[0].target),u=i.map(e=>tC(e,{x:0,y:0},o)),f=u.map(e=>e.width),c=u.map(e=>e.height),p=(l.isHorizontal?Math.max(...c):Math.max(...f))/2+18,y=[[1/3,2/3],[1/6,1/3],[2/3,5/6]],m=[p,p+16,p+32,p+52].map(e=>({lanes:l.isHorizontal?[Math.min(d.y,h.y)-e,Math.max(d.y+d.height,h.y+h.height)+e]:[Math.min(d.x,h.x)-e,Math.max(d.x+d.width,h.x+h.width)+e],sourceSlots:y[0],targetSlots:y[0]}));if("diamond"===d.shape)for(let e of[...m])for(let t of y)for(let i of y){let n=i.map(e=>h[l.cross]+eH(h,r.direction)*e),o=t.map(e=>d[l.cross]+eH(d,r.direction)*e);for(let r of[e.lanes,[e.lanes[0],n[1]],[n[0],e.lanes[1]],[e.lanes[0],o[1]],[o[0],e.lanes[1]]])m.push({lanes:r,sourceSlots:t,targetSlots:i})}for(let{lanes:a,sourceSlots:l,targetSlots:u}of m){let f=[],c=!0;for(let t=0;t<i.length;t++){let n=i[t],o=g(ed(ed(function(e,t,i,r,n,o,a=(n+1)/(o+1),s=a){let l=eF(i);if(l.isHorizontal){let i={x:"E"===l.sourceSide?e.x+e.width:e.x,y:e.y+e.height*a},n={x:"W"===l.targetSide?t.x:t.x+t.width,y:t.y+t.height*s},o=Math.min(28,Math.max(14,.18*Math.abs(n.x-i.x))),d=i.x+l.sign*o,h=n.x-l.sign*o;return g([i,{x:d,y:i.y},{x:d,y:r},{x:h,y:r},{x:h,y:n.y},n])}let d={x:e.x+e.width*a,y:"S"===l.sourceSide?e.y+e.height:e.y},h={x:t.x+t.width*s,y:"N"===l.targetSide?t.y:t.y+t.height},u=Math.min(28,Math.max(14,.18*Math.abs(h.y-d.y))),f=d.y+l.sign*u,c=h.y-l.sign*u;return g([d,{x:d.x,y:f},{x:r,y:f},{x:r,y:c},{x:h.x,y:c},h])}(d,h,r.direction,a[t],t,i.length,l[t],u[t]),d,!0),h,!1));if(!s(d,o[0])||!s(h,o.at(-1))||!eu(o,e,new Set([d.id,h.id]))){c=!1;break}f.push({edge:n,points:o,label:tI(o)})}if(c){if("diamond"===d.shape){let n=t.filter(e=>!i.includes(e));if(tK(f[0].points,f[1].points)||f.some(e=>n.some(t=>tK(e.points,t.points))))continue;let a=f.map(t=>{let i=[...n,...f.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))];return tB(t.edge,t.points,e,r.direction,o).filter(e=>!tQ(t.edge,{x:e.box.x,y:e.box.y,w:e.box.width,h:e.box.height},i))}),s;for(let e of a[0]){let t=a[1].find(t=>!eV(e.box,t.box,tL(o)));if(t){s=[e,t];break}}if(!s)continue;f[0].label=s[0].point,f[1].label=s[1].point}for(let e of f){let i=tC(e.edge,e.label,o);"diamond"!==d.shape&&tQ(e.edge,{x:i.x,y:i.y,w:i.width,h:i.height},t)&&(c=!1)}if(!(!c||!0!==tZ(t,f,o))){for(let{edge:e,points:t,label:i}of f)e.points=t,e.labelPosition=i,e.routeCertificate=void 0;x(f.map(e=>e.edge),n);break}}}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applyParallelDuplicateLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges),mayChangeMetrics:{crossings:{worsenBy:1,whenImproves:"parallelOverlaps",perImprovement:!0},parallelOverlaps:"improve-only"},run:e=>{!function(e,t,i,r,n,o,a){let l=new Map(e.map(e=>[e.id,e])),d=eF(r.direction),h={allowCrossingsForOverlap:!0,...a?{labelClearance:{nodes:e,style:a}}:{}},u=e=>d.isHorizontal?e.height:e.width,f=(e,t)=>d.isHorizontal?{x:e,y:t}:{x:t,y:e},c=e=>e[d.main]+(d.isHorizontal?e.width:e.height),p=e=>e[d.main],y="E"===d.sourceSide||"S"===d.sourceSide,m="W"===d.targetSide||"N"===d.targetSide,b=(e,t)=>y!==t?c(e):p(e),w=(e,t)=>m!==t?p(e):c(e),M=new Set,v=(e,t)=>{for(let i=1;i<e.points.length;i++){let r=e.points[i-1],n=e.points[i],o=.5>Math.abs(r.x-n.x),a=.5>Math.abs(r.y-n.y);if(!(!o&&!a))for(let e=1;e<t.points.length;e++){let i=t.points[e-1],s=t.points[e];if(o){if(Math.abs(i.x-s.x)>=.5||Math.abs(r.x-i.x)>=1)continue;if(Math.min(Math.max(r.y,n.y),Math.max(i.y,s.y))-Math.max(Math.min(r.y,n.y),Math.min(i.y,s.y))>1)return!0}else if(a){if(Math.abs(i.y-s.y)>=.5||Math.abs(r.y-i.y)>=1)continue;if(Math.min(Math.max(r.x,n.x),Math.max(i.x,s.x))-Math.max(Math.min(r.x,n.x),Math.min(i.x,s.x))>1)return!0}}}return!1},S=new Map;for(let e of t){if(e.source===e.target)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=(w(r,!1)-b(t,!1))*d.sign,o=(b(t,!0)-w(r,!0))*d.sign;if(n<=16&&o<=16)continue;let a=`${e.source}\0${e.target}`;S.has(a)||S.set(a,[]),S.get(a).push(e)}let k=(e,t)=>{let i=tC(e,t,o),r=eC(e,o.lineWidth??1);return{x:i.x-r,y:i.y-r,width:i.width+2*r,height:i.height+2*r}},E=(i,a,c,p,y=0)=>{i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0));let m=l.get(i[0].source),v=l.get(i[0].target),S=b(m,a),E=w(v,a),P=i.length;if(c<4)return!1;let N=i.every(e=>e.label)?Math.max(c,...i.map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.width:t.height)+tL(o)})):c,C="target"===p,I=m[d.cross]+u(m)/2+y,L=v[d.cross]+u(v)/2+y,R=[],O=[];for(let e=0;e<P;e++){let t=I+(e-(P-1)/2)*c,r=L+(e-(P-1)/2)*c,n=(a?-1:1)*d.sign,o=C?E-n*(16+e*N):S+n*(16+e*N),s=Math.min(S,E),l=Math.max(S,E);(o<=s+4||o>=l-4)&&(o=(S+E)/2),R.push({edge:i[e],sCross:t,tCross:r}),O.push(o)}R[0].tCross-R[0].sCross>0!==C&&O.reverse();let $=[];for(let t=0;t<P;t++){let{edge:i,sCross:r,tCross:n}=R[t],o=O[t],a=g(ed(ed(r===n?[f(S,r),f(E,n)]:[f(S,r),f(o,r),f(o,n),f(E,n)],m,!0),v,!1));if(a.length<2||!s(m,a[0])||!s(v,a[a.length-1])||!eu(a,e,new Set([m.id,v.id])))return!1;$.push({edge:i,points:a,label:i.label?tI(a):void 0})}let z=tZ(t,$,o,{allowCrossingsForOverlap:!0});if(!0!==z)return z;if("original"!==p){let n=t.filter(e=>!i.includes(e)),a=[...n,...$.map(e=>({...e.edge,points:e.points}))].flatMap(e=>U(e,o)).flatMap(e=>e.bounds?[{x:e.bounds.x0,y:e.bounds.y0,width:e.bounds.x1-e.bounds.x0,height:e.bounds.y1-e.bounds.y0}]:[]),s=n.filter(e=>e.label).map(e=>k(e,e.labelPosition??eB(e.points)));for(let t of $){if(!t.edge.label)continue;let i=[...n,...$.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))],l=tB(t.edge,t.points,e,r.direction,o).find(r=>{let n=k(t.edge,r.point);return!e.some(e=>eV(n,e,2))&&!a.some(e=>eV(n,e,0))&&!s.some(e=>eV(n,e,2))&&!tQ(t.edge,{x:n.x,y:n.y,w:n.width,h:n.height},i)});if(!l)return!1;t.label=l.point,s.push(k(t.edge,t.label))}}if(h.labelClearance&&!tJ(t,$,h.labelClearance))return!1;for(let{edge:e,points:t,label:i}of $)e.points=t,e.labelPosition=i,e.routeCertificate=void 0,M.add(e);return x($.map(e=>e.edge),n),!0};for(let r of S.values()){if(r.length<2||!r.some(e=>e.label)||!r.some(e=>e.label&&r.some(t=>t!==e&&v(e,t)))||r.every(e=>e.label)&&0===$({nodes:[],edges:r},o).labelLabel)continue;let n=l.get(r[0].source),a=l.get(r[0].target);if(!n||!a)continue;let s=!((w(a,!1)-b(n,!1))*d.sign>16),h=(Math.min(u(n),u(a))-10)/(r.length-1),g=Math.max(14,...r.filter(e=>e.label).map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.height:t.width)/2+3})),f=(n,o)=>{let a=E(r,s,n,o);if(!0===a)return!0;if("marker-blocked"!==a||!tV(e,t,i))return!1;let l=(h-n)*(r.length-1)/2;return l>0&&P(0).some(e=>{let t=(2*e-1)*l;return 0!==t&&!0===E(r,s,n,o,t)})};if(!(g<=h&&(f(g,"source")||f(g,"target")))&&!f(Math.min(14,h),"original")&&r.every(e=>e.label)){let e=Math.min(7,h);f(e,"source")||f(e,"target")||f(e,"original")}}let N=new Map,C=new Map;for(let e of t){if(M.has(e)||e.source===e.target||e.label)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=t=>{t.has(e.target)||t.set(e.target,[]),t.get(e.target).push(e)};(w(r,!1)-b(t,!1))*d.sign>16?n(N):(b(t,!0)-w(r,!0))*d.sign>16&&n(C)}let I=(r,a)=>{if(r.length<2)return;let c=new Map;for(let e of r)c.set(e.source,(c.get(e.source)??0)+1);if(![...c.values()].some(e=>e>=2))return;let p=l.get(r[0].target),y=w(p,a),m=p[d.cross]+u(p)/2,M=e=>{let t=l.get(e.source);return t[d.cross]+u(t)/2};r.sort((e,t)=>M(e)-M(t)||(e.edgeIndex??0)-(t.edgeIndex??0));let v=r.length,S=Math.min(14,(u(p)-10)/(v-1));if(S<4)return;let k=new Map;for(let e of r)k.has(e.source)||k.set(e.source,[]),k.get(e.source).push(e);let E=[],P=[];for(let e=0;e<v;e++){let t=r[e],i=l.get(t.source),n=b(i,a),o=m+(e-(v-1)/2)*S,s=k.get(t.source),h=s.length>1?Math.min(S,(u(i)-10)/(s.length-1)):0,g=i[d.cross]+u(i)/2+(s.indexOf(t)-(s.length-1)/2)*h,f=n+(a?-1:1)*d.sign*(16+e*S),c=Math.min(n,y),p=Math.max(n,y);(f<=c+4||f>=p-4)&&(f=(n+y)/2),E.push({edge:t,source:i,exitMain:n,sCross:g,tCross:o}),P.push(f)}for(let e=0;e<v;){let t=e;for(;t+1<v&&r[t+1].source===r[e].source;)t++;if(t>e&&E[e].tCross-E[e].sCross>0){let i=P.slice(e,t+1).reverse();for(let r=e;r<=t;r++)P[r]=i[r-e]}e=t+1}let N=t=>{let i=[];for(let r=0;r<v;r++){let{edge:n,source:a,exitMain:l}=E[r],d=E[r].sCross,h=E[r].tCross+t,u=P[r],c;c=ed(c=d===h?[f(l,d),f(y,h)]:[f(l,d),f(u,d),f(u,h),f(y,h)],a,!0);let m=ek(c=g(c=ed(c,p,!1)),j(n,o));if(!m||(c=m).length<2||!s(a,c[0])||!s(p,c[c.length-1])||!eu(c,e,new Set([a.id,p.id])))return;i.push({edge:n,points:c})}return i},C=N(0);if(!C)return;let I=tZ(t,C,o,h);if(!0!==I){if("marker-blocked"!==I||!tV(e,t,i))return;let r=-1/0,n=1/0;for(let e of E)r=Math.max(r,e.source[d.cross]+5-e.sCross,p[d.cross]+5-e.tCross),n=Math.min(n,e.source[d.cross]+u(e.source)-5-e.sCross,p[d.cross]+u(p)-5-e.tCross);if(!Number.isFinite(r)||!Number.isFinite(n)||r>0||n<0)return;let a=tU(),s={...h,labelClearance:{nodes:e,style:o}},l;for(let d of[r,n]){if(a.remaining<=0)break;if(0===d)continue;let r=N(d);if(!r||!0!==tZ(t,r,o,s))continue;let n=new Map(r.map(e=>[e.edge,e.points]));if(tG(e,t.map(e=>n.has(e)?{...e,points:n.get(e)}:e),e,t,i,o,a)){l=r;break}}if(!l)return;C=l}for(let{edge:e,points:t}of C)e.points=t,e.labelPosition=void 0,e.routeCertificate=void 0;x(C.map(e=>e.edge),n)};for(let e of N.values())I(e,!1);for(let e of C.values())I(e,!0)}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style,e.elkResult?void 0:e.style)}},{id:"collapseTinyBundledHitches",after:["applySymmetricFanoutEmissions","applySymmetricParallelEdgeLanes","applyParallelDuplicateLanes"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{bends:"improve-only"},run:e=>{ev(e.nodes,e.edges,e.bundled)}},{id:"reassignBundledSiblingLabels",after:["collapseTinyBundledHitches"],mutates:["edges"],determinism:"in-place",run:e=>{!function(e,t,i,r,n,o=[]){let a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)i.has(e)&&e.label&&X(e,a,r)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));for(let i of s.values()){if(i.length<2||i.length>3||new Set(i.map(e=>e.target)).size<i.length)continue;let s=[...i].sort((e,t)=>{let i=a.get(e.target),n=a.get(t.target);return i&&n?eW(i,r)-eW(n,r):(e.edgeIndex??0)-(t.edgeIndex??0)}),l=a.get(s[0].source);if(l?.shape==="rectangle"&&K(l,o)){let i=s.map(e=>({edge:{...e},points:e.points})),a=new Map(s.map((e,t)=>[e,i[t].edge]));tD(i,e,t.map(e=>a.get(e)??e),o,r,n)&&s.forEach((e,t)=>{e.labelPosition=i[t].edge.labelPosition})}else t_(s.map(e=>({edge:e,points:e.points})),e,r,n)}}(e.nodes,e.edges,e.bundled,e.graph.direction,e.style,e.groups)}},{id:"applyRouteContracts",after:["reassignBundledSiblingLabels"],mutates:["edges"],determinism:"fixed-point",freezesNodes:!0,mayChangeMetrics:{straight:{worsenBy:1,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},bends:{worsenBy:4,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},portRate:{worsenBy:1,whenImproves:["hard","crossings","bends","endpointApproaches","opposingOverlaps"]}},run:e=>{k({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.bundled,e.style,e.elkResult?void 0:{preserveSelfLoops:!0,preserveLabels:!0,preserveStraightRoutes:!0})}},{id:"reanchorOffOutlineEndpoints",after:["applyRouteContracts"],mutates:["edges"],determinism:"in-place",run:e=>{ex(e.nodes,e.edges,e.graph,e.style)}},{id:"rerouteEdgesThroughNodes",after:["reanchorOffOutlineEndpoints"],mutates:["edges"],determinism:"in-place",run:e=>{ew(e.nodes,e.edges,e.graph,void 0,e.groups),R({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOnSharedTrunks",after:["rerouteEdgesThroughNodes"],mutates:["edges"],determinism:"in-place",run:e=>{C({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOffOwnRoute",after:["repairLabelsOnSharedTrunks"],mutates:["edges"],determinism:"in-place",run:e=>{I({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"separateEdgeLabelPills",after:["repairLabelsOffOwnRoute"],mutates:["edges"],determinism:"in-place",run:e=>{L({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style,e.elkResult?void 0:{preserveRouteClearance:!0})}},{id:"closeRouteContracts",after:["separateEdgeLabelPills"],mutates:["edges"],determinism:"fixed-point",mayChangeMetrics:{straight:"improve-only",bends:"improve-only"},run:e=>{O({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"translateGeometryToNonNegativeOrigin",after:["closeRouteContracts"],mutates:["translate"],determinism:"in-place",run:e=>{u(e.nodes,e.edges,e.groups,e.layoutPadding,e.style)}},{id:"placeStateNotes",after:["translateGeometryToNonNegativeOrigin"],mutates:["translate"],determinism:"in-place",enabled:e=>!!e.graph.stateNotes?.length,run:e=>{e.notes=function(e,t,i,r,n,o,a){let s=r.stateNotes??[];if(0===s.length)return[];let l=[],d=e=>{for(let t of e)l.push(t),d(t.children)};d(i);let h=[];for(let t of e)h.push({x:t.x,y:t.y,w:t.width,h:t.height});for(let e of l)h.push({x:e.x,y:e.y,w:e.width,h:e.height});for(let e of t){if("invisible"===e.style)continue;for(let t=1;t<e.points.length;t++){let i=e.points[t-1],r=e.points[t];h.push({x:Math.min(i.x,r.x)-2,y:Math.min(i.y,r.y)-2,w:Math.abs(i.x-r.x)+4,h:Math.abs(i.y-r.y)+4})}let t=e.label?eI(e,n):null;t&&h.push(t)}let g=(e,t)=>e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y,u=[];for(let t of s){let i=e.find(e=>e.id===t.target),r=i?void 0:l.find(e=>e.id===t.target),o=i??r;if(!o)continue;let s=eP(e9(t.text,t.textContent),n,"note"),d=s.width+20,f=s.height+16,c=o.y+(o.height-f)/2,p="left"===t.side?o.x-a-d:o.x+o.width+a;for(let e=0;e<h.length+u.length+4;e++){let e={x:p-6,y:c-6,w:d+12,h:f+12},i=h.find(t=>g(e,t))??u.map(e=>({x:e.x,y:e.y,w:e.width,h:e.height})).find(t=>g(e,t));if(!i)break;p="left"===t.side?i.x-6-d:i.x+i.w+6}u.push({id:t.id,target:t.target,side:t.side,text:t.text,...t.textContent?{textContent:t.textContent}:{},textBlock:s,x:p,y:c,width:d,height:f})}let f=0,c=0;for(let e of u)f=Math.min(f,e.x),c=Math.min(c,e.y);if(f<0||c<0){let r=f<0?-f+o:0,n=c<0?-c+o:0,a=e=>{e.x+=r,e.y+=n,e.children.forEach(a)};for(let t of e)t.x+=r,t.y+=n;for(let e of i)a(e);for(let e of t){for(let t of e.points)t.x+=r,t.y+=n;e.labelPosition&&(e.labelPosition.x+=r,e.labelPosition.y+=n)}for(let e of u)e.x+=r,e.y+=n}return u}(e.nodes,e.edges,e.groups,e.graph,e.style,e.layoutPadding,e.stateNoteMargin)}}];function ip(i,r){for(let n of i.nodes)n.labelBlock??=eP(e9(n.label,n.labelContent),r,"node"),!n.icon||n.iconFallbackBlock||t(n.icon)||(n.iconFallbackBlock=tg(e(n.icon),{fontSize:10,fontWeight:400}));for(let e of i.edges)void 0!==e.label&&(e.labelBlock??=eP(e9(e.label,e.labelContent),r,"edge"));let n=e=>{e.labelBlock??=eP(e9(e.label,e.labelContent),r,"group"),e.headerHeight=ih(e,r,e.labelBlock),e.children.forEach(n)};i.groups.forEach(n)}function iy(e,t){let i={nodes:e.nodes,edges:e.edges,groups:e.groups,width:0,height:0};return W(e.graph,i,t,e.style,e.bundled)}function im(e,t,i=!1,r=eO.padding,n=e1({}),o=18){let a=[],s=[],l=new Set;for(let e of t.subgraphs)!function e(t,i){for(let r of(i.add(t.id),t.children))e(r,i)}(e,l);return function e(t,i,r,n,o,a,s){if(t.children)for(let l of t.children){let t=(l.x??0)+a,d=(l.y??0)+s,h=l.width??0,g=l.height??0;if(r.has(l.id)){let a=[];e(l,i,r,n,a,t,d);let s=eX(i.subgraphs,l.id),u=s?.stateComposite?eQ(l.id,i):void 0;o.push({id:l.id,label:s?.label??"",...s?.labelContent?{labelContent:s.labelContent}:{},x:t,y:d,width:h,height:g,children:a,...s?.headerMinHeight===void 0?{}:{headerMinHeight:s.headerMinHeight},...s?.concurrencyRegion?{concurrencyRegion:!0}:{},...u?{inlineStyle:u}:{}})}else{let a=i.nodes.get(l.id);if(a){let e=eq(l.id,i),r=i.classAssignments.get(l.id),o=r?r.split(/\s+/).filter(Boolean):void 0;n.push({id:l.id,label:a.label,...a.labelContent?{labelContent:a.labelContent}:{},...a.labelBlock?{labelBlock:a.labelBlock}:{},shape:a.shape,...void 0!==a.floatingNoteId?{floatingNoteId:a.floatingNoteId}:{},...void 0!==a.semanticShape?{semanticShape:a.semanticShape}:{},x:t,y:d,width:h,height:g,inlineStyle:e,classNames:o,...a.icon?{icon:a.icon}:{},...a.image?{image:a.image}:{},...a.iconForm?{iconForm:a.iconForm}:{},...a.href?{href:a.href}:{}})}l.children&&l.children.length>0&&e(l,i,r,n,o,t,d)}}}(e,t,l,a,s,0,0),ix({width:e.width??800,height:e.height??600,nodes:a,edges:[],groups:s},t,i,r,n,o,e)}function ix(e,t,i,r,n,o,a,s){let{nodes:l,edges:d,groups:h}=e,g=ez(h),u={elkResult:a,graph:t,nodes:l,edges:d,groups:h,notes:[],margins:g.length>0?{leftX:Math.min(...g.map(e=>e.x))-20,rightX:Math.max(...g.map(e=>e.right))+20}:void 0,bundled:new Set,genericBundled:!1,mergeEdges:i,style:n,layoutPadding:r,stateNoteMargin:o,frozen:!1};if(s)for(let e of s)u.bundled.add(d[e]);ip(u,n),function(e,t,i={}){let r=new Set,n=e.frozen;for(let o of t){if(o.enabled&&!o.enabled(e)){r.add(o.id);continue}for(let e of o.after)if(!r.has(e))throw new ty(o.id,"ordering",`LayoutPass ordering: '${o.id}' must run after '${e}', which has not run`);let t=Object.entries(o.mayChangeMetrics??{}),a=e=>"improve-only"!==e&&e.whenImproves?"string"==typeof e.whenImproves?[e.whenImproves]:e.whenImproves:[],s=[];for(let[e,i]of t)for(let t of(s.includes(e)||s.push(e),a(i)))s.includes(t)||s.push(t);let l=o.proposal?s.includes("hard")?[...s]:[...s,"hard"]:s;if((t.length||o.proposal)&&!i.measureMetrics)throw new ty(o.id,"measurement",`Layout pass '${o.id}' declares metric budgets but no geometry measurement was supplied`);let d=(t=s)=>{try{return i.measureMetrics(e,t)}catch(e){throw e instanceof ty?e:new ty(o.id,"measurement",`Layout pass '${o.id}' could not measure its declared geometry: ${e instanceof Error?e.message:String(e)}`)}},h=t.length||o.proposal?d(l):void 0,g=n?tx(e).map(({id:e,x:t,y:i,width:r,height:n})=>({id:e,x:t,y:i,width:r,height:n})):void 0,u=n?(e.edges??[]).map(e=>({points:e.points?.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0,certificate:e.routeCertificate})):void 0,f=(e=!1)=>{let i;if(h){let r=d(e?l:s),n=e=>{let t=h[e],i=r[e];if(void 0===t||void 0===i||!Number.isFinite(t)||!Number.isFinite(i))throw new ty(o.id,"measurement",`Layout pass '${o.id}' has no finite measurement for ${e}`);return("straight"===e||"portRate"===e?-1:1)*(i-t)};for(let[s,l]of e&&o.proposal?[...t,["hard","improve-only"]]:t){let e=Math.max(0,...a(l).map(e=>-n(e))),t="improve-only"===l||l.whenImproves&&e<=1e-6?0:l.worsenBy*(l.perImprovement?Math.floor(e+1e-6):1);if(n(s)>t+1e-6){let e=new tm(o.id,s,h[s],r[s],t);if("hard"===s)throw e;i??=e}}}return i},c=()=>{if(g){let t=tx(e),i=o.mutates.includes("translate"),r=i&&g[0]&&t[0]?t[0].x-g[0].x:0,n=i&&g[0]&&t[0]?t[0].y-g[0].y:0,a=(e,t)=>i?1e-6>=Math.abs(t.x-e.x-r)&&1e-6>=Math.abs(t.y-e.y-n):e.x===t.x&&e.y===t.y;if(t.length!==g.length||!e.frozen)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen geometry membership or state`);for(let e=0;e<g.length;e++){let i=g[e],r=t[e];if(i.id!==r.id||i.width!==r.width||i.height!==r.height||!a(i,r))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' moved frozen geometry without a uniform translation`)}if(u){if((e.edges?.length??0)!==u.length)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen edge membership`);for(let t=0;t<u.length;t++){let r=u[t],n=e.edges[t],s=r.points?.length===n.points?.length&&(r.points??[]).every((e,t)=>n.points?.[t]&&a(e,n.points[t]));if(i){if(!s||!!r.labelPosition!=!!n.labelPosition||r.labelPosition&&!a(r.labelPosition,n.labelPosition))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' did not translate all frozen routes and labels uniformly`)}else if(!s&&(!o.mutates.includes("edges")||void 0===n.routeCertificate||n.routeCertificate===r.certificate))throw new ty(o.id,"certificate",`LayoutPass certificate: '${o.id}' rewrote edge geometry after the route-contract freeze without re-issuing routeCertificate`)}}}},p=o.run(e);if(p&&!o.proposal)throw new ty(o.id,"metric-budget",`Layout pass '${o.id}' returned a rollback without declaring a cosmetic proposal`);let y=f();if(c(),y){if(!p)throw y;p();let e=f(!0);if(e)throw e;c()}o.freezesNodes&&(e.frozen=!0),n||=e.frozen,r.add(o.id),i.onAfterPass?.(o,e)}}(u,ic,{measureMetrics:iy});let f=e.width,c=e.height,p=eZ.width;for(let e of l)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);for(let e of ez(h))f=Math.max(f,e.right+r),c=Math.max(c,e.bottom+r);for(let e of d){for(let t of e.points)f=Math.max(f,t.x+p+r),c=Math.max(c,t.y+p+r);let t=e.labelBlock?eI(e,n):null;t&&(f=Math.max(f,e.labelPosition.x+60+r,t.x+t.w+r),c=Math.max(c,e.labelPosition.y+20+r,t.y+t.h+r))}for(let e of u.notes)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);return{genericBundled:u.genericBundled,positioned:{width:f,height:c,nodes:l,edges:d,groups:h,...u.notes.length>0?{notes:u.notes}:{}}}}function ib(e,t={}){eY(e);let i=t.graphLayout?tu(t,()=>{let i=e1(t,t.stateVisual?.styleDefaults,t.styleFace);return o(e,t,i,iS)},()=>ik(e,t),!0,(e,t)=>{e.layoutDecision=t}):ik(e,t),r=e1(t,t.stateVisual?.styleDefaults,t.styleFace);ip(i,r);let n=e2(t.diagramTitle,e1(t,t.stateVisual?.styleDefaults,t.styleFace));if(!n)return i;let a=t.padding??eO.padding;if(0===i.width&&0===i.height)return Object.assign(i,e5(n,a));(function(e,t){let i=e=>{for(let r of(e.y+=t,e.children))i(r)};for(let i of e.nodes)i.y+=t;for(let t of e.groups)i(t);for(let i of e.edges){for(let e of i.points)e.y+=t;i.labelPosition&&(i.labelPosition.y+=t)}for(let i of e.notes??[])i.y+=t})(i,n.height),i.height+=n.height,i.width=Math.max(i.width,n.width+2*a),i.title=e6(n,i.width,a);let s=tv(i,r);if(s.length)throw new tr([{strategy:"final-title-projection",violations:s}]);return i}function iw(e,t={}){eY(e);let i=ik(e,t,"placement");return ip({...i,edges:[]},e1(t,void 0,t.styleFace)),i}function iM(e,t={}){eY(e);let i=e1(t,void 0,t.styleFace);return a(e,t,i,iS)}function iv(e,t,r,o=!1){let a=t.stateVisual,s={...eO,...t,...a?{stateVisual:a}:{}},l=e1(t,a?.styleDefaults,t.styleFace),d=ie(e,s,l);if(o&&!a){let t=((...e)=>n().indexedForestLayout(...e))(e,d,s.padding,s.nodeSpacing,s.layerSpacing);if(!t)throw Error("Graph is ineligible for indexed forest layout");let i=im(t,e,eO.mergeEdges,s.padding,l,18);return i.genericBundled&&r?.(i.positioned,()=>im(t,e,!1,s.padding,l,18).positioned),i.positioned}if(1===e.nodes.size&&0===e.edges.length&&0===e.subgraphs.length&&!e.stateNotes?.length&&!a&&d.children?.length===1){let t=d.children[0];return im({...d,width:t.width+2*s.padding,height:t.height+2*s.padding,children:[{...t,x:s.padding,y:s.padding}]},e,eO.mergeEdges,s.padding,l,18).positioned}let h,g,u="exception",f=0;for(let t of[{},{"elk.layered.feedbackEdges":"false"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE","elk.layered.crossingMinimization.forceNodeModelOrder":"false","elk.layered.highDegreeNodes.treatment":"false"}]){++f>1&&tf("elk-degradation",u,f);let r=0===Object.keys(t).length?d:ie(e,s,l);Object.keys(t).length>0&&(r.layoutOptions={...r.layoutOptions,...t});try{let e=i(r);if(iE(e)){g=Error("ELK returned non-finite layout geometry"),u="non-finite-geometry";continue}h=e;break}catch(e){if(e instanceof eG||e instanceof to)throw e;g=e,u="exception"}}if(!h)throw g;let c=h,p=a?.noteMargin??18,y=im(c,e,eO.mergeEdges,s.padding,l,p);return y.genericBundled&&r?.(y.positioned,()=>im(c,e,!1,s.padding,l,p).positioned),y.positioned}var iS={edgeSelectorIndices:eR,graphEdgeMarkerPaintRegions:U,customTextMeasurementActive:tc,certifyCandidate:tS,retainSelection:tN,countEdgeCrossings:F,countOpposingRouteOverlaps:z,countParallelRouteOverlaps:_,measureLabelConflicts:$,DEFAULTS:eO,LABEL_PILL_PADDING:eN,measureRenderStage:ti,graphTextBlock:eP,resolveLabelContent:e9,groupTitleWidth:id,groupHeaderHeight:ih,estimateNodeSize:t8,resolveNodeInlineStyle:eq,resolveEdgeInlineStyle:eK,resolveClassInlineStyle:eQ,containsNonFiniteNumber:iE,finishGraphGeometry:ix,unsupported:e=>{throw new th(e)}};function ik(e,t,i){let r=e1(t,t.stateVisual?.styleDefaults,t.styleFace),o=t=>(function e(t,i,r){return t.some(t=>{let n=eX(i.subgraphs,t.id);return void 0!==n&&t.width+.5<id(n,r)||e(t.children,i,r)})})(t.groups,e,r),a=!1!==t.compareRoutePreferences,s=new WeakMap,l=a&&ep(e)&&!iu(e.edges)?(e,t)=>{s.set(e,t)}:void 0,d=e.subgraphs.length>0&&!il(e,t),h=[{strategy:"default",produce:()=>iv(e,t,l),preferNext:o}],g=(t.nodeSpacing??eO.nodeSpacing)>0&&(t.layerSpacing??eO.layerSpacing)>0,u=void 0===t.graphLayout&&e8("indexed-layout")&&g&&!t.stateVisual&&!t.preserveSubgraphChildOrder&&function(e){if(e.nodes.size<2||e.subgraphs.length>0||e.stateNotes?.length||e.edges.length>=e.nodes.size||[...e.nodes.values()].some(e=>"rectangle"!==e.shape))return!1;let t=new Map,i=new Map;for(let r of e.edges){if(void 0!==r.label||(r.length??1)!==1||r.source===r.target||!e.nodes.has(r.source)||!e.nodes.has(r.target)||t.has(r.target))return!1;t.set(r.target,1);let n=i.get(r.source);n?n.push(r.target):i.set(r.source,[r.target])}let r=[...e.nodes.keys()].filter(e=>!t.has(e));for(let e=0;e<r.length;e++)for(let t of i.get(r[e])??[])r.push(t);return r.length===e.nodes.size}(e)&&(n(),1)?{strategy:"indexed-forest",produce:()=>iv(e,t,l,!0),preferNext:o}:void 0;return t.separateHierarchy||h.push({strategy:"separate-hierarchy",produce:()=>iv(e,{...t,separateHierarchy:!0},l),preferNext:o,qualityAlternative:a&&d}),t.disableCorankFanIn||eU("APL_NO_CORANK_FANIN")||(h.push({strategy:"without-corank",produce:()=>iv(e,{...t,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&t3(e,r).size>0}),t.separateHierarchy||h.push({strategy:"separate-without-corank",produce:()=>iv(e,{...t,separateHierarchy:!0,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&d})),"placement"===i?function(e,t,i,r){let{selected:n}=tP(e,t,i,r,"placement");tw(e,n.positioned);let{width:o,height:a,nodes:s,groups:l}=n.positioned;return{width:o,height:a,nodes:s,groups:l}}(e,r,h,u):function(e,t,i,r,n){let o=tP(e,t,i,n),a=tN(e,o),s=r(a,o.selected.score);if(!s)return a;let l={...o.selected,strategy:"bundled"},d=tS(e,t,s),h=[{strategy:l.strategy,score:l.score}];d.certified&&h.push({strategy:d.certified.strategy,score:d.certified.score});let g=d.certified?tE(l,d.certified):{selected:l,reason:"alternative-invalid"},u=g.selected.positioned;return tw(e,u),u.certification={...a.certification,preference:{...a.certification.preference,selectedScore:g.selected.score,routing:{strategy:g.selected===l?"bundled":s.strategy,preference:{selectedScore:g.selected.score,reason:g.reason,compared:h}}}},u}(e,r,h,(e,t)=>{let i=s.get(e);if(!(!i||0===t.edgeCrossings&&0===t.labelConflicts))return{strategy:"without-generic-bundling",produce:i,preferNext:o}},u)}function iE(e,t=new Set){return"number"==typeof e?!Number.isFinite(e):!(null===e||"object"!=typeof e||t.has(e))&&(t.add(e),Array.isArray(e)?e.some(e=>iE(e,t)):Object.values(e).some(e=>iE(e,t)))}export{ib as a,iw as b,iM as c};
@@ -1 +1 @@
1
- import{c as e}from"./chunk-QA6GJQ4X.js";import{_ as t,k as i}from"./chunk-X2UYKWKM.js";import{za as n}from"./chunk-Z3FDIVLN.js";var l=/^\s*(?:fill|stroke|color)\s*:\s*$/;function s(e){return t(c(e))}function c(t){let s=[],c=t=>e(i(t),{subject:"Style text entity",example:"font-family: Inter#44;serif"});for(let e of function(e){let t=[],i=0,s=0,c="",o=!1;for(let r=0;r<e.length;r++){let f=e[r];if("#"===f){let t=/^#\w+;/.exec(e.slice(r))?.[0];if(t&&!(l.test(e.slice(i,r))&&null!==n(t.slice(0,-1)))){r+=t.length-1,o=!1;continue}}if(o){o=!1;continue}if("\\"===f){o=!0;continue}if(c){f===c&&(c="");continue}if('"'===f||"'"===f){c=f;continue}"("===f?s++:")"===f?s=Math.max(0,s-1):(","===f||";"===f)&&0===s&&(t.push(e.slice(i,r)),i=r+1)}return t.push(e.slice(i)),t}(t)){let t=e.indexOf(":");if(t<=0)continue;let i=c(e.slice(0,t).trim()),n=c(e.slice(t+1).trim().replace(/\\,/g,","));i&&n&&s.push([i,n])}return s}export{s as a,c as b};
1
+ import{c as e}from"./chunk-J57YRC2M.js";import{_ as t,k as i}from"./chunk-G4JBA7HU.js";import{Aa as n}from"./chunk-EIYLJ4FI.js";var l=/^\s*(?:fill|stroke|color)\s*:\s*$/;function s(e){return t(c(e))}function c(t){let s=[],c=t=>e(i(t),{subject:"Style text entity",example:"font-family: Inter#44;serif"});for(let e of function(e){let t=[],i=0,s=0,c="",o=!1;for(let r=0;r<e.length;r++){let f=e[r];if("#"===f){let t=/^#\w+;/.exec(e.slice(r))?.[0];if(t&&!(l.test(e.slice(i,r))&&null!==n(t.slice(0,-1)))){r+=t.length-1,o=!1;continue}}if(o){o=!1;continue}if("\\"===f){o=!0;continue}if(c){f===c&&(c="");continue}if('"'===f||"'"===f){c=f;continue}"("===f?s++:")"===f?s=Math.max(0,s-1):(","===f||";"===f)&&0===s&&(t.push(e.slice(i,r)),i=r+1)}return t.push(e.slice(i)),t}(t)){let t=e.indexOf(":");if(t<=0)continue;let i=c(e.slice(0,t).trim()),n=c(e.slice(t+1).trim().replace(/\\,/g,","));i&&n&&s.push([i,n])}return s}export{s as a,c as b};
@@ -0,0 +1 @@
1
+ import{a as e,b as t,c as i}from"./chunk-CPO5P4L2.js";import{f as r,o as n,p as o,t as a}from"./chunk-3JTYTXA6.js";import{$a as l,Aa as s,Fa as d,Ga as u,Ha as f,Ia as y,Ja as h,La as c,Ma as p,Na as x,Q as m,Qa as g,R as b,Ra as k,Sa as v,Ta as w,Ua as M,Wa as O,X as N,Z as j,Za as P,fb as F,ib as S,ob as z,vb as E,xb as B,zb as T}from"./chunk-EIYLJ4FI.js";var L=new WeakMap,C=new WeakMap;function W(e){return C.get(e)??L.get(e)}var I=new WeakMap,D=new WeakSet,$=Object.freeze([1,0,0,1,0,0]);function A(e){return I.get(e)}function R(e){return[e.x0,e.x1,e.y0,e.y1].every(Number.isFinite)&&e.x0<=e.x1&&e.y0<=e.y1}function U(e){return"none"===e||"transparent"===e||!!e&&s(e)?.[3]===0}function _(e){if(void 0===e)return 1;let t=e.trim();if(!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/.test(t))return NaN;let i=Number(t);return Number.isFinite(i)?Math.max(0,Math.min(1,i)):NaN}function q(e,t){return 0===e||0===t?0:e*t}function J(e,t){return e&&0!==Number(t.opacity??1)&&(!U(t.fill)||void 0!==t.stroke&&!U(t.stroke)&&0!==Number.parseFloat(t.strokeWidth??"1"))}function X(e,t){return e?e.lineBlocks.some(e=>e.runs.some(e=>""!==e.text.trim())):""!==t.trim()}var G=new WeakSet,K=Object.freeze([]);function V(e){return Object.freeze({id:e.id,role:e.role})}function Y(e,t){let i=V(t),r=Object.freeze([...void 0===e?K:G.has(e)?e:Array.from(e,V),i]);return G.add(r),r}function Z(e){let t=H(e,void 0,!0);return{leaf(e,i,r,n=K,o=!1,a=1,l){if(!G.has(n))throw TypeError("Native paint ancestors must be owned snapshots");t.leaf(e,i,r,n,o,a,l)},finish:t.finish}}function H(e,t,i=!1){let r=[],n={measured:0,unmeasured:0,nonPainting:0,preparedText:0,fallbackText:0};return{leaf:(e,o,a,l,s,y,h,c=void 0===a)=>{let p=h??e.owner??l.at(-1)??e.identity??{id:e.id,role:e.role},x=i?function(e){switch(e.kind){case"shape":return Object.freeze({kind:e.kind,geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.transform?{transform:e.transform}:{}});case"connector":return Object.freeze({kind:e.kind,lineStyle:e.lineStyle,endpoints:e.endpoints,route:e.route,stroke:e.stroke,markers:e.markers,...e.transform?{transform:e.transform}:{}});case"text":return Object.freeze({kind:e.kind,paint:e.paint});case"document":return Object.freeze({kind:e.kind})}}(e):void 0,m=0===y||("document"===e.kind?"content"!==e.element||void 0!==e.nonPaint||""===E(e).trim():"text"===e.kind?!J(X(e.block,e.text),e.paint):"connector"===e.kind?"invisible"===e.lineStyle:"shape"===e.kind&&!e.conditionalPaint&&[e.paint,...e.childPaints??[]].every(e=>void 0!==e.opacity&&0===Number(e.opacity)||U(e.fill)&&(void 0===e.stroke||U(e.stroke)))),[g,b,w,M,N,j]=a??d,P=a||e.transform?{kind:"matrix",a:g,b:b,c:w,d:M,e:N,f:j}:void 0,F=a||e.transform?Object.freeze(f(a??d,u(e.transform))):$,S=m?void 0:O(e,P),z=!!S&&R(S),B=Object.freeze({key:o,id:e.id,kind:e.kind,role:e.role,owner:i&&l.includes(p)?p:V(p),ancestors:l,order:r.length,coverage:m?"non-painting":z?"measured":"unmeasured",...s||"conditional"===e.visibility||!Number.isFinite(y)?{visibility:"conditional"}:{},...y<1?{groupOpacity:y}:{},...z?{bounds:Object.freeze(S)}:{},...!m&&!z?{reason:"document"===e.kind?"opaque-visible-content":"missing-paint-geometry"}:{},..."text"===e.kind?{text:Object.freeze({measurement:e.measurement??"unavailable",...t?.(e.text,e.block,!0)})}:{}});x?C.set(B,x):L.set(B,e),I.set(B,F),c&&!e.transform&&D.add(B),r.push(B),m?n.nonPainting++:z?n.measured++:n.unmeasured++,"text"===e.kind&&!m&&("prepared"===e.measurement?n.preparedText++:n.fallbackText++),"connector"===e.kind&&e.labels.forEach((i,a)=>{if(i.visual?.kind!=="inline")return;let l={...i.paint,...i.halo?{stroke:i.halo.color??"var(--bg)",strokeWidth:String(i.halo.width)}:{}},s=0===y||!J(X(i.block,i.text),l),d=s?void 0:k(i),[u,f,h,c,p,m]=F,g=d&&v(d,{kind:"matrix",a:u,b:f,c:h,d:c,e:p,f:m}),b=!!g&&R(g),w=Object.freeze({key:`${o}.label.${a}`,id:i.id??`${e.id}:label:${a}`,kind:"text",role:"label",owner:B.owner,ancestors:B.ancestors,order:r.length,coverage:s?"non-painting":b?"measured":"unmeasured",...B.visibility?{visibility:B.visibility}:{},...y<1?{groupOpacity:y}:{},...b?{bounds:Object.freeze(g)}:s?{}:{reason:"missing-inline-label-geometry"},text:Object.freeze({measurement:i.block?"prepared":"fallback",...t?.(i.text,i.block)})});x?C.set(w,x):L.set(w,e),I.set(w,F),r.push(w),s?n.nonPainting++:(b?n.measured++:n.unmeasured++,i.block?n.preparedText++:n.fallbackText++)})},finish:()=>Object.freeze({version:1,family:e.family,bounds:Object.freeze({width:e.width,height:e.height}),primitives:Object.freeze(r),coverage:Object.freeze(n)})}}function Q(e,t,i,r,n,o){o?.();let a=e.geometry;if(!a)return[];let l="start"===r&&"auto-start-reverse"===e.orient?-1:1,s=Math.hypot(i.x,i.y);if(!s)return[];let d=l*i.x/s,u=l*i.y/s,f=e.viewBox,y=("userSpaceOnUse"===e.units?1:n)*Math.max(1,e.scale??1)*(f&&e.size?Math.min(e.size.width/f.width,e.size.height/f.height):1);if(!Number.isFinite(y))throw TypeError("Nonfinite Class marker scale");if(y<=0)return[];let h=i=>{o?.();let r=(i.x-(e.ref?.x??0))*y,n=(i.y-(e.ref?.y??0))*y;return{x:t.x+d*r-u*n,y:t.y+u*r+d*n}},c=e.paint??{},p=c.stroke&&"none"!==c.stroke&&"transparent"!==c.stroke?Number.parseFloat(c.strokeWidth??"1")/2:0,x=void 0!==c.fill&&"none"!==c.fill&&"transparent"!==c.fill;if("circle"===a.kind){let e=h({x:a.cx,y:a.cy});return[{kind:"circle",cx:e.x,cy:e.y,r:(a.r+p)*y}]}if("polygon"!==a.kind&&"polyline"!==a.kind)throw TypeError("Unmeasured Class marker geometry");let m=a.points,g=[];if(x&&"polygon"===a.kind){for(let e=0;e<m.length;e++)o?.();g.push([...m])}let b="polygon"===a.kind?m.length:m.length-1,k=(e,t)=>{o?.();let i=Math.hypot(t.x-e.x,t.y-e.y);return{x:(t.x-e.x)/i,y:(t.y-e.y)/i}};if(p>0){for(let e=0;e<b;e++){o?.();let t=m[e],i=m[(e+1)%m.length],r=k(t,i),n={x:-r.y*p,y:r.x*p};g.push([{x:t.x+n.x,y:t.y+n.y},{x:i.x+n.x,y:i.y+n.y},{x:i.x-n.x,y:i.y-n.y},{x:t.x-n.x,y:t.y-n.y}])}for(let e=+("polygon"!==a.kind);e<("polygon"===a.kind?m.length:m.length-1);e++){o?.();let t=m[e],i=m[(e-1+m.length)%m.length],r=m[(e+1)%m.length],n=k(i,t),a=k(t,r),l=n.x*a.y-n.y*a.x;if(!l)continue;let s=l>0?-1:1,d={x:t.x-s*n.y*p,y:t.y+s*n.x*p},u={x:t.x-s*a.y*p,y:t.y+s*a.x*p},f=((u.x-d.x)*a.y-(u.y-d.y)*a.x)/l,y={x:d.x+f*n.x,y:d.y+f*n.y};g.push(Math.hypot(y.x-t.x,y.y-t.y)<=Number(c.strokeMiterlimit??"4")*p?[t,d,y,u]:[t,d,u])}}let v=(e,t,i,r)=>{let n=[];for(let a=0;a<e.length;a++){o?.();let l=e[a],s=e[(a+1)%e.length],d=e=>r?e[t]>=i:e[t]<=i,u=d(l),f=d(s);if(u&&n.push(l),u!==f){let e=(i-l[t])/(s[t]-l[t]);n.push({x:l.x+e*(s.x-l.x),y:l.y+e*(s.y-l.y)})}}return n};return g.flatMap(t=>{if(o?.(),"hidden"===e.overflow&&f)for(let[e,i,r]of[["x",f.x,!0],["x",f.x+f.width,!1],["y",f.y,!0],["y",f.y+f.height,!1]])o?.(),t=v(t,e,i,r);let i=t[0],r=0;if(i)for(let e=0;e<t.length;e++){o?.();let n=t[e],a=t[(e+1)%t.length];r+=(n.x-i.x)*(a.y-i.y)-(n.y-i.y)*(a.x-i.x)}return t.length>=3&&0!==r?[{kind:"polygon",points:t.map(h)}]:[]})}G.add(K);var ee=4e5,et=new WeakSet,ei=new WeakMap;function er(e){let t=0,i=!1,n=!1,o=new Map,s=[],d=(r=1)=>!i&&(!Number.isSafeInteger(r)||r<0||r>e-t?(i=!0,!1):(t+=r,!0)),u=Symbol("unsupported-emission"),f=(e,t=0,i=new Set)=>{if(t>64)throw u;if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e)return e;if("object"!=typeof e||!d()||i.has(e))throw u;if(N(e))return e;let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&null!==r&&r!==Array.prototype)throw u;let n=Object.getOwnPropertyNames(e);if(!d(n.length))throw u;i.add(e);let o=Array.isArray(e)?[]:{},a,s=P(e);for(let r of n){if(!d())throw u;let n=Object.getOwnPropertyDescriptor(e,r);if(n){if("length"===r&&Array.isArray(e)){a=n;continue}if(!("terminalProjection"===r&&s)){if(!("value"in n))throw u;Object.defineProperty(o,r,{value:f(n.value,t+1,i),enumerable:n.enumerable,configurable:!1,writable:!1})}}}if(Array.isArray(e)){if(!a||!("value"in a))throw u;Object.defineProperty(o,"length",{value:a.value,writable:!1})}if(s){if(!d(3)||!l(e,o))throw u;let t=Object.getOwnPropertyDescriptor(o,"terminalProjection");Object.defineProperty(o,"terminalProjection",{...t,configurable:!1})}return j(e,o),i.delete(e),Object.preventExtensions(o)},y=e=>{try{return f(e)}catch{return}},h=(e,t)=>{if(!d())return!1;if("string"==typeof e&&"string"==typeof t)return d(e.length+t.length)&&e===t;if(e===t)return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;let i=0,r=0;if(!d(2))return!1;let n=Object.getOwnPropertyNames(e),o=Object.getOwnPropertyNames(t);if(!d(n.length+o.length))return!1;for(let r of n){if(!d(3))return!1;let n=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);if(n&&(i++,!o||!("value"in n)||!("value"in o)||n.enumerable!==o.enumerable||!h(n.value,o.value)))return!1}for(let e of o){if(!d())return!1;Object.hasOwn(t,e)&&r++}return i===r},c=t=>{if(!d())return;if("string"==typeof t)return 6*t.length+2;if("number"==typeof t)return 32;if(!t||"object"!=typeof t)return 8;let i=64;if(!d())return;let r=Object.getOwnPropertyNames(t);if(d(r.length)){for(let n of r){if(!d(3))return;let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!("value"in r))return;let o=c(r.value);if(void 0===o||!Number.isSafeInteger(i+=n.length+16+o)||i>e)return}return i}};return{snapshot:y,same:h,retainFragment:()=>d(),parts(e,t){if(!d()||!Array.isArray(e))return n=!0,e;let i=Object.getOwnPropertyDescriptor(e,"length")?.value;if(!Number.isSafeInteger(i)||i<0||i>t)throw RangeError("Native drawing contains too many emitted nodes");if(!d(4*i))return n=!0,e;let r=[];for(let t=0;t<i;t++){let i=Object.getOwnPropertyDescriptor(e,String(t));i&&"value"in i?r.push(i.value):(n=!0,r.push(e[t]))}return Object.freeze(r)},uncertain(){n=!0},header(e,t){if(!d(8*t.length+128))return e;let i=F(t).find(e=>"svg"===e.name);if(!i)return n=!0,e;let o=m(e.width),a=m(e.height),l=S(i,"viewBox");for(let t of((void 0!==l?l!==`0 0 ${o} ${a}`:S(i,"width")!==o||S(i,"height")!==a)&&(n=!0),i.attributes)){if(!d())return e;["xmlns","width","height","viewBox","style","role","class","id"].includes(t.name)||t.name.startsWith("data-")||t.name.startsWith("aria-")||(n=!0)}let s=Object.freeze({...e,width:Number(o),height:Number(a)}),u=e.colors,f=S(i,"style");if(void 0===f)return s;let y=new Set;for(let e of f.split(";")){if(!d(e.length+4))break;if(!e.trim())continue;let t=e.indexOf(":"),i=e.slice(0,t).trim(),o=e.slice(t+1).trim();if(t<0||y.has(i)){n=!0;continue}if(y.add(i),"background"!==i||"var(--bg)"!==o){if("--font"===i){d("string"==typeof u.font?4*u.font.length:1)&&r(u.font)===o||(n=!0);continue}["bg","fg","line","accent","muted","surface","border","font"].some(e=>`--${e}`===i)&&u[i.slice(2)]===o||(n=!0)}}return s},group(e,t){let i=t&&T(t);if(d(3)){if(!i||i.open!==e.open||i.opacity!==e.paint?.opacity){n=!0;return}return(i.style||e.paint?.fill!==void 0)&&(n=!0),i.matrix}},observe(e,t){if(!d(2*(1+("connector"===e.kind?e.labels.length:0))))return!1;if("connector"===e.kind){let t=e=>{e&&d(2)&&s.push(e)};for(let i of(t(e.markers.start),e.markers.mid)){if(!d())break;t(i)}t(e.markers.end)}else if("document"===e.kind&&"definitions"===e.element){if(!d(8*t.length))return!1;for(let e of F(t)){if(!d(e.attributes.length+1))break;if("marker"!==e.name)continue;let i=S(e,"id"),r=t.indexOf("</marker>",e.end);if(!i||r<0||o.has(i)){n=!0;continue}let a=t.slice(e.start,r+9).replace(/(^|\n)[ \t]+(?=<)/g,"$1");if(!d(2))break;o.set(i,a)}}return!i},leaf(e){let t=y(e);return t?(B(e,t),{node:t,conditional:!1}):{node:e,conditional:!0}},finish(e,r){let l=new Map;for(let e of s){if(!d())break;try{if(!d(2))break;let t=l.get(e.id);if(t&&h(t,e))continue;let i=c(e);if(void 0===i||!d(2*i)){n=!0;break}let r=a(e,{indent:0}).replace(/(^|\n)[ \t]+(?=<)/g,"$1");d(3*r.length)&&o.get(e.id)===r?d(2)&&l.set(e.id,e):n=!0}catch{n=!0}}for(let t of e.primitives)"conditional"!==t.visibility&&et.add(t);ei.set(e,Object.freeze({operations:t,exhausted:i,uncertain:n,header:r}))}}}var en=1e5,eo=(e,t,i=0)=>e.x0<=t.x0+i&&e.y0<=t.y0+i&&e.x1>=t.x1-i&&e.y1>=t.y1-i,ea=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1,el=e=>({x0:e.x,y0:e.y,x1:e.x+e.w,y1:e.y+e.h}),es=Symbol("paint query work limit");function ed(t,r,n){let o=(e=1)=>{for(let t=0;t<e;t++)if(!r())throw es},a=i(t,e=>e.bounds,o,n);return t=>{try{let i=a(t);return e(i,(e,t)=>e.index-t.index,o),i}catch(e){if(e!==es)throw e;return[]}}}function eu(e,t){let i=_(t.opacity),r=_(t.fillOpacity),n=t.fill?s(t.fill):null;return"line"!==e.kind&&"none"!==t.fill&&"transparent"!==t.fill&&!(i<1||r<1||n&&n[3]<1)}function ef(e,t){return 0!==_(t.opacity)&&0!==_(t.strokeOpacity)&&0!==M(t,["polygon","polyline","path","compound"].includes(e.kind))}function ey(e,t,i,r,n=0,o=()=>!0,a,l,s=!1){let d=W(e.primitive);if(d?.kind!=="shape")return!1;let u=h(A(e.primitive));if(!u)return!1;let{geometry:f,paint:c,childPaints:p}=d,x=(r??[{x:t.x0,y:t.y0},{x:t.x0,y:t.y1},{x:t.x1,y:t.y0},{x:t.x1,y:t.y1}]).map(e=>y(e,u)),[g,k,v,w]=u,O=(Math.hypot(g+w,k-v)+Math.hypot(g-w,k+v))/2,N=n*O,j=l?y(l,u):void 0,P=!1,F,S=[],z=(r,n=e.borderWidth??0,a=c,l=!0,h=e.bounds,g)=>{if(!o())return!1;if(!g&&S.includes(r)||g&&(g.x<h.x0||g.x>h.x1||g.y<h.y0||g.y>h.y1))return!0;let k=g?[y(g,u)]:x,v=g?0:N,w=g?-1e-8:1e-8*!s,E=g?-1e-8:0;if("compound"===r.kind)return r===f&&r.children.length<=64&&r.children.every((t,i)=>"compound"!==t.kind&&z(t,e.partBorderWidths?.[i]??0,p?.[i]??c,e.partFilled?.[i]??!0,e.partBounds?.[i]??e.bounds,g));if(!l&&(0===_(a.opacity)||0===_(a.strokeOpacity)||0===M(a,"line"!==r.kind)))return!0;if("line"===r.kind){if(!g&&F&&j&&["butt","round","square"].includes(a.strokeLinecap??"butt")){if(!o())return!1;let e=r.x2-r.x1,t=r.y2-r.y1,i=j.x===r.x1&&j.y===r.y1?1:j.x===r.x2&&j.y===r.y2?-1:0;if(i&&Number.isFinite(e)&&Number.isFinite(t)&&(0!==e||0!==t)&&x.every(r=>{if(!o())return!1;let n=((r.x-j.x)*e+(r.y-j.y)*t)*i;return Number.isFinite(n)&&n<=0}))return z(r,n,a,l,h,F)}let e=M(a,!1);if(void 0===e)return!1;if(0===e)return!0;let t=e*("non-scaling-stroke"===a.vectorEffect?O:1);return k.every(e=>o()&&e.x+v<=Math.min(r.x1,r.x2)-t+E)||k.every(e=>o()&&e.x-v>=Math.max(r.x1,r.x2)+t-E)||k.every(e=>o()&&e.y+v<=Math.min(r.y1,r.y2)-t+E)||k.every(e=>o()&&e.y-v>=Math.max(r.y1,r.y2)+t-E)}let B=M(a,["polygon","polyline","path"].includes(r.kind));if(void 0===B)return!1;if(g)v=B*("non-scaling-stroke"===a.vectorEffect?O:1);else if(B>0&&0!==_(a.opacity)&&0!==_(a.strokeOpacity)&&!(i&&P&&n>0)&&ea(h,t))return!1;let T=!g&&i&&P?Math.max(0,n/2):0;if("rect"===r.kind){let t=Math.min(r.width/2,r.rx??r.ry??0),i=Math.min(r.height/2,r.ry??r.rx??0);if(t>0&&i>0){var L;let l=!d.transform&&(L=e.primitive,D.has(L))&&u.every((e,t)=>e===[1,0,0,1,0,0][t])&&Number(m(n))===n&&Number.parseFloat(b("stroke-width",a.strokeWidth??"1"))===Number.parseFloat(a.strokeWidth??"1"),s=l&&Number(m(r.x))===r.x&&Number(m(r.width))===r.width,f=l&&Number(m(r.y))===r.y&&Number(m(r.height))===r.height;if(s&&(k.every(e=>o()&&e.x+v<=r.x+T+w)||k.every(e=>o()&&e.x-v>=r.x+r.width-T-w))||f&&(k.every(e=>o()&&e.y+v<=r.y+T+w)||k.every(e=>o()&&e.y-v>=r.y+r.height-T-w)))return!0;let y=r.x+r.width/2,h=r.y+r.height/2,c=r.width/2-t,p=r.height/2-i;for(let e of k){if(!o())break;let r=e.x-y,n=e.y-h,a=(r-Math.max(-c,Math.min(c,r)))/(t*t),l=(n-Math.max(-p,Math.min(p,n)))/(i*i),s=Math.hypot(a,l);if(!s)continue;let d=a/s,u=l/s,f=c*Math.abs(d)+p*Math.abs(u)+Math.hypot(t*d,i*u)-T+v;if(k.every(e=>o()&&(e.x-y)*d+(e.y-h)*u>=f-w))return!0}return!1}}if("ellipse"===r.kind||"circle"===r.kind){let e="circle"===r.kind?r.r:r.rx,t="circle"===r.kind?r.r:r.ry;if(!(e>0&&t>0))return!1;if("circle"===r.kind){let t=Math.max(Math.min(...k.map(e=>e.x)),Math.min(r.cx,Math.max(...k.map(e=>e.x)))),i=Math.max(Math.min(...k.map(e=>e.y)),Math.min(r.cy,Math.max(...k.map(e=>e.y))));if(Math.hypot(t-r.cx,i-r.cy)>=e-T+v-w)return!0}for(let i of k){if(!o())break;let n=(i.x-r.cx)/(e*e),a=(i.y-r.cy)/(t*t),l=Math.hypot(n,a);if(!l)continue;let s=n/l,d=a/l,u=Math.hypot(e*s,t*d)-T+v;if(k.every(e=>o()&&(e.x-r.cx)*s+(e.y-r.cy)*d>=u-w))return!0}return!1}let C="rect"===r.kind?[{x:r.x,y:r.y},{x:r.x+r.width,y:r.y},{x:r.x+r.width,y:r.y+r.height},{x:r.x,y:r.y+r.height}]:"polygon"===r.kind?r.points:void 0;if(!C||C.length<3||C.length>64)return!1;let W=(e,t,i)=>(t.x-e.x)*(i.y-e.y)-(t.y-e.y)*(i.x-e.x),I=Math.sign(C.reduce((e,t,i)=>{let r=C[(i+1)%C.length];return e+t.x*r.y-r.x*t.y},0));return!!I&&!!C.every((e,t)=>C.every(i=>o()&&I*W(e,C[(t+1)%C.length],i)>=-(g||s?0:1e-8)))&&C.some((e,t)=>{let i=C[(t+1)%C.length],r=Math.hypot(i.x-e.x,i.y-e.y);return r>0&&k.every(t=>o()&&I*W(e,i,t)<=(T-v+w)*r)})};if(i&&(F=a?.find(t=>o()&&z(f,e.borderWidth??0,c,!0,e.bounds,t))),(P=void 0!==F)&&j&&"compound"===f.kind&&u.every((e,t)=>e===[1,0,0,1,0,0][t])){let t=f.children[0];if(o()&&t?.kind==="rect"&&!t.rx&&!t.ry&&e.partFilled?.[0]&&0===M(p?.[0]??c,!1)){let i=j.x===t.x?1:2*(j.x===t.x+t.width),r=f.children[i],n=e.partOwnBorderWidths?.[i]??0;i&&r?.kind==="line"&&n>0&&r.x1===r.x2&&r.x1===j.x&&Math.min(r.y1,r.y2)===t.y&&Math.max(r.y1,r.y2)===t.y+t.height&&j.y>t.y&&j.y<t.y+t.height&&x.every(e=>o()&&(1===i?-1:1)*(e.x-r.x1)>=N-n/2)&&(S=[t,r])}}return z(f)}function eh(e,t,i,r,o,a){let l,d=e=>{for(let t=0;t<e;t++)if(!o())return!1;return!0};if(!d(3)||!i||"mid"===r||i.geometry?.kind!=="polygon"&&i.geometry?.kind!=="polyline"||i.geometry.points.length<3||i.geometry.points.length>64||t.transform||"polyline"===i.geometry.kind&&i.paint?.strokeLinecap!==void 0&&!["butt","round"].includes(i.paint.strokeLinecap)||t.route.closed||t.stroke.nonScaling||t.stroke.mixBlendMode&&"normal"!==t.stroke.mixBlendMode||(i.scale??1)!==1||i.paint?.vectorEffect==="non-scaling-stroke"||i.paint?.strokeLinejoin&&!["miter","round","bevel"].includes(i.paint.strokeLinejoin)||!i.size||!i.ref||!(i.size.width>0)||!(i.size.height>0)||!Number.isFinite(i.size.width+i.size.height+i.ref.x+i.ref.y)||i.viewBox&&(!(i.viewBox.width>0)||!(i.viewBox.height>0)||!Number.isFinite(i.viewBox.x+i.viewBox.y+i.viewBox.width+i.viewBox.height)))return;let u=String(t.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(u))return;let f=Number.parseFloat("number"==typeof t.stroke.width?m(t.stroke.width):b("stroke-width",t.stroke.width));if(!(f>0)||!Number.isFinite(f)||!d(12+5*i.geometry.points.length))return;let y=t.route.geometry,h,c,p=(e,t)=>{if(!o())return!1;let i={x:Number(m(e)),y:Number(m(t))};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return!1;if(h){if(i.x!==h.x||i.y!==h.y)return c=i,!1}else h=i;return!0};if("line"===y.kind)p("start"===r?y.x1:y.x2,"start"===r?y.y1:y.y2),p("start"===r?y.x2:y.x1,"start"===r?y.y2:y.y1);else if("polyline"!==y.kind)return;else for(let e=0;e<y.points.length;e++){let t=y.points["start"===r?e:y.points.length-e-1];if(!p(t.x,t.y))break}if(!h||!c||!o()||h.x!==c.x&&h.y!==c.y)return;let x=i.geometry.points,k="polygon"===i.geometry.kind?i:{...i,geometry:{kind:"polygon",points:x}},v="start"===r?{x:c.x-h.x,y:c.y-h.y}:{x:h.x-c.x,y:h.y-c.y},w="start"===r?h:c,M="start"===r?c:h,O={kind:"line",x1:w.x,y1:w.y,x2:M.x,y2:M.y},N=g({route:{...t.route,geometry:O,contours:[{start:w,end:M,closed:!1,startTangent:v,endTangent:v}]},stroke:{...t.stroke,width:f},markers:{mid:[],..."start"===r?{start:k}:{end:k}}})[0],j=N?.hull;if(!j||j.length!==x.length||!d(j.length))return;let P=0;for(let e=0;e<j.length;e++){let t=j[e],i=j[(e+1)%j.length];for(let e of j){if(!o())return;let r=(i.x-t.x)*(e.y-t.y)-(i.y-t.y)*(e.x-t.x);if(!Number.isFinite(r))return;if(r){if(P&&Math.sign(r)!==P)return;P||=Math.sign(r)}}}if(!P)return;let F=k.viewBox??(k.size?{x:0,y:0,...k.size}:void 0),S=e=>"visible"===k.overflow||!!F&&e.x>F.x&&e.x<F.x+F.width&&e.y>F.y&&e.y<F.y+F.height,z=i.paint??{},E=t=>{if(!t||!o())return;let i=a?a(t):n(t,e.colors);return i?s(i)??void 0:void 0},B=E(z.fill),T=E(z.stroke),L=_(z.opacity),C="none"===z.fill||L<1||B&&B[3]<1?"absent":B?.[3]===1&&1===L&&x.every(e=>o()&&S(e))?"opaque":"unknown",W=void 0===z.stroke||"none"===z.stroke||0===L||T?.[3]===0,I=z.strokeWidth??"1",D=/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(I)?Number.parseFloat(I):void 0,$=("userSpaceOnUse"===k.units?1:f)*(k.viewBox&&k.size?Math.min(k.size.width/k.viewBox.width,k.size.height/k.viewBox.height):1),A=W?0:void 0!==D&&Number.isFinite(D*$)?D*$/2:void 0,R=W||0===D?"absent":void 0!==D&&D>0&&T?.[3]===1&&1===L&&!z.strokeDasharray?"visible":"unknown",U=[];if(!W&&void 0!==D&&D>0&&T?.[3]===1&&1===L&&!z.strokeDasharray){for(let e=0;e<x.length-("polyline"===i.geometry.kind);e++){let t=x[e],i=x[(e+1)%x.length];if(t.x!==i.x||t.y!==i.y)for(let r=1;r<4;r++){if(!d(3))return;let n=r/4;S({x:t.x*(1-n)+i.x*n,y:t.y*(1-n)+i.y*n})&&U.push({x:j[e].x*(1-n)+j[(e+1)%j.length].x*n,y:j[e].y*(1-n)+j[(e+1)%j.length].y*n})}}let e=+("polygon"!==i.geometry.kind),t=x.length-("polygon"!==i.geometry.kind);for(let i=e;i<t;i++){if(!d(2))return;let e=x[(i+x.length-1)%x.length],t=x[i],r=x[(i+1)%x.length];(e.x!==t.x||e.y!==t.y)&&(t.x!==r.x||t.y!==r.y)&&S(t)&&U.push(j[i])}}let q=!1;if("hidden"===i.overflow){if(!d(5))return;q=i.viewBox?.x===0&&0===i.viewBox.y&&i.viewBox.width===i.size.width&&i.viewBox.height===i.size.height}if(("visible"===i.overflow||q)&&(void 0===i.orient||"auto"===i.orient||"auto-start-reverse"===i.orient)&&"unknown"!==C&&"unknown"!==R&&1===L&&("polygon"===i.geometry.kind||"none"===z.fill||B?.[3]===0)&&!z.strokeDasharray&&(void 0===z.strokeLinecap||"butt"===z.strokeLinecap)&&(void 0===z.strokeLinejoin||"miter"===z.strokeLinejoin)&&(void 0===z.strokeMiterlimit||4===Number(z.strokeMiterlimit))){if(q&&!d(16))return;l={marker:q?{id:i.id,shape:i.shape,geometry:i.geometry,paint:i.paint,units:i.units,size:i.size,ref:i.ref,orient:i.orient,viewBox:i.viewBox,scale:i.scale,overflow:"visible"}:i,anchor:h,tangent:v,position:r,width:f}}return(!l||o())&&d(6)?{repaint:{resource:N.repaint,anchor:h,geometry:i.geometry.kind},hull:j,fill:C,stroke:R,fillColor:B,strokeColor:T,innerStroke:A,strokeWitnesses:U,padding:N.padding,...l?{paintPieceSource:l}:{}}:void 0}function ec(e,t){let i=e.marker.geometry;if("polygon"!==i.kind&&"polyline"!==i.kind)return;let r=i.points,n="polygon"===i.kind?r.length:r.length-2;for(let e=0;e<n;e++){for(let e=0;e<8;e++)if(!t())return;let n="polygon"===i.kind?e:e+1,o=r[(n+r.length-1)%r.length],a=r[n],l=r[(n+1)%r.length],s=a.x-o.x,d=a.y-o.y,u=l.x-a.x,f=l.y-a.y,y=Math.hypot(s,d),h=Math.hypot(u,f),c=s/y*(u/h)+d/y*(f/h);if(!(y>0)||!(h>0)||!Number.isFinite(c)||c<=-.875+128*Number.EPSILON)return}let o={},a;try{a=Q(e.marker,e.anchor,e.tangent,e.position,e.width,()=>{if(!t())throw o})}catch(e){if(e===o)return;throw e}for(let e of a){if(!t()||"polygon"!==e.kind||e.points.length<3)return;let i=0;for(let r=0;r<e.points.length;r++){if(!t())return;let n=e.points[r],o=e.points[(r+1)%e.points.length];if(!Number.isFinite(n.x)||!Number.isFinite(n.y))return;i+=(n.x-e.points[0].x)*(o.y-e.points[0].y)-(n.y-e.points[0].y)*(o.x-e.points[0].x)}if(!Number.isFinite(i)||0===i)return}return a}function ep(e,t,i){if(!i())return"exhausted";let r=e=>e?.fill==="absent"&&"absent"===e.stroke&&(e.fillColor?.[3]===0||e.paintPieceSource?.marker.paint?.fill==="none");if(r(e)||r(t))return"clear";if(!e?.paintPieceSource||!t?.paintPieceSource)return"unknown";let n={},o=()=>{if(!i())throw n;return!0};try{let i=ec(e.paintPieceSource,o);if(i){let e=ec(t.paintPieceSource,o);if(e&&function(e,t,i){for(let r of e)for(let e of t){if(!i()||"polygon"!==r.kind||"polygon"!==e.kind)return!1;let t=!1;for(let n of[r.points,e.points]){for(let o=0;o<n.length;o++){if(!i())return!1;let a=n[o],l=n[(o+1)%n.length],s=a.y-l.y,d=l.x-a.x,u=Math.hypot(s,d);if(!(u>0)||!Number.isFinite(u))continue;let f=s/u,y=d/u,h=r.points[0],c=1/0,p=-1/0,x=1/0,m=-1/0,g=1;for(let e of r.points){if(!i())return!1;let t=(e.x-h.x)*f+(e.y-h.y)*y;c=Math.min(c,t),p=Math.max(p,t),g=Math.max(g,Math.abs(e.x),Math.abs(e.y))}for(let t of e.points){if(!i())return!1;let e=(t.x-h.x)*f+(t.y-h.y)*y;x=Math.min(x,e),m=Math.max(m,e),g=Math.max(g,Math.abs(t.x),Math.abs(t.y))}let b=1e-8+128*Number.EPSILON*g;if(Number.isFinite(c+p+x+m)&&(p+b<x||m+b<c)){t=!0;break}}if(t)break}if(!t)return!1}return!0}(i,e,o))return"clear"}}catch(e){if(e===n)return"exhausted";throw e}return"unknown"}function ex(e,t,i,r=0){if(!i()||!Number.isSafeInteger(r)||r<0)return"unknown";if(t?.fill==="absent"||e?.stroke==="absent"&&"absent"===e.fill)return"clear";if(!e||!t)return"unknown";let n=t.hull;if(void 0!==e.innerStroke){let t=0;for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let n=e.hull[r],o=e.hull[(r+1)%e.hull.length],a=e.hull[(r+2)%e.hull.length],l=(o.x-n.x)*(a.y-o.y)-(o.y-n.y)*(a.x-o.x);if(l){t=Math.sign(l);break}}if(t)for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let o=e.hull[r],a=e.hull[(r+1)%e.hull.length],l=a.x-o.x,s=a.y-o.y,d=Math.hypot(l,s);if(!d)continue;let u=!0;for(let r of n){if(!i())return"unknown";let n=t*(l*(r.y-o.y)-s*(r.x-o.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(a.x),Math.abs(a.y));if(!Number.isFinite(n)||n>=-e.innerStroke-f){u=!1;break}}if(u)return"clear"}}if(void 0!==e.padding&&Number.isFinite(e.padding))for(let t of[e.hull,n])for(let r=0;r<t.length;r++){if(!i())return"unknown";let o=t[r],a=t[(r+1)%t.length],l=a.y-o.y,s=o.x-a.x,d=Math.hypot(l,s);if(!d)continue;let u=1/0,f=-1/0,y=1/0,h=-1/0;for(let t of e.hull){if(!i())return"unknown";let e=(t.x-o.x)*l+(t.y-o.y)*s;u=Math.min(u,e),f=Math.max(f,e)}for(let e of n){if(!i())return"unknown";let t=(e.x-o.x)*l+(e.y-o.y)*s;y=Math.min(y,t),h=Math.max(h,t)}if(f+e.padding*d<y||h<u-e.padding*d)return"clear"}if(e.paintPieceSource&&t.paintPieceSource){let r=ep(e,t,i);if("clear"===r)return"clear";if("exhausted"===r)return"unknown"}if("visible"!==e.stroke||"opaque"!==t.fill||void 0===t.innerStroke||!e.strokeColor||!t.fillColor)return"unknown";let o=!0;for(let r=0;r<3;r++){if(!i())return"unknown";e.strokeColor[r]!==t.fillColor[r]&&(o=!1)}if(o)return"unknown";for(let o=r;o<e.strokeWitnesses.length&&i();o++){let r=e.strokeWitnesses[o],a=0,l=!0;for(let e=0;e<n.length;e++){if(!i())return"unknown";let o=n[e],s=n[(e+1)%n.length],d=s.x-o.x,u=s.y-o.y,f=Math.hypot(d,u),y=d*(r.y-o.y)-u*(r.x-o.x),h=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(s.x),Math.abs(s.y));if(!Number.isFinite(y)||!f||Math.abs(y)/f<=t.innerStroke+h||a&&Math.sign(y)!==a){l=!1;break}a||=Math.sign(y)}if(l&&a)return r}return"unknown"}var em=new Set(["node","service","class-box","entity"]),eg=new Set([...em,"group","note","actor","junction"]);function eb(e,t,i={}){let r,n;return ek(e,(r=H(e,void 0),(n=(e,t,i,o,a=!1,l=1,s=!0)=>{e.forEach((e,d)=>{let y=`${t}.${d}`;if("group"===e.kind){let t=z(e),r=e.identity??{id:e.id,role:e.role};n(e.children.map(e=>e.node),y,f(i,u(e.transform)),Object.freeze([...o,V(r)]),a||"conditional"===e.visibility||t.style||e.paint?.fill!==void 0,q(l,_(e.paint?.opacity)),s&&!e.transform)}else r.leaf(e,y,i,o,a,l,void 0,s)})})(e.parts,"scene",d,Object.freeze([])),r.finish()),t,i)}function ek(e,i,r,a={}){let l,d,k=[],N=!1,j=!1,P=(e,t=!1)=>{k.length<64&&k.push(Object.freeze(e)),t?N=!0:j=!0},F=(e,t,i)=>P({code:"POTENTIAL_OCCLUSION",id:e,by:t,message:i}),S=(e,t,i=!1)=>P({code:"UNMEASURED_PAINT",id:e,message:t},i),z=e=>P({code:"OUTPUT_SCOPE",message:e}),E=ei.get(i);E&&e!==E.header&&(z("Retained emission is paired with a different document header"),e=E.header);let B=0,T=0,L=e.width,C=e.height,I=0;for(let e of i.primitives){if(!E&&et.has(e)&&z("Native paint occurrences have no bound emission context"),"conditional"===e.visibility){I++;continue}"unmeasured"===e.coverage&&S(e.id,e.reason??"Paint geometry is unavailable"),e.text&&"non-painting"!==e.coverage&&"prepared"!==e.text.measurement&&P({code:"UNPREPARED_TEXT",id:e.id,message:"Text was not retained from layout preparation"});let t=e.bounds;t&&(B=Math.min(B,t.x0),T=Math.min(T,t.y0),L=Math.max(L,t.x1),C=Math.max(C,t.y1))}I&&P({code:"CONDITIONAL_PAINT",message:`${I} primitives depend on unresolved paint or interaction state`}),(!1===a.outputSupported||e.family.startsWith("family:"))&&z("Selected backend, style or external family has no native final-paint proof"),B=Math.min(0,B+1e-6),T=Math.min(0,T+1e-6),L=Math.max(e.width,L-1e-6),C=Math.max(e.height,C-1e-6);let D=B<0||T<0||L>e.width||C>e.height,$={x:Math.floor(B),y:Math.floor(T),width:Math.ceil(L)-Math.floor(B),height:Math.ceil(C)-Math.floor(T)};if(D&&e.width>0&&e.height>0){let t=e.width/e.height;$.width/$.height>t?$.height=$.width/t:$.width=$.height*t}let R=Object.freeze(D?$:{x:0,y:0,width:e.width,height:e.height}),U={x0:R.x,y0:R.y,x1:R.x+R.width,y1:R.y+R.height};D&&i.primitives.some(e=>{let t=W(e);return t?.kind==="connector"?t.stroke.nonScaling:(t?.kind==="shape"||t?.kind==="text")&&"non-scaling-stroke"===t.paint.vectorEffect})&&z("Viewport expansion changes the user-unit extent of non-scaling strokes; final painted containment is unverified");let q=0,J=(t,i,r)=>{if(q++,!i||!r)return void S(t,"Projected label has no retained occupied or available region");let n=el(r);0===n.x0&&0===n.y0&&n.x1===e.width&&n.y1===e.height&&(n=U),eo(n,el(i),.5)||P({code:"LABEL_CONTAINMENT",id:t,message:"Retained text extends beyond its declared available region"},!0)};if(r){for(let e of r.nodes)e.label?.trim()&&"hidden"!==e.labelVisibility&&"semantic"!==e.labelVisibility&&J(String(e.id),e.labelBounds,e.labelContainer);for(let e of r.labels??[])e.text.trim()&&"hidden"!==e.visibility&&"semantic"!==e.visibility&&J(e.id,e.bounds,e.container)}E?.uncertain&&z("Emitted document context or marker resource differs from retained paint evidence");let X=0,G=E?.operations??0,K=E?.exhausted??!1,V=()=>G>=ee?(K=!0,!1):(G++,!0),Y=(l=t(function(e,t){let i=new Map,r=t=>{if(i.has(t))return i.get(t);let r=n(t,e.colors),o=!!r&&s(r)?.[3]===1;return i.set(t,o),o},o=e=>{if("non-scaling-stroke"===e.vectorEffect||!e.stroke||!r(e.stroke)||1!==Number(e.opacity??1)||1!==Number(e.strokeOpacity??1)||e.strokeDasharray)return 0;let t=Number(e.strokeWidth?.replace(/px$/,"")??1);return Number.isFinite(t)&&t>0?t:0},a=new Map,l=(e,t)=>JSON.stringify([e.owner,t,A(e)]);for(let e of t){let t=W(e);if(t?.kind!=="shape"||"measured"!==e.coverage||"conditional"===e.visibility||void 0!==e.groupOpacity)continue;let i="compound"===t.geometry.kind?t.geometry.children:[t.geometry];for(let r=0;r<i.length;r++){let n=o("compound"===t.geometry.kind?t.childPaints?.[r]??t.paint:t.paint);n>0&&a.set(l(e,i[r]),n)}}let d=[];for(let e of t){let t=W(e);if(!t||"shape"!==t.kind||"conditional"===e.visibility||"measured"!==e.coverage||void 0!==e.groupOpacity)continue;let{geometry:i,paint:n,childPaints:s}=t,u="compound"===i.kind?i.children:void 0,f=u?void 0:i,h=u?.map((e,t)=>s?.[t]??n),p=u?void 0:n,x=u?.map((e,t)=>eu(e,h[t])),m=!u&&eu(f,p),g=u?.map((e,t)=>ef(e,h[t])),b=!u&&ef(f,p);if(!(x?x.some(Boolean):m)&&!(g?g.some(Boolean):b))continue;let k=A(e),[w,N,j,P,F,S]=k,z={kind:"matrix",a:w,b:N,c:j,d:P,e:F,f:S},E,B=u?[]:void 0;for(let t=0,i=u?.length??1;t<i;t++){if(u&&!(t in u))continue;let i=u?u[t]:f,r=h?h[t]:p;if(!(x?x[t]:m)&&!(g?g[t]:b))continue;let n=O({kind:"shape",id:e.id,role:e.role,geometry:i,paint:r},z)??e.bounds;B&&(B[t]=n),E=c(E,n)}if(!E)continue;let T={primitive:e,bounds:E,borderWidth:a.get(l(e,i)),...u?{partBorderWidths:u.map(t=>a.get(l(e,t))??0),partOwnBorderWidths:h.map(o),partFilled:x,partBounds:B}:{}};if(Math.abs(k[1])>1e-12||Math.abs(k[2])>1e-12){d.push(T);continue}let L=[],C=[];for(let e=0,t=u?.length??1;e<t;e++){if(u&&!(e in u))continue;let t=u?u[e]:f,i=h?h[e]:p;if("rect"===t.kind&&1===k[0]&&1===k[3]&&0===k[1]&&0===k[2]&&"non-scaling-stroke"!==i.vectorEffect&&i.stroke&&r(i.stroke)&&1===_(i.opacity)&&1===_(i.strokeOpacity)&&!i.strokeDasharray&&void 0!==M(i,!1)){let e=Number.parseFloat(i.strokeWidth??"1")/2,r=Math.max(0,Math.min(t.width/2,t.rx??t.ry??0)),n=Math.max(0,Math.min(t.height/2,t.ry??t.rx??0));if(e>0)for(let i of[{x0:t.x-e,y0:t.y+n,x1:t.x+e,y1:t.y+t.height-n},{x0:t.x+t.width-e,y0:t.y+n,x1:t.x+t.width+e,y1:t.y+t.height-n},{x0:t.x+r,y0:t.y-e,x1:t.x+t.width-r,y1:t.y+e},{x0:t.x+r,y0:t.y+t.height-e,x1:t.x+t.width-r,y1:t.y+t.height+e}])i.x0<i.x1&&i.y0<i.y1&&C.push(v(i,z))}if(!(x?x[e]:m)||"rect"!==t.kind||1!==_(i.opacity)||1!==_(i.fillOpacity)||!i.fill||!r(i.fill))continue;let n=Math.min(t.width/2,t.rx??t.ry??0),o=Math.min(t.height/2,t.ry??t.rx??0),a=y({x:t.x+n,y:t.y+o},k),l=y({x:t.x+t.width-n,y:t.y+t.height-o},k);L.push({x0:Math.min(a.x,l.x),y0:Math.min(a.y,l.y),x1:Math.max(a.x,l.x),y1:Math.max(a.y,l.y)})}d.push({...T,interiors:L,strokeInteriors:C})}return d}(e,i.primitives),e=>e.bounds),d=e=>{if(!V())return-1/0;let t=-1/0;if(e.leaves)for(let i of e.leaves){if(!V())break;t=Math.max(t,i.primitive.order)}else t=Math.max(d(e.left),d(e.right));return e.lastOrder=t},l&&d(l),l),Z=new Map,H=[],Q=[];for(let e of i.primitives){if(!V())break;if("connector"===e.kind&&Q.push(e),"text"!==e.kind||"measured"!==e.coverage||"conditional"===e.visibility||(H.push(e),!e.ancestors.length))continue;let t=Z.get(e.ancestors);t?(t.bounds=c(t.bounds,e.bounds),t.order=Math.min(t.order,e.order),t.count++):Z.set(e.ancestors,{bounds:e.bounds,order:e.order,count:1})}let er,es=e=>{if(!er)for(let e of(er=new Map,i.primitives)){if(K)break;for(let t of[e.owner,...e.ancestors]){if(!V())break;if(!eg.has(t.role))continue;let e=er.get(t.id)??new Set;e.add(t.role),er.set(t.id,e)}}return K||(er.get(e)?.size??0)>1},ec=(e,t)=>{let i=!1;for(let[r,n]of[[e.endpoints.from,e.endpoints.start],[e.endpoints.to,e.endpoints.end]])if(r===t.id)if(n?.owner){if(n.owner.id!==r){i=!0;continue}if(n.owner.role===t.role)return"attached"}else{if(!es(r))return"attached";i=!0}return i?"ambiguous":"unrelated"},eb=(e,t,i,r,n)=>{if(!(K||n&&(n.remaining--<=0||r.length>16)||!V()||!e||e.lastOrder<=i||!ea(e.bounds,t))){if(!e.leaves){eb(e.left,t,i,r,n),eb(e.right,t,i,r,n);return}for(let o of e.leaves)if(n&&n.remaining--<=0||!V()||o.primitive.order>i&&ea(o.bounds,t)&&(r.push(o),n&&r.length>16))return}};for(let e of H){let t=Z.get(e.ancestors),i;if(t&&t.count>1&&t.count<=8&&null!==t.surfaces){if(!t.surfaces){i=[];let e={remaining:64};eb(Y,t.bounds,t.order,i,e),t.surfaces=e.remaining>=0&&i.length<=16?i:null}i=t.surfaces??void 0}for(let t of(i||(i=[],eb(Y,e.bounds,e.order,i)),i)){if(!V())break;if(!(t.primitive.order<=e.order||!ea(t.bounds,e.bounds))){if(++X>en){K=!0;break}t.interiors?.some(t=>V()&&eo(t,e.bounds))?P({code:"TEXT_OCCLUDED",id:e.id,by:t.primitive.id,message:`Retained text is fully covered by later opaque artwork owned by ${t.primitive.owner.id}`},!0):F(e.id,t.primitive.id,"Later filled artwork overlaps the occupied text band; its exact ink intersection is unverified")}}}let ev=new Map;for(let t of Q){if(!V())break;let i=W(t);if(i?.kind!=="connector"||!["edge","relationship"].includes(t.role)||"invisible"===i.lineStyle||"conditional"===t.visibility||"measured"!==t.coverage)continue;let r=Number.parseFloat(String(i.stroke.width)),o=Number(i.stroke.opacity??1);if(0===r||0===o||"none"===i.stroke.color||"transparent"===i.stroke.color)continue;if(!ev.has(i.stroke.color)){let t=n(i.stroke.color,e.colors);ev.set(i.stroke.color,t?s(t)?.[3]:void 0)}let l=ev.get(i.stroke.color);if(0===l)continue;let d=!1!==a.outputSupported&&!e.family.startsWith("family:")&&!!i.endpoints?.from&&!!i.endpoints.to&&void 0!==l&&l>0&&r>0&&o>0&&!i.stroke.dash,u=A(t),[f,h,c,m,g,b]=u,k={kind:"matrix",a:f,b:h,c:c,d:m,e:g,f:b},O=M({stroke:i.stroke.color,strokeWidth:String(i.stroke.width),strokeLinecap:i.stroke.lineCap,strokeLinejoin:i.stroke.lineJoin,strokeMiterlimit:String(i.stroke.miterLimit)},w(i.route));if(void 0===O){S(t.id,"Final connector stroke has no bounded cap/join extent");continue}let N=e=>{if(!V())return!1;let n=i.stroke.nonScaling?p(v(e.bounds,k),O):v(p(e.bounds,O),k),o=e.line?.map(e=>y(e,u)),a=e=>{if(!(K||!V()||!e||!ea(e.bounds,n))){if(!e.leaves){a(e.left),a(e.right);return}for(let a of e.leaves){if(!V())return;if(++X>en){K=!0;return}let e=d&&"note"===a.primitive.role&&!!a.interiors?.length;if(!em.has(a.primitive.role)&&!e||a.primitive.owner.id===t.owner.id&&a.primitive.owner.role===t.owner.role||!ea(a.bounds,n))continue;let l=ec(i,a.primitive.owner);"attached"!==l&&(d&&o&&function(e,t,i,r,n,o,a){if(!a()||!o.every(Number.isFinite)||1!==o[0]||0!==o[1]||0!==o[2]||1!==o[3]||i.nonScaling||!["butt","round","square"].includes(i.lineCap??"butt")||!["miter","round","bevel"].includes(i.lineJoin??"miter")||!Number.isFinite(r)||r<=0||!Number.isFinite(n)||n<r/2)return!1;let[l,s]=e;if(![l.x,l.y,s.x,s.y].every(Number.isFinite)||l.x!==s.x&&l.y!==s.y||l.x===s.x&&l.y===s.y)return!1;let d=r/2,u={x0:Math.min(l.x,s.x)-d,y0:Math.min(l.y,s.y)-d,x1:Math.max(l.x,s.x)+d,y1:Math.max(l.y,s.y)+d};if(!a()||!Object.values(u).every(Number.isFinite)||ea(u,t))return!1;for(let i of e){if(!a())return!1;let e={x0:i.x-n,y0:i.y-n,x1:i.x+n,y1:i.y+n};if(!Object.values(e).every(Number.isFinite)||ea(e,t))return!1}return!0}(o,a.bounds,i.stroke,r,O,u,V)||(d&&"unrelated"===l&&o&&a.interiors?.some(e=>V()&&function(e,t){let[i,r]=e,n=0,o=1;for(let[e,a,l,s]of[[i.x,r.x-i.x,t.x0,t.x1],[i.y,r.y-i.y,t.y0,t.y1]])if(1e-12>Math.abs(a)){if(e<=l+1e-8||e>=s-1e-8)return!1}else{let t=(l-e)/a,i=(s-e)/a;n=Math.max(n,Math.min(t,i)),o=Math.min(o,Math.max(t,i))}return(o-n)*Math.hypot(r.x-i.x,r.y-i.y)>1e-8}(o,e))?P({code:"CONNECTOR_CARD_CROSSING",id:t.id,by:a.primitive.id,message:`Final connector shaft crosses opaque artwork owned by unrelated ${e?"note":"card"} ${a.primitive.owner.id}`},!0):F(t.id,a.primitive.id,e?"Final connector envelope intersects unrelated filled note artwork; actual route/note crossing is unverified":"Final connector envelope intersects unrelated filled card artwork; actual route/card crossing is unverified")))}}};return a(Y),!K},j=i.route.geometry;if("path"===j.kind)x(j.d,N,V)||K||S(t.id,"Final connector segments could not be measured from typed path geometry");else{let e="line"===j.kind?[{x:j.x1,y:j.y1},{x:j.x2,y:j.y2}]:j.points;for(let t=1;t<e.length;t++){let i=e[t-1],r=e[t];if(!N({bounds:{x0:Math.min(i.x,r.x),y0:Math.min(i.y,r.y),x1:Math.max(i.x,r.x),y1:Math.max(i.y,r.y)},line:[i,r]}))break}}}let ew=new Map,eM,eO=t=>(eM??=o())(t,e.colors);for(let t of Q){let i=W(t);if("connector"!==t.kind||i?.kind!=="connector"||"invisible"===i.lineStyle||"non-painting"===t.coverage)continue;let r=h(u(i.transform));if(!r)continue;let[n,o,l,d,y,p]=f(A(t),r);for(let r of g(i,{kind:"matrix",a:n,b:o,c:l,d:d,e:y,f:p})){if(!r.bounds){S(t.id,"Endpoint marker has no painted footprint");continue}let n=JSON.stringify([t.owner.id,t.owner.role,r.position,r.resource,r.anchor,r.repaint]),o="number"==typeof i.stroke.width?Number.isFinite(i.stroke.width)&&i.stroke.width>0:/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(i.stroke.width)&&Number.parseFloat(i.stroke.width)>0,l="start"===r.position?i.markers.start:"end"===r.position?i.markers.end:1===i.markers.mid.length?i.markers.mid[0]:void 0,d="measured"===t.coverage&&!!h(A(t)),u=l?.units==="userSpaceOnUse"||o,f=ew.get(n),y=!1!==a.outputSupported&&!e.family.startsWith("family:")&&(["edge","relationship"].includes(t.role)&&!!i.endpoints?.from&&!!i.endpoints.to||f?.semantic===!0),p=A(t),k="measured"===t.coverage&&"conditional"!==t.visibility&&(t.groupOpacity??1)===1&&0===t.ancestors.length&&!!p&&1===p[0]&&0===p[1]&&0===p[2]&&1===p[3]&&0===p[4]&&0===p[5],v=y&&k&&u?function(e,t,i,r){let{position:n,anchor:o}=i;for(let e=0;e<18;e++)if(!r())return;if(!t||"mid"===n||e.transform||e.route.closed||e.stroke.nonScaling||"visible"===t.overflow||(t.scale??1)!==1||t.paint?.vectorEffect==="non-scaling-stroke"||void 0!==t.orient&&"auto"!==t.orient&&"auto-start-reverse"!==t.orient||!t.size||!t.ref||!(t.size.width>0)||!(t.size.height>0)||!Number.isFinite(t.size.width+t.size.height+t.ref.x+t.ref.y)||t.ref.y<0||t.ref.y>t.size.height||0!==t.ref.x&&t.ref.x!==t.size.width||t.viewBox&&(0!==t.viewBox.x||0!==t.viewBox.y||t.viewBox.width!==t.size.width||t.viewBox.height!==t.size.height))return;let a=e.route.geometry,l,s,d=(e,t)=>{if(!r()||!Number.isFinite(e)||!Number.isFinite(t))return!1;if(l){if(e!==l.x||t!==l.y)return s={x:e,y:t},!1}else l={x:e,y:t};return!0};if("line"===a.kind){if(!d("start"===n?a.x1:a.x2,"start"===n?a.y1:a.y2))return;d("start"===n?a.x2:a.x1,"start"===n?a.y2:a.y1)}else if("polyline"!==a.kind)return;else for(let e=0;e<a.points.length;e++){let t=a.points["start"===n?e:a.points.length-e-1];if(!d(t.x,t.y))break}if(!l||!s||l.x!==o.x||l.y!==o.y||l.x!==s.x&&l.y!==s.y)return;let u=e=>({x:Number(m(e.x)),y:Number(m(e.y))}),f=u(l),y=u(s),h=l.y===s.y;if(![f.x,f.y,y.x,y.y].every(Number.isFinite)||h&&(f.x!==l.x||f.y!==y.y||Math.sign(y.x-f.x)!==Math.sign(s.x-l.x))||!h&&(f.y!==l.y||f.x!==y.x||Math.sign(y.y-f.y)!==Math.sign(s.y-l.y)))return;let p=1;if("userSpaceOnUse"!==t.units){let t=String(e.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(t)||!((p=Number.parseFloat("number"==typeof e.stroke.width?m(e.stroke.width):b("stroke-width",e.stroke.width)))>0)||!Number.isFinite(p)||p!==Number.parseFloat(t))return}let x="start"===n?f:y,k="start"===n?y:f,v={x:k.x-x.x,y:k.y-x.y},w=g({route:{geometry:{kind:"line",x1:x.x,y1:x.y,x2:k.x,y2:k.y},closed:!1,contours:[{start:x,end:k,closed:!1,startTangent:v,endTangent:v}]},stroke:{width:p},markers:{mid:[],..."start"===n?{start:t}:{end:t}}})[0];if(!r()||!w?.bounds||!i.bounds)return;let M=c(i.bounds,w.bounds),O="end"===n||"auto-start-reverse"===t.orient?-1:1,N=0===t.ref.x?1:-1,j=Math.sign(s.x-l.x)*O*N,P=Math.sign(s.y-l.y)*O*N;if(!r())return;let F={x0:j>0?Math.max(M.x0,w.anchor.x):M.x0,y0:P>0?Math.max(M.y0,w.anchor.y):M.y0,x1:j<0?Math.min(M.x1,w.anchor.x):M.x1,y1:P<0?Math.min(M.y1,w.anchor.y):M.y1};return F.x0<=F.x1&&F.y0<=F.y1?{region:{...w,bounds:M},clipped:F}:void 0}(i,l,r,V):void 0,w=v?.region??r,O=d&&u?function(e,t,i,r){if(!e||!t||e.geometry?.kind!=="polygon"||(e.scale??1)>1||1!==_(e.paint?.opacity)||1!==_(e.paint?.fillOpacity)||!e.paint?.fill)return;let n=i(e.paint.fill);if(!n||s(n)?.[3]!==1)return;let o=e.geometry.points;if(o.length<3||o.length>64||o.length!==t.length)return;let a=Math.sign(o.reduce((e,t,i)=>{let r=o[(i+1)%o.length];return e+t.x*r.y-r.x*t.y},0));if(!a||!o.every((e,t)=>o.every(i=>r()&&a*((o[(t+1)%o.length].x-e.x)*(i.y-e.y)-(o[(t+1)%o.length].y-e.y)*(i.x-e.x))>=0)))return;let l=e=>({x:e.reduce((e,t)=>e+t.x,0)/e.length,y:e.reduce((e,t)=>e+t.y,0)/e.length}),d=l(o),u=l(t),f=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),y=[];for(let i=-1,n=o.length;i<n;i++){if(!r())continue;let n=i<0?d:{x:(d.x+o[i].x)/2,y:(d.y+o[i].y)/2};("visible"===e.overflow||f&&n.x>f.x&&n.x<f.x+f.width&&n.y>f.y&&n.y<f.y+f.height)&&y.push(i<0?u:{x:(u.x+t[i].x)/2,y:(u.y+t[i].y)/2})}return y}(l,w.hull,eO,V):void 0,N=d&&u&&l?.paint?.vectorEffect!=="non-scaling-stroke"&&function(e,t,i,r){if(t?.length)return!0;if(!e?.geometry||1!==_(e.paint?.opacity))return!1;let n=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),o=t=>Number.isFinite(t.x)&&Number.isFinite(t.y)&&("visible"===e.overflow||!!n&&t.x>n.x&&t.x<n.x+n.width&&t.y>n.y&&t.y<n.y+n.height),a=e=>{if(!e||!r())return!1;let t=i(e);return!!t&&s(t)?.[3]===1},l=e.geometry;if(1===_(e.paint?.fillOpacity)&&a(e.paint?.fill)&&("circle"===l.kind&&l.r>0&&o({x:l.cx,y:l.cy})||"ellipse"===l.kind&&l.rx>0&&l.ry>0&&o({x:l.cx,y:l.cy})||"rect"===l.kind&&l.width>0&&l.height>0&&o({x:l.x+l.width/2,y:l.y+l.height/2})))return!0;if(1!==_(e.paint?.strokeOpacity)||!a(e.paint?.stroke)||e.paint?.strokeDasharray||!(Number.parseFloat(e.paint?.strokeWidth??"1")>0)||void 0===M(e.paint??{},!0))return!1;let d=(e,t)=>r()&&Math.hypot(t.x-e.x,t.y-e.y)>0&&o({x:(e.x+t.x)/2,y:(e.y+t.y)/2});if("line"===l.kind)return d({x:l.x1,y:l.y1},{x:l.x2,y:l.y2});if("polygon"===l.kind||"polyline"===l.kind)return l.points.length<=64&&l.points.some((e,t)=>t>0&&d(l.points[t-1],e));if("path"===l.kind){let e=!1;return x(l.d,t=>(t.line&&d(t.line[0],t.line[1])&&(e=!0),r()),r)&&e}return!1}(l,O,eO,V),j=function(e,t,i){if(!i()||!t)return!0;if(t.geometry?.kind==="line"||t.paint?.fill==="none"||t.paint?.fill==="transparent"||1>_(t.paint?.opacity))return!1;let r=t.paint?.fill;if(!r||!i())return!0;let n=e(r),o=n?s(n):null;return!o||1===o[3]}(eO,l,V),P=y&&(t.groupOpacity??1)===1&&0===t.ancestors.length&&(!i.stroke.mixBlendMode||"normal"===i.stroke.mixBlendMode)?function(e,t,i){let r=e?.paint;if(!i()||!r||!Number.isFinite(_(r.opacity))||void 0===M(r,!0)||void 0!==r.strokeDasharray&&"none"!==r.strokeDasharray||void 0!==r.strokeDashoffset||void 0!==r.paintOrder&&"normal"!==r.paintOrder||!r.fill||!r.stroke||!i())return;let n=t(r.fill);if(!n||"none"!==n&&!s(n)||!i())return;let o=t(r.stroke);if(!(!o||"none"!==o&&!s(o)))return`${n}\0${o}`}(l,eO,V):void 0,F=y&&k?eh(e,i,l,r.position,V,eO):void 0;ew.set(n,{primitive:t,position:r.position,clipped:v?.clipped,anchor:w.anchor,repaint:w.repaint,bounds:w.bounds,hull:w.hull,padding:w.padding,witnesses:O,actualInk:N,strokeProof:F,paintIdentity:P,semantic:y,mayFill:j})}}let eN=(e,t)=>{if("conditional"!==t.primitive.visibility&&!(K||!V()||!e||e.lastOrder<=t.primitive.order||!ea(e.bounds,t.bounds))){if(!e.leaves){eN(e.left,t),eN(e.right,t);return}for(let i of e.leaves){if(!V())return;if(i.primitive.order<=t.primitive.order||!ea(i.bounds,t.bounds))continue;if(++X>en){K=!0;return}if(t.actualInk&&(i.interiors?.some(e=>V()&&eo(e,t.bounds))||i.strokeInteriors?.some(e=>V()&&eo(e,t.bounds)))){P({code:"MARKER_OCCLUDED",id:t.primitive.id,by:i.primitive.id,message:"Endpoint marker is fully covered by later opaque artwork with no owned repaint"},!0);continue}let e=W(t.primitive),r=e?.kind==="connector"&&"attached"===ec(e,i.primitive.owner);ey(i,t.bounds,r,t.hull,t.padding,V,t.witnesses,t.anchor)||t.clipped&&ey(i,t.clipped,r,void 0,0,V,t.witnesses,t.anchor,!0)||F(t.primitive.id,i.primitive.id,"Later filled artwork overlaps an endpoint marker; its exact ink intersection is unverified")}}},ej=Array.from(ew.values());for(let e=0;e<ej.length;e++)eN(Y,ej[e]);let eP=0,eF=0;for(let e of ej){if(!V())break;!e.semantic||"conditional"===e.primitive.visibility||(eP++,e.strokeProof?.fill==="absent"&&"absent"===e.strokeProof.stroke||eF++)}let eS=eF>Math.ceil(Math.log2(i.primitives.length+1))**2,ez=eP>Math.ceil(Math.log2(eP+1))**2,eE=[];if(eS)for(let[e,t]of i.primitives.entries()){if(!V())break;"text"===t.kind&&"measured"===t.coverage&&"conditional"!==t.visibility&&t.bounds&&eE.push({primitive:t,bounds:t.bounds,index:e})}let eB=eS?ed(eE,V,eF):void 0,eT=[];if(ez)for(let[e,t]of ej.entries()){if(!V())break;t.semantic&&"conditional"!==t.primitive.visibility&&eT.push({primitive:t.primitive,bounds:t.bounds,target:t,index:e})}let eL=ez?ed(eT,V,eP):void 0;for(let e=0;e<ej.length;e++){let t=ej[e];if(!V())break;if(t.semantic&&"conditional"!==t.primitive.visibility&&(t.strokeProof?.fill!=="absent"||"absent"!==t.strokeProof.stroke))for(let e of eB?eB(t.bounds).map(e=>e.primitive):i.primitives){if(!V())break;if("text"!==e.kind||"measured"!==e.coverage||"conditional"===e.visibility||!e.bounds||!ea(e.bounds,t.bounds))continue;if(++X>en){K=!0;break}let i=t.primitive.order>e.order;F(i?e.id:t.primitive.id,i?t.primitive.id:e.id,i?"Later endpoint-marker ink overlaps occupied text; actual text visibility is unverified.":"Later occupied text or its halo overlaps an endpoint marker; actual marker ink visibility is unverified.")}}for(let e=0;e<ej.length;e++){let t=ej[e];if(K)break;if(t.semantic&&"conditional"!==t.primitive.visibility)for(let e of eL?eL(t.bounds).map(e=>e.target):ej){if(!V())break;let r=t.strokeProof?.repaint,n=e.strokeProof?.repaint,o=void 0!==t.paintIdentity&&t.paintIdentity===e.paintIdentity;if(!e.semantic||"conditional"===e.primitive.visibility||e.primitive.order<=t.primitive.order||o&&(t.anchor.x===e.anchor.x&&t.anchor.y===e.anchor.y&&t.repaint===e.repaint||r&&n&&r.resource===n.resource&&r.geometry===n.geometry&&r.anchor.x===n.anchor.x&&r.anchor.y===n.anchor.y)||!ea(t.bounds,e.bounds))continue;if(++X>en){K=!0;break}let a=0,l="unknown";for(;!K;){let r=e.mayFill?ex(t.strokeProof,e.strokeProof,V,a):ep(t.strokeProof,e.strokeProof,V);if("exhausted"===r&&(r="unknown"),"string"==typeof r){l=r;break}let n=!1,o=i.primitives;for(let t=0;t<o.length;t++){let i=o[t];if(!V())break;let a=i.bounds;if(i.order<=e.primitive.order||"non-painting"===i.coverage)continue;if(!a){n=!0;break}if(a.x0>r.x||r.x>a.x1||a.y0>r.y||r.y>a.y1)continue;let l=W(i);if(l?.kind==="connector"&&0===Number(l.stroke.opacity)){let e=!1;for(let t=0;t<ej.length;t++){let n=ej[t];if(!V())break;if(!(n.primitive.order!==i.order||n.bounds.x0>r.x||r.x>n.bounds.x1||n.bounds.y0>r.y||r.y>n.bounds.y1)&&!function(e,t,i){if(!e||void 0===e.innerStroke)return!1;let r=e.hull,n=0;for(let e=0;e<r.length;e++){if(!i())return!1;let t=r[e],o=r[(e+1)%r.length],a=r[(e+2)%r.length],l=(o.x-t.x)*(a.y-o.y)-(o.y-t.y)*(a.x-o.x);if(l){n=Math.sign(l);break}}if(!n)return!1;for(let o=0;o<r.length&&i();o++){let i=r[o],a=r[(o+1)%r.length],l=a.x-i.x,s=a.y-i.y,d=Math.hypot(l,s),u=n*(l*(t.y-i.y)-s*(t.x-i.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(t.x),Math.abs(t.y),Math.abs(i.x),Math.abs(i.y),Math.abs(a.x),Math.abs(a.y));if(Number.isFinite(u)&&u<-e.innerStroke-f)return!0}return!1}(n.strokeProof,r,V)){e=!0;break}}if(!e&&!K)continue}n=!0;break}if(!n&&!K){l="covered";break}let s=t.strokeProof.strokeWitnesses,d=!1;for(;a<s.length&&V();a++)if(s[a]===r){a++,d=!0;break}if(!d)break}"covered"!==l||K?"unknown"===l&&F(t.primitive.id,e.primitive.id,"Distinct endpoint-marker envelopes overlap; actual marker ink separation is unverified."):P({code:"MARKER_OCCLUDED",id:t.primitive.id,by:e.primitive.id,message:"Later opaque endpoint-marker fill covers actual stroke ink of a distinct marker."},!0)}}for(let e of(K&&P({code:"CHECK_BUDGET",message:`Occlusion checking reached its ${en}-pair or ${ee}-operation limit`}),i.primitives))e.bounds&&"conditional"!==e.visibility&&!eo(U,e.bounds,1e-6)&&S(e.id,"Final viewport does not contain retained paint",!0);for(let e of ej)"conditional"===e.primitive.visibility||eo(U,e.bounds,1e-6)||S(e.primitive.id,"Final viewport does not contain serialized marker paint",!0);return Object.freeze({version:1,unit:"px",scope:"native-scene",status:N?"failed":j?"unverified":"passed",viewport:R,attempts:D?2:1,repairs:Object.freeze(D?["expand-viewport"]:[]),coverage:Object.freeze({measured:i.coverage.measured,unmeasured:i.coverage.unmeasured,preparedText:i.coverage.preparedText,fallbackText:i.coverage.fallbackText,conditional:I}),checks:Object.freeze({primitives:i.primitives.length,labels:q,occlusionPairs:Math.min(X,en),maxOcclusionPairs:en,operations:G,maxOperations:ee,markers:ew.size}),issues:Object.freeze(k),limitations:Object.freeze(["Prepared occupied text regions bound native geometry; exact glyph ink depends on the resolved font.","Declared transparency, intentional data-mark overlap and externally modified CSS are outside this proof."])})}var ev=class extends Error{constructor(e){super(`Final paint certification failed: ${e.issues.map(e=>`${e.id??"scene"}: ${e.message}`).join("; ")}`),this.certification=e,this.name="PaintLayoutCertificationError"}certification;code="PAINT_LAYOUT_CERTIFICATION_FAILED"};export{Q as a,_ as b,q as c,Y as d,Z as e,ee as f,er as g,en as h,eh as i,ex as j,eb as k,ek as l,ev as m};